NODE前回、Wioアプリを使って行おうとした、ベランダの温度と湿度をWebページに表示する記事のリベンジをします。Wioアプリではバッテリーが持たないことがわかっているので、今回は素直にプログラミングで行きます。温度・湿度センサーのDHT11はIFTTT経由でTwitterに送る記事で使ったので問題ないとして、残る問題はWebページに表示するための仲介となるサーバーをどうするかです。「なるべく手間をかけないで目的を達成する」をコンセプトにしているので、AWSとかではなくデータを中継してくれるようなサービスがないか調べてみました。今回利用することにしたのがMilkcocoaです。APIでラッピングされているせいかMQTTの知識は要求されません。個人で利用するには十分な無料プランが用意されています。NODE、Grove温度・湿度センサー(DHT11)、リチウムポリマー電池を入れて、磁石を付けた蓋でピタッとエアコンの屋外機吊り下げ枠にくっつけました。APIを使って実際のデータを表示しています。PCでご覧の方はサイドバーに同じ表示を見ることができます。Milkcocoaの準備まずはMilkcocoaに登録します。登録に必要な情報はEmailアドレスとパスワードのみです。登録が終わってログインするとダッシュボード画面になります。「新しいアプリを作る」でアプリを作ります。アプリ名はダッシュボード上の識別名でしかないのであまり気にする必要はありません。作ったアプリ名をクリックしてアプリを設定します。セキュリティを無視すると設定に必要な個所はメニューの「設定」です。許可Originに表示したいサイトのURLを登録します。図では「はてなブログの管理サイト」と「ぼくのブログサイト」を登録しています。(Milkcocoaのサイト)DHT11のライブラリ(ぼくの以前の記事)NTPのライブラリ(ぼくの以前の記事)Milkcocoaのページでは「ESP8266に直接プログラムを書き込む場合」の手順を行ってください。GithubからSDKをZIPでダウンロードしてライブラリマネージャーに追加します。Pi場合は追加後にヘッダーファイルの修正が必要でした。"include/aJson/aJSON.h"DHT11とNTPのライブラリ追加はぼくの以前の記事を見てくださいね。"esp8266/dht11"DATASTOREはその名の通りデータを保存する場所です。事前に保存場所を作成しておく必要はなく、データを保存するときに作成されます。Milkcocoaにデータを保存データの保存はこの一連の記述で行えます。データはデータ名とデータの値のセットで保存します。保存したデータはダッシュボードのデータストアで確認することができます。データ取得に失敗したらloop()からやり直す}DHT11は独自のシングルバスで温度と湿度のデータを送るため、タイミングが結構シビアです。難しいタイミングを合わせる作業はライブラリ任せですが、データ取得に失敗するケースが多々あることから、データ取得に失敗した時のリトライを行う必要があります。Sleep状態にしています。ESP.deepSleep()の第1引数はマイクロ秒で指定しますが、ESP8266は時計を内蔵していなく実際にはカウンターを利用しているだけのため、60分ぐらいの時間を指定すると数分のずれが生じます。Sleepに入る処理を加えて意図したタイミングに処理が実行されるようにしています。表示する場所をHTMLに用意しておき、データ取得後に取得したデータで置き換えるようにしています。リベンジ完了!フルスケッチをダウンロードできるようにしました。よろしければ使ってください。2017/5/11追記:アップロードしていたファイルがBOM付きになっていたため、Windows環境のArduinoで不可解なエラーが出る状態だったのを修正しました。Windows環境のArduinoではTime.hではなくTimeLib.hをインクルードしないとエラーになってしまうので修正しました。miniの粗悪品に注意!ESP8266月別アーカイブはてなブログをはじめよう!IntellectualCuriosityさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。