Mi Flora Integration

Hallo.
Ich versuche, ein Mi Flora-Gerät über MQTT in Gladys zu integrieren.
Der MQTT-Server meiner Gladys-Instanz ist über Gladys installiert.

Ich verwende dieses Skript, um auf den MQTT-Server posten zu können: GitHub - ThomDietrich/miflora-mqtt-daemon: Linux service to collect and transfer Xiaomi Mi Flora plant sensor data via MQTT to your smart home system, with cluster support 🌱🌼🥀🏡🌳 · GitHub
Ich erhalte dies lokal auf meiner Gladys-Instanz (RPI3):
[2021-03-13 14:50:23] Verbindung zum MQTT-Broker wird hergestellt …
[2021-03-13 14:50:23] Verbindungsfehler mit dem Ergebnis-Code 5 - Verbindung abgelehnt: nicht autorisiert.

Dabei kann ich mich von einem anderen Rechner aus mit einem MQTT-Client über MQTT Explorer problemlos verbinden.

Möglicherweise liegt das Problem am Skript, aber könnte es auch eine Konfiguration des MQTT-Servers geben, die blockiert? In MQTT Explorer sehe ich kein Topic « Gladys », nur $Sys, ist das normal?

Vielen Dank für eure Hilfe. :slight_smile:

Übrigens, eine andere Frage: Das Skript bietet vorgefertigte Topic-Konfigurationen für SmartHome, HomeAssistant, … Ich würde gerne eine vorgefertigte Konfiguration für Gladys erstellen, aber welche Topic-Parameter müsste man da einrichten?

Hallo!

Aus Neugier, welche Version von Gladys verwendest du?

Es gab eine Änderung in den Mosquitto-Berechtigungen, die diesen Fehler verursacht hat, und wir haben Gladys in der letzten Version behoben :slight_smile:

Du solltest mindestens Gladys v4.1.0 verwenden, das kannst du unter „Einstellungen“ => „System“ sehen!

Bearbeitung: siehe Gladys v4.1.0 est disponible!

Hallo.
Ich bin auf Version 4.1.1

Ok, ich hatte es falsch verstanden, der Fehler kommt vom Skript und nicht von Gladys!

Bist du sicher, dass du das Skript mit den richtigen Parametern gestartet hast? Kannst du genau beschreiben, was du tust?

Um MQTT in Gladys besser zu verstehen, empfehle ich dir, diesen Tutorial zu lesen:

Kurz gesagt, in Gladys ist die MQTT-API sehr einfach: Jeder Sensor hat sein eigenes MQTT-Topic und hört auf diesem Topic. Sobald ein neuer Wert an dieses Topic gesendet wird, speichert Gladys den Wert. Ganz einfach :slight_smile:

Wie du sagst, in diesem Fall wurde das Skript für Home Assistant codiert und hält sich daher nicht an dieselben Topic-/Nachrichtenformat-Konventionen wie Gladys.

Daher wird man das Skript anpassen müssen, um die Topics und das Nachrichtenformat zu ändern, auf das veröffentlicht wird :slight_smile:

@AlexTrovato Kleine Frage, werden die MiFlora in Gladys 4 nicht mit dem Bluetooth-Service verwaltet?

Ich hatte versucht, eine Migration von der v3 zur v4 zu starten. Aber es ist noch nicht sehr weit fortgeschritten.
Ich kann das Thema wieder aufgreifen und seine Integration vorschlagen, oder wenn jemand es versuchen möchte, kann ich Unterstützung leisten.

Wie du willst, das war vor allem, um zu wissen, ob das nicht schon der Fall ist :slight_smile: Das hängt davon ab, ob es eine große Entwicklung ist oder nicht.

Vielen Dank für euer Feedback, ich werde mir das alles ansehen und versuchen, auf meiner Seite voranzukommen.

Falls ich bei der Migration der Integration auf v4 helfen kann, bin ich bereit, Tests durchzuführen.

Ist das so etwas wie ein Parrot Flower Power, aber viel günstiger? Das interessiert mich sehr.

Ich habe es bisher noch nicht viel genutzt, ich weiß nur, dass es funktioniert :slight_smile:
Der einzige Nachteil, den ich bisher sehe, ist, dass es per Bluetooth funktioniert und es daher nicht zu weit von deiner Gladys-Box entfernt sein darf. Danach könnte man sich einen Pi Zero als Relais vorstellen, auf dem du das Skript ausführen könntest. Ich werde es versuchen, wenn die Integration in Gladys okay ist.

Gibst du das Skript auf? Denn wenn du das Skript verwendest, funktioniert es mit der aktuellen MQTT-Integration. Du musst nur das Skript anpassen, um die Gladys-Topics einzustellen, aber ansonsten sollte es funktionieren :slight_smile:

Nein, ich behalte ihn, aber der Mi Flora kommuniziert per Bluetooth, ich weiß nicht, ob die Reichweite ausreicht - für mich bin ich in einer Wohnung, Pflanzen auf dem Balkon oder im Wohnzimmer, das könnte funktionieren, aber jemand in einem Haus mit Garten, ich bin mir nicht sicher, ob es funktioniert.

Daher stellte ich mir Relais vor, die das Skript alle X Stunden ausführen (z. B. Pi Zero mit Batterie), die die Informationen sammeln und sie per WLAN an den MQQT-Server senden. Wenn man weiter denkt, kann das Relais auch dazu dienen, Pumpen zu betätigen, um die Pflanzen zu bewässern, usw. es gibt viele Ideen zur Smart Farm.

Letztlich ist es eine Idee, all das ist noch neu für mich. ^^ Wenn ich die Informationen abrufen und eine Nachricht auf Telegram senden kann, um mich daran zu erinnern, meinen Basilikum zu gießen oder ein Farm-Dashboard zu erstellen, wäre das schon riesig! :slight_smile:

Kleines Update, ich habe endlich verstanden, wie MQTT/Gladys funktioniert, indem ich die Dokumentation richtig gelesen habe :slight_smile:

Das wird gut im Dashboard angezeigt

Was das Python-Skript für miflora betrifft, habe ich das MQTT-Verbindungsproblem gelöst, man muss die Leerzeichen nach dem « = » für den Benutzernamen und das Passwort entfernen.

Allerdings kann ich mich nicht mit dem MiFloa verbinden, zumindest erhalte ich keine Daten, es scheint ins Leere zu laufen:

pi@raspberrypi:/opt/miflora-mqtt-daemon $ sudo python3 miflora-mqtt-daemon.py

Xiaomi Mi Flora Plant Sensor MQTT Client/Daemon
Source: https://github.com/ThomDietrich/miflora-mqtt-daemon

[2021-03-16 21:12:41] Verbindung zum MQTT-Broker wird hergestellt ...
[2021-03-16 21:12:41] MQTT-Verbindung hergestellt

Sensor zur Geräteliste hinzufügen und Verbindung testen ...
Name:          "Basilic"
[2021-03-16 21:12:42] Versuch der ersten Verbindung zum Mi Flora-Sensor "Basilic" (C4:7C:8D:6A:E1:31)
^Cpi@raspberrypi:/opt/miflora-mqtt-daemon $ ^C
pi@raspberrypi:/opt/miflora-mqtt-daemon $ sudo hcitool lescan
LE Scan ...
XX:XX:XX:XX:XX (unknown)
XX:XX:XX:XX:XX Mi Smart Band 4
C4:7C:8D:6A:E1:31 (unknown)
C4:7C:8D:6A:E1:31 Flower care
XX:XX:XX:XX:XX (unknown)

Ich kenne mich nicht mit Python aus, aber ich werde mal beim Entwickler des Skripts nachfragen, ob er mir einen Tipp zum Debuggen geben kann.

@+

Genial :clap::clap: bravo, das sieht super aus :slightly_smiling_face:

Gibt es Fortschritte bei der Integration des MiFlora direkt über den Bluetooth-Dienst?
Oder gibt es ein PR, bei dem ich helfen kann?

Hier ist schon mal mein Log des Softwares gladys-bluetooth-analyzer bezüglich meiner MiFlora (Modus generisch):

    ✔ Gerät auswählen, das Sie analysieren möchten: › c4:7c:8d:63:27:12 - Flower care
     -> Gerät:
        - Name: Flower care
        - Modell: undefined
        - 0 Merkmale
        - 0 Parameter
    ✔ Wählen Sie den Dienst, den Sie testen möchten › Generisch
    Führe jetzt generische Schritte aus...
    ✔ Dieser Modus wird Ihr Peripheriegerät scannen, um maximale Informationen zu erhalten, fortfahren? … ja
     -> Peripheriegerät:
       -> Adresstyp: öffentlich
       -> Verbindbar: true
       -> Werbung:
         -> Lokale Bezeichnung: Flower care
         -> Herstellerdaten: undefined
         -> Dienste: fe95
         -> Dienstedaten (1):
           [0] fe95 / undefined / 31029800031227638d7cc40d / undefined
       -> Dienste (6):
         -> 1800 (Generischer Zugriff)
           -> Merkmale (4):
             -> 2a00 (Gerätename): lesen
             -> 2a01 (Erscheinungsbild): lesen
             -> 2a02 (Peripherie-Privacy-Flag): lesen, schreiben
             -> 2a04 (Peripherie-Vorzugsverbindungsparameter): lesen
         -> 1801 (Generisches Attribut)
           -> Merkmale (1):
             -> 2a05 (Dienst geändert): lesen, anzeigen
         -> fe95 (null)
           -> Merkmale (8):
             -> 1 (null): lesen, schreiben, benachrichtigen
             -> 2 (null): lesen
             -> 4 (null): lesen, benachrichtigen
             -> 7 (null): schreiben
             -> 10 (null): schreiben
             -> 13 (null): lesen, schreiben
             -> 14 (null): lesen
             -> 1001 (null): benachrichtigen
         -> fef5 (null)
           -> Merkmale (6):
             -> 8082caa841a6402191c656f9b954cc34 (null): lesen, schreiben
             -> 724249f05ec34b5f880442345af08651 (null): lesen, schreiben
             -> 6c53db2547a145fea0227c92fb334fd4 (null): lesen
             -> 9d84b9a3000c49d89183855b673fda31 (null): lesen, schreiben
             -> 457871e8d5164ca1911657d0b17b9cb2 (null): lesen, schreibenOhneAntwort, schreiben
             -> 5f78df94798c46f5990ab3eb6a065c88 (null): lesen, benachrichtigen
         -> 0000120400001000800000805f9b34fb (null)
           -> Merkmale (3):
             -> 00001a0000001000800000805f9b34fb (null): lesen, schreiben
             -> 00001a0100001000800000805f9b34fb (null): lesen, schreiben, benachrichtigen
             -> 00001a0200001000800000805f9b34fb (null): lesen
         -> 0000120600001000800000805f9b34fb (null)
           -> Merkmale (3):
             -> 00001a1100001000800000805f9b34fb (null): lesen
             -> 00001a1000001000800000805f9b34fb (null): lesen, schreiben, benachrichtigen
             -> 00001a1200001000800000805f9b34fb (null): lesen


    ✔ Gerät auswählen, das Sie analysieren möchten: › c4:7c:8d:61:07:bc - Flower care
     -> Gerät:
        - Name: Flower care
        - Modell: undefined
        - 0 Merkmale
        - 0 Parameter
    ✔ Wählen Sie den Dienst, den Sie testen möchten › Generisch
    Führe jetzt generische Schritte aus...
    ✔ Dieser Modus wird Ihr Peripheriegerät scannen, um maximale Informationen zu erhalten, fortfahren? … ja
     -> Peripheriegerät:
       -> Adresstyp: öffentlich
       -> Verbindbar: true
       -> Werbung:
         -> Lokale Bezeichnung: Flower care
         -> Herstellerdaten: undefined
         -> Dienste: fe95
         -> Dienstedaten (1):
           [0] fe95 / undefined / 7120980001bc07618d7cc40d041002a900 / undefined
       -> Dienste (6):
         -> 1800 (Generischer Zugriff)
           -> Merkmale (4):
             -> 2a00 (Gerätename): lesen
             -> 2a01 (Erscheinungsbild): lesen
             -> 2a02 (Peripherie-Privacy-Flag): lesen, schreiben
             -> 2a04 (Peripherie-Vorzugsverbindungsparameter): lesen
         -> 1801 (Generisches Attribut)
           -> Merkmale (1):
             -> 2a05 (Dienst geändert): lesen, anzeigen
         -> fe95 (null)
           -> Merkmale (8):
             -> 1 (null): schreiben, benachrichtigen
             -> 2 (null): lesen
             -> 4 (null): lesen, benachrichtigen
             -> 7 (null): schreiben
             -> 10 (null): schreiben
             -> 13 (null): lesen, schreiben
             -> 14 (null): lesen
             -> 1001 (null): benachrichtigen
         -> fef5 (null)
           -> Merkmale (6):
             -> 8082caa841a6402191c656f9b954cc34 (null): lesen, schreiben
             -> 724249f05ec34b5f880442345af08651 (null): lesen, schreiben
             -> 6c53db2547a145fea0227c92fb334fd4 (null): lesen
             -> 9d84b9a3000c49d89183855b673fda31 (null): lesen, schreiben
             -> 457871e8d5164ca1911657d0b17b9cb2 (null): lesen, schreibenOhneAntwort, schreiben
             -> 5f78df94798c46f5990ab3eb6a065c88 (null): lesen, benachrichtigen
         -> 0000120400001000800000805f9b34fb (null)
           -> Merkmale (3):
             -> 00001a0000001000800000805f9b34fb (null): lesen, schreiben
             -> 00001a0100001000800000805f9b34fb (null): lesen, schreiben, benachrichtigen
             -> 00001a0200001000800000805f9b34fb (null): lesen
         -> 0000120600001000800000805f9b34fb (null)
           -> Merkmale (3):
             -> 00001a1100001000800000805f9b34fb (null): lesen
             -> 00001a1000001000800000805f9b34fb (null): lesen, schreiben, benachrichtigen
             -> 00001a1200001000800000805f9b34fb (null): lesen

Im Modus XIAOMI > MiFlora bekomme ich den Fehler:

    ReferenceError: colors ist nicht definiert
        at printValues (/home/euguuu/Workspace/gladys-bluetooth-analyzer/services/xiaomi/MiFlora.js:9:15)

@euguuu ich glaube nicht, dass es Fortschritte gab, also zögere nicht :slight_smile:

ok, @AlexTrovato kannst du mir irgendwelche Hinweise geben, welche Funktion ich anschauen muss, um ein bestimmtes Peripheriegerät zu integrieren?

Da ist mir das Wort Parrot aufgefallen, und ich glaube, daran habe ich gearbeitet, um die Reste der Version 3 zu migrieren.
Ich schaue nach und sage dir, wie es wirklich aussieht.

ok; ich kann für den Parrot Flower und den Mi Flora schauen, wenn du willst, denn ich habe die beiden Geräte zum Testen.

Oups, ich habe vergessen, mich bei dir zu melden.
Um die Integration, zumindest die Tests, von Bluetooth-Geräten zu „erleichtern“, habe ich ein kleines Bluetooth-„Analyse“-Tool und ein Implementierungstest-Tool erstellt.
Ich hatte dieses Tool für einen Xiaomi-Sensor begonnen, aber da ich das Gerät nicht habe, ist es ziemlich schwierig, zu überprüfen, ob alles funktioniert (obwohl die Community alles in ihrer Macht Stehende getan hat, um mir zu helfen).
Derzeit verwende ich es, um meine AwoX-Geräte zu testen und den zukünftigen Service zu verbessern.

Hier ist das Tool:
https://github.com/atrovato/gladys-bluetooth-analyzer

Zur Info, ich habe den Entwickler des Skripts kontaktiert, aber er konnte mir keine Hinweise zum Datenabrufproblem geben. Er hat es auf einem frisch installierten RPI Zero W neu getestet und alles funktioniert.
Ich wollte schon lange mal einen holen, also habe ich mich dazu entschieden, normalerweise Dienstag Lieferung. Ich werde es testen und euch auf dem Laufenden halten.

@euguu: Super, wenn du den Dienst direkt in Gladys integrieren kannst, werde ich es auch testen.