Home Assistantダッシュボード改造・手動で機能追加

Home Assistant・IoT

Xiaomiの扇風機をHomeAssistantに登録後にうまく動かないとのご質問がありましたので手動でYAMLを導入する方法などを紹介します。

例として自分が今持っているXiaomi Smart Standing Fan Proを使ってカスタマイズしていきます。(同じXiaomiの扇風機ですし)

Xiaomi Smart Standing Fan Pro 簡単にレビュー

この扇風機、売りはコンパクトに収納できて、USB-C給電なのでキャンプなどにも持ち歩ける。(電源は別途必要)

2年ほど前に中国行った時に買った扇風機で、収納がすっごくコンパクトになりますが日本では売っていないようです。アリエクはかなり高かった。

中国(VISA取得)に行ってお土産にガジェットを買ってきた
新型コロナウイルス感染症から、大分経ったので、そろそろ海外旅行も気軽に行けるようになりましたね。ただ、中国はいまだにVISA取得が必要ですが、中国 北京に用事ができたので行ってみました。北京はもう見尽くしたのであまり気乗りはしませんでしたが…

コンパクトですが、弱点が下に向かない点、中国みたいにみんなベッドで寝ればいいのですが、日本のように床や畳の上に敷布団を敷いて寝るスタイルだと、扇風機が下を向いてくれません!困った。

なので3Dプリンターでパーツを作って、扇風機を寝かして床近くで寝ている時も人間にあたるようにしました。

棒部分の操作パネルの上下にパーツをはめて転がらないようにした

パーツがあれば台などの上に扇風機を寝かせて人間に風があたるように調節できる。

Mi Homeアプリでやれば細かい設定もできますが、せっかくなのでHomeAssistantで基本的な操作ができるようにしていきます。

この扇風機Xiaomi Smart Standing Fan Proのやり方を参考に、他のガジェットのダッシュボードカスタマイズもHomeAssistantにガジェット登録後にGEMINIに型番・やりたいことをまとめて聞いてみてくださいね。

token_extractorでTOKEN取得する

あとXiaomi製品をHomeAssistantに導入する場合はTOKENを取得しないといけないので、以下のやり方に沿ってTOKENを取得してくださいね。

Home assistant:HACSでXiaomi・Cozy・Tuyaガジェットをハックする
もうMatter(スマートホーム共通規格)いらないんじゃないかというほど、ほとんどのIoTガジェットがHACSを通じてHome assistantに登録できた。実際にウチにあるいくつかのガジェットはHome assistantで直(ジカ=X…

デフォルトのコントロールをダッシュボードに追加してみる

ガジェットをHomeAssistantに登録後に設定>デバイスとサービス>Xiaomi Miotなど該当のガジェットを表示させます。↓

この扇風機の場合はコントロールや設定などが表示されますので、それをダッシュボードに追加するだけで終わりますが、

コントロールや設定を「ダッシュボードに追加」を押してとりあえず追加してみます。

これ↓だと風量変えたり自然風・通常風を切り替えたりできなくて不便。

しかしこの部分↑をタップすると以下のようなポップアップが表示されて、操作できるので我慢できれば良いのですが、ちょっとスマートでは無いというよりポップアップ出るのが面倒。

あと首振りがオンにはなりますが、オフにはなりませんでした。

これではちょっと不便なのでカスタマイズしていきます。

ガジェット(例Xiaomi Smart Standing Fan Pro)の操作できる機能を調査

そこでまずはどんな機能がHomeAssistantで使えるかエンティティを見て調査します。

設定>エンティティ(上のタブ)で「p43」などの製品の型番や個別名などで検索すると目的のガジェットが表示されます。

Xiaomi Smart Standing Fan Proは例ではエンティティの一部がxiaomi_p43_7dfcとなっているのでp43で検索しました。

Fan以外は正常動作しているようなので一番下のFanの部分を押して調査します。

以下のように↓ダッシュボードにダイレクトに表示されればこのままでもいいんですけど、ワンクリック必要なんです。

ここで右上の点3つを押して詳細を選択します。

詳細は以下のように表示されました。属性に表示されている部分がカスタマイズできそう。うまくすればスピードとスピードステップ1ずつなので100段階で風量をダッシュボードで調節することができそうです。

プリセットモードのStraight Wind,Natural Windで自然風などのモードも変更できそうで、Speed ListでLakesideやCampingなどの4つのモードにも切り替えできそうですが今回は自然風と標準風だけにしておきます。

HACSでスライダーを追加してくれるSlider-entity-rowを導入する

扇風機のスライダー機能を導入します。このあたりは個々のガジェットによって標準のカードが使えるか違いますので、標準カードで使えなかったりわからなければAIに聞いてくださいね。

まだHACSを導入していない方はこちらを参考にインストールしてください。

今回は扇風機の風量スライダーが標準では無いのでカードでスライダーを使えるようにslider-entity-rowを追加します。(もしかしたら照明の照度を調節するスライダーでも使える?)

ダウンロードしたらリロードします。

以上で導入完了。

ダッシュボードにカードを追加

手動でYAMLカードを追加

続いてYAMLを手打ちで入力していきます。といってもYAMLは自分で書くのが面倒なのでChatGPTやGEMINIさんに聞いてくださいね。

ダッシュボード >カードを追加(右下)で一番下にスクロールして手動を選択します。

下図左のようにYAMLを各エディタが表示されるので、お好みを書き込んでいきます。

今回は風量調節と首振り開始・首振り停止をちゃんと動かしたいので書きました。(というよりGEMINIに聞いて書いてもらった)

あとは首振り左・首振り右(押したときだけ動く)・チャイルドロック・操作音・パネル表示は、最初から使えるのでそのままYAMLをコピペして導入する。

最初はコードエディタが表示されると思いますが、もしビジュアルエディタでしたら左下の「コードエディタを表示」↓を押します。

YAMLを編集して自分の好きなカードにカスタマイズした結果

これは手動でYAMLを編集するモードでダッシュボードに追加します。

ちゃんと風量調節のスライダーが表示されて実際に扇風機も反応して動いてくれました。

ついでに別の機能、チャイルドロック・操作音・パネル表示も追加しておきました。

このYAMLスクリプトは以下のようになります。

type: entities
entities:
  - entity: fan.xiaomi_p43_7dfc_fan
    name: 扇風機 電源
  - type: custom:slider-entity-row
    entity: fan.xiaomi_p43_7dfc_fan
    name: 風量調節
    attribute: percentage
    min: 1
    max: 100
    step: 1
    toggle: false
  - type: buttons
    entities:
      - entity: fan.xiaomi_p43_7dfc_fan
        icon: mdi:weather-windy
        name: 自然風
        tap_action:
          action: call-service
          service: fan.set_preset_mode
          target:
            entity_id: fan.xiaomi_p43_7dfc_fan
          data:
            preset_mode: Natural Wind
      - entity: fan.xiaomi_p43_7dfc_fan
        icon: mdi:fan
        name: 通常風
        tap_action:
          action: call-service
          service: fan.set_preset_mode
          target:
            entity_id: fan.xiaomi_p43_7dfc_fan
          data:
            preset_mode: Straight Wind
  - type: buttons
    entities:
      - entity: fan.xiaomi_p43_7dfc_fan
        icon: mdi:rotate-3d-variant
        name: 首振り開始
        tap_action:
          action: call-service
          service: fan.oscillate
          target:
            entity_id: fan.xiaomi_p43_7dfc_fan
          data:
            oscillating: true
      - entity: fan.xiaomi_p43_7dfc_fan
        icon: mdi:close-circle
        name: 首振り停止
        tap_action:
          action: call-service
          service: fan.oscillate
          target:
            entity_id: fan.xiaomi_p43_7dfc_fan
          data:
            oscillating: false
  - type: buttons
    entities:
      - entity: button.xiaomi_p43_7dfc_turn_left
        name: 左
        icon: mdi:rotate-left
        tap_action:
          action: toggle
      - entity: button.xiaomi_p43_7dfc_turn_right
        name: 右
        icon: mdi:rotate-right
        tap_action:
          action: toggle
  - entity: switch.xiaomi_p43_7dfc_physical_control_locked
    name: チャイルドロック
  - entity: switch.xiaomi_p43_7dfc_alarm
    name: 操作音
  - entity: light.xiaomi_p43_7dfc_indicator_light
    name: パネル表示

ガジェットのエンティティさえ分かればあとは適当にYAMLを書けばいけます。

ビジュアルエディタでできればより簡単ですね。

以上、簡単ですがダッシュボードに手動でYAMLカードを作ってガジェットを思い通りに動かす説明でした。

※画像はAIで生成されたもので実際の商品とは形・色・機能などが違う場合があります。

コメント