38
Help us understand the problem. What are the problem?

posted at

updated at

Organization

洗濯物の乾き具合を知りたくて、M5StickCで物干し部屋の湿度を測って Azure IoT Central で分かるようにしてみた

はじめに

少しずつ秋が近づいてきて、真夏のように洗濯物がすぐに乾いて、すぐに畳めるという時期もだんだん終わりに近づいてきてます。そして、これから冬にかけて少しずつ大変になってくる洗濯物の乾かない問題
そこで今回は、M5StickCAzure IoT Central を活用して、少しでも家庭の課題を解決できるようにしたいと思います。

洗濯物の乾燥についてはこんなことを思っています。

  • 洗濯物が乾いたタイミングを知りたい
  • 乾いたのが分かったら、手が空いているうちに畳みたい
  • たくさん干し過ぎると生乾きっぽくなって困る
  • もし、乾くまでに長く時間が掛かっていたら、コインランドリーに持っていきたい
  • せっかく家事を頑張ったのに生乾きで臭くなってると、怒られる 悲しい。

作ったもの

M5StickCに湿度センサを付けて、Azure IoT Central で可視化しました!
システム構成は、こんな感じになります。
image.png

M5StickC+温湿度センサ

物干し部屋に設置します。洗濯機も一緒にあります。

Azure IoT Central のダッシュボード
物干し部屋の湿度をWEBで確認できるように可視化しています。
あとは、天気の影響もあると思うので、地元の天気が同じダッシュボード上で見られるようにしています。

  • 1時間ごとの天気予報
  • 物干し部屋の現在の湿度
  • 湿度の時系列変化と洗濯物を干したタイミング
  • 画像(いらすとや)

1. デバイス側の設計

  • M5StickCの画面
    デバイス側でも湿度が分かるようにディスプレイに表示します。
    これで、実際に干すときもある程度の目安になります。あとは、干し始めたタイミングが分かるように、ボタンを押したら Azure IoT Central にイベント通知するようにしています。
    image.png

  • Blockly
    実際には動かすときは、SSID/PASSWORD、スコープID/デバイスID/主キーの設定をして下さい。

image.png

  • 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

  • [デバイス テンプレート] の定義

M5StickC側と合わせておきます。
image.png

3. Azure IoT Centralのダッシュボード

こんな感じに作りました。

実際にやってみた例

image.png
右下のグラフが湿度と洗濯物を干したタイミングになります。
この例では2回干しています。この日は曇り時々雨でややじめじめした天気でした。

  1. 最初の湿度が急に上がった山でバスタオルやタオルなどを干し始めました
  2. 2回ぐらい物干し部屋の見に行って、ドアを開けたので、ちょっとだけ湿度が下がっています
  3. 2時間ぐらい干しましたが、あまり乾きません
  4. 次の洗濯物をしたかったので、コインランドリーに行くことにしました
  5. 洗濯物を取り込んだので、湿度が急に下がっています
  6. 次の洗濯物を干し始めます。次は、比較的乾きやすい素材のものが多いです
  7. その前のタオル類に比べると、湿度が下がってくるペースが速いです
  8. 下がり切っているあたりで見に行ったらほぼ乾いてました
  9. そこからはドアを開けていたので、緩やかに外気に近づいて行っています

気が付いたこと

  • 洗濯物を干すとやっぱり湿度は上がる(そして、結構一気にあがる)
  • タオル類は乾きにくいと思っていたけど、思っていた以上に顕著に傾向が出る
  • メッシュ素材のものは思ってる以上にすぐに乾いた
  • 測ってみてグラフ化すると傾向が見えてくる(素材や量によって全然変わる)

工夫した点

洗濯物を干したタイミングで、M5StickCのボタンを押すと、洗濯物を干したイベントが Azure IoT Central 側に通知されます。これで、物干し部屋の湿度変化と干し始めたタイミングが分かるようになります。干したタイミングから湿度が上がることや、除湿機を掛けながら湿度が下がっていく様子が分かりやすくなります。
あとは、天気の影響が大きそうなので、ダッシュボードに天気も分かるようにしておきました。これで、洗濯物を干す前から湿度が多いとか、今日は湿度が低いとかがより分かりやすくなります。

最後に

M5StickCAzure IoT Central を使うことで、前からなんとなく少し困ったなと思っていた課題がよりクリアに分かるようになりました。感覚的にそうかなと思っていても、ちゃんと見える化することは大切だと思います。
こんなお手軽に試せるのは、M5StickCAzure IoT Central のおかげ。

初めてだけど、なんかやってみたいと思った人向けに段階的に記事に纏めてますので、良かったら。
1. M5StickCとAzure IoT Centralを連携してデータを可視化する① ~M5StickC開発環境準備編~
1. M5StickCとAzure IoT Centralを連携してデータを可視化する② ~Azure IoT Central環境構築編~
1. M5StickCとAzure IoT Centralを連携してデータを可視化する③ ~M5StickCとAzure IoT Central接続編~

おまけ:時系列変化の詳細

洗濯物を干す前
image.png

洗濯物を干したとき
タイミングが分かりやすいようにしてあります
image.png

2時間ぐらい経過
image.png

次の洗濯をしたいから、前のを取り込んでコインランドリーに
image.png

次の洗濯物を干し始めた
image.png

洗濯物が乾いた
image.png

除湿機が止まって、徐々に外気に近くなる
image.png

だんだん外気と一緒になるけど、思ったより時間が掛かる
image.png

おまけ

本記事は、以下のキャンペーンに参加しています。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
38
Help us understand the problem. What are the problem?