実践IoT:部屋の温湿度の自動記録・見える化ーブラウザで見られるようにする

IT・DX

 当店の店舗は昭和38年に父が建てて今年で61年になります。店舗西隣の空き家だったお店が昨年末に解体になり、共用していた壁も撤去され、現在当店の外壁はなく、ブルーシート+ベニヤの内壁で、非常に寒い状況です。
 断熱ができていないので暖房もきかないのですが、商品の保管としては湿度が問題なので、焼け石に水ながらも除湿器をいれることにしました。

20年前の除湿器ですが一日で満水になります

除湿器は一日で満水になるので、少しは除湿をしているようです。除湿の効果を「見える化」するために温湿度を自動測定することにしました。

ラズベリーパイーゼローWに温湿度センサを取り付ける

システムは家に転がっていた、ラズパイゼロW(Raspberry Pi Zero W)を使うことにしました。7-8年前に購入したもので、当時は2000円くらいだった気がします。今はW2というタイプになっており、本体+MicroSDHC(32GB)+ケースで4000円くらいのようです。

ラズパイにつながる温湿度センサは、いろいろなものがありますが、実例が多く安価だったセンシリオン製のSHT31にしました。アマゾンで800円でした。

センサの接続は、ネットを検索したらたくさん出てきますのでここでは割愛します。基本的には、ラズパイのIO端子に3V、GND、クロック、データ(I2C)の4本を接続するだけです。

ソフトウエアを入れてカスタマイズ

 ラズパイゼロは数年間電源を入れていずセキュリティや更新も不安なので、OS(Rasbian OS)から再インストールしました。ラズパイのサイトから無料でダウンロードできます。今回はSDカードに書き込むPCはマックノートを使いました。Windowsでももちろんできますし、対応するラズパイも最初の1型から最新の5型まですべてサポートされており安心ですね。
 イメージ書き込み(インストール)用のソフトをPCに入れて、メニューからラズパイ機種とOSのバージョンを選びます。このときに、Login名やパスワード、ホスト名、WiFiのSSID・暗号キーを入れておけるので、ラズパイに差し込むと自動的にセットアップしてくれてラクチンでした。(少し前のラズパイからWiFiやBluetoothを内蔵しています。)
 どのラズパイも端子はUSBやHDMIがあるだけなので、USB-Microの電源を、セットアップにはキーボードや画面が必要です。ゼロの場合、USBーMicoro→USB-A変換アダプタを介してUSBキーボードを、画面出力はミニHDMI→標準HDMI変換アダプタを介してモニタにつなげます。
 OSイメージを書き込んだSDカードを差し込み、キーボード、HDMIを繋ぎ、電源を差し込むと起動します。(電源スイッチもない)いろいろメッセージがでてしばらく後に下記の画面になります。

PCのVNCからラズパイにリモートログインしたときの画面

このあと、キーボードやモニタを繫がなくてもいいように設定(ヘッドレス)にしたり、日本語対応にしたりといくつか作業があるのですが、これらもネットでいろいろ公開されているので、割愛します。Linux(UNIX)の知識があれば初期設定作業は1時間ほどで完了します。

 さて今回の目的の「温湿度センサからデータを読んで記録・Webで表示したい」ですが、アプリの構成やプログラム仕様にはいろいろな場合が考えらますが、今回は以下のようにしました。


プログラムA:
 簡易Webサーバー(Flask)を立ち上げ、ブラウザがつながった(リロードした)ら温湿度を測定して表示する。
プログラムB:
 温湿度センサのデータを1分(もしくは設定した秒数)間に1回読んで、テキストファイルに時刻と温湿度を追記していく。

このようにした理由は単純で、それぞれ先人がネットでプログラム(Python)を公開しており、それを拝借して少々修正すればすぐに実現できそう、だからです。

この二つのプログラムを同時に走らせて希望の動作をさせます。ブラウザでの表示はそのときの数値のみで、グラフ化や過去のデータ確認などをブラウザで見る機能は、必要があれば次バージョンで実現とします。
 記録したデータの取り込み(転送)も必要な時にコマンドを打ち込んで対応します。

テスト結果:PCやスマホのブラウザで表示

 ラズパイは家庭のLANにつながっているのでIPアドレスを調べます。DHCPでは電源を入れるたび、もしくはネットワークが再接続するたびにIPアドレスが変わる可能性があるので、事前に固定アドレスになるようにラズパイもしくはルータを設定しておくと楽です。
 表示は最低限必要な項目の下記のようにしました。

ブラウザのリロードボタンを押すと都度測定して画面更新します。
OSのインストールからここまでを約2日でできました。ラズパイはたくさんユーザーがいて、ユースケースやHELPもたくさんネットにあがっているのでとても参考になり、パソコンとラズパイを行き来しながら構築するのが効率的です。


テストがうまくいったので、実際に店舗にセットしました。場所は除湿器の設置場所から約2m離れた棚の最下段で、床から20cm程度です。キーボードや画面は無く、棚の隙間にセットします。次の写真でラズパイの横にある黒線はUSB-Micro出力のACアダプターで、これが電源になります、

実測:記録ファイルをファイルサーバに転送し、EXCELでグラフ化

必要なタイミングでラズパイのメモリ(SDカード)に記録しているデータファイルを取り込みます。今回は、リモートでラズパイにログインし、家のファイルサーバ(NAS)にコピーするシェルスクリプトを作りました。EXCELで取り込んでグラフ化した結果は下記になります。

 2025年1月6日(月)の8時に設置し8日(水)の10時までの記録です。室温が5℃~10℃と低く、寒いわけですね。湿度は60~70%くらいです。この間外は雨か雪で頻繁に天候が変わっていました、
 除湿器は朝8:30~18:30頃まで運転しますが、満水になるとSTOPし、気づくのが遅れるとその間除湿できていません。また、お客さんの出入り時の引き戸の開け閉めや、来客中は電気ストーブをつけるため少々あたたまることになります。
 除湿器の運転の様子と比べて考察すると数%は下げる効果がありそう、という結果です。(焼け石に水ですが)

まとめ

とりあえずの目的の「温湿度の見える化」はできました。
この結果を踏まえてアクションするのはもう少し他のデータ、たとえば、入出の開け閉め時間、外の気温湿度、除湿器や電気ストーブのON/OFFタイミング、来客数など、が必要でしょう。
こうなると、DX(デジタルデータで変革)になりますね。機会があればそのようなセンサも付けたいと思います。

ご意見・コメント大歓迎です。

コメント