hypweb.net
XOOPSマニア  最新情報のRSS(サイト全体)
[ 自宅サーバーWebRing |ID=54 前後5表示乱移動サイト一覧 ]

TOP » UsersWiki » nao-pon » blog » Diff of nao-pon/blog/2021-03-17
1: 2021-03-17 (Wed) 22:45:52 nao-pon source
With "attach" plugin. (Created empty)
Cur: 2021-03-17 (Wed) 22:48:29 nao-pon source
Line 1: Line 1:
 +#navi
 +RIGHT:&rsslink(../);
 +#boxdate
 +* SwitchBot 温湿度計を ESP32 でモニタリング [#hefa2313]
 +RIGHT:&tag(SwitchBot,Meter,温湿度計,HomeAssistant,ESP32,ESPHome,BLE);
 +
 +[[SwitchBot の温湿度計:https://www.switchbot.jp/meter]]は、リーズナブルで家庭で使うには問題のない精度があるので、なかなか便利です。
 +
 +この温湿度計は、公式の [[API (Meter BLE open API):https://github.com/OpenWonderLabs/python-host/wiki/Meter-BLE-open-API]] が公開されていて、BLE Advertisement パケットをリッスンすることで、温湿度データを取得できます。
 +
 +これを、ESP32 を使い HomeAssistant で利用できるようにしました。ESP32 のファームには ESPHome を使用しています。
 +
 +&ref(210317-224349.png,mw:480,mh:360);&ref(210317-224648.png,mw:480,mh:360);
 +
 +** ESPHome 用 yaml の該当部分の抜粋 [#xdf548e2]
 +#code(yaml){{
 +substitutions:
 +  devicename: switchbot_meter
 +
 +sensor:
 +  - platform: template
 +   name: "$devicename Humidity"
 +   id: humidity0
 +   unit_of_measurement: '%'
 +   accuracy_decimals: 0
 +   icon: "mdi:water-percent"
 +  - platform: template
 +   name: "$devicename Temperature"
 +   id: temperature0
 +   unit_of_measurement: '°C'
 +   accuracy_decimals: 1
 +   icon: "mdi:thermometer"
 +  - platform: template
 +   name: "$devicename BT RSSI"
 +   id: rssi0
 +   unit_of_measurement: 'dB'
 +   accuracy_decimals: 0
 +   icon: "mdi:bluetooth"
 +  - platform: template
 +   name: "$devicename Battery"
 +   id: battery0
 +   unit_of_measurement: '%'
 +   accuracy_decimals: 0
 +   icon: "mdi:battery"
 +
 +esp32_ble_tracker:
 +  scan_parameters:
 +   duration: 60s
 +  on_ble_advertise:
 +   - mac_address: f4:42:fa:b4:72:2a
 +     then:
 +       - lambda: |-
 +           for (auto data : x.get_service_datas()) {
 +               if(data.data.size() == 6) {
 +                 float temperature = (float)(data.data[4] & 0b01111111) + ((float)(data.data[3] & 0b00001111) / 10);
 +                 if (!(data.data[4] & 0b10000000)) {
 +                   temperature = -temperature;
 +                 }
 +                 int8_t humidity= data.data[5] & 0b01111111;
 +                 int8_t battery = data.data[2] & 0b01111111;
 +                 int8_t rssi=x.get_rssi();
 +                 id(humidity0).publish_state(humidity);
 +                 id(temperature0).publish_state(temperature);
 +                 id(rssi0).publish_state(rssi);
 +                 id(battery0).publish_state(battery);
 +               }
 +           }
 +}}
 +
 +シンプルですね。カスタムコンポーネントを作るまでもないので、lambda を使いました。
 +
 +RIGHT:&font(90%){&page_comments;};
 +#navi


Front page   Diff Backup Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 1261, today: 1, yesterday: 0
このページのTopへ
メインメニュー
ログイン

ユーザー名:


パスワード:





パスワード紛失  |新規登録
最近の更新
#recent(): You called me too much
オンライン状況
59 人のユーザが現在オンラインです。 (1 人のユーザが UsersWiki を参照しています。)

登録ユーザ: 0
ゲスト: 59

もっと...
サイト情報