[74_XiaomiBTLESens.pm] Xiaomi Bluetooth Sensoren FlowerSens/Thermometer

Begonnen von CoolTux, 11 Januar 2018, 15:42:45

Vorheriges Thema - Nächstes Thema

smurphy

Und noch etwas. Ich weiß nicht genau warum, aber ich kann den Wert H im plot nicht darstellen.

2018-10-21_21:26:25 xiaomi1 T: 14.9 H: 4.8 D: -25.0

Colum 4 liefert den Wert von T, Colum 8 den Wert von D, Colum 6 liefert keinen Wert im Graphen.

Woran kann das liegen? Handelt es sich eventuell umeinen String und keine Zahl?

Es gibt auch Fehlermeldungen im log.

Server started with 179 defined entities (fhem.pl:17528/2018-10-14 perl:5.024001 os:linux user:fhem pid:1949)
2018.10.21 21:18:49 1: PERL WARNING: Illegal hexadecimal digit ' ' ignored at ./FHEM/74_XiaomiBTLESens.pm line 865.
2018.10.21 21:18:49 3: eval: {XiaomiBTLESens::ExecGatttool_Done('xiaomi1|4c:65:a8:d8:ae:ef|ok|read|0x18|{"gtResult":"45 "}')}
2018.10.21 21:18:49 1: PERL WARNING: Illegal hexadecimal digit ' ' ignored at ./FHEM/74_XiaomiBTLESens.pm line 866.
2018.10.21 21:18:49 3: eval: {XiaomiBTLESens::ExecGatttool_Done('xiaomi1|4c:65:a8:d8:ae:ef|ok|read|0x18|{"gtResult":"45 "}')}
2018.10.21 21:18:51 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at (eval 193) line 1.
2018.10.21 21:18:51 3: eval: { "Xiaomi Humidity Min $data{min2}, Max $data{max2}, Last $data{currval2}, Taupunkt $data{currval3}" }
2018.10.21 21:19:02 1: PERL WARNING: Argument "5.0\0" isn't numeric in numeric le (<=) at ./FHEM/98_dewpoint.pm line 278.
2018.10.21 21:20:55 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at (eval 236) line 1.
2018.10.21 21:20:56 3: eval: { "Xiaomi Humidity Min $data{min2}, Max $data{max2}, Last $data{currval2}, Taupunkt $data{currval3}" }
2018.10.21 21:26:25 1: PERL WARNING: Argument "4.8\0" isn't numeric in numeric le (<=) at ./FHEM/98_dewpoint.pm line 278.

CoolTux

Das ganze kommt vom Sensor in der Tat als Text, aber das stört Perl eigentlich nicht, da Perl erkennen kann das es sich im eine Zahl handelt und den Variablen Type intern an passt.
Warum nimmst Du ausgerechnet state als Reading für den Plot. Du hast doch die Werte einzeln in Readings.
Die Meldung

2018.10.21 21:18:49 3: eval: {XiaomiBTLESens::ExecGatttool_Done('xiaomi1|4c:65:a8:d8:ae:ef|ok|read|0x18|{"gtResult":"45 "}')}
2018.10.21 21:18:49 1: PERL WARNING: Illegal hexadecimal digit ' ' ignored at ./FHEM/74_XiaomiBTLESens.pm line 866.
2018.10.21 21:18:49 3: eval: {XiaomiBTLESens::ExecGatttool_Done('xiaomi1|4c:65:a8:d8:ae:ef|ok|read|0x18|{"gtResult":"45 "}')}

Kommt vom Batteriestatus. Das schaue ich mir gerne noch mal an.
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

smurphy

Ich logge eigentlich nur das State um das logfile klein zu halten.

Ich habe es jetzt mal mit den einzelnen Readings versucht:

Example lines for input:
2018-10-22_14:42:40 xiaomi1 Luftfeuchtigkeit: 4.9
2018-10-22_14:42:40 xiaomi1 T: 14.9 H: 4.9 D: -24.8
2018-10-22_14:42:40 xiaomi1 dewpoint: -24.8
2018-10-22_14:42:40 xiaomi1 humidity: 4.9
2018-10-22_14:42:40 xiaomi1 temperature: 14.9
2018-10-22_14:42:28 xiaomi1 write sensor data


#File_LOG_xiaomi1 4:xiaomi1.temperature\x3a:10:
#File_LOG_xiaomi1 4:xiaomi1.humidity\x3a:50:

plot "<IN>" using 1:2 axes x1y2 title 'Measured temperature' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Humidity_(%)' ls l2 lw 2 with lines


Temperatur wird angezeigt....die Luftfeuchtigkeit nicht.

CoolTux

Kenne mich damit ehrlich gesagt nicht so gut aus.
Steht denn die Luftfeuchte überhaupt im Filelog drin?
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

smurphy

Ja klar..die example lines stammen aus dem File-Log.

Ich habe ja auch zig SVG Plots und das Problem nur mit diesem Wert von diesem Device.
Ich kann das ja auch an anderer Stelle mal erfragen. Ich war davon ausgegangen, dass die Ursache in diesem speziellen Werten liegt.

CoolTux

Ich habe einen Fix fertig für

2018.10.21 21:18:49 3: eval: {XiaomiBTLESens::ExecGatttool_Done('xiaomi1|4c:65:a8:d8:ae:ef|ok|read|0x18|{"gtResult":"45 "}')}
2018.10.21 21:18:49 1: PERL WARNING: Illegal hexadecimal digit ' ' ignored at ./FHEM/74_XiaomiBTLESens.pm line 866.
2018.10.21 21:18:49 3: eval: {XiaomiBTLESens::ExecGatttool_Done('xiaomi1|4c:65:a8:d8:ae:ef|ok|read|0x18|{"gtResult":"45 "}')}


Kommt die Tage per Update
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

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

smurphy

Ich warte erstmal dein Update ab, ob dann das log wieder frei von Fehlermeldungen ist.

Vielen Dank für deine tolle Arbeit Cooltux!

Gruß
Smurphy

CoolTux

Ich habe den Fix soeben hochgeladen. Bekommst morgen per FHEM Update
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


smurphy

Guten Morgen Cooltux.

Der Bug mit der Batterieanzeige ist behoben.
Das Problem, dass die humidity Werte nicht im Plot visiualisiert werden können, besteht weiterhin.

Die Taupunktberechnung meckert auch an, dass es sich um einen uninitialisierten Wert oder String handelt. ( Argument "4.7\0" isn't numeric in numeric)

2018.10.24 08:35:29 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at (eval 194) line 1.
2018.10.24 08:35:29 3: eval: { "Xiaomi Humidity Min $data{min2}, Max $data{max2}, Last $data{currval2}, Taupunkt $data{currval3}" }
2018.10.24 08:35:31 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at (eval 196) line 1.
2018.10.24 08:35:31 3: eval: { "Xiaomi Humidity Min $data{min2}, Max $data{max2}, Last $data{currval2}, Taupunkt $data{currval3}" }
2018.10.24 08:35:35 1: PERL WARNING: Argument "4.7\0" isn't numeric in numeric le (<=) at ./FHEM/98_dewpoint.pm line 278.
2018.10.24 08:35:51 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at (eval 229) line 1.
2018.10.24 08:35:51 3: eval: { "Xiaomi Humidity Min $data{min2}, Max $data{max2}, Last $data{currval2}, Taupunkt $data{currval3}" }



Vielleicht bin ich aber auch nur ein Einzelschicksal.
Wie sieht das bei den anderen aus?
Gruß
Smurphy

CoolTux

Erstelle mal bitte ein userreadings welches einfach nur luftfeuchte und Temperatur addiert. Verwende zum auslesen bitte Readingsval und schaue dann im Log nach Fehlern
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

smurphy

Habe heute leider den ganzen Tag zwei externe im Büro hocken und nach Feierabend gehen wir noch in die Stadt. Wird also leider spät oder erst morgen früh.

CoolTux

Zitat von: smurphy am 24 Oktober 2018, 08:57:36
Habe heute leider den ganzen Tag zwei externe im Büro hocken und nach Feierabend gehen wir noch in die Stadt. Wird also leider spät oder erst morgen früh.

Kein Problem
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

triagony

Hallo!
Erstmal vielen Dank für dieses Modul, das auch bis vor kurzem wunderbar bei meinen zwei Sensoren funktioniert hat. Leider bekomme ich seit ein paar Tagen (ich weiß leider nicht genau seit wann) immer folgenden Fehler:

2018.10.24 12:10:58 5 : XiaomiBTLESens (Benjamini_Fenster) - ExecGatttool_Done: gatttool return string: Benjamini_Fenster|C4:7C:8D:66:D2:80|error|read|0x38|{"gtResult":"Connection refused (111)"}
2018.10.24 12:10:58 4 : XiaomiBTLESens (Benjamini_Fenster) - ProcessingErrors
2018.10.24 12:10:58 4 : XiaomiBTLESens (Benjamini_Fenster) - WriteReadings: Readings were written


In der Konsole mit gatttool sieht es genauso aus:

user@fhem-VM:~$ gatttool -i hci0 -b  C4:7C:8D:66:D2:80 --char-read -a 0x38
connect: Connection refused (111)


Ich habe bereits
sudo hciconfig hci0 down; sudo hciconfig hci0 up
ausprobiert; leider ohne Erfolg.

Beim Scannen mit lescan werden die Sensoren angezeigt. Ebenso funktionieren Sie in der Android-App; Firmware der Sensoren ist 3.1.9 (heute ein Update aufgespielt - Version 3.1.8 hat aber auch nicht (mehr) funktioniert).

Umgebung:
user@fhem-VM:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 9.5 (stretch)
Release: 9.5
Codename: stretch
user@fhem-VM:~$ bluetoothctl --version
5.43


list Benjamini_Fenster:



Internals:
   BTMAC      C4:7C:8D:66:D2:80
   DEF        C4:7C:8D:66:D2:80
   INTERVAL   300
   NAME       Benjamini_Fenster
   NOTIFYDEV  global,Benjamini_Fenster
   NR         264
   NTFY_ORDER 50-Benjamini_Fenster
   STATE      Temperatur: 20.3 &deg;C<br/>Helligkeit: 24 lx<br/>Bodenfeuchte: 19 %<br/>Dünger: 44 us/cm
   TYPE       XiaomiBTLESens
   VERSION    2.4.3
   loglevel   4
   Helper:
     DBLOG:
       lastGattError:
         DBLogging:
           TIME       1540376913.49599
           VALUE      Connection refused (111)
       state:
         DBLogging:
           TIME       1540376913.49599
           VALUE      error
   READINGS:
     2018-10-20 07:20:25   batteryPercent  100
     2018-10-20 07:20:25   batteryState    ok
     2018-10-20 19:57:15   fertility       44
     2018-10-20 07:20:25   firmware        3.1.8
     2018-10-24 12:28:33   lastGattError   Connection refused (111)
     2018-10-20 19:57:15   lux             24
     2018-10-20 19:57:15   moisture        19
     2018-10-24 12:28:33   state           error
     2018-10-20 19:57:15   temperature     20.3
   helper:
     CallBattery 0
     CallSensDataCounter 0
     updateTimeCallBattery 0
Attributes:
   maxFertility 2000
   maxLux     35000
   maxMoisture 60
   maxTemp    32
   minFertility 350
   minLux     2500
   minMoisture 15
   minTemp    8
   model      flowerSens
   room       MiSmartHome,Pflanzen,Wohnzimmer
   stateFormat {"Temperatur: " . ReadingsVal($name, "temperature", 0) . " &deg;C" . "<br/>" . "Helligkeit: " . ReadingsVal($name, "lux", 0) . " lx" . "<br/>" . "Bodenfeuchte: " . ReadingsVal($name, "moisture", 0) . " %" . "<br/>" . "Dünger: " . ReadingsVal($name, "fertility", 0) . " us/cm"}
   verbose    5



Hat jemand eine Idee, woran es liegen könnte? Für jeden sachdienlichen Hinweis bin ich dankbar :)

Beste Grüße