この記事は
IoTLT Advent Calendar 2017 19日目の記事です。
この前の記事は@masashiokawaさんのエンタープライズIoT事例です。
最近はGoogle Homeにハマっております、nokkiiです。
業務ではIoTの研究、新規事業開発と大規模サーバミドルウェア開発、採用活動などをやっています。最近社内でハードウェア開発を始めたのでmbedを始めとしたARM環境とドライバ、量産経験者を募集していたりもします。ご興味ある方はお声掛けください。
今回はGoogle Homeで作ったスマートホームを自慢したい男たちのハードウェア詳解と言う形でやりたいと思います。
最近APIを生やした家電
トースター
昔作った「好きな焼き色を選んで焼けるトースター」をGoogleHomeから制御できるようにしました
動画では「パンを(時間)にトーストして」と命令を送ると炊飯器の予約のように時間を逆算して、タイマーを掛ける動作をしています。GoogleHomeに「朝ごはんはトーストにして」とお願いすると翌朝7:30にパンを焼いてくれます。課題としてはトースターにパンを刺しておかないといけないので、衛生面に不安がありますが2日くらいなら大丈夫でしょう(多分)。
電気暖炉
Dimplexの電気暖炉にESP32でHTTP APIを生やして制御できるようにしました。このシリーズは炎のゆらめきを水蒸気で表現していて、加湿機能だけ使うこともできます。芯まで冷える季節になったら直接当たれますが、消費電力の割に部屋は温まらないのでいまは加湿器モードにしています。
トースターのハードウェア解説
トースターはTOSHIBA FlashAirで操作しています。


具体的なAPIなど、
/command.cgi?op=190&CTRL=0x03&DATA=0x1c
電磁石もOFF
/command.cgi?op=190&CTRL=0x03&DATA=0x1e
ヒーターもON
/command.cgi?op=190&CTRL=0x03&DATA=0x1f
電磁石だけON
configにデジタルIO出力を設定した後、このようにCTRLにWriteするIOピン番号の16進値、DATAにOFFにするマスク値を書くと標準でデジタルIOが動作する。このようにFlashAirを使うと、家電のAPI化がわりと簡単に実現できます。
プログラム
使いようはないと思いますが、焼き色を選んで焼けるトースターのコードは公開されています。サーバが必要だったのをFlashAirのみでの制御に移行しているところなので、とっ散らかっていますが...。
https://github.com/nokkii/good_tooster
電気暖炉のハードウェア解説
電気暖炉にはステートを進めるボタンと電源を切るボタンがあるのでそこのON/OFFを制御します。リレーの制御回路的にはFlashAirと全く変わらないので、間違えてFlashAirと書いてしまいました。ESP32はノンプログラミングとは行かないまでもArduino気分でプログラミングでき、Webサーバのサンプルプログラムも公開されているので5分位のプログラミングで実装することができました。
プログラム
ESP32のサンプルプログラムと殆ど変わりませんが、これも公開しています。改造して遊んでみてください。
https://gist.github.com/nokkii/72c173793d763d66e988c20b230447a6
API
/heat 本体のステートを進めるボタン(加湿→弱→強)
/off 本体のOFFボタン押下
展望として、このマイコン自体にステートを記憶させて双方向に状態を取得できるようにするとグローバルの受け皿になっているエンドポイントのRaspberryPiが持っている暖炉のステートとずれにくくて良さそうです。
明日は@cw-hiramaさんです。よろしくお願いします。