!!!ABGELÖST!!! [74_XiaomiFlowerSens.pm] Xiaomi Flower Monitor

Begonnen von CoolTux, 17 November 2016, 13:25:06

Vorheriges Thema - Nächstes Thema

fhainz

Zitat von: CoolTux am 16 Oktober 2017, 08:14:44
Freut mich das es geht. Verrate mal bitte wie Du es genau gemacht hast.

Klar.
Im subscribeSet_* Attribut kann man vor dem Topic zusätzlich einen Perl Code aufrufen.

attr aloeVera.mqtt.bridge subscribeSet_statusRequest {fhem("get $device statusRequest")} /fhem-linux/aloeVera1/statusRequest

Grüße

oli82

Zitat von: CoolTux am 16 Oktober 2017, 16:34:26
Achte bitte einmal darauf das kein anderes BT Tool sonst läuft. Wenn das vorher doch der Fall war starte Mal den Pi durch und lasse dann nur FHEM über ssh den gatttool Aufruf machen.

Schaut soweit gut aus mit der neuen Version. Leider bekomme ich aber seit 07.10 keine Daten mehr von einem meiner Sensoren. Das schiebe ich aber eher auf den Sensor :(

CoolTux

Na das klingt doch schon mal super. Und Du machst das über SSH was Du jetzt als gut bezeichnest?

Wäre ja ein Lichtblick  ;D
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

oli82

Ja, lasse die Sensoren über eine Pi über ssh abfragen.
Die detaillierte Fehlerausgabe finde ich super.
Habe lediglich das Gefühl, dass die Abfrage der Daten nun etwas länger dauert.
Kann aber auch täuschen ;)

CoolTux

Täuscht nicht, ist tatsächlich so. Liegt daran das ich nicht sofort in der selben Funktion nach dem write das read mache sondern erst das ganze auswerte und wenn vorher ein write war und dieser ok war macht er den read.

Grund für das ganze ist eigentlich das ich langsam mal anfangen will eine einheitliche BTLE Bibliothek zu bauen. Also eine Art Grundmodul oder Library wo die anderen Module welche BTLE nutzen drauf zugreifen können und sich um das ganze gatttool Zeug keine Gedanken mehr machen müssen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

ToM_ToM

Hey CoolTux,

läuft das Modul eig. parallel oder wird FHEM während der Datenabfrage blockiert? Ich habe gesehen dass das Calendar-Modul soweit erweitert wurde, dass es dort einen Flag gibt, mit dem man die Verarbeitung auf asynchron setzen kann und die Aktualisierung dann außerhalb von FHEM stattfindet. Das funktioniert auch super. Wäre das evtl. auch eine Überlegung für andere Module wie z.B. dieses hier?
Oder ist das vielleicht sogar schon integriert?

VG, Thomas
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

Amenophis86

Zitat von: CoolTux am 17 Oktober 2017, 10:06:02
Grund für das ganze ist eigentlich das ich langsam mal anfangen will eine einheitliche BTLE Bibliothek zu bauen. Also eine Art Grundmodul oder Library wo die anderen Module welche BTLE nutzen drauf zugreifen können und sich um das ganze gatttool Zeug keine Gedanken mehr machen müssen.

Das wäre ne feine Sache und würde sicher vielen helfen :)
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

CoolTux

Zitat von: ToM_ToM am 17 Oktober 2017, 10:46:07
Hey CoolTux,

läuft das Modul eig. parallel oder wird FHEM während der Datenabfrage blockiert? Ich habe gesehen dass das Calendar-Modul soweit erweitert wurde, dass es dort einen Flag gibt, mit dem man die Verarbeitung auf asynchron setzen kann und die Aktualisierung dann außerhalb von FHEM stattfindet. Das funktioniert auch super. Wäre das evtl. auch eine Überlegung für andere Module wie z.B. dieses hier?
Oder ist das vielleicht sogar schon integriert?

VG, Thomas

Hallo Thomas,

Alle meine Module arbeiten nonBlocking, so auch dieses. Ich verwende bei diesem Modul die Blocking.pm. Boris verwendet bei seinem Kalendermodul ein von ihm selbst geschriebenes Modul welches ich auch schon Teste. Ich finde sein Konzept etwas besser wie das des Blocking.pm.
Aber wie gesagt, alle meine Module arbeiten nonBlocking




Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Ich habe die neue Version nun stable gesetzt und ins offizielle FHEM update eingestellt.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Pyromane

Mahlzeit,

nach dem Update werde mit folgender Meldung im Log begrüßt:
2017.10.27 13:41:07 1: PERL WARNING: Use of uninitialized value in numeric eq (==) at ./FHEM/74_XiaomiFlowerSens.pm line 625.

Ich vermute das der Eintrag darunter auch noch dazu gehört:
grep: Schreibfehler: Datenübergabe unterbrochen (broken pipe)

Gruß
Pyro

CoolTux

Bekommst Du denn Daten vom Sensor? Benutzt Du ssh oder normal?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Pyromane

#866
Ich nutze die normale Verbindung.
Wobei ich gerade sehe ich das wohl einen Teil des Logs unterschlagen haben:
2017.10.27 13:41:07 1: Timeout for XiaomiFlowerSens_ExecGatttool_Run reached, terminated process 9045
2017.10.27 13:41:07 1: PERL WARNING: Use of uninitialized value in numeric eq (==) at ./FHEM/74_XiaomiFlowerSens.pm line 625.
grep: Schreibfehler: Datenübergabe unterbrochen (broken pipe)


Wobei ich aber eigentlich verbose 0 für jeden Sensor gesetzt habe, da ich einige an der Reichweitengrenze habe.

Tante EDIT sagt, das müsste mein Problemkind sein:
Internals:
   BTMAC      C4:7C:8D:61:B2:F0
   DEF        C4:7C:8D:61:B2:F0
   INTERVAL   1800
   NAME       Blume4
   NOTIFYDEV  global
   NR         115
   NTFY_ORDER 50-Blume4
   STATE      active
   TYPE       XiaomiFlowerSens
   VERSION    1.2.0
   Helper:
     DBLOG:
       battery:
         myDbLog:
           TIME       1509104718.81092
           VALUE      ok
       batteryLevel:
         myDbLog:
           TIME       1509104718.81092
           VALUE      100
       fertility:
         myDbLog:
           TIME       1509104719.02219
           VALUE      5017
       firmware:
         myDbLog:
           TIME       1509104718.81092
           VALUE      2.6.2
       lux:
         myDbLog:
           TIME       1509104719.02219
           VALUE      2206
       moisture:
         myDbLog:
           TIME       1509104719.02219
           VALUE      77
       state:
         myDbLog:
           TIME       1509104719.02219
           VALUE      active
       temperature:
         myDbLog:
           TIME       1509104719.02219
           VALUE      21.9
   READINGS:
     2017-10-27 13:45:18   battery         ok
     2017-10-27 13:45:18   batteryLevel    100
     2017-10-27 13:45:19   fertility       5017
     2017-10-27 13:45:18   firmware        2.6.2
     2017-06-13 19:12:33   humidity        0
     2017-10-27 13:41:07   lastGattError   The BlockingCall Process terminated unexpectedly. Timedout
     2017-10-27 13:45:19   lux             2206
     2017-10-27 13:45:19   moisture        77
     2017-10-27 13:45:19   state           active
     2017-10-27 13:45:19   temperature     21.9
   helper:
     CallBatteryFirmware 0
     CallSensDataCounter 0
     updateTimeCallBatteryFirmware 1509104718.80885
     updateTimestampCallBatteryFirmware 2017-10-27 13:45:18
Attributes:
   alias      SZ_BL_1
   event-min-interval battery:43200,batteryLevel:43200,fertility:7200,firmware:86400,lux:7200,moisture:7200,temperature:7200
   event-on-change-reading .*
   interval   1800
   room       FlowerSens
   verbose    0

CoolTux

Zitat von: Pyromane am 27 Oktober 2017, 13:58:28
Wobei ich aber eigentlich verbose 0 für jeden Sensor gesetzt habe, da ich einige an der Reichweitengrenze habe.

2017.10.27 13:41:07 1: Timeout for XiaomiFlowerSens_ExecGatttool_Run reached, terminated process 9045
Die Meldung kommt vom Modul Blocking.pm
Das Modul hält sich an die verbose Level von global

Zitat
[/code]
2017.10.27 13:41:07 1: PERL WARNING: Use of uninitialized value in numeric eq (==) at ./FHEM/74_XiaomiFlowerSens.pm line 625.
[/code]
Das ist eine Perlmeldung die ist unabhängig vom verbose des Modules

Im Endeffekt ist Dein Sensor nicht erreichbar gewesen zu dem Zeitpunkt. Die Perlwarnung kann ich weg bekommen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Pyromane

Zitat von: CoolTux am 27 Oktober 2017, 14:14:07
Die Meldung kommt vom Modul Blocking.pm
Das Modul hält sich an die verbose Level von global
Das ist eine Perlmeldung die ist unabhängig vom verbose des Modules
So wie ich rudolfkoenig im Beitrag Antw:Blocking.pm Logfile Einträge verstanden habe, kann man dem Blocking.pm das verbose Level vom Modul übergeben.
Bitte um Korrektur, sollte ich da falsche verstanden haben.

Zitat von: CoolTux am 27 Oktober 2017, 14:14:07
Im Endeffekt ist Dein Sensor nicht erreichbar gewesen zu dem Zeitpunkt. Die Perlwarnung kann ich weg bekommen.
Bitte danke!

CoolTux

Zitat von: Pyromane am 27 Oktober 2017, 14:24:32
So wie ich rudolfkoenig im Beitrag Antw:Blocking.pm Logfile Einträge verstanden habe, kann man dem Blocking.pm das verbose Level vom Modul übergeben.
Bitte um Korrektur, sollte ich da falsche verstanden haben.
Bitte danke!

Durchaus möglich, er hat es vor lurzem für das DevIo Modul ja auch so gemacht. Ich schaue mir den Code heute Abend mal an.

Die Perlwarnung habe ich gefixt
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net