Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS 19000406: Xiaomi Flower Monitor auslesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    LBS 19000406: Xiaomi Flower Monitor auslesen

    Auf der Suche nach (drahtlosen) Feuchtigkeitssensoren für meine Topfpflanzen bin ich auf die Xiaomi Flower Monitor gestoßen.

    Dieser Sensor arbeitet mit Bluetooth 4.1 BLE und misst neben der Feuchtigkeit auch den Düngerbedarf (über die Leitfähigkeit ermittelt), Helligkeit und die Temperatur. Soweit schon mal nicht so schlecht, die Batterie CR2032 soll 365 Tage halten, schauen wir mal. Ein Nachteil hat der Sensor, er ist nicht für draußen geeignet. Die zugehörige App ist nur in Chinesisch, was nicht das Problem ist, der Sensor soll ja eh an EDOMI melden. Die Daten überzeugen, daher habe ich in China zwei Sensoren bestellt und zwei Wochen später wurden die auch geliert. Bezahlt habe ich etwas unter 10 € pro Sensor das ist ein mehr als fairer Preis wenn bedenkt was die Alternativen kosten (z. B. der Parrot Flower Power, der sich allerdings nicht so einfach einbinden lässt und anscheinend nur noch als Restposten zu bekommen ist, allerdings ist er wetterfest und hat eine bessere App).

    Zwischenzeitlich habe ich festgestellt, dass CentOS 6.5 zu alt für Bluetooth 4.0 LE ist (Bluez 5 wird benötigt) und daher können die Sensoren nicht direkt verwendet werden. Falls Christian irgendwann auf CentOS 7 wechselt, dann kann der LBS auch direkt unter EDOMI die Sensoren auslesen (wenn erreichbar), natürlich noch ungetestet.

    Da ich noch einen Raspberry Pi 3 liegen hatte, wird dieser als Schnittstelle zwischen EDOMI und den Sensoren eingesetzt. Der Raspberry Pi 3 ist sehr gut geeignet, weil er Bluetooth 4.0 LE und WLAN bereits an Board hat und dadurch wird nur noch eine MicroSD-Karte, ein Gehäuse und ein Netzteil benötigt.

    Auf dem Raspberry Pi 3 wird Raspbian Jessie Light installiert und zusätzlich noch Apache 2 und PHP5. Weiterhin wird ein Bash- und ein PHP-Skript benötigt, welche in der ZIP-Datei im Anhang des LBS enthalten sind. Auf EDOMI wird zur Zeit nur der LBS benötigt ohne weitere Abhängigkeiten. Wenn EDOMI irgendwann auf CentOS 7 oder höher läuft, dann ist auch noch das Bash-Skript erforderlich.

    Vor der Inbetriebnahme müssen die Sensoren einmal in der Mi Home App (Android / iOS) eingerichtet werden, dass ist recht einfach, die Einrichtung ist nicht auf chinesisch. Die App starten, oben rechts auf das + klicken und dann "Add device" auswählen. Am unteren Rand findet sich ein Icon das mit "Scan" beschriftet ist, dieses anklicken und kurze Zeit später werden alle neuen Sensoren, die erreichbar sind, angezeigt. Der Flower Monitor wird als "Flower Care" angezeigt, diesen auswählen und das auslesen und aktualisieren abwarten. Die Informationen zum Sensor selbst, sind jetzt alle auf chinesisch, dass ist nicht schlimm, weil der Sensor jetzt initialisiert ist und damit die App wieder verlassen werden kann.

    Bei mir funktionieren die Sensoren sehr gut, über die Genauigkeit kann ich allerdings noch nichts schreiben, Langzeiterfahrungen habe ich damit auch noch nicht.
    Die Reichweite beträgt ca. 15m ohne Wand dazwischen, mit einer Wand sind es aber auch noch 10 Meter. Mit einem RPi zentral versteckt, kann ich die meisten Pflanzen erreichen. Die Sensoren melden durch ein kurzes aufleuchten einer weißen LED (sieht edel aus), das Übertragen von Daten.

    Der LBS ist sehr klein gehalten, neben einem Eingang zum Triggern, muss nach die IP-Adresse des Raspberry Pi und die MAC-Adresse des Sensors angegeben werden. An den Ausgängen werden nur die vier Werte und ein Trigger-Signal ausgegeben, Schaltschwellen oder ähnliches muss eine nachfolgende Logik erzeugen. Das Trigger-Signal wird gesetzt, wenn die Abfrage fertig ist. Damit wird ein gleichzeitiges Abfragen verhindert, da nur eine Bluetooth-Verbindung gleichzeitig aufgebaut werden kann.

    Hilfreich für die Erstellung des LBS waren die Informationen von Open Home Automation, wo die gelieferten Informationen des Sensors "entschlüsselt" wurden.

    Edit: Die Reichweite konnte ich durch Abfrage-Wiederholungen erhöhen. Ich vermute das sich bei weit entfernten Sensoren eventuelle Störungen stärker auswirken und deshalb durch das Wiederholen die Reichweite höher ist. Durch zwei Wände reicht die Bluetooth-Übertragung allerdings nicht.
    Zuletzt geändert von panzaeron; 15.10.2016, 18:40.

    #2
    Einrichtung eines Raspberry Pi 3 um als Schnittstelle für die Xiaomi Flower Monitoren und EDOMI zu fungieren.

    Wie ich schon im ersten Post geschrieben habe, ist der Vorteil des RPi 3, dass WLAN und Bluetooth 4.0 LE bereits integriert sind. Prinzipiell geht aber auch jedes andere System mit Bluetooth 4 LE.

    Hier also eine Anleitung um Schritt für Schritt zum funktionsfähigen System auf dem RPi 3 zu kommen:
    1. Raspbian Stretch light installieren
      Download des Raspbian-Image ist hier möglich: https://www.raspberrypi.org/downloads/raspbian/
      Eine Installationsanleitung steht hier: https://www.raspberrypi.org/document...ages/README.md
    2. Prüfen ob Bluetooth funktionsfähig ist
      Auf der Kommandozeile den folgenden Befehl eingeben:
      Code:
      sudo service bluetooth status
      Bei Active muss active (running) stehen, falls nicht muss der Bluetooth-Dienst gestartet werden:
      Code:
      sudo service bluetooth start
      Schlägt dies fehl, dann muss eventuell Bluetooth noch installiert werden, dies ist mit folgendem Befehl möglich:
      Code:
      sudo apt-get install pi-bluetooth
    3. Einen Webserver und PHP installieren
      Als Webserver wird hier Apache 2 verwendet, möglich wäre aber auch lighttpd. Die Installation von Apache 2 wird mit folgendem Befehl auf der Kommandozeile durchgeführt:
      Code:
      sudo apt-get install apache2 php
    4. Skripte aus diesem Verzeichnis kopieren
      Die Dateien aus dem Anhang des LBS zunächst auf einen USB-Stick kopieren und diesen an den RPi anstecken.
      Den USB-Stick mit folgendem Befehl einbinden:
      Code:
      sudo mkdir /mnt/usb
      Code:
      sudo mount /dev/sda1 /mnt/usb
      Wenn keine Fehlermeldung kommt ist der Stick eingebunden und die Dateien im Verzeichnis "/mnt/usb" zu finden.
    5. Dateien kopieren
      Die Dateien mit den folgenden zwei Befehlen kopieren:
      Code:
      sudo cp /mnt/usb/flower_sensor.sh /var
      Code:
      sudo cp /mnt/usb/flower_sensor.php /var/www/html
    6. Zugriffsrechte anpassen
      Zunächst das flower_sensor.sh Skript ausführbar machen mit folgendem Befehl:
      Code:
      sudo chmod +x /var/flower_sensor.sh
      Anschließend ein Ausführen als root ohne Passwort ermöglichen, auf der Kommandozeile visudo ausführen:
      Code:
      EDITOR=nano sudo -E visudo
      Nach unten scrollen und in die letzte Zeile folgendes eintragen:
      Code:
      www-data ALL=NOPASSWD:/var/flower_sensor.sh
      Den Editor mit der Tastenkombination Strg+X beenden, das Speichern mit J bestätigen.
    7. Schreibrechte auf das html Verzeichnis
      Damit die Namenzuordnung gespeichert werden kann, muss eine Datei mit Namen sensor_alias.csv erzeugt werden:
      Code:
      sudo touch /var/www/html/sensor_alias.csv
      anschließend wird diese dem Benutzer und Gruppe www-data zugewiesen:
      Code:
      sudo chown www-data:www-data /var/www/html/sensor_alias.csv
      und nun noch die Rechte vom übergeordneten Verzeichnis anpassen:
      Code:
      sudo chmod +x /var/www/html
    8. System testen
      Jetzt sollte eigentlich alles funktionieren. Um dieses zu testen, in einem Browser folgende URL eingegeben (die IP-Adresse durch die des Raspberry Pi ersetzen): http://IP-Adresse/flower_sensor.php
      Aus der Liste die MAC-Adresse die des Flower Monitors (Flower mate) auswählen
      Screenshot1.png
      und die Sensordaten sollten angezeigt werden.
      Screenshot2.png
    9. Wenn es nicht funktioniert, folgendes probieren:
      Sollten nur 0 Werte angezeigt werden, dann den Sensor einmal mit der App "Mi Home" einrichten (siehe erster Post).

      Kommt eine Fehlermeldung dann folgendes probieren:
      Den Sensor in die unmittelbare Nähe des Raspberry Pi 3 legen und den Browser aktualisieren.

      Funktioniert es immer noch nicht prüfen ob Bluetooth noch läuft:
      Code:
      sudo service bluetooth status
      und Apache 2:
      Code:
      sudo service apache2 status
      Wenn bei einem Dienst nicht active (running) steht dann diesen starten, z. B. für Apache2 wie folgt:
      Code:
      sudo service apache2 start
      oder für Bluetooth:
      Code:
      sudo service bluetooth start
      Steht bei beiden Ausgaben "active (running)", dann auf der Kommandozeile folgendes ausführen:
      Code:
      sudo hcitool lescan
      Bei den gefundenen Geräten müsste auch der "Flower mate" aufgeführt sein. Ist dies nicht der Fall, bleibt nur mit der App "Mi Home", zu prüfen ob der Sensor in Ordnung ist.
    Zuletzt geändert von panzaeron; 22.11.2017, 21:48.

    Kommentar


      #3
      Große klasse. Ich bin großer Fan von Xiaomi und werde mich im Winter mal mit deinem LBS beschäftigen. Danke :-)

      Kommentar


        #4
        Hi, switching to english and hope that thats ok.

        I have three xiaomi plant sensor that I read data from a RPi3.
        I set it up and followed the same page as you did: https://www.open-homeautomation.com/...-plant-sensor/

        When I later should test my setup with the Android app it upgraded my firmware in the sensor to 2.x.6 (instead of 2.x.2 (don't remember the middle number but it was the same)
        After that you can't read the address 0x35 anymore, it just contains zeros

        Had no luck so far with finding the new address that is used. Anyone have ideas best way to find the new address?

        Kommentar


          #5
          Sorry, but the LBS didn't work with the new firmware.

          Edit: Here you could find some informations about the new firmware
          Zuletzt geändert von panzaeron; 03.11.2016, 02:23.

          Kommentar


            #6
            Der LBS ist jetzt kompatibel mit der Firmware 2.6.6, zusätzlich wird jetzt der Zustand der Batterie (0-100%) und die Version der Firmware mit ausgegeben.

            Kommentar


              #7
              Zitat von panzaeron Beitrag anzeigen
              Sorry, but the LBS didn't work with the new firmware.

              Edit: Here you could find some informations about the new firmware
              Thank you I have missed that page
              Best Regards
              Martin

              Kommentar


                #8
                Can't get it to work thou.

                Trying
                gatttool --device=C4:7C:8D:61:BB:6B --char-write -a 0x33 --value=0xA01F
                This does not help, still getting all the zeros

                Kommentar


                  #9
                  Zitat von tellblom Beitrag anzeigen
                  gatttool --device=C4:7C:8D:61:BB:6B --char-write -a 0x33 --value=0xA01F
                  This does not help, still getting all the zeros
                  Try char-write-req with --value=A01F:
                  Code:
                  gatttool --device=C4:7C:8D:61:BB:6B --char-write-req -a 0x33 --value=A01F

                  Kommentar


                    #10
                    Zitat von panzaeron Beitrag anzeigen
                    Try char-write-req with --value=A01F:
                    Code:
                    gatttool --device=C4:7C:8D:61:BB:6B --char-write-req -a 0x33 --value=A01F


                    Thanks again, that did it.
                    Many thanks

                    Kommentar


                      #11
                      Guten Abend Axel,
                      extra wegen DIR habe ich mir einen raspi 3B bestellt!!!
                      Dieser ist heute angekommen.
                      Also gleich drangesetzt!
                      Leider finde ich im gepackten LBS Ordner nicht die Dateien:

                      1) flower_sensor.sh
                      und
                      2) flower_sensor.php.

                      Ich lese das so, dass die darin an sich liegen müssten.
                      Oder?
                      Leider finde ich die Dateien auch nicht so im Netz.
                      DANKE DIR vorab für die tolle neue Aufgabe!!
                      Gruß Marcus

                      Kommentar


                        #12
                        In der ZIP-Datei ist eine weitere ZIP-Datei worin die beiden Skripte und die Installationsanleitung liegen (gerade getestet). Falls es bei Dir nicht funktionieren sollte findest du die Dateien auch im Anhang.
                        Bin gespannt wie bei Dir die Reichweite ist, ich habe festgestellt, dass z. B. die weit entfernten Sensoren nicht ausgelesen werden, wenn bei uns der Fernseher läuft, also Bluetooth LE reagiert da recht empfindlich. Da ich die Werte nur einmal am Tag aktualisiere (morgens um 8 Uhr), ist das bei uns nicht so schlimm.
                        Angehängte Dateien

                        Kommentar


                          #13
                          ....Danke Dir... Erstmal müssen die Teile aus China kommen....
                          Werde morgen den pi erstmal fertig machen... Das mit der Reichweite kenn ich von meinem SAT- Receiver und WLAN. Wenn Iphone an, dann nix Fernsehen...Ich melde mich, bin gespannt... Gute Nacht...

                          Kommentar


                            #14
                            Zitat von panzaeron Beitrag anzeigen
                            In der ZIP-Datei ist eine weitere ZIP-Datei worin die beiden Skripte und die Installationsanleitung liegen (gerade getestet). Falls es bei Dir nicht funktionieren sollte findest du die Dateien auch im Anhang.
                            Bin gespannt wie bei Dir die Reichweite ist, ich habe festgestellt, dass z. B. die weit entfernten Sensoren nicht ausgelesen werden, wenn bei uns der Fernseher läuft, also Bluetooth LE reagiert da recht empfindlich. Da ich die Werte nur einmal am Tag aktualisiere (morgens um 8 Uhr), ist das bei uns nicht so schlimm.
                            ...sodele nun aber mal her mit den Fühlern!!
                            System scheint zu laufen, aber nix mit fühlern gefunden:
                            bild 1.jpg

                            bild 2.jpg
                            Angehängte Dateien

                            Kommentar


                              #15
                              Nabend!!
                              So die Teile sind da.
                              Wollte mich im Mi Home App anmelden, aber bekomme keine Bestätigungs E-Mail!!
                              Dauert das da Tage???????
                              Gruß Marcus

                              Kommentar

                              Lädt...
                              X