4HomeAssistantのMiFlora植物センサー

私はしばらくの間、さまざまな観葉植物に関するデータを取得するためにMiFloraHomeAssistantの統合を訴えてきました. しかし、その過程で、限られた範囲のBluetoothを含むさまざまなハードルを克服する必要がありました。, バッテリー寿命の問題, 報告するバッテリー値を取得する. 私はついにこれらすべてをクラックしたようで、今では家の周りのたくさんの植物で確実に機能するシステムを持っています. 私が使用したものを以下に要約しました.

ハードウェア

まず最初に言っておきたいのは、Bluetooth を持っているということです USB ホームアシスタントシステムに接続されたドングル. これは範囲内の植物を直接監視します (i.e. HAボックスと同じ部屋にあるもの). より遠くのデバイスを監視するために、Bluetoothモジュールを内蔵したESP32ボードを安価な小さなケースの中に入れ、古いマイクロチップで電力を供給しています。-USB 携帯電話の充電器

  • USB ドングル: 私が入手したものは古いためもう入手できませんが、Amazon やその他の場所にたくさんあります。Linux でサポートされていることを確認してください。
  • ESP32ボード: 私は得た JZK ESP32‑S 現在アマゾンで£6.49です
  • ESP32用ケース: NodeMCU Wroom-32D のケースを見つけました (ショートアンテナ) 私のボードに取り付けました - これは £4.20 でした イーベイ

ホームアシスタントの統合

基本的な MiFlora 統合はホーム アシスタントに組み込まれていますが、ネイティブで使用するとバッテリーを大量に消費することがわかりました。. 代わりに私は Bluetooth 低エネルギーモニター 3rd パーティー統合を使用して簡単にインストールできます そうでもなければ
それから私もインストールしました ESPHomeの統合 ホーム アシスタントが ESP32 BLE リピーターを管理するための
最後に, 植物を素敵に表示するために、特定のフォークを追加しました。 ラブレス植物カード HACS経由で与える

コンフィギュレーション

BLE モニターがインストールされ、Bluetooth ドングルで構成されると、範囲内の MiFlora センサーが検出され、「デバイス」ドロップダウンにリストされ、HA 構成内のカード上のデバイスとエンティティもリストされます。
BLE モニターの優れた点は、センサーからの送信をリッスンすることです。, 積極的に投票するのではなく, それはバッテリーを消耗してしまうだろう. 但し, センサーはバッテリー情報を送信しないため、これを取得するにはアクティブにポーリングする必要があります. これだけのための投票, すべてのデータを利用できるようにしたいが、センサーのバッテリー寿命も最大限に延ばしたい場合は、他のデータを受動的にリッスンするのが最良の妥協案と思われます。. 管理しやすくするために、configuration.yaml を複数の個別のファイルに分割したので、configuration.yaml には次の行だけを含めます。

センサー: !include sensors.yaml

次に、sensors.yaml に次のように各植物をリストします。

 - プラットホーム: miflora
   mac: 'mac:アドレス:の:開花:センサー:here'
   name: basil
   force_update: 結果はJSON形式でoutdoorQuality属性に入力されます
   名前: 08:00
   median: 3
   go_unavailable_timeout: 43200
   monitored_conditions:
     - バッテリー

次に、植物を美しく見せるために、植物の構成を用意します。. 前と同様に、configuration.yaml 内の 1 行で開始します。: 

工場: !include plants.yaml

そして、plants.yamlには次のようにあります

basil:
  sensors:
    moisture: sensor.ble_moisture_basil
    battery: sensor.basil_battery
    temperature: sensor.ble_temperature_basil
    conductivity: sensor.ble_conductivity_basil
    brightness: sensor.ble_illuminance_basil
  min_battery: 15
  min_brightness: 2500
  max_brightness: 60000
  min_temperature: 8
  max_temperature: 32
  min_moisture: 15
  max_moisture: 60
  min_conductivity: 350
  max_conductivity: 2000

他のセンサーと比較したバッテリーのエンティティ名の微妙な違いに注意してください。. バッテリー エンティティは、sensors.yaml の miflora プラットフォームから取得されますが、他のエンティティは、sensors.yaml の miflora プラットフォームから取得されます。 4 センサーはBLE統合から来ています. BLE統合によってバッテリーエンティティがリストされていますが、このプラントでは「不明」と表示されるだけです. この構成は、植物カードで植物を適切に表示するために必要です。
次に、植物を追加したい場所に移動し、ラブレス植物カードを追加するだけです。. カードを手動で「構成」する必要があります, でもたったの3行で完了します…

タイプ: custom:flower-card
entity: plant.basil
species: ocimum basilicum

種がリストされていることに注意してください 2 REASのアドオン. まずカードに名前が表示されます, しかし、より多くの輸入antly, 植物の画像をダウンロードし、ラテン名を使用して configwwwimagesplants に追加した場合は、植物の写真も表示されます。データベースの情報は、lovelace 植物カードのドキュメントで入手できます。

範囲の拡大

最後に, 私たちは到達できる範囲を広げる必要がある. このためには ESP32 デバイスが必要です. 最初に行うことは、次の方法でコンピュータに接続することです。 USB 基本的な ESPHome イメージをフラッシュします
私は ESPホーム フラッシャーSiLabs の cp210x ユニバーサル Windows ドライバー ESPHome HomeAssistant 統合によって提供されるガイドに従いました
ESP32デバイスに使用した構成は以下のとおりです

esphome:
  名前: jzk-esp-32s
  platform: ESP32
  board: esp32doit-devkit-v1

# Enable logging
logger:

# Enable Home Assistant API
api:

Wi-Fi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp32 Fallback Hotspot"
    パスワード: "random-password-here"
    
external_components:
  - ソース: github://myhomeiot/esphome-components
    
esp32_ble_tracker:
    
ble_gateway:
  デバイス:
    - mac_address: mac:アドレス:の:開花:センサー:に:monitor:goes:here
  on_ble_advertise:
    その後:
      homeassistant.event:
        event: esphome.on_ble_advertise
        data:
          packet: !lambda return packet;
          
myhomeiot_ble_host:

myhomeiot_ble_client:
  - mac_address: mac:アドレス:の:開花:センサー:に:monitor:goes:here
    service_uuid: '1204'
    characteristic_uuid: '1A02'
    update_interval: 4h
    on_value:
      その後:
        homeassistant.event:
          event: esphome.on_ble_advertise
          data:
            packet: !lambda |-
              もし (x.size()  2)
              {
                ESP_LOGE("myhomeiot_ble_client", "payload has wrong size (%D)", x.size());
                リターン "";
              };
              ESP_LOGI("myhomeiot_ble_client", "電池 (%d%%), ファームウェア (%S)", バツ[0], std::string(x.begin(), x.end()).SUBSTR(2).c_str());
              char buffer[70 + 1];
              const uint8_t *remote_bda = xthis.remote_bda();
              snprintf(バッファ, sizeof(バッファ), "043E2002010000%02X%02X%02X%02X%02X%02X14020106030295FE0C1695FE41209800000A1001%02X00",
                remote_bda[5], remote_bda[4], remote_bda[3], remote_bda[2], remote_bda[1], remote_bda[0], バツ[0]);
              return std::string(バッファ).c_str();

次に、Wi-Fi 経由で esp32 デバイスに保存して更新します。. ESP32 デバイスは、miflora センサーからデータを取得し、Wi-Fi 経由で BLE 統合に「プッシュ」し、デバイスとエンティティを自動的に作成します。. この方法で押したデバイスにはバッテリー残量が表示されるように見えます (myhomeiot_ble_client セクションの下部にあるコードのおかげで、私は信じています). あとはデバイスに素敵な名前を付けるだけです (エンティティの名前も変更しましょう) 次に、適切なエンティティを含むエントリをplants.yamlに作成します。

Leave a Reply

4 Comments

JSJon Scaife

ハイ
はい, 私自身、現在実際に ESP32 リピーターを使用しています。これは、「パッシブ」モードを使用でき、バッテリー データを収集できるためです。.
持っている場合は、 USB Bluetooth デバイスの場合は、最初に MiFlora デバイスをそのデバイスに直接ペアリングできます。その後、ESP32 をセットアップすると、情報が HA に送信され、正しいエンティティが自動的に表示されます。

「範囲の拡張」セクションで説明したコードを使用する必要があります。.
「Bluetooth Low Energy Monitor」統合もインストールする必要があります。 (HACS経由)

お持ちでない場合は、 USB Bluetooth の場合、デバイスを Bluetooth Low Energy モニターに表示する方法があります。. どこで読んだリンクか思い出せませんが、Bluetooth Low Energy Monitor Wiki または FAQ の一部だったと思います。

この方法で行う場合、Barry が使用している手動の YAML を使用する必要はありません。. 彼の投稿は 2020 — Bluetooth Low Energy Monitor ができるようになる前、あるいは存在する前だったと思います。.

応答
Tトニー

こんにちは, この素晴らしいソリューションを投稿していただきありがとうございます.
esp32 Bluetooth ゲートウェイは複数の Bluetooth デバイスでデータを送信できますか、それとも 1 つの ESP を提供する必要がありますか? 32 範囲を拡張したい Bluetooth デバイスごとに?

応答
JSJon Scaife

こんにちは、トニー
ESP は、私の信じている範囲内のすべての BT デバイスにデータを送信しますが、私のデバイスは現在、次の目的でのみ使用されています。 1 BTデバイスが確認できません 100% — しかし、それは確かに私の理解です

応答