わかったつもりになってるけどまだ「群盲象を撫でる」の一人だね。
自作IoTを量産する方法について考えたのでここに残しておく。完璧な考察ではなく自分が知っている範囲の知識を集めてあるだけなので特にIoT対応クラウドサービスの種類について抜けがあるのは仕方ない。
ではいくつかIoT機器を自作してみたなかで量産する方法について述べていく。
IoT機器の量産て(機能を欲張らなければ)実はそんなに難しくない
当初は右も左もわからずいったい何から始めれば良いか。そもそも自分で作るなんて夢のまた夢だったIoT機器であるが、1年程度ネットの知見を集めまくるうちに何個も作るようになり、また定額費用はほとんどかからずほぼ無料に近い維持費でいけている。
IoTとくにホームオートメーションの肝は「マイコンボードにどうやって命令を送るか」だと思っている。
そこさえなんとかなればリレーをオンオフするだとかサーボをオンオフするだとか気軽にできると理解している。
IoT量産に必要な機器
マイコンボード
言うまでもなくまずはマイコンボードが必要だ。いくつか出回っているお手軽デバイスがあるがやはり金の乏しい自分なりに無意識にいつもチョイスしている機器でいうと
- ESP32(800円前後)(2022年3月時点でまだ未経験)
- ESP8266(500円前後)(技適未取得が大部分につき使わないほうが無難)
- Raspberry Pi(5~6000円より)
あたりが妥当なところだろう。っていうかまだ他のもの知らない。あとはせいぜいWi-Fi機能なしのArduinoUNOでドライブレコーダーリモート首振り機能つくったぐらい。
ほかにも当然ながらマイコンボードといったり超小型コンピュータなどあるが1個500円前後で入手ができる上記のESP8266あたりがいちばんコスパとしてベストなのではないだろうか。(ただし技適未取得という問題が残るが)
ほかのデバイスとして使ったことはないがM5Stackという超小型コンピュータがあるが価格が4桁になるのでホームオートメーションデバイスを量産するにはちょっと値が張ってしまい負担が大きい。
スマートスピーカー
IoTでスマートホーム、特に声で指令というのを実現するにはスマートスピーカーが必要になってくるのでAlexaまたはGoogle Homeのなにがしかは1個買っておく必要がある。これも自作できれば相当な強者だが。
最初はスマホのAlexaアプリやらグーグルアシスタントアプリがあればスマートスピーカーは必要なくね?って思っていたが自分が家に不在中にスマートホームを動かしたいと思ったらAlexaやらGoogle Homeは必要になるっぽい。
これについては少々話が長くなるので後でもう少し述べる。とにかくとりあえずスマートスピーカーは1個は持つべしだ。
出力系デバイス
スマートホームを実現するにあたってアウトプットが何かしら出せないと面白くない。センサー系ばかり配置して家の中の温度やら湿度やらをスマホで知るだけでもいいかもしれないがそのデータを基にエアコンを動かしたり扇風機を動かしたりといったことをさせたいとしたら出力系デバイスが必要になる。
その代表例として
- サーボ・・・物理的にスイッチ押すとかウィンチを回すとか鍵のサムターンを回すとかの役目
- リレー・・・コンセントとかの電源制御の役目
- 赤外線ランプ・・・エアコンやテレビやリモコン式照明のコントロール
余談:スマートロックについて
最初のとっかかりがスマートロックを自分で作れないものかと調べ始めたところからだったのでスマートロックを作るやり方についてちょっと述べておく。
スマートロックを作るのにいろいろ調査した結果、そう難しくはないとわかったのだが一番むずかしいのはサムターンを回す物理的機構だ。
以前もスマートロックを作ろうとRaspberry Piでいろいろ準備し始めて結局最後になってサムターンを回す機構が実現できずにスマートスイッチにしたというオチがあるが、つまり物理的な機構が数倍あるいは数十倍難しいということがいえる。
その機構をつくるのに考えられる手段として以下のようなものが挙げられる。
- 3Dプリンターで作る(CAD設計および操作スキルも必要)
- タミヤユニバーサルアームセットなどで組み立てる
- 割り箸とかの究極ローテクパーツでつくる
などなどあるがとにかく見苦しくなく鍵を回す構造を作るのは難しい。
入力系
話を戻すが、入力系として簡単なものから少々難しそうなものまで調べていくといろいろあるが、
IoTの命令伝達経路
まずはAlexa(またはGoogle Home)に言葉で喋って家の中の機器を動かしたいのでAlexaに伝えるとしよう。
↓
次にAlexaからどうやって各自作機器に命令を伝えるかであるがいくつか方法がある。こういう仲介をする仕事をするデバイスまたはサービスをIoT界隈ではブローカーと呼ぶらしい。
サービス名 | ざっくり特徴 | 処理の流れ |
IFTTT |
| Alexa→IFTTT→いずれかサービス→ESP32などデバイス |
Blynk(LEGACY旧版) |
| Blynkアプリ→(Blynkクラウド)→デバイス直結 または Alexa→Node-REDホームブリッジ→自前サーバー→Blynkクラウド→デバイス |
Blynk 2.0 |
| 上記LEGACYと似ているがパソコンでウィジェット設計ができる デフォルトで無線アップデート機能がある |
Node-RED AlexaホームブリッジまたはNode-RED Googleアシスタント ブリッジ |
| Alexa(またはGoogle Home)→ブリッジ→Node-RED→他のサービスまたはデバイス |
SinricPro |
| Alexa(または云々)→Sinricクラウド→デバイス |
Arduino IoT Cloud |
| おそらくBlynk2.0と類似で機器のOTAアップデートができパソコン上でウィジェット設計可能 |
Adafruit |
| Alexa(または云々)→Adafruitクラウド→Node-RED→自前サーバー→他のサービス→デバイス |
Beebotte | Adafruitと類似 | 上記と類似 |
Alexaサービス |
| Alexa→デバイス |
上記の表で整理したが理解が間違っているものがあるかもしれない。特にAdafruitとBeetotteあたりはアカウントは作って機器登録まではやってみたもののデバイスと完全接続までは果たせなかったのでどういう動きをするのか理解しきれていない。
ソフトウェア要件
Arduino IDE
これはArduinoというデバイスだったりESPなんちゃらというIoTデバイス(Wi-Fi機能やBluetooth機能を持つ)にプログラムを書き込んで動かす開発環境でほぼC言語またはC++みたいなものでつくる。
C言語の経験があれば使えるしライブラリが豊富でしかも基本的にぜんぶタダなので申し訳ないくらい。
さすがにパソコン未経験者からスタートしたらかなり習得には時間がかかるだろうし、パソコンの扱いに慣れていてもプログラミング言語未経験でもきつかろう。
幸い自分は若い頃に業務でC言語ほかを経験していたのと、今に至るまで業務で必要なものをEXCELやらACCESSのVBAでちょこちょこ作っているから可能だった。
ESPなんちゃらを使わずRaspberry Pi一本でやるっていうのであれば不要である。ただしRaspberry Piは1個6000~円とかするので何台も持てない。Raspberry Piでもzero wというさらに小型でWi-Fi機能あり技適取得済みで2000円ぐらいというコスパの良い小型コンピュータもあるが常に品薄で入手できないので考慮にいれない。
スマートスピーカーからデバイスへの伝達手段イメージ
左が上流で右へいくほど下流で最後はデバイス
スマートスピーカー AlexaまたはGoogle Home | スキル利用 | Sinric Pro(無料ではデバイス3個) | デバイス | ||
Arduino IoT Cloud(無料ではデバイス2個?) | |||||
IFTTT(無料では3レシピ) | Blynk | ||||
Adafruit | |||||
Beebotte | |||||
その他いろいろ | |||||
Node-REDブリッジ | Raspberry Piに代表される自前サーバー | Blynk | |||
その他 |
AdafruitとBeebotteについては自信がない。その他もっとメジャーなサービスがあるかもしれないが知らない。
自前サーバーってなんだよ?について
上記で自前サーバーと書かれているところがある。これはホームオートメーションしたい場所、つまりここでいえば自宅にパソコンを起動しておいてNode-REDのサーバーアプリを常時起動しておくとブリッジからのメッセージを他のクラウドサービス(例えばBlynk)に伝えてデバイスまで伝達させることができる。
通常のパソコンを常時起動しておくと電気使用料がかなりかかってしまうのでここではRaspberry Piをつかっても良い。っていうかRaspberry Piにするべき。
直接ラズベリーパイ使えばよいのでは?
それならIoT機器をすべてRaspberry Piにすれば面倒な伝達などひとつ減らせるのではないかと考えるかもしれない。
それでもよいが複数箇所へIoT機器を配置しようと思ったときにはRaspberry Piでは価格が6000円またはもっと高いし、Raspberry Piはちょっとしたパソコンレベルのスペックなのでもったいないのだ。
IoT機器はもっと機能を絞って低価格のものが望ましい。
Raspberry PiをNode-REDサーバーにするのが目下のところベスト
Node-REDなら今のところ無料かつ無制限でデバイスでも機能でも増やせるので助かる。
またそのNode-REDと密接に関連しているスマートホームブリッジサービス(Node-RED Alexa Home Skill Bridge , Node-RED Google Assistant Bridge)が現在無料で利用できるのも嬉しい。
そのうち有料になるかもしれないが今(2022年)は大丈夫。
つまりなぜベストなのか、どうやって安くIoT機器を量産していくかというと
- 例としてスマートプラグを作る
- マイコンボード内部ではBlynkライブラリでBlynkからの命令を待つ
- Node-RED Alexa Home Bridgeに登録する
- Raspberry PiでNode-REDサービスを動かしておく
- Raspberry PiのNode-REDでAlexaからの伝達フローでスマートプラグに指令を送るようにする
このやり方の利点は
- Raspberry Piはイニシャルコスト(購入費)のみかかるだけ
- Raspberry Pi1台動かしておくだけで2台3台など不要
- IFTTTとか不要
- なんならRaspberry Piをスマートスピーカーにしてしまうこともできる(難易度高すぎて断念したけど)
これでスマートスピーカー(ここではAlexa)に伝えた指令からスマートプラグのオンオフができるようになる。
ちなみにBlynkでは無料で登録できるウィジェットには制限があるが、裏技としてバーチャルピン番号は無料でいくらでも(?)使えるのでスマホアプリでウィジェットとして使うのを我慢し、Node-RED経由でスマートスピーカー(またはスマートホームアプリ)から命令に限定すればかなり無制限に使えるとみている。
BlynkサーバーのアプリをGitHubからダウンロードしてRaspberry Piで動かせば只で好きなだけウィジェットを作れて無限IoT機器をつくれることもわかり実現させた。
まとめ
つまり我が家ではRaspberry Piを1台ホームオートメーションの仲介サーバーとして起動しておいて、そいつは玄関灯のオンオフも承っているし、浴室ファンの昇降も承っている。でもってAlexaやGoogleアシスタントからの指令が来たら主にBlynkクラウドに転送して他の細かいIoTデバイスを動かすことに一役買っている。
という感じでこれからもいろいろIoT機器を格安(ボード代とサーボ代、リレー代ぐらい)で量産できそうだ。