ATOM Matrix/Lite JSON M5Stack MQTT Python RaspberryPi

[ATOM] シリアルデータをJSON形式に変換して、MQTTで、ラズパイへ送る方法

更新日:

今回は、マイコンボードから取得したデータをシリアル通信で受信し、これをJSON形式に変換後、MQTTで、ラズパイへ送る方法を紹介します。

スポンサードサーチ

今回作成するアプリ

シリアルデータをJSON形式に変換後、MQTTで、サーバ(ラズパイ)へ送信。

想定する利用シーンとしては、複数のCANバスからのメッセージを受信して、これをクラウドへアップロードすることをイメージしています。

シリアルデータ形式

シリアルデータ形式は、以下を想定しています。

「COMMU_TYPE、ADDRESS、ID、DATA0、DATA1、DATA2、DATA3、DATA4、DATA5、DATA6、DATA7,」

COMMU_TYPE: CANとか、I2Cとかセンサー値を取得するための通信バスの種類を想定。

ADDRESS: センサー名称とか、通信バス名とかを想定。

ID: メッセージIDを想定。CAN IDなど。

DATA: センサ値や通信バスデータを想定。8バイトと仮定。

JSONデータ

JSONデータは、以下の構成を想定しました。

{
 ”TIME”:[UNIX-TIME, FreeRun-time],
"COMMU_TYPE" : type,
"ADDRESS" : address,
"ID" : id,
 "DATA" : [DATA0, DATA1, DATA2, DATA3, DATA4, DATA5, DATA6, DATA7]
}

JSONデータでは、シリアルデータに加えて、TIME情報を付与します。TIME情報は、ATOM内で更新される時刻情報です。これにより、サーバに蓄積された後、データ解析に使用できます。

UNIX-TIMEは、現在時刻をUNIX時刻で表現したもの。

FreeRun-timeは、ATOM起動から現在までをミリ秒でカウントしたものです。メッセージ間隔をミリ秒で計測することを想定して用意しています。

構成

・ATOM Matrix/Lite × 2台

・Raspberry Pi

・ArduinoIDE

スポンサードサーチ

ATOMの準備

ATOMのサンプルコード

上のサンプルコードでは、簡単に言うと以下の処理を行っています。

・シリアルデータの受信: 受信したシリアルデータを、” , ”単位で分割して格納

・JSONデータ生成: 分割したデータを、JSONデータ形式に生成

・MQTTにて、メッセージをPublish

ラズパイの準備

ライブラリのインストール

python版MQTTライブラリであるpaho.mqttをインストールします。

ラズパイのサンプルコード

ラズパイでは、以下を処理しています。

・MQTT接続時処理

・MQTTメッセージ受信時の処理

・MQTT切断時の処理

今後のことも考えて、マルチタスク化しています(task1、task2)。

スポンサードサーチ

ATOM(テストデータ入力)の準備

ATOM(テストデータ入力)のサンプルコード

テストデータ生成用のATOMは、PCからのテストデータを、ATOMのSerial2にゲートウエイしているだけです。

まとめ

今回は、シリアルデータをJSON形式に変換し、これをMQTTでラズパイに送信する方法を紹介しました。

スポンサードサーチ

参考

http://iizukakuromaguro.sakura.ne.jp/367_unixdatetimeino/367_unixdatetimeino.html

-ATOM Matrix/Lite, JSON, M5Stack, MQTT, Python, RaspberryPi
-, ,

Copyright© ラズパイの実 , 2020 All Rights Reserved Powered by STINGER.