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 2019-07-03 10-48-16.jpg Node RED 2019 07 03 10 48 16](https://digital-light.jp/wp-content/uploads/2019/07/asusNode-RED-2019-07-03-10-48-16.jpg)
導入するには、Node-REDの「パレットの管理」から行います。
![Node-RED 2019-07-03 10-49-34.jpg Node RED 2019 07 03 10 49 34](https://digital-light.jp/wp-content/uploads/2019/07/asusNode-RED-2019-07-03-10-49-34.jpg)
無事にインストールされると、左の「ストレージ」に「sqlite」というノードが追加されます。
これをつかってフローをつくってみます。
サンプルフロー
![Node-RED 2019-07-03 10-55-30.jpg Node RED 2019 07 03 10 55 30](https://digital-light.jp/wp-content/uploads/2019/07/asusNode-RED-2019-07-03-10-55-30.jpg)
こちらのフローを作成しました。
Injectionノードには上から
CREATE TABLE test( id, name)
.tables
INSERT INTO test VALUES( “testname”, “testtest”)
select * from test
をtopicにいれてます。
![Node-RED 2019-07-03 10-56-24.jpg Node RED 2019 07 03 10 56 24](https://digital-light.jp/wp-content/uploads/2019/07/asusNode-RED-2019-07-03-10-56-24.jpg)
sqliteノードでは、あたらしく「db_test」というDBを作成。SQL分はmsg.topicで送られるようにしました。
![Node-RED 2019-07-03 10-58-16.jpg Node RED 2019 07 03 10 58 16](https://digital-light.jp/wp-content/uploads/2019/07/asusNode-RED-2019-07-03-10-58-16.jpg)
プロパティはこちらのとおり。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というツールがありました。(各プラットフォーム版があります)
![db_test 2019-07-03 11-14-32.jpg Db test 2019 07 03 11 14 32](https://digital-light.jp/wp-content/uploads/2019/07/asusdb_test-2019-07-03-11-14-32.jpg)
こちらがインストールしたところ。
で、先程Node-RED上で作成したsqliteのDBファイルを開く必要があります。
それがどこにできているかというと、
![Node-RED 2019-07-03 11-15-46.jpg Node RED 2019 07 03 11 15 46](https://digital-light.jp/wp-content/uploads/2019/07/asusNode-RED-2019-07-03-11-15-46.jpg)
このようにすると、
/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の使い分けをしながら、効率的に運用できそうな気がしています。