DIY মিডিয়া হোম লোগো

আপনার নিজের হোম থিয়েটার এবং হাই ফাই সেটআপ নকশা ও নির্মাণের জন্য চূড়ান্ত সাইট.

4হোম সহকারীতে MiFlora প্ল্যান্ট সেন্সর

আমি কিছু সময়ের জন্য বিভিন্ন হাউস প্ল্যান্টের ডেটা পেতে MiFlora হোম অ্যাসিস্ট্যান্ট ইন্টিগ্রেশনের বিরুদ্ধে মামলা করছি. তবে পথ ধরে আমাকে সীমিত পরিসরের ব্লুটুথ সহ বিভিন্ন বাধা অতিক্রম করতে হয়েছে, ব্যাটারি জীবনের সমস্যা, এবং রিপোর্ট করার জন্য ব্যাটারি মান পেয়ে. আমি অবশেষে মনে হচ্ছে এই সবগুলি ভেঙে ফেলেছি এবং এখন এমন একটি সিস্টেম আছে যা বাড়ির চারপাশে প্রচুর গাছপালা নিয়ে নির্ভরযোগ্যভাবে কাজ করে. আমি নীচে যা ব্যবহার করেছি তা সংক্ষিপ্ত করেছি.

হার্ডওয়্যারের

The first thing to say is that I do have a bluetooth ইউএসবি dongle attached to my home assist­ant sys­tem. This mon­it­ors the plants in range dir­ectly (i.e. the ones in the same room as the HA box). To mon­it­or more dis­tance devices I have used an ESP32 board with built-in bluetooth mod­ule which I have inside a cheap little case and have powered with an old micro-ইউএসবি phone charger

  • ইউএসবি Dongle: the one I got is no longer avail­able — due to age — but there are plenty of amazon and else­where — just make sure it has sup­port in linux
  • ESP32 বোর্ড: আমি একটি পেয়েছিলাম JZK ESP32‑S which is cur­rently £6.49 on amazon
  • ESP32 এর জন্য কেস: I found the case for a NodeM­CU Wroom-32D (short aer­i­al) fit­ted my board — this was £4.20 from ইবে

হোম সহকারীর জন্য ইন্টিগ্রেশন

Whilst the basic MiFlora integ­ra­tion is built in to home assist­ant I found it uses a lot of bat­tery when used nat­ively. পরিবর্তে আমি ব্যবহার Bluetooth Low Energy Mon­it­or 3rd party integ­ra­tion which you can install eas­ily using ল্যাগ
আমি তারপর ইনস্টল ESPHome integ­ra­tion for home assist­ant to man­age my ESP32 BLE repeater
পরিশেষে, to dis­play the plants in a nice way I added a par­tic­u­lar fork of the lovelace plant card addon via HACS

কনফিগারেশন

Once BLE Mon­it­or was installed and con­figured with my bluetooth dongle it picked up the MiFlora sensors with­in range and lis­ted them in its “devices” drop down as well as list­ing the devices and entit­ies on it’s card in the HA configuration
The great thing about BLE mon­it­or is that it listens for the sensors to trans­mit, rather than act­ively polling them, which would run down their bat­ter­ies. কীভাবে কখনও, the sensors don’t trans­mit bat­tery inform­a­tion so to get this we have to act­ively poll for it. Polling just for this, and pass­ively listen­ing for the oth­er data seems to be the best com­prom­ise if you want to have all the data avail­able but also max­im­ise the sensor’s bat­tery life. I have sep­ar­ated my configuration.yaml into mul­tiple sep­ar­ate files to keep things a bit easi­er to man­age so I just have the fol­low­ing line in my configuration.yaml —

সেন্সর: !include sensors.yaml

Then in sensors.yaml I have each plant lis­ted as follows

 - প্ল্যাটফর্ম: miflora
   mac: 'ম্যাক:ঠিকানা:of:পুষ্পিত:সেন্সর:here'
   name: basil
   force_update: true
   scan_interval: 08:00
   মধ্যমা: 3
   go_unavailable_timeout: 43200
   পর্যবেক্ষণ করা_পরিস্থিতি:
     - ব্যাটারি

Next — to make the plants appear nicely I have a plants con­fig. আগের মতো configuration.yaml-এ একটি লাইন দিয়ে শুরু করতে হবে: 

উদ্ভিদ: !plants.yaml অন্তর্ভুক্ত

এবং তারপর plants.yaml আমি নিম্নলিখিত হিসাবে আছে

পুদিনা:
  সেন্সর:
    আর্দ্রতা: 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
  মিন_উজ্জ্বলতা: 2500
  সর্বোচ্চ_উজ্জ্বলতা: 60000
  min_temperature: 8
  সর্বোচ্চ_তাপমাত্রা: 32
  মিন_আর্দ্রতা: 15
  সর্বোচ্চ_আর্দ্রতা: 60
  min_পরিবাহিতা: 350
  সর্বোচ্চ_পরিবাহিতা: 2000

Note the subtle dif­fer­ence between the entity name for the bat­tery com­pared with the oth­er sensors. The bat­tery entity is com­ing from the miflora plat­form in sensors.yaml whilst the oth­er 4 sensors are com­ing from the BLE integ­ra­tion. There IS a bat­tery entity lis­ted by the BLE integ­ra­tion but this just shows as “unknown” for this plant. This con­fig­ur­a­tion is needed for the plant card to show the plant in a nicely presen­ted way
তারপরে আপনি যে জায়গায় আপনার উদ্ভিদ যোগ করতে চান সেখানে যান এবং লাভলেস প্ল্যান্ট কার্ড যোগ করুন. You will have to “con­fig­ure” the card manu­ally, but it only takes 3 lines…

টাইপ: কাস্টম:flower-card
entity: plant.basil
species: বেসিলিক বেসিলিক

Note that the spe­cies is lis­ted for 2 reas টার্ন. Firstly it will dis­play the name on the card, কিন্তু আরো ইম্পোর্ট-antly, it will also dis­play a pic­ture of the plant if you have down­loaded the plant images and added them into \config\www\images\plants using the lat­in names — the inform­a­tion on the data­base is avail­able on the lovelace plant card documentation

প্রসারিত পরিসীমা

পরিশেষে, আমরা পৌঁছতে পারি পরিসীমা প্রসারিত করতে হবে. এর জন্য আমাদের প্রয়োজন ESP32 ডিভাইস. The first thing to do is to get it hooked up to your com­puter via ইউএসবি এবং একটি মৌলিক ESPHome ইমেজ দিয়ে ফ্ল্যাশ করুন
আমি ব্যবহার ESPHome Flash­er এবং cp210x uni­ver­sal win­dows driver from SiL­abs and fol­lowed the guide provided by the ESPHome Home­As­sist­ant integration
The con­fig I used for my ESP32 device is below

এসফোম:
  নাম: jzk-esp-32s
  platform: ESP32
  board: esp32doit-devkit-v1

# Enable logging
logger:

# Enable Home Assistant এপিআই
api:

ওয়াইফাই:
  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:
  - source: github://myhomeiot/esphome-components
    
esp32_ble_tracker:
    
ble_gateway:
  ডিভাইস:
    - mac_address: mac:ঠিকানা:of:পুষ্পিত:সেন্সর:থেকে: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:ঠিকানা:of:পুষ্পিত:সেন্সর:থেকে: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", "Battery (%d%%), ফার্মওয়্যার (%গুলি)", এক্স[0], std::string(x.begin(), x.end()).substr(2).c_str());
              char buffer[70 + 1];
              const uint8_t *remote_bda = xthis.remote_bda();
              snprintf(buffer, sizeof(buffer), "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(buffer).c_str();

Then save and update to your esp32 device via wifi. The ESP32 device will pick up the data from the miflora sensor and will ‘push’ it via wifi to the BLE integ­ra­tion which will cre­ate a device and entit­ies auto­mat­ic­ally. Devices pushed in this way do appear to show their bat­teyr level (thanks to the code at the bot­tom of the myhomeiot_ble_client sec­tion I believe). You then just need to give the device a nice name (and let the entit­ies be renamed too) and then cre­ate an entry in plants.yaml with the right entities

Leave a Reply

4 Comments

JSJon Scaife

হাই
হ্যাঁ, I actu­ally use ESP32 repeat­ers myself now as they are able to use “pass­ive” mode AND col­lect bat­tery data.
If you have a ইউএসবি bluetooth device then you can pair the MiFlora devices dir­ectly to that first and then when you set up the ESP32 it will send the inform­a­tion into HA and it will show up for the cor­rect entit­ies automatically

You need to use the code as I describe in the “Extend­ing range” section.
You also need to have the “Bluetooth Low Energy Mon­it­or” integ­ra­tion installed (via HACS)

If you don’t have a ইউএসবি Bluetooth then there is a way to get the devices to show up in Bluetooth Low Energy Mon­it­or. I can­’t remem­ber the link where I read it but I think it’s part of the Bluetooth Low Energy Mon­it­or Wiki or FAQs

If you do it that way then you don’t need to use the manu­al YAML that Barry uses. His post is from 2020 — I think before Bluetooth Low Energy Mon­it­or could do it or maybe before it even existed.

উত্তর
টিটনি

হ্যালো, thank you for post­ing this great solution.
Can the esp32 Bluetooth gate­way trans­mit data more than one bluetooth device or or do you have to provide one ESP 32 for each Bluetooth device we want to extend the range for?

উত্তর
JSJon Scaife

Hi Tony
The ESP will trans­mit data for any BT devices with­in range I believe although as mine is cur­rently only used for 1 BT device I can­’t con­firm 100% — but that is cer­tainly my understanding

উত্তর