Ho citato in giudizio l'integrazione di MiFlora Home Assistant per ottenere dati su varie piante d'appartamento da un po' di tempo. Tuttavia lungo la strada ho dovuto superare vari ostacoli tra cui una gamma limitata di Bluetooth, problemi di durata della batteria, e ottenere i valori della batteria da segnalare. Alla fine mi sembra di aver risolto tutti questi problemi e ora ho un sistema che funziona in modo affidabile con molte piante in casa. Ho riassunto ciò che ho usato di seguito.
Hardware
La prima cosa da dire è che ho un bluetooth USB dongle collegato al mio sistema di assistente domestico. Questo monitora direttamente le piante nel raggio d'azione (i.e. quelli nella stessa stanza del box HA). Per monitorare più dispositivi a distanza ho utilizzato una scheda ESP32 con modulo bluetooth integrato che ho all'interno di una piccola custodia economica e ho alimentato con un vecchio micro-USB caricatore del telefono
- USB Dongle: quello che ho ricevuto non è più disponibile - a causa dell'età - ma ci sono un sacco di amazon e altrove - assicurati solo che abbia il supporto in linux
- Scheda ESP32: ho un JZK ESP32-S che è attualmente £ 6,49 su Amazon
- Custodia per ESP32: Ho trovato la custodia per un NodeMCU Wroom-32D (antenna corta) montato sulla mia tavola - questo era £ 4,20 da ebay
Integrazioni per Home Assistant
Sebbene l'integrazione di base di MiFlora sia integrata nell'assistente domestico, ho scoperto che utilizza molta batteria se utilizzato in modo nativo. Invece io uso il Monitor Bluetooth a basso consumo energetico 3rd integrazione del partito che puoi installare facilmente utilizzando RITARDO
Ho poi installato anche il Integrazione ESPHome per l'assistente domestico per gestire il mio ripetitore ESP32 BLE
Finalmente, per visualizzare le piante in modo carino ho aggiunto un particolare fork della carta della pianta del lovelace addon tramite LAG
Configurazione
Una volta che BLE Monitor è stato installato e configurato con il mio dongle bluetooth, ha raccolto i sensori MiFlora nel raggio d'azione e li ha elencati nel suo menu a discesa "dispositivi", oltre a elencare i dispositivi e le entità sulla sua scheda nella configurazione HA
La cosa grandiosa del monitor BLE è che ascolta la trasmissione dei sensori, piuttosto che interrogarli attivamente, che scaricherebbero le batterie. tuttavia, i sensori non trasmettono informazioni sulla batteria, quindi per ottenerlo dobbiamo eseguire attivamente il polling. Sondaggio solo per questo, e l'ascolto passivo degli altri dati sembra essere il miglior compromesso se si desidera avere tutti i dati disponibili ma anche massimizzare la durata della batteria del sensore. Ho separato il mio configuration.yaml in più file separati per mantenere le cose un po' più facili da gestire, quindi ho solo la seguente riga nel mio configuration.yaml —
sensore: !include sensori.yaml
Quindi in sensori.yaml ho elencato ogni pianta come segue
- piattaforma: sbocciato
Mac: 'Mac:indirizzo:of:sbocciato:sensore:qui'
nome: basilico
aggiornamento forzato: vero
scan_interval: 08:00
mediano: 3
go_unavailable_timeout: 43200
condizioni_controllate:
- batteria
Avanti: per far apparire bene le piante, ho una configurazione delle piante. Come prima, una singola riga in configuration.yaml per cominciare:
pianta: !includi piante.yaml
E poi in plants.yaml ho quanto segue
basilico: sensori: umidità: sensor.ble_moisture_basil batteria: sensore.basilico_batteria temperatura: sensor.ble_temperature_basil conducibilità: sensor.ble_conductivity_basil luminosità: sensore.ble_illuminance_basil min_batteria: 15 minima_luminosità: 2500 max_luminosità: 60000 min_temperatura: 8 max_temperatura: 32 minima_umidità: 15 max_umidità: 60 min_conduttività: 350 max_conduttività: 2000
Notare la sottile differenza tra il nome dell'entità per la batteria rispetto agli altri sensori. L'entità della batteria proviene dalla piattaforma miflora in sensori.yaml mentre l'altra 4 i sensori provengono dall'integrazione BLE. C'è un'entità batteria elencata dall'integrazione BLE, ma questo viene semplicemente visualizzato come "sconosciuto" per questo impianto. Questa configurazione è necessaria affinché la scheda della pianta mostri la pianta in un modo ben presentato
Quindi vai semplicemente nel punto in cui desideri aggiungere la tua pianta e aggiungi la carta della pianta lovelace. Dovrai "configurare" la scheda manualmente, ma ci vogliono solo 3 righe...
tipo: costume:carta di fiori entità: basilico.pianta specie: basilicale
Si noti che la specie è elencata per 2 motivi. Per prima cosa visualizzerà il nome sulla carta, ma più import-antly, visualizzerà anche un'immagine della pianta se hai scaricato le immagini della pianta e le hai aggiunte in configwwwimagesplants usando i nomi latini — le informazioni sul database sono disponibili sulla documentazione della scheda della pianta di lovelace
Estendere la gamma
Finalmente, dobbiamo estendere la gamma che possiamo raggiungere. Per questo abbiamo bisogno del dispositivo ESP32. La prima cosa da fare è collegarlo al computer tramite USB e esegui il flashing con un'immagine ESPHome di base
Ho usato il Lampeggiatore ESPHome e la cp210x driver universale per Windows di SiLabs e ho seguito la guida fornita dall'integrazione di ESPHome HomeAssistant
La configurazione che ho usato per il mio dispositivo ESP32 è di seguito
esphome: nome: jzk-esp-32s piattaforma: ESP32 asse: esp32doit-devkit-v1 # Abilita registrazione logger: # Abilita Assistente domestico API api: Wi-Fi: ssid: !wifi_ssid segreto parola d'ordine: !password_wifi segreta # Abilita hotspot di fallback (portale captivo) nel caso in cui la connessione wifi fallisca ap: ssid: "Esp32 Hotspot di fallback" password: "password casuale qui" componenti_esterni: - fonte: github://componenti myhomeiot/esphome esp32_ble_tracker: ble_gateway: dispositivi: - indirizzo MAC: Mac:indirizzo:of:sbocciato:sensore:a:tenere sotto controllo:va:qui su_ble_advertise: allora: assistente.evento: evento: esphome.on_ble_advertise dati: pacchetto: !pacchetto di ritorno lambda; myhomeiot_ble_host: miohomeiot_ble_client: - indirizzo MAC: Mac:indirizzo:of:sbocciato:sensore:a:tenere sotto controllo:va:qui servizio_uuid: '1204' caratteristico_uuid: '1A02' intervallo di aggiornamento: 4h su_valore: allora: assistente.evento: evento: esphome.on_ble_advertise dati: pacchetto: !lambda |- se (x.dimensione() 2) { ESP_LOGE("miohomeiot_ble_client", "payload has wrong size (%d)", x.dimensione()); ritorno ""; }; ESP_LOGI("miohomeiot_ble_client", "Batteria (%d%%), firmware (%S)", x[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], x[0]); return std::string(buffer).c_str();
Quindi salva e aggiorna sul tuo dispositivo esp32 tramite wifi. Il dispositivo ESP32 raccoglierà i dati dal sensore miflora e li 'spingerà' via wifi all'integrazione BLE che creerà automaticamente un dispositivo ed entità. I dispositivi spinti in questo modo sembrano mostrare il loro livello di batteria (grazie al codice in fondo alla sezione myhomeiot_ble_client credo). Quindi devi solo dare al dispositivo un bel nome (e lascia che anche le entità vengano rinominate) e quindi crea una voce in plants.yaml con le entità corrette
Ciao,
esiste anche la versione per leggere i sensori flora tramite script ESP e inviarli al broker MQTT. Purtroppo non riesco a trovare la giusta descrizione di come posso poi pubblicare i dati contenuti in MQTT come sensore in HomeAssistant.
Ecco il link ad esso: https://www.barrymercer.co.uk/wordpress/2020/04/27/mi-flora-home-assistant-and-mqtt-gateway/
Ciao
sì, In realtà ora utilizzo io stesso i ripetitori ESP32 poiché sono in grado di utilizzare la modalità "passiva" E raccogliere i dati della batteria.
Se hai un USB dispositivo bluetooth quindi puoi accoppiare i dispositivi MiFlora direttamente a quello prima e poi quando imposti l'ESP32 invierà le informazioni in HA e verrà visualizzato automaticamente per le entità corrette
È necessario utilizzare il codice come descritto nella sezione "Estensione dell'intervallo"..
È inoltre necessario che sia installata l'integrazione "Bluetooth Low Energy Monitor". (tramite HACS)
Se non hai un USB Bluetooth quindi c'è un modo per far apparire i dispositivi in Bluetooth Low Energy Monitor. Non ricordo il link dove l'ho letto, ma penso che faccia parte del Wiki Bluetooth Low Energy Monitor o delle FAQ
Se lo fai in questo modo, non è necessario utilizzare lo YAML manuale utilizzato da Barry. Il suo post è di 2020 - Penso che prima che Bluetooth Low Energy Monitor potesse farlo o forse prima ancora che esistesse.
Ciao, grazie per aver pubblicato questa fantastica soluzione.
Il gateway Bluetooth esp32 può trasmettere dati a più di un dispositivo Bluetooth o è necessario fornire un ESP 32 per ogni dispositivo Bluetooth di cui vogliamo estendere la portata?
Ciao Tony
L'ESP trasmetterà i dati per qualsiasi dispositivo BT entro il raggio, credo, anche se il mio è attualmente utilizzato solo per 1 Dispositivo BT non posso confermare 100% — ma questa è certamente la mia comprensione