Xiaomi Pflanzensensensoren zu Pimatic hinzufügen

  • Hi Leidensgenossen:)

    Seit geraumer Zeit, versuche ich meine Zimmerpflanzen automatisch mit Wasser zu versorgen, ohne selber die Gießkanne angreifen zu müssen.

    Aktuell läuft es über einen fix eingestellte Menge, welche die Pflanzen erhalten. Das möchte ich jetzt ändern, deshalb hab ich mir Xiaomi Pflanzensensoren [Anzeige] gekauft.

    Ich hab mich ziemlich viel eingelesen in letzter Zeit, jedoch sind leider noch immer einige Fragen offen, wie der Sensor überhaupt funktioniert.

    (Er misst die Daten, schreibt sie in eine Datei, und sendet sie per Bluetooth an den Pi, diese sollte dann vom LogWatcher geöffnet werden, und der sucht sich dann die Werte raus, die mir angezeigt werden sollen?

    Mein System läuft mithilfe von Pimatic, und anscheinend kann man die Sensoren auch hinzufügen, was mir leider einige Probleme bereitet.

    Hier einige Daten:

    Raspberry Pi 3B+ mit aktuellem Raspbian

    Originales Rpi Netzteil

    Bluetooth ist eingeschaltet

    Dazu konnte ich folgende Links zu englischen Foren/Beiträge finden:

    1) https://github.com/open-homeautomation/miflora

    2) https://zsiti.eu/xiaomi-miflora…raspberry-pi-3/

    ist der zweite Link oben zu veraltet? Es wird zu einem Forenlink hingewiesen, dass man sich die Plugins pimatic-ble, pimatic-mi-flora, pimatic-itag installieren soll, aber wie das ganze dann eingestellt werden muss, hab ich noch nicht herausgefunden.

    Jetzt ist es mir schon möglich, die Sensoren (3 Stk) im Pimatic über Devices/Discover Devices zu finden (Also die Mac Adresse der Sensoren sind mir bekannt)

    Jedoch angezeigt wird mir über den Datenlogger noch nichts. Dazu hab ich den Log Watcher benutzt, als Quelle für den Filelink hab ich: /home/pi/demo.py angegeben.

    Zuvor hab ich noch die demo.py Datei im Verzeichnis erstellt, die hab ich mir von ersten Github Link oben geholt. Geändert habe ich nichts in dem Dokument, mir war nicht ganz klar, ob es notwendig ist, etwas zu ändern.

    Gehört vielleicht hier die Mac adresse des Sensors eingefügt? Die hat mir etwas komisch ausgesehen:

    Code
    def valid_miflora_mac(mac, pat=re.compile(r"C4:7C:8D:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}")):

    Ist das überhaupt eine Mac adresse?

    Laut Link 2) soll man dann die Datei demo.py alle 10 Minuten öffnen lassen, das hat leider immer nur Fehlermeldungen gehagelt...


    Gibt es hier jemanden, der mir bei meinen Fragen vielleicht etwas weiterhelfen könnte?

    :danke_ATDE: und schönes Wochenende:lol:

  • Den Sensor nenne ich noch nicht mein eigen, ich werd ihn mir jetzt bestellen. Mit pimatic hab ich allerdings Erfahrung, das gießt im Sommer unseren Garten. Daher nur ein wenig meine Theorie.

    Beim Überfliegen hab ich gesehen, dass Du entweder die drei Plugins installieren ODER die Variante über die Logdatei (mit anderen Plugins und dem Python Skript)) wählen solltest. Ein Mischmasch funktioniert in den seltensten Fällen. Ich würde die Variante von rrooggiieerr nehmen, etwas weiter unten sind auch Beispiele für die Konfiguration.

    Die Fehlermeldung ImportError: No module named btlewrap aus Deinem Beitrag sagt, dass das Modul btlewrap nicht installiert bzw. nicht gefunden werden kann. Geh nochmal die Anleitung durch, vielleicht hast Du ja einen Schritt übersprungen (falls Du diese Variante nutzen willst, dafür sind dann aber auch andere Plugins notwendig).

    Benötigt der Aufruf wirklich "sudo"?

    Edit: Nein, braucht es nicht. Was passiert, wenn Du als "pi" das Skript im Terminal aufrufst?

    Code: aus dem Link kopiert
    pi@pi0w-miflora:~/miflora $ /home/pi/miflora/demo.py --backend gatttool poll C4:7C:8D:61:57:A0
    Getting data from Mi Flora
    FW: 3.1.8
    Name: Flower care
    Temperature: 24.7
    Moisture: 1
    Light: 89
    Conductivity: 0
    Battery: 97

    Grüße, STF

  • Seit geraumer Zeit, versuche ich meine Zimmerpflanzen automatisch mit Wasser zu versorgen, ohne selber die Gießkanne angreifen zu müssen.

    Aktuell läuft es über einen fix eingestellte Menge, welche die Pflanzen erhalten. Das möchte ich jetzt ändern, deshalb hab ich mir Xiaomi Pflanzensensoren [Anzeige] gekauft.

    Der Sensor sendet von sich aus nix, der muss abgefragt werden.

    Wenn du dir den Beitrag in dem von dir angegebenen 2. Link aufmerksam durchliest (und verstehst) wirst du diese Erkenntnis teilen (Abfrage des Sensors per gattool).

    Der 2. Link erklärt doch alles sehr ausführlich... wo ist nun das Problem?

    Mischinstallation mögen funktionieren, wenn man weis, was man tut... am besten, du fängst nochmal von vorn an und befolgst genau eine Anleitung...

    Zu pimatic kann ich nix beitragen, ich lese diese Sensoren mit einem selbst geschriebenen Tool aus und das funktionier sauber... (siehe auch meine unten stehenden Links...)

  • Benötigt der Aufruf wirklich "sudo"?

    Edit: Nein, braucht es nicht. Was passiert, wenn Du als "pi" das Skript im Terminal aufrufst?

    Code: aus dem Link kopiert
    pi@pi0w-miflora:~/miflora $ /home/pi/miflora/demo.py --backend gatttool poll C4:7C:8D:61:57:A0
    Getting data from Mi Flora
    FW: 3.1.8
    Name: Flower care
    Temperature: 24.7
    Moisture: 1
    Light: 89
    Conductivity: 0
    Battery: 97

    Wenn ich das Skript per SSH starte, dann kommt folgende Meldung:

    Code
    demo.py: Zeile 2: Demo file showing how to use the miflora library.: Kommando ni                                                                                                                                                             cht gefunden.
    demo.py: Zeile 4: import: Kommando nicht gefunden.
    demo.py: Zeile 5: import: Kommando nicht gefunden.
    demo.py: Zeile 6: import: Kommando nicht gefunden.
    demo.py: Zeile 7: import: Kommando nicht gefunden.
    from: can't read /var/mail/btlewrap
    from: can't read /var/mail/miflora.miflora_poller
    from: can't read /var/mail/miflora
    demo.py: Zeile 16: Syntaxfehler beim unerwarteten Wort `('
    demo.py: Zeile 16: `def valid_miflora_mac(mac, pat=re.compile(r"C4:7C:8D:[0-9A-F                                                                                                                                                             ]{2}:[0-9A-F]{2}:[0-9A-F]{2}")):'

    Ich beginn dann nochmal mit der Anleitung. Mal schauen, ob es dann klappt.

    Danke

  • Wenn ich das Skript per SSH starte, dann kommt folgende Meldung:

    Wie genau machst Du das? Bitte mal den genauen Aufruf hierher kopieren. Die Fehlermeldungen deuten darauf hin, dass die Datei nicht von python3 interpretiert wird.

    Edit: Und wie sieht der Anfang der demo.py aus? Steht da ein Shebang? #!/usr/bin/env python3

  • Wie genau machst Du das? Bitte mal den genauen Aufruf hierher kopieren. Die Fehlermeldungen deuten darauf hin, dass die Datei nicht von python3 interpretiert wird.

    Ja, ich glaub mir fehlen noch die ganzen Installationen am Rpi. bluez/gatttool wrapper, und Pygatt haben scheinbar gefehlt. Die installier ich gerade, danach schau ich mir das nochmal an.

    Aufgerufen hab ich es mit

  • Ja, ich glaub mir fehlen noch die ganzen Installationen am Rpi. bluez/gatttool wrapper, und Pygatt haben scheinbar gefehlt.

    Nein, haben sie wahrscheinlich nicht. Wenn Du schon eine Anleitung hast, dann solltest Du Dir auch keine Befehlszeilen ausdenken. Finde den Fehler:

    Code
    pi@raspberrypi:~ $ bash demo.py
    Zitat

    pi@pi0w-miflora:~/miflora $ /home/pi/miflora/demo.py --backend gatttool poll C4:7C:8D:61:57:A0

  • Also ich kenn mich jetzt nicht mehr aus^^

    Du rätst mir dazu, die variante von https://forum.pimatic.org/user/rrooggiieerr zu benutzten. Das ist jedoch leider der Link zu seinen kompletten Beiträgen. Meinst du jetzt, ich soll es über die 3 Plugins machen???


    Das mit dem Befehl versteh ich auch nicht wirklich. Wo hast du den her?

    pi@pi0w-miflora:~/miflora $ /home/pi/miflora/demo.py --backend gatttool poll C4:7C:8D:61:57:A0 (meine UUID wäre c47c8d66cb62, gehört das wahrscheinlich ersetzt?)

    Du schreibst ja selber, ich soll die Anleitungen nicht vermischen, ich dachte mir entweder die 3 Plugins, oder das demo.py Python Skript benutzen??


    edit:
    Im Python dokument demo.py steht ganz oben:

    #!/usr/bin/env python3

    2 Mal editiert, zuletzt von Striasion (19. August 2018 um 14:18)

  • edit:
    Im Python dokument demo.py steht ganz oben:

    #!/usr/bin/env python3

    Also entweder die Datei ausführbar machen und mit

    Code
    /home/pi/miflora/demo.py

    aufrufen, oder die Datei direkt dem Python-Interpreter übergeben:

    Code
    python3 /home/pi/miflora/demo.py

    Dem Bash-Interpreter ein Python-Skript zu übergeben funktioniert jedenfalls nicht.

    Edit: vom Skript selber habe ich keine Ahnung, ebenso von den von STF zitierten Argumenten, die übergeben werden.

    Code
    --backend gatttool poll C4:7C:8D:61:57:A0
  • ok, jetzt hab ich den dreh raus...(per SSH)

    funktioniert zumindest 1x, danach muss ich den Pi neustarten.

    Code
    python3 /home/pi/miflora-0.4/demo.py --backend gatttool poll c4:7c:8d:66:cb:62
    Getting data from Mi Flora
    FW: 3.1.8
    Name: Flower care
    Temperature: 27.0
    Moisture: 10
    Light: 117
    Conductivity: 206
    Battery: 99

    Jedoch im Pimatic hagelt es immer noch error codes, so wurde es eingegeben:

    Hier wieder die Fehlermeldung:

    btlewrap hab ich jetzt extra nochmal installiert, mit dieser Anleitung:

    https://github.com/ChristianKuehnel/btlewrap

    Hab ich den Befehl bei der Regel falsch bezeichnet??

    Einmal editiert, zuletzt von Striasion (19. August 2018 um 15:55)

  • Danke für eure Geduld...

    Leider klappt der Befehl noch immer nicht.

    execute "python3 /home/pi/miflora-0.4/demo.py"


    Danach kommt wieder die selber Fehlermeldung:

  • Du schreibst ja selber, ich soll die Anleitungen nicht vermischen, ich dachte mir entweder die 3 Plugins, oder das demo.py Python Skript benutzen??

    Entweder Du nutzt pimatic-cron, pimatic-shell-execute, pimatic-log-reader UND das Skript demo.py in genau dieser Kombination

    ODER

    die Variante von rrooggiieerr mit pimatic-ble, pimatic-mi-flora und pimatic-itag.

    Das mit dem Befehl versteh ich auch nicht wirklich. Wo hast du den her?

    pi@pi0w-miflora:~/miflora $ /home/pi/miflora/demo.py --backend gatttool poll C4:7C:8D:61:57:A0 (meine UUID wäre c47c8d66cb62, gehört das wahrscheinlich ersetzt?)

    Das steht in Deiner Anleitung. Bitte lesen. Ebenso wie der Eintrag im pimatic (ab der Überschrift: If ou only have 1 sensor), den Du auch wieder verändert hast. Wo die Dateien zum importieren liegen müssen und was Voraussetzung ist, damit die gefunden werden, lass Dir mal von jemandem sagen, der Python nutzt. Linus?


    In shell-execute gibts auch die Möglichkeit, einen Pfad zu übergeben, vielleicht muss das ja noch gesetzt werden?

    Und außerdem hab ich gerade noch folgendes (betrifft auch wieder shell-execute) gesehen: By default, '/bin/sh' is used on UNIX, Ist das korrekt (/bin/bash) eingetragen?

    Da Du ja nun die alte Variante nutzen willst, in der Anleitung steht für den pimatic Eintrag folgendes, was Du natürlich an Deinen Gegebenheiten anpassen musst:

    Code
    execute "/home/pi/miflora/demo.py --backend gatttool poll C4:7C:8D:61:57:A0 > /home/pi/miflora/miflora-pimatic1.log"

    pimatic-cron ruft über die rule aller 10 Minuten das Skript auf, was seine Ausgaben in die Datei /home/pi/miflora/miflora-pimatic1.log schreibt. Dieses log wird dann mit logwatcher ausgewertet. Bissel durch die Brust ins Auge.

  • Wo die Dateien zum importieren liegen müssen und was Voraussetzung ist, damit die gefunden werden, lass Dir mal von jemandem sagen, der Python nutzt. Linus?

    Gaaaaanz knapp: 3rd-party-Module werden in der Regel mit pip installiert, und das für eine bestimmte Python-Version. Ein beliebter Fehler ist, z.B. mit pip3 zu installieren und dann python (ohne 3) zu verwenden (oder Umgekehrt) und sich über den ImportError zu wundern. Das selbe gilt auch für verschiedene parallele Installationen von 3.x etc etc. Wo die Dateien am ende liegen kann unterschiedlich sein, wo gesucht wird beeinflusst werden. Sollte hier aber keine Rolle spielen, ich denke, es handelt sich um oben genannten Versions-Mismatch.

    Die ausführliche Erklärung mit allen Details überlasse ich der Doku: https://docs.python.org/3/reference/import.html

  • Ich bekomm es leider nicht auf die Reihe...

    execute "python3 /home/pi/miflora-0.4/demo.py --backend gatttool poll C4:7C:8D:66:CB:62 > python3 /home/pi/miflora-0.4/miflora-pimatic1.log"

    und wenn ich es ohne python3 schreibe, kommt es so in den Fehlermeldungen:

    Code
    error [pimatic]: Error on evaluation of rule condition of rule skriptneustart: undefined
    17:50:00error [pimatic]: rule skriptneustart error executing an action: Error: Command failed: /home/pi/miflora-0.4/demo.py --backend gatttool poll C4:7C:8D:66:CB:62 > /home/pi/miflora-0.4/miflora-pimatic1.log
    /bin/sh: 1: /home/pi/miflora-0.4/demo.py: Permission denied
  • /bin/sh: 1: /home/pi/miflora-0.4/demo.py: Permission denied

    Guck mal. Änderst Du das bitte mal in /bin/bash, evt. ist das schon der Auslöser. Die Einträge findest Du in der /pfad/zu/pimatic/pimatic-app/config.json (ändern auf Deine Gegebenheiten). Falls es bei "plugin": "shell-execute" nicht dabei steht, trag es GENAU SO ein wie hier beschrieben. Hinter dem letzten EIntrag vor dem "}" darf KEIN Komma stehen.

    Code
    {
           "plugin": "shell-execute",
           "shell": "/bin/bash",
           "cwd": "/home/pi/miflora-0.4"
    }
  • Ich konnte das jetzt endlich ausprobieren, aber leider hat es wieder nicht geklappt.


    Leider wird bei mir dann (wenn ich es so wie in deinem letzten Post eingebe) Pimatic im Internet gar nicht geladen. Dazu muss ich es so eingeben, um wieder Zugriff aus dem Browser zu haben.

    Code
       {
          "plugin": "shell-execute",
          "shell": "/bin/bash",
          "cwd": "/home/pi/miflora-0.4"
        },

    Dann bekomm ich aber im Pimatic folgende Fehlermeldung:

    Code
    error [pimatic]: Error on evaluation of rule condition of rule skriptneustart: undefined
    18:00:00error [pimatic]: rule skriptneustart error executing an action: Error: Command failed: /home/pi/miflora-0.4/demo.py --backend gatttool poll C4:7C:8D:66:CB:62 > /home/pi/miflora-0.4/miflora-pimatic1.log
    /bin/bash: /home/pi/miflora-0.4/demo.py: Keine Berechtigung
    18:00:00error [pimatic-shell-execute]: [ShellActionHandler] Error: Command failed: /home/pi/miflora-0.4/demo.py --backend gatttool poll C4:7C:8D:66:CB:62 > /home/pi/miflora-0.4/miflora-pimatic1.log
    /bin/bash: /home/pi/miflora-0.4/demo.py: Keine Berechtigung

    Hat jemand vielleicht noch eine Idee, wo der Hund begraben ist??

  • Hat jemand vielleicht noch eine Idee, wo der Hund begraben ist??

    So, ich hätte gern mal den Aufruf innerhalb der pimatic rule gesehen, am Besten per copy and paste hierher kopiert.

    Und zusätzlich bitte die Ausgaben Deines pimatic Pi auf der Kommandozeile:

    Code
    ls -la /home/pi
    ls -la /home/pi/miflora-0.4
    ps -aux | grep pimatic

    Grüße, STF

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!