ユーザ用ツール

サイト用ツール


max3xx_tips:upload_di_state_to_harvest:start

以前のリビジョンの文書です


DI 変化で状態を SORACOM Harvest にアップロードする


MA-X3xx の DI の状態を監視し、変化があったときに監視対象の DI の状態を SORACOM Harvest サービスにアップロードするサンプルです。

DI to MQTT to SORACOM Harvest Data


アプリケーションの構成

このサンプルは、下記により構成されています。

  • MA-X3xx 内部の MQTT Broker(Mosquitto)
  • DI の状態を監視し、DI 状態変化時に MQTT Broker に DI の状態を Publish するアプリケーション(di_mqtt)
  • MQTT Broker を Subscibe し、DI の状態を受け取ったら SORACOM Harvest Data にアップロードするアプリケーション(mqtt_harvest)


アプリケーションの起動

DI to MQTT

監視したい DI のリストを定義した設定ファイルを作成します。

di_mqtt.conf
[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 


MQTT to SORACOM Harvest

DI を監視するコマンドと同じ設定ファイルを指定して、コマンドを実行します。

root@metis:/tmp# ./mqtt_soracom -c di_mqtt.conf 


MQTT テスト (確認用)

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” にセットするようになっています。


SORACOM コンソールで確認

アップロードされたデータを SORACOM コンソール で確認してみます。


きちんとアップロードされていることが確認できました。


ソースコード

サンプルアプリのコードです。

File Stat SHA1SUM Info
di_mqtt.tar.xz2023/06/22 18:10 8.5 KBc5330787fda94d5b77120c6c6a63cd9fe7bb7b3fDI to MQTT/MQTT to SORACOM Harvest
nim_gpiod.tar.xz2023/06/22 18:10 3.1 KBf62136fd369a820d7205f379cfaf10db63e87839libgpiod wrapper library
max3xx_tips/upload_di_state_to_harvest/start.1687425173.txt.gz · 最終更新: 2023/06/22 18:12 by admin