DALI Ethernet gatewayとNode-REDを組み合わせてDALIを使った制御システムを開発しています。
当初、DALI側のグループアドレスや個別のDAP・IAPアドレスなどの管理は、Node-REDのグローバル変数を使ってやっていましたが、器具台数が増えたり、シーンの記録をさせたりと機能を追加していくためにはデータベースを使ったほうが効率が良さそうだと考えました。
とはいっても、MySQLを使うほどでもないのでSQLiteを使えれば、いろいろ解決しそうです。
node-red-node-sqliteをインストール
Node-REDのカスタムノードで「node-red-node-sqlite」がありますので、これを入れます。
導入するには、Node-REDの「パレットの管理」から行います。
無事にインストールされると、左の「ストレージ」に「sqlite」というノードが追加されます。
これをつかってフローをつくってみます。
サンプルフロー
こちらのフローを作成しました。
Injectionノードには上から
CREATE TABLE test( id, name)
.tables
INSERT INTO test VALUES( “testname”, “testtest”)
select * from test
をtopicにいれてます。
sqliteノードでは、あたらしく「db_test」というDBを作成。SQL分はmsg.topicで送られるようにしました。
プロパティはこちらのとおり。Modeが「Read-Write-Create, Read-Write, Read」の中から選べるので、今回のDALI照明をつかった用途では、現場のDALIコンフィグレーション(アドレッシングやグループの設定)が完了したら、新たにTableを作る必要はなくなるので、「Read-Write」にすればよいでしょう。
で、先のフローの2番目に現在登録されているtableの一覧をだす” .tables”というsqlコマンドがあるのですが、これはエラーになります。
上記以外は大丈夫です。
DB Browser for SQLite
SQLiteでDBを使うには、GUIでテーブルの中身なども確認できたほうがいいので方法を探していたところ、DB Browser for SQLiteというツールがありました。(各プラットフォーム版があります)
こちらがインストールしたところ。
で、先程Node-RED上で作成したsqliteのDBファイルを開く必要があります。
それがどこにできているかというと、
このようにすると、
/Users/nakachon/db_test
というようになります。
なので、DB Browser for SQLiteから
File -> Open Database… で、/Users/nakachonにあるdb_testというファイルを開けば、DB Browser for SQLiteで管理できます。
まとめ
以上、Node-REDからSQLiteをつなぐ方法とDB Browser SQLiteをつかってGUIでDBを管理する方法を紹介しました。
これで、Node-REDの中でGlobalとDBの使い分けをしながら、効率的に運用できそうな気がしています。