概要
・Raspberry Pi Model 4(bookworm)で稼働しているSpeeDBee Synapseに、Pythonを使ってPostgreSQLへデータ登録するエミッタを作成してみます。登録するデータを取得するリソースコレクタは設定済です。
1)PostgreSQLをインストールします。
・ここでは、Synapseが稼働している、Raspberry PiにPostgreSQL(バージョン15)をインストールします。
・PostgreSQLの管理ユーザのパスワードを設定し、管理ユーザにログインします。
・一般ユーザーを作成し、オーナーになるデータベース(testdb)を作成します。一般ユーザのパスワードを設定し、データベースに接続後、権限を付与します。
・一般ユーザで接続し、テーブル作成、データ挿入、データ検索が可能か確認します。
※以上で、登録先PostgreSQLのセットアップが完了しました。
2)Synapseのカスタムコンポーネントを作成します。
・ドキュメントの付録にある、Python-APIリファレンスを参考に作成します。
・ドキュメントだけでは、理解しづらいのでサンプルプログラムを参考にしてください。
・「サンプルカスタムコンポーネントのダウンロード」をクリックすると、2つのファイルがダウンロードされます。read_and_log.pyは、入力ポートと出力ポートの両方を備えたサンプルなので、エミッタを作るには最適です。
・サンプルの先頭には、importするモジュールや、クラス定義をします。UUIDにはユニークな値を設定してください。(他のカスタムコンポーネントと重複しないように)
・出力カラムの設定です。カラム名とデータ型を指定します。
・入力データ情報を取得します。
・出力データは、タイムスタンプ付きで出力します。
・PostgreSQLにPythonでアクセスするには、psycopg2モジュールをインポートする必要があります。サンプルを参考にPostgreSQLエミッタを作成しました。
・PostgreSQLエミッタのパラメータには、PostgreSQL接続情報、テーブル名、指定テーブルが無い場合に作成するかの指定をします。パラメータ設定の為に、カスタムUI機能を使い、JSONファイルを登録します。
3)カスタムコンポーネントをSynapseに登録します。
・Edit Modeにして、設定メニューからカスタム(Python)を選択します。
・Pythonモジュールにバイナリ形式のpsycopg2モジュール、psycopg2-binaryを指定して「追加」ボタンをクリックします。
・確認ダイアログが表示されまうので、「はい」をクリックします。
・Pythonモジュールにpsycopg2-binaryが表示されている事を確認し、カスタムコンポーネントの「追加」ボタンをクリックします。
・Pythonで作成したpsql_emitter_cui.pyファイルを選択するとカスタムコンポーネントの一覧に追加されます。
・「UI設定」ボタンをクリックして、「登録」ボタンでJSONファイルを登録します。
・「閉じる」をクリックして登録を完了します。
・確認ダイアログが表示されますので、「はい」をクリックします。
・Emitterを開くと、PostgreSQLエミッタが追加されていますので、パネルにドラッグ&ドロップすると、パラメータ設定画面が表示されます。
4)PostgreSQLエミッタを起動します。
・設定画面にPostgreSQL接続情報とテーブル名、テーブル自動作成:ONにして保存します。
・リソースコレクタを起動し、リソースコレクタの出力ポートと、PostgreSQLエミッタの入力ポートを繋ぎ、PostgreSQLエミッタを起動します。
5)pgAdminツールでPostgreSQLのデータを確認します。
・作業PCにpgAdmin4をインストールし、起動します。
・クイックリンクにある「新しいサーバを追加」をクリックします。
・名前を指定して、「接続タブ」を開きます
・PostgreSQLがインストールされているRaspberry PiのIPアドレスを指定し、一般ユーザ名とパスワードを指定し、「保存」ボタンをクリックします。
・データベース:testdbにある、テーブル:tbl193を右クリックし、データを閲覧/編集をクリックすると、登録されているデータを確認できます。
▶以上で、PostgreSQLエミッタの作成と動作確認が完了しました。