過去の記事でGoogleスプレッドシートをウェブアプリ化してネット経由でデータを書き込めるようにしました。
しかし、REST APIでデータを受け付ける作りになっているため、MQTTのデータを記録するためには間にプログラムを噛ませる必要がありました。
噛ませるプログラムはPythonで50行にも満たずに書けるものですが、Node-REDを使うともっとお手軽にデータを送ることができます。
こんな感じで、Node-REDだとたった5ステップで行けるんですよ!
ステップ1:MQTT入力(mqtt inノード)
まず、MQTTでサブスクライブ(購読)するトピックを指定します。
今回の例では、温度 (room/temperature)、湿度 (room/humidity)、CO2 (room/co2)の3つのトピック分のノードを用意しています。
ステップ2:トピックを項目に変換(changeノード)
次にトピックをスプレットシートの項目に置換します。
サブスクライブしているトピック数分の「値の置換」設定を追加します。
ステップ3:メッセージを結合(joinノード)
次にそれぞれのメッセージを1つのメッセージに結合します。
この例では、3つのメッセージをkey/valueオブジェクト形式の1つのメッセージとして出力しています。
ステップ4:流量を制限(delayノード)
次にメッセージをスプレッドシートに送信する頻度の調整をします。
この例では、10分に1メッセージを出力するように調整しています。
ステップ5:スプレッドシートに送信(http requestノード)
最後にスプレッドシートにメッセージを送ります。
URLにスプレッドシートのウェブアプリのURLを指定します。
デバッグ出力
「http request」ノードに出力するメッセージを「debug」ノードにも出力すると、スプレッドシートに送られるデータを確認することができます。
Node-REDのフローが正しく動いていると、次のような感じでスプレッドシートにデータが記録されます。