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)
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)