経緯
自分の研究室はセンサデータを扱うことが多いので、プロトタイプに室内の気温などの値が欲しいことがよくあります。
そのたびにメンバーが個々で電子工作したり Arduino でセンシング環境を作ったりしてます。
毎回各自自前で実装するのはめっちゃ無駄です。
なので、みんなで取ってこれるもの欲しいねってことで作りました。
やったこと
- ラボの気温と湿度をセンシング
- ディスプレイに表示
- MQTT で配信
使ったもの
- ボード: ESP8266
- 気温・湿度センサ: SHT31
- ディスプレイ: AQM0802
- MQTT broker: Thingspeak
- Mongoose OS + mjs
成果物
リポジトリ: https://github.com/elzup/leilei
気温・湿度を読み取る!
MongooseOS + mjs で I2C 気温センサを読み取る - Qiita
ディスプレイに書く!
ハードコーディングで自前で実装しました。mjs 辛すぎる。。
ThingSpeak に飛ばす!
ThingSpeak に MQTT API があるのでそれを使いました。
https://jp.mathworks.com/help/thingspeak/publishtoachannelfeed.html
$ curl -XGET "https://api.thingspeak.com/channels/xxx/feeds.json?api_key=xxx" |jq ".feeds[3]"
######################################################################## 100.0%
{
"created_at": "2017-12-25T02:38:09Z",
"entry_id": 4,
"field1": "25.592813",
"field2": "30.153353"
}
とれました。
これで研究室メンバーががいつでも研究室の気温をとれてハッピーです
感想など
今回のいいところ
i2C のセンサを使っているので、ハブに生やして他のセンサも拡張できます。
ThingSpeak をホストに使っているので MQTT にかぎらず REST API でも取ってこれます。(MQTT over Websocket も使えます)
Mongoose OS について
mos という cli が強くて、ブラウザアプリも充実しています。ローカルエディタでの開発環境を整えたけど、補完が効かなかったりモジュール対応させたいです。
secret key 関係の設定をどうすればいいのかまだわからないです。mos.yml で環境変数とれたりすれば幸せ。