#はじめに
少しずつ秋が近づいてきて、真夏のように洗濯物がすぐに乾いて、すぐに畳めるという時期もだんだん終わりに近づいてきてます。そして、これから冬にかけて少しずつ大変になってくる洗濯物の乾かない問題。
そこで今回は、M5StickC と Azure IoT Central を活用して、少しでも家庭の課題を解決できるようにしたいと思います。
洗濯物の乾燥についてはこんなことを思っています。
- 洗濯物が乾いたタイミングを知りたい
- 乾いたのが分かったら、手が空いているうちに畳みたい
- たくさん干し過ぎると生乾きっぽくなって困る
- もし、乾くまでに長く時間が掛かっていたら、コインランドリーに持っていきたい
- せっかく家事を頑張ったのに生乾きで臭くなってると、
怒られる悲しい。
#作ったもの
M5StickCに湿度センサを付けて、Azure IoT Central で可視化しました!
システム構成は、こんな感じになります。
M5StickC+温湿度センサ
物干し部屋に設置します。洗濯機も一緒にあります。
Azure IoT Central のダッシュボード
物干し部屋の湿度をWEBで確認できるように可視化しています。
あとは、天気の影響もあると思うので、地元の天気が同じダッシュボード上で見られるようにしています。
- 1時間ごとの天気予報
- 物干し部屋の現在の湿度
- 湿度の時系列変化と洗濯物を干したタイミング
- 画像(いらすとや)
#1. デバイス側の設計
-
M5StickCの画面
デバイス側でも湿度が分かるようにディスプレイに表示します。
これで、実際に干すときもある程度の目安になります。あとは、干し始めたタイミングが分かるように、ボタンを押したら Azure IoT Central にイベント通知するようにしています。
-
Blockly
実際には動かすときは、SSID/PASSWORD、スコープID/デバイスID/主キーの設定をして下さい。
- Python
from m5stack import *
from m5ui import *
from uiflow import *
import wifiCfg
import json
import ntptime
import time
from IoTcloud.Azure import IoT_Central
import hat
setScreenColor(0x111111)
hat_env2_0 = hat.get(hat.ENV2)
methodmsg = None
threshold = None
temperature = None
humidity = None
pressure = None
wifiCfg.doConnect('', '')
labelHumidity = M5TextBox(6, 8, "Humidity", lcd.FONT_Default, 0xFFFFFF, rotate=0)
valueHumidity = M5TextBox(12, 51, "35", lcd.FONT_DejaVu40, 0xFFFFFF, rotate=0)
labelPercentage = M5TextBox(64, 96, "%", lcd.FONT_Default, 0xFFFFFF, rotate=0)
import math
def azure_direct_reset(payload, rid):
global methodmsg, threshold, temperature, humidity, pressure
methodmsg = payload
azure.response_direct_method(0, rid, body='ok')
def buttonA_wasPressed():
global methodmsg, threshold, temperature, humidity, pressure
azure.publish_D2C_message(str((json.dumps(({'start':1})))))
labelStart.setText('DRY Start')
wait(3)
labelStart.setText('')
pass
btnA.wasPressed(buttonA_wasPressed)
@timerSch.event('timerSendToIoTCentral')
def ttimerSendToIoTCentral():
global methodmsg, threshold, temperature, humidity, pressure
azure.publish_D2C_message(str((json.dumps(({'temperature':temperature,'humidity':humidity,'pressure':pressure})))))
pass
ntp = ntptime.client(host='ntp.nict.jp', timezone=9)
threshold = 50
azure = IoT_Central(scope_id='', device_id='', device_key='')
azure.subscribe_direct_method('reset', azure_direct_reset)
azure.start()
labelHumidity.setText('Humidity')
labelPercentage.setText('%')
labelStart.setText('')
timerSch.run('timerSendToIoTCentral', 30000, 0x00)
while True:
temperature = hat_env2_0.temperature
humidity = hat_env2_0.humidity
pressure = hat_env2_0.pressure
if humidity < threshold:
valueHumidity.setColor(0xffffff)
else:
valueHumidity.setColor(0xff0000)
valueHumidity.setText(str(round(humidity)))
wait(3)
if (ntp.hour()) == 6 and (ntp.minute()) == 0:
wait(60)
wait_ms(2)
#2. AzureIoTCentral
- [デバイス テンプレート] の定義
#3. Azure IoT Centralのダッシュボード
こんな感じに作りました。
#実際にやってみた例
右下のグラフが湿度と洗濯物を干したタイミングになります。
この例では2回干しています。この日は曇り時々雨でややじめじめした天気でした。
- 最初の湿度が急に上がった山でバスタオルやタオルなどを干し始めました
- 2回ぐらい物干し部屋の見に行って、ドアを開けたので、ちょっとだけ湿度が下がっています
- 2時間ぐらい干しましたが、あまり乾きません
- 次の洗濯物をしたかったので、コインランドリーに行くことにしました
- 洗濯物を取り込んだので、湿度が急に下がっています
- 次の洗濯物を干し始めます。次は、比較的乾きやすい素材のものが多いです
- その前のタオル類に比べると、湿度が下がってくるペースが速いです
- 下がり切っているあたりで見に行ったらほぼ乾いてました
- そこからはドアを開けていたので、緩やかに外気に近づいて行っています
#気が付いたこと
- 洗濯物を干すとやっぱり湿度は上がる(そして、結構一気にあがる)
- タオル類は乾きにくいと思っていたけど、思っていた以上に顕著に傾向が出る
- メッシュ素材のものは思ってる以上にすぐに乾いた
- 測ってみてグラフ化すると傾向が見えてくる(素材や量によって全然変わる)
#工夫した点
洗濯物を干したタイミングで、M5StickCのボタンを押すと、洗濯物を干したイベントが Azure IoT Central 側に通知されます。これで、物干し部屋の湿度変化と干し始めたタイミングが分かるようになります。干したタイミングから湿度が上がることや、除湿機を掛けながら湿度が下がっていく様子が分かりやすくなります。
あとは、天気の影響が大きそうなので、ダッシュボードに天気も分かるようにしておきました。これで、洗濯物を干す前から湿度が多いとか、今日は湿度が低いとかがより分かりやすくなります。
#最後に
M5StickC と Azure IoT Central を使うことで、前からなんとなく少し困ったなと思っていた課題がよりクリアに分かるようになりました。感覚的にそうかなと思っていても、ちゃんと見える化することは大切だと思います。
こんなお手軽に試せるのは、M5StickC と Azure IoT Central のおかげ。
初めてだけど、なんかやってみたいと思った人向けに段階的に記事に纏めてますので、良かったら。
- M5StickCとAzure IoT Centralを連携してデータを可視化する① ~M5StickC開発環境準備編~
- M5StickCとAzure IoT Centralを連携してデータを可視化する② ~Azure IoT Central環境構築編~
- M5StickCとAzure IoT Centralを連携してデータを可視化する③ ~M5StickCとAzure IoT Central接続編~
#おまけ:時系列変化の詳細
洗濯物を干したとき
タイミングが分かりやすいようにしてあります
おまけ
本記事は、以下のキャンペーンに参加しています。