MiFlora sensoren via OpenMQTTGateway in Domoticz

Natuurlijk heb je allereerst een Xiaomi MiFlora sensoren nodig. Die had ik al zoals je hier kunt lezen. Zorg er voor dat de firmware van de sensoren via de Flower Care app up-to-date is.

Om een bluetooth low-energy (BLE) gateway te maken heb ik gebruik gemaakt van de Omilex ESP-32 Gateway met antenne. Deze is te bestellen bij Omilex zelf voor net geen €30 incl. verzendkosten: https://www.olimex.com/Products/IoT/ESP32/ESP32-GATEWAY/open-source-hardware

Om OpenMQTTGateway te configureren maak je gebruik van PlatformIO, hiervoor installeer je eerst Visual Studio Code. Daarna open je aan de linker kant “Extensions” (de vier blokjes), zoek dan naar platfomrio en klik op “PlatformIO IDE / Install“.
Na installatie komt er in de linkerbalk een icoontje van PlatformIO bij. Klik erop en dan op “PIO Home / Platforms”. Zoek naar espressif en installeer Espressif 32. PlatformIO is nu klaar voor ESP32-projecten.
Open via http://www.bit.ly/omqttrelease de Github pagina met OpenMQTTGateway releases en download de nieuwste versie van het bestand “Source code (zip)”. Pak het uit en open de uitgepakte map in PlatformIO (File / Open Folder). Het bestand platformio.ino wordt nu geopend.
Haal de puntcomma(;) voor de regel “default_envs = esp32-olimex-gtw-ble-eth“weg en sla je wijziging op met “File / Save“.
Vervolgens klik je op de map “main” en configureerje de gateway in het bestand “User_config.h“. Vul bij MQTT_USER, MQTT_PASS, MQTT_SERVER en MQTT_PORT de gegevens van je MQTT brooker in. Sla je wijziging op met “File / Save“.
De configuratie is nu in orde. Sluit het Omilex bordje aan via USB (mogelijk moet je nog de CH341 driver installeren). Klik onderaan in de blauwe statusbalk van PlatformIO op het “witte pijlte naar rechts in het vierkantje” Er opent een terminal scherm waar je de opdracht “pio run –target upload” in uitvoert. Als alles goed gaat krijg je op het einde in het groen de status “Succeeded
Sluit de Olimex nu via UTP en usb-kabel aan. Hij zal nu BLE-pakketten uit de lucht halen en omzetten naar MQTT-boodschappen welke je kunt bekijken in een programma zoals MQTT Explorer.
Onder home/OpenMQTTGateway-ESP32_OLM_GTWE/BTtoMQTT ontdek je per BLE-apparaat een onderwerp regel met het MAC-adres van het apparaat/sensor. Je zult van de MiFlora sensoren ook een JSON-string zien, zoals bijvoorbeeld: {“id”:”C4:7C:8D:65:C2:28″,”name”:”Flower care”,”rssi”:-40,”model”:”HHCCJCY01HHCC”,”tempc”:22.5,”tempf”:72.5}

Vervolgens maak je in Domoticz Dummy sensoren aan voor je Xiaomi MiFlora sensoren: temperatuur, grond vochtigheid, lichtsterkte, voeding (custom, as: µS/cm) en signaalsterkte (custom, as: dBm). De idx nummers heb je straks nodig om in de Node-RED flow onder “function” aan te passen.

Importeer in Node-RED onderstaande flow:
[{"id":"a9558149.39c79","type":"tab","label":"MQTTGateway","disabled":false,"info":""},{"id":"93a0cad7.9fc1b","type":"mqtt in","z":"a9558149.39c79","name":"MQTT MiFlora Buiten","topic":"home/OpenMQTTGateway_ESP32_OLM_GTWE/BTtoMQTT/C47C8D65C228","qos":"0","datatype":"json","broker":"4d2ff189.666908","nl":false,"rap":false,"x":280,"y":160,"wires":[["8d63f147.03df78"]]},{"id":"8d63f147.03df78","type":"function","z":"a9558149.39c79","name":"","func":"var msg1 = {};\nvar msg2 = {};\n\nswitch (true) {\n\n case msg.payload.hasOwnProperty (\"tempc\"):\n msg1.payload = {\"command\":\"udevice\",\"idx\":316,\"nvalue\":0,\"svalue\": msg.payload.tempc.toString()};\n break;\n \n case msg.payload.hasOwnProperty (\"moi\"):\n msg1.payload = {\"command\":\"udevice\",\"idx\":317,\"nvalue\": msg.payload.moi,\"svalue\": \"0\"};\n break;\n \n case msg.payload.hasOwnProperty (\"lux\"):\n msg1.payload = {\"command\":\"udevice\",\"idx\":318,\"nvalue\":0,\"svalue\": msg.payload.lux.toString()};\n break;\n \n case msg.payload.hasOwnProperty (\"fer\"):\n msg1.payload = {\"command\":\"udevice\",\"idx\":319,\"nvalue\":0,\"svalue\": msg.payload.fer.toString()};\n break; \n}\n\nmsg2.payload = {\"command\":\"udevice\",\"idx\":320,\"nvalue\":0,\"svalue\": msg.payload.rssi.toString()};\n\nreturn [[msg1,msg2]]","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":480,"y":160,"wires":[["7ee0ad99.9bd0b4","28ec172b.76b3b"]]},{"id":"7ee0ad99.9bd0b4","type":"debug","z":"a9558149.39c79","name":"","active":true,"tosidebar":true,"console":true,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":500,"y":220,"wires":[]},{"id":"28ec172b.76b3b","type":"mqtt out","z":"a9558149.39c79","name":"MQTT to Domoticz","topic":"domoticz/in","qos":"0","retain":"false","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"4d2ff189.666908","x":970,"y":320,"wires":[]},{"id":"8aa8629b.69707","type":"mqtt in","z":"a9558149.39c79","name":"MQTT MiFlora Binnen","topic":"home/OpenMQTTGateway_ESP32_OLM_GTWE/BTtoMQTT/C47C8D65BE1F","qos":"0","datatype":"json","broker":"4d2ff189.666908","nl":false,"rap":false,"x":280,"y":300,"wires":[["9b88518e.ee03e"]]},{"id":"9b88518e.ee03e","type":"function","z":"a9558149.39c79","name":"","func":"var msg1 = {};\nvar msg2 = {};\n\nswitch (true) {\n\n case msg.payload.hasOwnProperty (\"tempc\"):\n msg1.payload = {\"command\":\"udevice\",\"idx\":321,\"nvalue\":0,\"svalue\": msg.payload.tempc.toString()};\n break;\n \n case msg.payload.hasOwnProperty (\"moi\"):\n msg1.payload = {\"command\":\"udevice\",\"idx\":322,\"nvalue\": msg.payload.moi,\"svalue\": \"0\"};\n break;\n \n case msg.payload.hasOwnProperty (\"lux\"):\n msg1.payload = {\"command\":\"udevice\",\"idx\":323,\"nvalue\":0,\"svalue\": msg.payload.lux.toString()};\n break;\n \n case msg.payload.hasOwnProperty (\"fer\"):\n msg1.payload = {\"command\":\"udevice\",\"idx\":324,\"nvalue\":0,\"svalue\": msg.payload.fer.toString()};\n break; \n}\n\nmsg2.payload = {\"command\":\"udevice\",\"idx\":325,\"nvalue\":0,\"svalue\": msg.payload.rssi.toString()};\n\nreturn [[msg1,msg2]]","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":480,"y":300,"wires":[["28ec172b.76b3b","ac3222f5.b973"]]},{"id":"ac3222f5.b973","type":"debug","z":"a9558149.39c79","name":"","active":true,"tosidebar":true,"console":true,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":520,"y":360,"wires":[]},{"id":"4d2ff189.666908","type":"mqtt-broker","name":"","broker":"127.0.0.1","port":"1883","clientid":"","usetls":false,"verifyservercert":true,"compatmode":true,"keepalive":"15","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]

Pas in de flow het binnenkomende topic per sensor aan (gebruik hiervoor MQTT Explorer), uitgaande MQTT brooker en de idx nummers aan. “Deploy” de flow. Als je alles goed hebt gedaan zullen nu de waarden van de Xiaomi MiFlora sensoren in Domoticz zichtbaar worden.

OpenMQTTGateway werkt overigens ook samen met Home Assistant. Haal daarvoor de “//” weg voor de regel “#define ZmqttDiscovery “HADiscovery”//ESP8266, Arduino, ESP32, Sonoff RF Bridge” in het bestand “User_config.h“.

Bronnen:
Computer!Totaal januari/februari 2022
https://www.domoticz.com/forum/viewtopic.php?f=4&t=35377&p=267757&

2 antwoorden naar “MiFlora sensoren via OpenMQTTGateway in Domoticz”

  1. Pingback: Meterstanden naar Telegram

  2. Pingback: Automatische tuin besproeiing

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

*