3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

乾燥機で服がシワクチャになる前にIoTで洗濯物を救う

3
Last updated at Posted at 2025-12-13

この記事は SEN Product Blog アドベントカレンダー 2025 の14日目の記事です。

こんにちは!千株式会社のベーシスト兼エンジニアの稲ベースです。

はじめに

この記事でわかる・できること

  • HomeAssistantで洗濯乾燥機のステータスを取得する
  • HomeAssistantでAlexaなどのスマートスピーカーを喋らせる
  • 個人的なHomeAssistant環境の構成

この記事の対象者

  • 乾燥機を放置して服がシワクチャになりがちな人
  • パートナーや家族のポイントを稼ぎたいエンジニア
  • スマートホーム、IoTに興味がある方

動作環境・使用するツールなど

簡単な構成図

test1.png

乾燥機の悩み

洗濯物を放り込んだら自動で乾燥してくれる乾燥機
とても便利ですが、運転完了後に放置してしまうと服がシワクチャになってしまう欠点があります。
今回は、そんな悩みを IoT の力でなんとかしようとする試みです。

具体的には、乾燥が完了したら Alexa でアナウンスを流したり、
スマホにプッシュ通知を出したりしてすぐ回収できるようにする仕組みです。

HomeAssistantの導入

HomeAssistant は、さまざまなデバイスやサービスを統合し、自動化を柔軟に構築できる非常に便利なプラットフォームです。今回は以下の2つの役割で活躍します。

  • MQTT を通じて乾燥機(ECHONET Lite)から状態を取得

  • 完了を検知したら Alexa に喋らせる自動化を実行

HomeAssistantのセットアップ

この記事では HomeAssistant OS を前提としていますが、Container や Core 版でも同様の設定は可能です。
https://www.home-assistant.io/installation/alternative/

Mosquitto brokerの導入

Add-on Store から「Mosquitto broker」をインストール
スクリーンショット 2025-12-03 0.24.14.png

スクリーンショット 2025-12-03 12.37.08.png

基本的にはそのままで大丈夫ですが、
後述する echonetlite2mqtt がアクセスするためのアカウントは作成しておきましょう。

MQTT 統合の有効化

「設定」→「デバイスとサービス」→「統合を追加」で MQTT を検索
スクリーンショット 2025-12-03 0.25.18.png

これでHomeAssistant が自動的に broker を検出してくれるはず

echonetlite2mqtt の導入

このイメージを使用します。
https://github.com/banban525/echonetlite2mqtt

まずコンフィグファイルを作成します

config.json
{
  "port": 1883,
  "username": "hoge",
  "password": "xxxxxxx"
}

TrueNASのAppsからCustom Appを作成

イメージを指定

スクリーンショット 2025-12-04 0.41.55.png

環境変数を指定

スクリーンショット 2025-12-04 0.44.58.png
HomeAssistantのIPを指定
※別でコンテナなどを立てた場合はそのIP

スクリーンショット 2025-12-04 0.45.04.png
コンフィグの場所を指定

スクリーンショット 2025-12-04 0.45.15.png
(TrueNAS 側で必要な設定。詳細は割愛)

スクリーンショット 2025-12-04 0.45.37.png
乾燥機のIPが分かる場合は指定してあげるとすぐに配信してくれます。

ファイルマウント

スクリーンショット 2025-12-04 0.52.10.png
先ほど作成したコンフィグをマウントします。

webUI設定

スクリーンショット 2025-12-04 0.54.13.png

デフォルトポート3000でwebUIが開きます
スクリーンショット 2025-12-04 0.56.32.png

Alexa Media Playerの導入

ここで書くと長くなってしまうので割愛
https://github.com/alandtse/alexa_media_player/wiki/Configuration

HomeAssistantが乾燥機の情報を拾えるようにする

/homeassistant/configuration.yaml
mqtt:
  sensor:
    - name: "洗濯機残り時間"
      unique_id: 1
      state_topic: "echonetlite2mqtt/elapi/v2/devices/fe0000050000000000_hogehoge/properties/washingDryingTimeRemaining"
    - name: "洗濯機ステータス"
      unique_id: 2
      state_topic: "echonetlite2mqtt/elapi/v2/devices/fe0000050000000000_hogehoge/properties/currentStage"

echonetlite2mqttのGUIから詳細が見れます
スクリーンショット 2025-12-09 0.06.27.png

これでHomeAssistantから乾燥機の情報が取得できます。

スクリーンショット 2025-12-09 0.00.05.png

このままだと更新が不定期なので自分はオートメーションを使い定期的に情報を更新するようにしています。

alias: Echonetlite2mqtt_auto_reload
description: ""
triggers:
  - seconds: /15
    trigger: time_pattern
conditions: []
actions:
  - data:
      topic: >-
        echonetlite2mqtt/elapi/v2/devices/fe0000050000000000_hogehoge/properties/washingDryingTimeRemaining/request
    action: mqtt.publish

Alexaに洗濯物を回収しろと叫ばせる

alias: 乾燥機通知
description: ""
triggers:
  - trigger: state
    entity_id:
      - sensor.hogehoge
    from: "00:01"
    to: "00:00"
conditions: []
actions:
  - action: notify.alexa_media_hogehoge
    metadata: {}
    data:
      message: 乾燥が終了しました、早く取りにきて
mode: single

スマホにプッシュ通知を飛ばす

alias: 乾燥機通知
description: ""
triggers:
  - trigger: state
    entity_id:
      - sensor.hogehoge
    from: "00:01"
    to: "00:00"
conditions: []
actions:
  - action: notify.mobile_app_hogehoge
    metadata: {}
    data:
      message: 乾燥が終了しました、早く取りにきて
mode: single

ECHONET Lite対応の洗濯機なんてねぇよって方向け

消費電力が計測できる電源タップを使えば似たようなことができると思います。
スクリーンショット 2025-12-09 0.27.18.png

参考資料

おわりに

明日の SEN Advent Calendar 2025 を飾るのは、
いま最も注目を集める新星──ぶりお君の記事です。
その瞬間、あなたは新たな伝説の幕開けを目撃することになります。
どうぞご期待ください。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?