Datentypproblem MQTT

Begonnen von matthias1403, 30 Januar 2018, 08:24:32

Vorheriges Thema - Nächstes Thema

matthias1403

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

matthias1403

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