BME280温度データをESP8266でAWS IoT に送信

今度は本物の温度データをAWS IoTにアップしました

構成は、ESP8266(RTOS) + AWS-IoT-SDK + BME280 です。

温度の測定間隔を 5分 にしました。

AWS DynamoDB に格納された温度データを
Exportして、データ部分がJSON形式なので、
C#(JSON.NET) を使って、csvファイルに変換し、
エクセルでグラフ化しました
赤丸が温度データ、青丸が測定データの間隔を示しています。
約3日分のデータです。
画像
測定データの間隔は、
300秒から302秒の間にすべてあり、途中でのデータ損がないことが分かります。
ちなみに、300、301、302と秒単位なのは、グラフ用のcsvファイルへ変換する時に
時間を秒単位にしてしまったためです

温度データがところどころ連続ではなく、飛んでいる点がいくつか見られます。
データを見てみると・・・
画像
数か所見てみると、なんとなく不具合が見えてきます。
本当は、小数点第一位が"0"なのでは?と・・・

実際のソースコードを確認すると、やっぱり間違ってました
これは、測定データをJSON形式に変換している部分で、
修正前:
1: pubParams.MessageParams.PayloadLen = irom_snprintf(
2: payload, sizeof(payload),
3: "{\"sensor\":{\"Temp\":%d.%u,\"Humi\":%u.%u,\"Pres\":%u.%u}}",
4: temp_int, temp_frac, humi_int, humi_frac, pres_int, pres_frac);
修正後:
1: pubParams.MessageParams.PayloadLen = irom_snprintf(
2: payload, sizeof(payload),
3: "{\"sensor\":{\"Temp\":%d.%02u,\"Humi\":%u.%02u,\"Pres\":%u.%03u}}",
4: temp_int, temp_frac, humi_int, humi_frac, pres_int, pres_frac);
浮動小数点使っていれば問題ないですが、浮動小数点を使わない主義のため、
文字列変換時に間違ってました。
シリアルへの表示はチャント出来ていたのですけどね

修正後の測定データです。
さっきまでの1日分ですが、飛んでいるデータは無くなりました
画像

今日は遅くまで寝ていたので、10時頃まで温度上昇。
起きて、窓を開けたため、お昼ころまで温度低下、
その後は外気温上昇のため(?)、温度上昇中ってな感じです

次は、これをブラウザから見れるようにしたいですね

参考までに、ソースコードを置きました。 ⇒ ここ
*既知の問題*
① たま~に、TLS接続中にリセットがかかります
② 新しい、ESP8266_SDK_1.4.0ではうまく動作しません
数十分後にリセットがかかります。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック