#モチベーション
私は10年近く、工業分野のIT化に取り組んでおりますが、以前から
「世の中の商用向けIoTサービス、高すぎない?」
と感じてきました。
・センサでデータを取得して遠隔から見られるようにする
たったこれだけなのに、ウン十万円~ウン千万円といったオーダーの費用が掛かります。
そこで、
家庭向けの製品を組み合わせて、安価にIoTシステムを構築できないか
ということを、まずは我が家で試してみました。
結論から言うと、低コストでも完成度の高いおうちIoTシステムを構築できたと感じています。
2022/1/18追記:
本システムでトンガ火山噴火の衝撃波検出に成功しました
#おうちIoTシステムの要件
###IoTとは?
まず、「IoTとは何か?」というところをハッキリさせます。
総務省のホームページには、
IoTのコンセプトは、自動車、家電、ロボット、施設などあらゆるモノがインターネットにつながり、情報のやり取りをすることで、モノのデータ化やそれに基づく自動化等が進展し、新たな付加価値を生み出すというものである。
と記載されています。
また、こちらの経産省の資料には、
①人によるデータ収集を、センサーを使って自動化することで、既存業務を「見える化」して、業務の改善ができます。
②センサーなどにより、新たなデータを収集することで、これまで気づかなかった既存業務の課題が把握でき、生産性や品質の向上、コスト削減ができます。
③データ分析や新たな手法を考慮することで、新規事業の創出につなぐことができます
と記載されています(経産省の方が産業利用向けを想定した内容になっています)
他の資料を見ても、
A. センサ等でデータ取得
B. データをインターネット上で共有
C. データを見える化
D. 見える化したデータを分析し、現状の改善or自動化して価値創出
という流れを構築することが、IoT化の一般的なフローとなっていそうです
###今回構築したおうちIoTシステムの機能
前記A~Dのうち、A~CがIoT化における「手段」、Dが「目的」となっています。
今回は手段となるA~Cのシステムを構築するため、下記のような機能を組み込みました。
1. センサデータを取得:家の中のセンサから各種情報(主に温湿度)を取得
2. 家電の稼働情報を取得:家電のOn-Off情報を取得
3. 消費電力を取得:スマートメータから家全体の消費電力を取得
4. データの蓄積:取得したデータをクラウド上に蓄積
5. PCでのデータ表示:ダッシュボードを作成し、PC上でデータを可視化
6. スマホでのデータ表示:データ表示用アプリを作成し、スマホ上でデータを可視化
7. システムの死活監視:データ取得の失敗等を検知し、メール等で通知
8. 古いデータの自動削除:サーバ容量を圧迫しないよう、古いデータを自動削除
全体システム構成
前記1~8の機能を実現するシステム構成を、ハードとソフトに分けて解説します。
ハードウェア構成
本システムで情報を取得する対象は、前述のように
- センサ
- 家電の稼働情報
- 消費電力
となりますが、それぞれ以下のような内訳となります
1. センサ
2. 家電の稼働情報
種類 | メーカー | 名称 | 管理対象 | 備考 |
---|---|---|---|---|
テレビ | Panasonic | VIERA TH-49GX850 | OnOff情報 | 専用APIあり |
照明(LED電球) | TPLink | KL130 | OnOff情報 | リビング1台目 |
照明(LED電球) | TPLink | KL130 | OnOff情報 | リビング2台目 |
照明(LED電球) | TPLink | KL130 | OnOff情報 | リビング3台目 |
照明(LED電球) | TPLink | KL110 | OnOff情報 | 廊下 |
コンセント | TPLink | HS105 | OnOff情報 | IKEA間接照明に使用 |
エアコン | 三菱電機 | MSZ-SV287-W | OnOff・冷暖房・設定温度・風量・風向 | 前述のNatureRemoで取得 |
対象とした家電は以下の記事でまとめました
3. 消費電力
メーカー | 名称 | 測定対象 | 備考 |
---|---|---|---|
Nature | Nature Remo E lite | 消費電力(W)・積算消費電力(Wh) | 世帯単位で測定(スマートメーター) |
・Nature Remo E lite外観 | |||
##ソフトウェア構成
主に以下の4つの系統に分けて、システムを構築しています。
スクリプトは一部を除きPythonで書いています
No. | 系統名 | 機能 | 動作するハード | 詳細リンク1 | リンク2 |
---|---|---|---|---|---|
1 | Raspberry Pi3系統 | センサ情報、エアコン情報、消費電力を取得・表示 | RaspberryPi3 ModelB | センサ情報取得 | 消費電力取得 |
2 | Raspberry Pi4系統 | エアコン以外の家電情報を取得 | RaspberryPi4 | 家電情報取得 | |
3 | スマホアプリ | センサ情報、エアコン情報、消費電力を表示 | Androidスマホ | スマホアプリ詳細 | |
4 | 稼働管理スクリプト | システムの死活監視、古いデータの自動削除を実施 | RaspberryPi4 | 稼働管理システム構築 |
1. Raspberry Pi3系統
センサ情報、エアコン情報、消費電力を取得します
詳細は後述します
また、上記のソフトウェア構成(Python + Google Spreadsheets + Google Data Portal + MongoDB Atlas)を選択した経緯は、以下の記事に記載しております
2. Raspberry Pi4系統
エアコン以外の家電情報を取得します
詳細は後述します
3. スマホアプリ
センサ情報、エアコン情報、消費電力を表示するAndroidアプリです
詳細は後述します
4. 稼働管理スクリプト
「7.システムの死活監視」と「8.古いデータの自動削除」を行います。
Raspberry Pi4上で動作しており、下図の吹き出し部分が相当します。
詳細は後述します
#IoT化のために購入した機器・サービス一覧
IoT化のために、以下の機器を購入しました。テレビやエアコン等、元から保持していた家電は含めておりません。
【RaspberryPi関係】
・RaspberryPi3 ModelB (¥5,980)
・RaspberryPi4 ModelB (¥7,480)
・ラズパイ用ACアダプタ × 2台(1台¥2,000)
・Python実行環境(今回はプリセットのPython3.7.3使用)
【センサ類】
・Omron 環境センサBAG型 (¥9,350)
・Omron 環境センサUSB型 (¥10,902)
・Inkbird IBS-TH1 mini (¥2,899)
・Inkbird IBS-TH1 (¥3,399)
・SwitchBot温湿度計 (¥1,980)
・Nature Remo (¥9,800)
・Nature Remo E Lite (¥14,800)
【IoT家電】
・TP-Link KL130 電球 × 3台 (1台¥3,100)
・TP-Link KL110 電球 (¥2,100)
・TP-Link HS105 スマートプラグ (¥2,600)
【DB関係】
・Googleスプレッドシート (データアップロード用、無料)
・MongoDB Atlas (データアップロード用のクラウドDB、無料枠を使用)
【可視化用】
・Google Data Portal (無料のクラウドBIツール)
【開発環境】
・ノートPC (Intel Core i5-8250U, 8GB Memory, Windows10)
・Visual Studio Code (無料のIDE, SSH接続がラズパイ操作に便利です)
・Android Studio (無料のAndroidアプリ開発用IDE)
・無線マウス&キーボード (ラズパイの操作用、¥2,300)
掛かった費用
計¥90,289と、10万円以下に抑えることができました(作業用のノートPC除く)
上記構成では比較のためにセンサを多く購入しているので、
同様の機能を実現するための最低限の構成は、
・RaspberryPi3&電源&SD(10,000円前後)
・温湿度センサ2台(屋内+屋外用、5,000円前後)
・Nature Remo(10,000円前後)
・Nature Remo E lite(15,000円前後)
で4万円程度となるかと思います
#個々の機能解説
機能実現のための仕組みや、実装手順を解説します。
1. センサデータの取得
1-1. ハード
使用したセンサ詳細は前記およびこちらの記事を参考にしてください
また、ラズパイやセンサの取り付けや配線はインテリアの邪魔とならないよう、随所で工夫を加えました。
工夫したポイントを下記します
・Raspberry Piをディアウォールとホームセンター金具で固定
このディアウォール、この後も随所で出てきますが、壁に穴を開けずに色々設置できるので、IoT関係なしに本当に便利です!(ステマではありません笑)
また、コードが見えると格好悪い上に足を引っかけ危険なので、モールで壁やディアウォールに這わせて仕舞うのがおススメです!
・センサもディアウォールに固定
・無線センサはマジックテープが便利
無線センサは電池交換が必要なので、完全に固定してしまうとめちゃくちゃ不便です。
ここで便利なのがマジックテープ!! 下の図のように電池カバー部分を避けて貼ると、電池交換も容易です
マジックテープを使えばソファーの脚のようなトリッキーな場所も自由自在に設置可です!
・小さいセンサは設置の小回りが利く
サイズが小さいセンサは狭い段差でも設置出来て便利です。使えるところは全部使っちゃいましょう!
・屋外設置センサはアクリルケースで保護
雨粒や紫外線防止のため、100均で売っているアクリルケースで保護するのがおすすめです。
ベランダでも雨の吹き込みで濡れるので、注意が必要です。
私の経験からも、雨ざらしでの劣化速度は本当に早いです(プラスチックがカピカピになって割れる)
[画像]
1-2. ソフト
センサデータの取得は、RaspberryPi3系統のうち以下の部分が該当します。
上記システムの構築方法は別記事で詳説しているので、以下をご参照ください
2. 家電の稼働情報を取得
IoT家電を活用し、家電のOn-Off情報を取得できるようにします。
ただ情報を取得するだけでなく、Alexaやスマホアプリを使ってON-OFF制御することも可能です(どちらかというとこちらの需要の方が高そうな気もします‥笑)
2-1. ハード
こちらで列記したIoT家電の活用法や設置法を、写真を交えて紹介します
テレビ
以前購入したPanasonicのVIERA TH-49GX850がPython APIによる情報取得に対応していたため、これを活用しました
最近のVIERAであれば、大半はPythonで情報取得が可能かと思います。
ざっと見た限りでは最近のSONY BRAVIAやSHARP AQUOSも対応していそうな感じです
照明
2020/12現在、Python APIによる情報取得に対応した電球は800lm以下の暗めのものしかないため、お部屋全体をカバーするには複数台をシーリングライトに取り付ける必要があります。
私の場合、上のようなシーリングファンに取り付けました
※Python API対応で1600W以上の明るい電球やシーリングライトをご存知であれば、コメント頂けるとありがたいです!
コンセント
IoTでON-OFF制御できるスマートプラグは、電源供給のON-OFFのみで制御できる機器に幅広く活用でき、非常に便利です。
私は以下のようなIKEAの間接照明のON-OFFに使用しています。
間接照明をIoT化して何の意味があるのか?と思われる方もいるかと思いますが、正直意味はありませんしほぼ使っていません笑
せいぜい来訪者があったときの小ネタに使えるくらいでしょうか‥
エアコン
三菱電機の15年前のモデルです
当然IoTには対応していませんが、なんとNature Remoのエアコン制御機能を使う事で、古いリモコン対応のエアコンを遠隔制御することができます。
制御だけでなく、On-Off・冷暖房・設定温度などの情報を取得することもできるので、エアコンでIoTぽい事をしたい!と言う人はNature Remoは非常におすすめです!
なお詳細は後述しますが、本システムではエアコンのみ別系統(他の家電はRaspberry Pi4系統だが、エアコンのみRaspberry Pi3系統)で情報取得しているのでご注意ください。
2-2. ソフト
前述のように、エアコン以外(Raspberry Pi4系統)とエアコン(Raspberry Pi3系統)で系統が異なるため、別々に解説します
エアコン以外
Raspberry Pi4系統全てが該当します
構築方法は以下の記事を参照ください
エアコン
エアコンデータの取得は、RaspberryPi3系統のうち以下の部分が該当します。
「1.センサデータ取得システム」の一部として組み込まれているので、詳しくは以下をご参照下さい
3. 消費電力を取得
3-1. ハード
**Nature Remo E lite**を使う事で、スマートメーター経由で世帯ごとの消費電力を取得できます。
3-2. ソフト
Nature Remoと共通のAPIで消費電力が取得可能です。
本システムではRaspberry Pi3系統の一部として組み込まれています。
具体的な構築方法は、以下の記事を参照ください
4. データの蓄積
大きく以下の2系統に分けて、データをアップロードします
アップロード先 | 対象の系統 | 目的 |
---|---|---|
Google SpreadSheet | Raspberry Pi3系統 (センサ・エアコン・消費電力) | センサ情報ダッシュボード+消費電力ダッシュボード |
MongoDB Atlas(クラウドDB) | Raspberry Pi3系統 (センサ・エアコン・消費電力) + Raspberry Pi4系統 (エアコン以外の家電) | スマホアプリ+Jupyterでの分析 |
にデータをアップロードします。
詳細は以下のリンク先を参照ください
・Raspberry Pi3系統(センサデータ)のGoogleSpreadsheetへのアップロード
・Raspberry Pi3系統(消費電力)のGoogleSpreadsheetへのアップロード
・Raspberry Pi3系統のクラウドDBへのアップロード
・Raspberry Pi4系統のクラウドDBへのアップロード
5. PCでのデータ表示
スプレッドシートやDBに蓄積したデータをグラフ表示することで、データの変化や関係性を見やすくします
詳細は別途記事にしているので、下記リンクをご参照ください
・センサデータ可視化ダッシュボード
・消費電力可視化ダッシュボード
・センサデータのJupyterによる分析
・家電データのJupyterによる分析
6. スマホでのデータ表示
Android(Kotlin)でデータ表示用アプリを作成し、スマホ上でデータを可視化できるようにしました
後述しますが、正直おうちをIoT化しても実用性のある用途はあまりないなと実感していますが(笑)、
このアプリだけは実生活のお困りごと解決に役立っています!
(ピンポイントかつリアルタイムの天気や気温が分かるので、外出前の服装や交通手段の選択に使える)
アプリの具体的な作成方法は、以下のリンクを参照ください(そこそこ長いです)
7. システムの死活監視 & 8. 古いデータの自動削除
本システムでは、センサの電池切れやRaspberryPiの不具合、利用クラウドの障害、ストレージの容量オーバーなど、データ取得の障害となる要因が数多存在します。
そこで、障害の早期発見(可用性UP)、**障害の発生防止(信頼性UP)**を目的として、下記の4機能を追加しました
No. | 機能名称 | 詳細 |
---|---|---|
1 | 死活監視 | データがアップロードされていないことを検知&メール通知し、障害に早く気づく |
2 | 電池切れ予兆検知 | 電池切れの予兆を検知&メール通知し、発生前に気づく |
3 | データ定期削除 | DB内の古いデータを定期的に削除し、容量オーバーによる障害発生を防ぐ |
4 | データ定期バックアップ | 上記削除される前にデータをローカルにバックアップする |
構築方法の詳細は、以下をご参照ください
ラズパイやクラウドは現時点ではほとんど障害が起こっていないので、実用上は電池切れの検知が最も役に立っていると感じています。
その他の工夫点
ラズパイ開発環境の改善
本システムの核となる機器はRaspberryPiなので、
RaspberryPiを快適に操作するための環境構築が、開発効率に大きく寄与します。
私の実施した工夫例を紹介します。
・マウスとキーボード
ラズパイのUSBポートは限られているので、マウスとキーボードを1個のUSBトングルで共有できる製品が便利です。
私は以下のマウス&キーボードセットを使用していますが、テンキーの有無や予算に合わせて適宜検討してみてください
・表示画面とHDMIケーブル
普段の開発では後述のSSH接続で遠隔操作するのが便利ですが
トラブル時などにラズパイから直接画面出力をしたい場面も多々発生します
小型のタブレット画面や無線での画面共有も試してみましたが、個人的にはHDMIケーブルでテレビや液晶モニタに接続する古典的な方法が、最もしっくりきました。
やはりラグなく大画面で操作できる快適さは何物にも代えがたいです。
とはいえ常時ケーブル接続していると邪魔になる可能性が高いと思うので、邪魔にならない部分までケーブルを引いておき、必要なときだけ下記のような中継コネクタを使って延長する、と言う方法が便利だと感じました。
画面じゃなくてノートPCと有線接続したい、と言う場合は、以下のようにクロスケーブルを使う方法が便利です。この方法でも後述のSSH接続ができます
・SSH接続とVSCode
前述のHDMIケーブルの例のように、定常的な開発において、ラズパイでの開発専用に画面やキーボードを接続したり、開発ツールを準備するのは非常に面倒で、学習コストも掛かります。
普段使っているノートPCとIDEで開発できると、開発ツールが一本化できて効率的です。
VSCodeであれば、SSH接続を使って無線で、あたかも通常のLinux PCを操作しているかのように開発できます。
詳細は以下の記事にまとめました
#やってみて思ったこと
価格について
最初に**「商用向けのIoTサービスは高い!」**
と言いましたが、
似たようなシステムを構築するだけであれば、遥かに安価(桁が1つ〜2つ減るレベル)に実現できることが分かりました。
ただし、後述の時間的コストとサポートの課題があるので、これらとの兼ね合いになるかと思います。
信頼性について
システム停止(信頼性不足)やデータ欠損(可用性不足)だらけで実用性に耐えない、
ということも危惧していましたが、
・前者は1年間ほぼノーメンテで稼働(2回ほどラズパイが原因不明の停止をしましたが、再起動で復活しました)
・後者は欠損率ほぼ1%以下(センサとの距離が近ければ産業向けの目安と言われる0.1%以下の低欠損率)
と、個人で使う分には実用に全く問題のないレベルで信頼性が確保できました。
最大の敵は各センサで1~6ヵ月に1度発生する電池切れで、気づけないまま停止状態が続くと可用性を大きく低下させます。
そういう意味では、電池切れ予知・検知システムは可用性向上に大きく貢献すると感じました。
高価なIoTシステムとの差
商用向けに提供されているIoTシステムとの最大の差は構築にかかる時間的コストとサポートの有無だと感じました
・構築にかかる時間的コスト
構築にかかる手間としては、作業時間よりも、方法を調べる時間的コストが大きいと感じました。
このあたりは、繰り返し作業のマニュアル化が進んでいる組織が非常に有利だと思います。
RaspeberryPiのような汎用機器を使う場合、Dockerのようなセットアップを簡略化するツールの活用が、本コストの低減に繋がりそうです。現状ではラズパイでDockerを使用するにはビルド時間等の課題が存在するようなので、今後の進化を待ちたいと思います。
・サポート
サポートに関しては、機器の数が増えるほど故障の頻度が高くなり、メリットを感じる場面が多くなりそうです。故障の検知や故障個所の特定を自動化することが、この面での効率化に繋がるかと思います。
理想を言うのであれば、故障前に予兆を検知できればベストですね!
#より良くするには
今のシステムを使っていて、以下の部分に改善の余地があると感じました
##系統の冗長化
1年半で2回程度とはいえ、Raspberry Piが突然動かなくなって一切のセンサデータが取得できなくなることがありました。
RaspberryPiの再起動、それで治らなくともOSを再インストールすれば基本は治るのですが、
これらの復旧作業に時間が掛かる上に、そもそも夜間では故障したことに気付くのにも時間が掛かるので、
その間のデータが取得できず、欠損値となってしまいます。
RaspberryPiは1万円以下と安価なので、2台のラズパイで別々にデータを取得する等、
データ取得システムを2系統準備できれば、より可用性の高いシステムが構築できると思いました。
バックアップの簡略化
もしシステムの不具合でOSの再インストールが必要となった場合、今の仕組みではライブラリの導入等を手動で行う必要があり、非常に手間が掛かります。いわゆる「保守性」が低い状態です。
上記のような不具合発生時には、可用性維持のためには迅速なバックアップへの切り替えが重要となります。
RaspberryPiの場合同内容をコピーしたSDカードの交換でもハード的な対処はできますが、Docker上にシステムを構築しておき、ソフト上で簡単に入れ替えができないか検討したいと思います。
LPWAや長距離無線通信
今回はネット環境の整備された屋内での利用となりますが、屋外で使用するのであればインターネット接続の確保が課題となります。
このような環境では、ソラコム等の4G通信や、より低消費電力なLPWAが候補となるかと思います。
またインターネットだけでなく電源も確保できない場合、バッテリー駆動を検討する必要がありますが、このような環境においてラズパイはオーバースペックで電池を食うので、
こちらの記事のようにより低消費電力なデバイスを検討した方が良いかと思います。
分析と改善による付加価値の創出
これまではシステムとしての残課題を挙げましたが、目標設定面でも課題があります。
センサによるデータ取得や見える化は、あくまで価値を生む種となる
「手段」
であって、
その導入自体では何の価値も生み出していません。
(あくまで趣味なので、「家庭でIoTシステム作ったぞ!」という達成感を得ることが目的ともなりえますが(笑))
これは家庭向けどころか産業向けでも同様で
IoTシステム構築という**「手段」が目的化してしまっている例は非常に多い**です。
手段が目的化する理由
かくいう私もQiitaでIoTやデータ分析の記事を書いていますが、両者を組み合わせて役に立つものを作れておらず、手段が目的化している人間の典型例となっています笑
ここまで来ると個人開発の域を超えてしまいますが、あえてマネタイズするのであれば何が課題かを、自分なりに考えてみました。
今回構築したIoTシステムの家庭向けでの需要を素直に考えると、以下のようなソリューションが浮かびます
1. 家電の稼働情報&気温等センサ情報を説明変数とて分析を行い、電気代の上位要因をランク付け。稼働の最適化や使用量上位機器への省エネ対策により電気代を軽減する
2. 「気温低下したらエアコンを自動ONする」等の、生活を快適にする自動制御を実装
3. 「気温に応じて服装を提案」等の、センサ情報に基づいたレコメンド機能
1. 電気代軽減について
一般家庭での電気代は数千円オーダーなので、追加コストをかけずに削減できる効果はせいぜい10%、月数100円程度かと思います。
最低限必要な初期投資の費用は
RaspberryPi3&電源&SD(10,000円前後)+温湿度センサ2台(屋内+屋外用、5,000円前後)+Nature Remo(10,000円前後)+ Nature Remo E lite(15,000円前後)
で4万円程度は掛かるので、多めに見積もって月間800円電気代節減できたとしても回収に4年以上掛かってしまい、短期でコストメリットを出すことは難しそうです。
2. 自動制御について
工場やオフィスであれば温度や湿度で区切って自動制御するメリットは大きいですが、
**家庭利用の場合「状況によって快適に感じる温度が異なる」**ことが問題となります。
例えば運動直後や熱いコーヒーを飲む時には気温が低い方が快適に感じますし、就寝時や入浴直後は低い気温は健康に悪影響を与えます。
上記に対して「寒く感じたらエアコンの温度を手動で上げる」という対処は理にかなっていますし、それほど手間も掛からないので、端的に言うと今の手動制御と比べてメリットが小さいことに尽きるかと思います。
こちらのアンケートでも、「家庭向けIoTは利用する必要性を感じない」人が多くを占めていますし、本システムの初期投資4万円に見合う快適性の供給は難しいように感じます。
3. センサ情報に基づいたレコメンド機能
ざっと思い付くレベルのアイデアは、だいたい既存アプリが存在します笑
(例)
思い付いたソリューションを調べたら先行例あり、というパターンを繰り返すたびに「アイデアに価値はない」という言葉の意味を実感させられました‥
ではどうする?
このような状況でおうちIoTをマネタイズするのであれば、以下のような対処が考えられそうです。
A. 電気代の機器ごとランク付けと対策の検討(上記1に対する対策、回収に4年以上掛かる)
B. コストや快適性などの実利ではなく、ガジェット好きの好奇心に訴求する
C. おうち向けではなく他の分野で安価なIoTシステムを活用する
私は家庭向けにこだわりはないので、もしこれ以上取り組むのであれば、需要に応じてCの方針を活用する方向にいきたいと思います。
まとめ
・10万円以下(最低限4万円)で、家電・各種センサ・消費電力を取得、制御できるおうちIoTシステムを構築できた
・信頼性も産業向け一歩手前レベルまで担保できた
・信頼性向上のためには稼働管理システムが便利
・商用向けIoTシステムとの差は、導入時の時間コストとサポートの有無が大きい
・おうち向けではマネタイズ難易度が高そう。他用途への流用を考えたい