FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: matthias1403 am 30 Januar 2018, 08:24:32

Titel: Datentypproblem MQTT
Beitrag von: matthias1403 am 30 Januar 2018, 08:24:32
Hallo,

ich bin gerade dabei Sensoren über MQTT zu meinem bestehenden FHEM hinzuzufügen. Daher experementiere ich erstmal mit einem ESP8266 mit DHT22-Sensor. Der aktualisierte FHEM und der Mosquitto broker auf dem lokalen Raspi funktionieren auch prinzipiell. Also Daten gehen in die Datenbank und sind dort sauber lesbar per sqlite-Zugriff.

Das Problem ist, dass FHEM Probleme hat die Daten darzustellen. Der Browser meldet z.B. "XML Parsing Error: not well-formed", an der Stelle wo das SVG-Diagramm sein sollte. In der Fehlermeldung ist zu sehen, dass ein Sonderzeichen das Problem verursacht, wobei mir nicht klar ist wo das herkommen soll.

Gibt es etwas besonderes zu beachten beim Verwenden von MQTT bezüglich der Datentypen? Bei meinen bisherigen Sensoren (meistens DUMMY) gab es noch nie solche Probleme.

Konfiguration:

define BueroTemperatur MQTT_DEVICE
attr BueroTemperatur IODev myBroker
attr BueroTemperatur room Arbeitszimmer
attr BueroTemperatur stateFormat T: measured-temp H: humidity V: vcc
attr BueroTemperatur subscribeReading_humidity Buero/ESP8266/hum
attr BueroTemperatur subscribeReading_measured-temp Buero/ESP8266/temp
attr BueroTemperatur subscribeReading_vcc Buero/ESP8266/vcc


Das taucht auch im Logfile auf:

2018.01.30 08:15:07 1: PERL WARNING: Argument "54.6\0" isn't numeric in numeric gt (>) at ./FHEM/98_SVG.pm line 1561.
2018.01.30 08:15:07 1: PERL WARNING: Argument "54.9\0" isn't numeric in numeric gt (>) at ./FHEM/98_SVG.pm line 1561.
2018.01.30 08:15:07 1: PERL WARNING: Argument "55.1\0" isn't numeric in numeric gt (>) at ./FHEM/98_SVG.pm line 1561.
2018.01.30 08:15:07 1: PERL WARNING: Argument "54.6\0" isn't numeric in subtraction (-) at ./FHEM/98_SVG.pm line 2071.
2018.01.30 08:15:07 1: PERL WARNING: Argument "54.9\0" isn't numeric in subtraction (-) at ./FHEM/98_SVG.pm line 2071.
2018.01.30 08:15:07 1: PERL WARNING: Argument "55.1\0" isn't numeric in subtraction (-) at ./FHEM/98_SVG.pm line 2071.
2018.01.30 08:15:07 1: PERL WARNING: Argument "20.7\0" isn't numeric in sprintf at ./FHEM/98_SVG.pm line 2162.
2018.01.30 08:15:07 1: PERL WARNING: Argument "55.1\0" isn't numeric in sprintf at ./FHEM/98_SVG.pm line 2162.


Muss man die abschließende "\0" noch irgendwie filtern?....das scheint zu stören.

Ich hoffe jemand hat eine Idee....meine bisherige Suche war nicht so erfolgreich.

Gruß,
Matthias
Titel: Antw:Datentypproblem MQTT
Beitrag von: matthias1403 am 01 Februar 2018, 08:08:36
Moin,

ich denke ich hab die Ursache gefunden. Es lag nicht am FHEM selbst, sondern in dem Format in dem die Werte zum MQTT übermittelt werden. Ich hab eine andere float oder int zu char Konvertierung genommen, und damit gibt es scheinbar keine Probleme. Alle Werte haben jetzt mindestens 2 Dezimalstellen, und damit gibt es bisher keine Darstellungsfehler.
Bei der Batteriespannung ist jetzt zum Beispiel zu sehen, dass jetzt alle Werte mit zwei Dezimalstellen abgelegt werden. Vorher wurde in dem Fall ein reiner Integer abgelegt.
Gibt es eine Vorgabe im FHEM, wie oder in welchem Format Messwerte übergeben werden müssen?

Jedenfalls funktioniert es jetzt.....

Matthias