ラズパイとサーモセンサーで自宅のガスコンロ監視（火の用心）

#<b>■はじめに</b>
キッチンで煮物をしながらうっかり外出。子供がガスを点けたまま放置。などなど火の元の安全はいつも気になりますね。
これから外出しようというときや、大人が自宅にいないのにガスコンロが使われていたら、スマホにアラートを通知してくれるとちょっとだけ安心。。。そんな機能をおうちハックの一環で作ってみました。
ラズパイにサーモセンサーをつないでガスコンロの状態を監視し火の元の状態を常に保持。ついでにカメラでガスコンロの様子も撮影します。
スマホの位置情報や自宅 WIFI 接続情報、自宅の人感センサーから在宅かどうかを判別、外出時や不在時にガスコンロで火が使われていたら LINE に通知します。
これがあれば完璧というものではありませんがもしもの時は少しは役立つかも？。

#<b>■全体図</b>
![gus.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241735/21830a48-55f7-ed73-0b17-5cd42672530f.png)

ラズパイにサーモセンサーを接続し定期的にガスコンロの状態を監視するコマンドを cron で定期サービス化、同時にガスコンロ周辺の様子をWEBカメラで撮影。任意のタイミングでラズパイから LINE Messaging API を使って家族スマホの LINE にアラートメッセージとキッチンを撮影した画像を送信しています。

#<b>■サーモセンサーの使い方</b>
![102382388[1].JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241735/55ee8008-994f-0954-e54f-792878b0ffdb.jpeg)
ラズパイからのサーモセンサーの制御などは以下の記事を参考にさせていただきました。
使用しているセンサーも以下記事同様、楢ノ木技研の [[USBサーモグラフィモジュール２]](https://oaktree-lab.shop-pro.jp/?pid=102382388) です。

参考：[サーモカメラとRaspberry Pi で熱源監視](https://camp.isaax.io/ja/tips-ja/raspberry-pi/thermo-raspberrypi)

※上記記事ではラズパイとサーモセンサーはシリアル通信で接続のため多少工作していますが、うちではそのままラズパイにUSBで接続して以下の公式サンプルコードを利用しています。

ソースコード：
楢ノ木技研から公開されている以下の Linux 用のコードがそのままラズパイに USB 接続したサーモセンサーで使えます。
https://github.com/yamamaya/libUSBThermo

実行すると以下のような感じで横16x縦4の解像度でセンサー正面の温度を測定してくれます。（以下だとセンサー正面左上の位置で138度の熱源があることがわかります）
解像度は荒いですが、比較的遠くまで検出できるようで（うちでは 2m くらい先の温度までちゃんと取れていました）カメラの画像とは違うのでこのくらいの解像度でも今回の目的では十分です（もっと高解像度のセンサーはとても高価ですので・・・）

```
USBThermoRead:
138.9 119.8 132.6 62.3 35.7 33.7 32.5 33.0 33.3 32.8 32.6 34.3 33.7 34.3 34.6 35.3
127.8 96.8 102.7 51.0 33.9 32.8 32.9 32.3 32.7 33.1 33.5 32.6 32.4 33.1 32.9 34.7
73.4 71.8 53.4 35.7 39.2 32.3 33.7 31.6 33.2 33.0 32.6 34.3 33.5 33.4 33.8 34.5
37.6 36.1 34.7 37.3 35.4 32.9 32.6 32.4 32.4 32.0 32.5 31.7 32.8 34.2 34.9 34.6
```

上記 git 上サンプルの main.c 37行目あたりを以下のように書き換えると意図した温度を超えた場合を検出できます。

```
main.c:
int flagHot = 0;
for ( y = 0 ; y < frame.height ; y ++ ) {
        for ( x = 0 ; x < frame.width ; x ++ ) {
                printf( "%02.1f ", frame.pixel[y][x].temperature );
                if( frame.pixel[y][x].temperature >= 40.0 ) flagHot = 1;
        }
        printf( "\n" );
}
printf( "\n" );
```


#<b>■WEB カメラの使い方</b>
ガスコンロ・キッチンの様子の撮影には市販の安価な WEB カメラを使用しています。
WEB カメラは UVC（USB Video Class）に対応しているものであれば、たいていの物はラズパイで使用可能ですのでオークションなどで出回っている安物カメラで十分です。
静止画の撮影には今回は fswebcam というコマンドを使用しました。

参考：[RaspberryPi 人感センサーからカメラ撮影してメール送信しちゃう](http://orangetech.hateblo.jp/entry/2016/09/04/232643)
参考：[安価なWebカメラC310をUSBでラズパイに接続して画像を取得する](https://iot-plus.net/make/raspi/get-photo-using-webcam-c310/)

#<b>■LINE Messaging API の使い方</b>
LINE Messaging API の使い方は以下で詳細に解説していますので参考にしてください。

投稿記事：[[LINE と Firebase とラズパイを繋いでみたよ☆ - Qiita]](https://qiita.com/kt-sz/items/c008084300a978516153)

#<b>■実際の利用例</b>
上記の組み合わせでガスコンロの状態監視と、キッチンの様子を撮影した画像、LINEへの通知が行える状態になりますが、実際どのようなタイミングで通知を行っているか使用例のご紹介です。

●家族の誰かが外出したタイミング
家族それぞれのスマホに IFTTT による外出通知機能を設定しています。自宅周辺から一定距離離れると、IFTTT に通知が飛び、そこからラズパイで自作の自宅スマートホームサーバーに WEBHOOK API で通知を転送しています。
自宅のサーバーでこの通知を受け取ったタイミングで、もしガスコンロに火がついていた場合には即座に家族全員の LINE に火の元の警告を通知します。

●無人の時
自宅キッチンのラズパイに人感センサーを接続して自宅に人がいるか常に監視しています。
一定時間 家が無人の状態で、もしガスコンロに火がついていた場合には即座に家族全員の LINE に火の元の警告を通知します。

●ガスコンロが点いていたら Google Home でアナウンス
上記2つの例はどちらも外出中の人に対するアラートですが、家に人がいてもいなくても関係なく、コンロに火が点いていることを検出したらキッチンの近くに設置した Google Home から注意喚起のメッセージを発話させています。外の人にアラートを送るのもよいですが家に人がいる可能性もあるので家の中で警告の方が安全面では実効性が高いので。

参考：[Raspberry PiからGoogle Homeを喋らせる](https://qiita.com/ktetsuo/items/8c9cd5714e231aa6ae09)

#<b>■最後に</b>
今回はちょっといつもの家電操作のお気軽 おうちハック とは違て、少しクリティカルなシチュエーションでの利用です。
この記事で書かれていることだけで火の元の安全が保証されるわけではないのでくれぐれもご注意ください。
実際にこの機能を必要とするような状況が発生しないほうが安心という意味では、ちょっとこれまでとは違った方向性の機能ですが、ちょっとした安心感のためという程度です。
この手のリスクのある領域は遠隔操作や自動化はリスクと隣り合わせです。誤動作した時の被害も大きいので直接火を制御するようなインプリは避けるべきですし、今回のような監視のみでも過信は禁物です。

##<b>※投稿記事一覧</b>
他にも 自分で「おうちハック」した内容を以下に投稿しているので、よろしければ合わせてご覧ください☆

・GoogleHome/AmazonEcho とラズパイでやった事・やりたい事一覧[[LINK]](https://qiita.com/kt-sz/items/86536aff99d80c1cd464)
・Google Home でちょっと未来風のスマート TV を作ってみたよ☆[[LINK]](https://qiita.com/kt-sz/items/0362d5fe3e9a3e478245)
・黒豆 (Broadlink RM Mini 3) の IR 信号解析してみたよ♪ [[LINK]](https://qiita.com/kt-sz/items/1c36a7b22a58359a8e6f)
・スマートロック SESAME の WEB API が便利だった！[[LINK]](https://qiita.com/kt-sz/items/e8ccec02605584e62b53)
・Amazon Echo の沢山ある面白スキルを気軽に遊ぶ方法[[LINK]](https://qiita.com/kt-sz/items/0d01e763d540ddea5816)
・LINEを「ラズパイのターミナル化＆スマートホームのフロントエンド化(ChatOps風)」してみた♪[[LINK]](https://qiita.com/kt-sz/items/9adcb02a3b3a6cf3dd7b)
・LINE と Firebase とラズパイを繋いでみたよ☆[[LINK]](https://qiita.com/kt-sz/items/c008084300a978516153)
・GoogleHome と Chromecast でキーワード＆画像＆Wikipedia検索～TV表示[[LINK]](https://qiita.com/kt-sz/items/9edea18c4f0f5e8cf631)
・スマホ ハック＆スマートホーム連携 [[LINK]](https://qiita.com/kt-sz/items/9e23bd5969f0024b17f8)
・ラズパイとサーモセンサーで自宅のガスコンロ監視（火の用心） [[LINK]](https://qiita.com/kt-sz/items/471f469cc89d2bac0c76)
・トニー・スタークの家にありそうなスマート・テーブル（笑） [[LINK]](https://qiita.com/kt-sz/items/13cb71214604081dbf7c)