以前のリビジョンの文書です
このサンプルは、下記により構成されています。
監視したい DI のリストを定義した設定ファイルを作成します。
[MQTT] HOST = localhost PORT = 51883 TOPIC = DI [DI] DI_0 = Raw DI_1 = Raw DI_2 = Raw DI_3 = Filtered DI_4 = Raw DI_5 = Raw DI_6 = Raw DI_7 = Raw DI_8 = Raw DI_9 = Raw DI_10 = Raw DI_11 = Raw
上記のような設定ファイルを指定して、コマンドを実行します。
root@metis:/tmp# ./di_mqtt -c di_mqtt.conf
DI を監視するコマンドと同じ設定ファイルを指定して、コマンドを実行します。
root@metis:/tmp# ./mqtt_soracom -c di_mqtt.conf
MQTT で publish されるデータを確認することもできます。
user1@metis:~$ nmqtt_sub -p 51883 -t DI
2つのコマンドを実行している状態で DI の状態を変化させると、MQTT Broker に DI の状態が publish され、それを MQTT Broker 経由で受け取ったプログラムが SORACOM Harvest Data にアップロードします。
MQTT 確認用で subscribe しているプログラムの出力
user1@metis:~$ nmqtt_sub -p 51883 -t DI DI: {"timestamp":1687424585957,"state":{"DI_10":0,"DI_3":0,"DI_8":0,"DI_0":0,"DI_5":0,"DI_4":0,"DI_6":0,"DI_9":0,"DI_11":0,"DI_7":0,"DI_1":0,"DI_2":0}}
syslog に SORACOM Harvest Data へアップロードした、というログも記録されます。
Jun 22 18:03:06 metis mqtt_soracom[8021]: upload: timestamp: 1687424585957 Jun 22 18:03:06 metis mqtt_soracom[8021]: upload: payload: {"DI_10":0,"DI_3":0,"DI_8":0,"DI_0":0,"DI_5":0,"DI_4":0,"DI_6":0,"DI_9":0,"DI_11":0,"DI_7":0,"DI_1":0,"DI_2":0} Jun 22 18:03:06 metis mqtt_soracom[8021]: upload: response code: 201 Created
※ “timestamp” は、SORACOM Harvest Data の timestamp に設定するため、データから抜き出して HTTP Header “X-Soracom-timestamp” にセットするようになっています。
サンプルアプリのコードです。
File | Stat | SHA1SUM | Info |
---|---|---|---|
di_mqtt.tar.xz | 2023/06/22 18:10 8.5 KB | c5330787fda94d5b77120c6c6a63cd9fe7bb7b3f | DI to MQTT/MQTT to SORACOM Harvest |
nim_gpiod.tar.xz | 2023/06/22 18:10 3.1 KB | f62136fd369a820d7205f379cfaf10db63e87839 | libgpiod wrapper library |