おもちゃ、家電、もろもろの修理の足跡と備忘録

色々と忘れるので、趣味のメモ

LUAを使ってAmbientでグラフ化

2020-03-08 14:50:01 | ESP8266DEVkitで遊ぶ
ESP8266 LUA/NodeMCUでAmbientでグラフ化しました。

Facebookのとあるグループで、LUAを使ってAmbient(https://ambidata.io/ )に書き込む方法があったら教えて、と以前投稿したのですが、Cのコードがあるから移植すればできるよね、とか情報を頂きました。投稿する前に調べたのですが、探し方が悪くでてきませんでした。いくつか教えて頂いた中に、shellでの例題を教えてくれた方がいらっしゃったので、それを例題にLUAで動かしてみました。
教えて頂いたshellは、githubのこちら。

httpでPOSTすれば良さげなので、LUAのCustomBuildの中にHTTPモジュールが入っていることを確認してやってみました。shellでの例題をみて、JSONって何さ、とかcurlってなんだろう、とかちょっと調べましたが、まぁ、そういうのがあるんだ、とかと納得しながら、Try and Errorで、mqtt向けに作ったLUA scriptを修正して、動くようにしました。

肝の部分は、こんな感じです。ご参考まで。
サーバでうまく取り込めると、responce_code: 200が返ってきます。
---------------
--[[
ESP8266 NodeMCU LUA言語でambient.ioへデータを送信する
事前にNodeMCUのCustome Buildされたものに、http moduleが
入っていることを確認
ambientの、d1-channelで気温、d2-channelで気圧。
Ambient関連の変数、JSON設定の前にtemp,baroに値を設定
--]]
-- for ambient
AmbientChannelId=xxxxx
AmbientWriteKey='xxxxxxxxxxxxxxxx'
AmbientHeader='Content-Type: application/json\r\n'
AmbientUrl='http://ambidata.io/api/v2/channels/'..AmbientChannelId..'/data'

-- IP関連の設定/NetworkのUpを確認した後
JSON='{"writeKey":"' .. AmbientWriteKey .. '","d1":"'.. temp ..'","d2":"'.. baro ..'"}'

http.post(AmbientUrl, AmbientHeader, JSON,
function(code, data)
if (code < 0) then
print("HTTP request failed")
else
print(code, data)
end
end)