顧客から要望のでていた異常停止時間帯チャートがようやくできた。

当社のIoT機にはバーコードリーダーがついているので、これを使って、機械の停止理由(停止コード)をクラウドに送信することができる。通知の記録なら簡単だが、これを時間帯チャートにしようとするとハードルが一気に上がってしまう。

〇積み上げ棒グラフが無い...というか、そもそも、このケースには使えない
最初は積み上げ棒グラフで何とかなると思っていたのだが、Dashboardには、棒グラフはあっても積み上げ形式にできない。それならと、Google ChartやChart.jsを当たってみたが、Node-REDで使えるのは、一部の機能で、どうも積み上げ棒グラフは使えないっぽい。しかたがないのでNode.js+Soket.IOでやるしかないと思い始めかけたのだが、チャートに渡すデータ形式を検討しだして、積み上げ棒グラフでは無理という事が判明した。

〇予想外に使えるTemplateノード
自前でチャートを作ることを決意し、ダメ元でTemplateノードのjavascriptで図形が描けるか試してみたら、意外なことにできてしまった(知識不足でかなり手こずったが)。これで一気に展望が開けた。チャートは、それなりのコード量になってしまったが、外部JSファイル化したので、実際のHTMLは10行くらいで済んだ。

〇通知記録からチャートデータを作るのがしんどい
異常停止記録は単なる表なので、これをチャートになるようにデータを整形する必要がある。予想はしていたが、これもかなり手こずった。Node-REDだと開発効率が悪いので、Node.js+nodemonの組み合わせで行ったが、これは正解だった。最初は、ループで処理をしていたがどうにもうまくいかず、途中で再帰を使うことを思いつき、結果、すっきり書くことができた。ロジックはできたが、どうノードに組み込むかが未解決だった。ライブラリ化してしまえば、何とかなると思ってはいたが、意外にも、functionノードに、ほぼ、そのままコピペで動いてしまった。functionノード内で、関数やら再帰やらが使えるのは、新しい発見だった。

〇まとめ
Node-REDはネット上だと、基本的な使い方しか紹介されていないが、工夫次第では、かなりキャパシティがあることがわかった。複雑なロジックだと、うんざりすることも多いが、Dashboardを作るのが簡単なので、やはり魅力的だ。
以上