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

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

Vorheriges Thema - Nächstes Thema

mengo


Joker2002

ZitatNicht FHEM, sondern System. Also Updates der Distribution.

Nein, den Pi habe ich gefühlt seit 6 Monaten nicht mehr geupdatet.

Es ist wirklich ein sehr merkwürdiges verhalten gerade mit diesem einen Sensor. Mal geht er, mal nicht.

Auch mittels der Flower Care App kann ich manchmal Daten von diesen abrufen, dann ist er aber in FHEM unreachable und manchmal ist er in der App noch nicht mal als Pflanzensenor gelistet. Ich habe gestern nochmal die Batterie mit meinem zweiten Senor getauscht, der problemlos (bisher geht) aber auch damit gehts mal und mal nicht.... :(

Joker2002

Hier mal ein List des Gerätes, falls nährere Daten zu dem Sensor benötigt werden:

Internals:
   BTMAC      C4:7C:8D:61:FF:E3
   DEF        C4:7C:8D:61:FF:E3
   INTERVAL   300
   NAME       Flower_Sensor_1
   NR         413
   STATE      active
   TYPE       XiaomiFlowerSens
   VERSION    1.0.1
   READINGS:
     2017-09-29 07:06:09   battery         ok
     2017-09-29 07:06:09   batteryLevel    99
     2017-09-29 07:06:09   fertility       1317
     2017-09-29 07:06:09   firmware        3.1.8
     2017-09-26 20:42:03   humidity        0
     2017-09-28 18:01:22   lastGattError   Unknown Error, look at verbose 5 output
     2017-09-29 07:06:09   lux             56
     2017-09-29 07:06:09   moisture        19
     2017-09-29 07:06:09   state           active
     2017-09-29 07:06:09   temperature     25.9
   helper:
Attributes:
   alias      Flammendes Käthchen
   icon       hue_room_garden
   room       FlowerSens
   verbose    5

CoolTux

Ich habe die letzten 2 Tage einen kompletten Code Redesign des Modules gemacht. Die aktuelle Version findet ihr hier zum testen.

Mich interessieren besondern die Leute welche so große Probleme hatten.

Modul auf Zip File entpacken und dann über das aktuelle kopieren (Sicherung vorher nicht vergessen) danach FHEM neustarten bitte.


@Andre und auch alle Anderen
Aktuell wird die Batterie und die Firmware nur alle 25 Stunden ausgelesen. Man spart also 25 Stunden lang eine weitere Abfrage. Ist schon mal eine weniger bis dahin. Spart auch Batterie.
Diese Zeit werde ich in einer späteren Version noch über ein Attribut anpassbar machen.
8h 16h 24h 32h 40h 48h



Grüße
Leon
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

fhainz

Hallo!

Ich teste das Modul bereits. Was mir aufgefallen ist:
- Wenn ein Sensor nicht erreichbar ist, kommt kein unreachable mehr sondern die Werte werden alle auf 0 gesetzt.
- Nach einem Neustart stand bei einem sensor der state auf active, die werte waren aber alle auf 0 und firmware war -30.-30.-30. nach einem manuellen statusRequest passen die Werte wieder, firmware war aber immer noch auf -30.-30.-30. ein weiterer neustart löste das problem.

Sehr positiv finde ich das nach einem Neustart jeder Sensor einzeln nacheinander abgefragt wird. Das abfragen zweier oder mehrerer Sensoren hat bei mir vorher immer zu problemen geführt.

Grüße

CoolTux

Zitat von: fhainz am 30 September 2017, 18:46:10
Hallo!

Ich teste das Modul bereits. Was mir aufgefallen ist:
- Wenn ein Sensor nicht erreichbar ist, kommt kein unreachable mehr sondern die Werte werden alle auf 0 gesetzt.
- Nach einem Neustart stand bei einem sensor der state auf active, die werte waren aber alle auf 0 und firmware war -30.-30.-30. nach einem manuellen statusRequest passen die Werte wieder, firmware war aber immer noch auf -30.-30.-30. ein weiterer neustart löste das problem.

Sehr positiv finde ich das nach einem Neustart jeder Sensor einzeln nacheinander abgefragt wird. Das abfragen zweier oder mehrerer Sensoren hat bei mir vorher immer zu problemen geführt.

Grüße

Hallo. Vielen Dank fürs testen.
Das mit den Werten auf Null habe ich bereits in einer neueren Version gefixt. Werde sie bis Morgen Abend online stellen, will das mit den Zeiten für das Batterie und Firmware Reading noch machen.
Das mit dem unreachable sollte aber eigentlich passieren. Müsste man Mal schauen in welchen Zusammenhang das genau passiert ist.

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

fhainz

Zitat von: CoolTux am 30 September 2017, 19:13:57
Das mit dem unreachable sollte aber eigentlich passieren. Müsste man Mal schauen in welchen Zusammenhang das genau passiert ist.
Ich war mit der Pflanze extra in einem anderen Raum in der Wohnung. Ich hab ich schon gewundert das nach langem warten doch wieder active als status kommt. Vorher kam immer unreachable in diesem Raum. Erst als ich ins Device geschaut habe, hab ich gemerkt das die werte nicht passen. ich teste das später nochmal.

CoolTux

Das wäre super. Meine Freundin dreht mir immer halb den Hals ab wenn ich mit den Blumen spazieren gehe. Aber sie hat gerade spät, muss nur schnell die Position vermessen und dann teste ich auch mal so.  ;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

CoolTux

Habe gerade eine aktuelle Version hochgeladen. Sollte die Probleme nach einem shutdown restart beheben.
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

fhainz

Zitat von: fhainz am 30 September 2017, 19:26:44
Vorher kam immer unreachable in diesem Raum.
Kann ich nochmals bestätigen. Auch mit der neuen Version. unreachable kommt nicht. State bleibt auf active und werte sind auf 0.
Grüße

CoolTux

Ich habe gerade Version 1.1.42 hochgeladen. Nun ist auch das batteryFirmwareAge Attribut enthalten.

Was das Thema null an geht so brauche ich bitte einmal einen verbose 5 statusRequest. Kann mich erinnern das es sowas in der alten Version tatsächlich gab, dachte ich hätte das erschlagen.
Bei mir ist es aber auch immer so das der BlockingCall abbricht, schafft das Modul bei Euch in den 60s die 5 durchläufe bevor es auf normalen Weg Abbricht?


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

fhainz

Nach dem Neustart nach dem Aktualisieren, steht das Firmware Reading eines Geräts wieder auf -30.-30.-30. Auch ein mehrfaches statusRequest hat nichts geholfen. Nach einem weiteren Neustart passt es wieder. Die batteryFirmwareAge Attribute hab ich jetzt mal unterschiedlich gesetzt.

Hier der Log:
2017.09.30 20:22:04 4: XiaomiFlowerSens (dracaena) - WriteSensData: call function ExecGatttool_Run
2017.09.30 20:22:04 5: XiaomiFlowerSens (dracaena) - ExecGatttool_Run: call gatttool with command gatttool -i hci0 -b C4:7C:8D:65:55:8B --char-write-req -a 0x33 -n A01F 2>&1 /dev/null and loop 0
2017.09.30 20:22:24 5: XiaomiFlowerSens (dracaena) - ExecGatttool_Run: gatttool loop result Transport endpoint is not connected (107)
Segmentation fault (core dumped)

2017.09.30 20:22:24 4: XiaomiFlowerSens (dracaena) - ExecGatttool_Run: gatttool result Transport endpoint is not connected (107)
Segmentation fault (core dumped)

2017.09.30 20:22:24 4: XiaomiFlowerSens (dracaena) - ExecGatttool_Done: gatttool return string: dracaena|C4:7C:8D:65:55:8B|ok|write|0x33|{"gtResult":"none"}
2017.09.30 20:22:24 4: XiaomiFlowerSens (dracaena) - CallSensData: call function ExecGatttool_Run
2017.09.30 20:22:24 5: XiaomiFlowerSens (dracaena) - ExecGatttool_Run: call gatttool with command gatttool -i hci0 -b C4:7C:8D:65:55:8B --char-read -a 0x35 2>&1 /dev/null and loop 0
2017.09.30 20:22:44 5: XiaomiFlowerSens (dracaena) - ExecGatttool_Run: gatttool loop result Transport endpoint is not connected (107)
Segmentation fault (core dumped)

2017.09.30 20:22:44 4: XiaomiFlowerSens (dracaena) - ExecGatttool_Run: gatttool result Transport endpoint is not connected (107)
Segmentation fault (core dumped)

2017.09.30 20:22:44 4: XiaomiFlowerSens (dracaena) - ExecGatttool_Done: gatttool return string: dracaena|C4:7C:8D:65:55:8B|ok|read|0x35|{"gtResult":"none"}
2017.09.30 20:22:44 5: XiaomiFlowerSens (dracaena) - ProcessingNotification
2017.09.30 20:22:44 4: XiaomiFlowerSens (dracaena) - ProcessingNotification: handle 0x35
2017.09.30 20:22:44 5: XiaomiFlowerSens (dracaena) - Handle0x35
2017.09.30 20:22:44 1: PERL WARNING: Use of uninitialized value $dataSensor[1] in string ne at ./FHEM/74_XiaomiFlowerSens.pm line 508.
2017.09.30 20:22:44 3: eval: {XiaomiFlowerSens_ExecGatttool_Done('dracaena|C4:7C:8D:65:55:8B|ok|read|0x35|{"gtResult":"none"}')}
2017.09.30 20:22:44 1: PERL WARNING: Use of uninitialized value $dataSensor[2] in string ne at ./FHEM/74_XiaomiFlowerSens.pm line 508.
2017.09.30 20:22:44 3: eval: {XiaomiFlowerSens_ExecGatttool_Done('dracaena|C4:7C:8D:65:55:8B|ok|read|0x35|{"gtResult":"none"}')}
2017.09.30 20:22:44 1: PERL WARNING: Use of uninitialized value $dataSensor[3] in string ne at ./FHEM/74_XiaomiFlowerSens.pm line 508.
2017.09.30 20:22:44 3: eval: {XiaomiFlowerSens_ExecGatttool_Done('dracaena|C4:7C:8D:65:55:8B|ok|read|0x35|{"gtResult":"none"}')}
2017.09.30 20:22:44 1: PERL WARNING: Use of uninitialized value $dataSensor[4] in string ne at ./FHEM/74_XiaomiFlowerSens.pm line 508.
2017.09.30 20:22:44 3: eval: {XiaomiFlowerSens_ExecGatttool_Done('dracaena|C4:7C:8D:65:55:8B|ok|read|0x35|{"gtResult":"none"}')}
2017.09.30 20:22:44 1: PERL WARNING: Use of uninitialized value $dataSensor[5] in string ne at ./FHEM/74_XiaomiFlowerSens.pm line 508.
2017.09.30 20:22:44 3: eval: {XiaomiFlowerSens_ExecGatttool_Done('dracaena|C4:7C:8D:65:55:8B|ok|read|0x35|{"gtResult":"none"}')}
2017.09.30 20:22:44 1: PERL WARNING: Use of uninitialized value $dataSensor[1] in string eq at ./FHEM/74_XiaomiFlowerSens.pm line 514.
2017.09.30 20:22:44 3: eval: {XiaomiFlowerSens_ExecGatttool_Done('dracaena|C4:7C:8D:65:55:8B|ok|read|0x35|{"gtResult":"none"}')}
2017.09.30 20:22:44 1: PERL WARNING: Use of uninitialized value $dataSensor[1] in concatenation (.) or string at ./FHEM/74_XiaomiFlowerSens.pm line 517.
2017.09.30 20:22:44 3: eval: {XiaomiFlowerSens_ExecGatttool_Done('dracaena|C4:7C:8D:65:55:8B|ok|read|0x35|{"gtResult":"none"}')}
2017.09.30 20:22:44 1: PERL WARNING: Illegal hexadecimal digit 'n' ignored at ./FHEM/74_XiaomiFlowerSens.pm line 517.
2017.09.30 20:22:44 3: eval: {XiaomiFlowerSens_ExecGatttool_Done('dracaena|C4:7C:8D:65:55:8B|ok|read|0x35|{"gtResult":"none"}')}
2017.09.30 20:22:44 1: PERL WARNING: Use of uninitialized value $dataSensor[4] in concatenation (.) or string at ./FHEM/74_XiaomiFlowerSens.pm line 520.
2017.09.30 20:22:44 3: eval: {XiaomiFlowerSens_ExecGatttool_Done('dracaena|C4:7C:8D:65:55:8B|ok|read|0x35|{"gtResult":"none"}')}
2017.09.30 20:22:44 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/74_XiaomiFlowerSens.pm line 520.
2017.09.30 20:22:44 3: eval: {XiaomiFlowerSens_ExecGatttool_Done('dracaena|C4:7C:8D:65:55:8B|ok|read|0x35|{"gtResult":"none"}')}
2017.09.30 20:22:44 1: PERL WARNING: Use of uninitialized value $dataSensor[7] in concatenation (.) or string at ./FHEM/74_XiaomiFlowerSens.pm line 521.
2017.09.30 20:22:44 3: eval: {XiaomiFlowerSens_ExecGatttool_Done('dracaena|C4:7C:8D:65:55:8B|ok|read|0x35|{"gtResult":"none"}')}
2017.09.30 20:22:44 1: PERL WARNING: Use of uninitialized value $dataSensor[9] in concatenation (.) or string at ./FHEM/74_XiaomiFlowerSens.pm line 522.
2017.09.30 20:22:44 3: eval: {XiaomiFlowerSens_ExecGatttool_Done('dracaena|C4:7C:8D:65:55:8B|ok|read|0x35|{"gtResult":"none"}')}
2017.09.30 20:22:44 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/74_XiaomiFlowerSens.pm line 522.
2017.09.30 20:22:44 3: eval: {XiaomiFlowerSens_ExecGatttool_Done('dracaena|C4:7C:8D:65:55:8B|ok|read|0x35|{"gtResult":"none"}')}
2017.09.30 20:22:44 4: XiaomiFlowerSens (dracaena) - WriteReadings: Readings were written



Zitat von: CoolTux am 30 September 2017, 20:11:46
schafft das Modul bei Euch in den 60s die 5 durchläufe bevor es auf normalen Weg Abbricht?
Sehe ich das irgendwie?

Grüße

CoolTux

Interessant, Dein System reagiert komplett anders wie meins.
Danke Dir
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

fhainz

Zitat von: CoolTux am 30 September 2017, 20:34:54
Interessant, Dein System reagiert komplett anders wie meins.
Hier läuft ein Ubuntu in einer VirtualBox VM auf einen MacMini.

CoolTux

Bin gerade dabei die Fehlerbehandlung dafür ein zu bauen.
Vielen Dank noch mal
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