[gefixt] Bug in der Version MQTT2_DEVICE vom 12.12.?

Begonnen von Otto123, 14 Dezember 2020, 10:41:37

Vorheriges Thema - Nächstes Thema

fhem-challenge

Zitat von: Otto123 am 14 Dezember 2020, 15:25:07
...mit der Version (10_MQTT2_DEVICE.pm 23349 2020-12-14 10:16:06Z rudolfkoenig) werden die Original Readings und die gemappten geschrieben. Also alles doppelt.

Und bei der "10_MQTT2_DEVICE.pm 23332 2020-12-12 13:29:43Z" werden die readings *nicht* doppelt geschrieben ...


hanswerner1

Hallo,

ich habe seit dem Update vom 12.12 noch ein Problem mit meinen Ferrais Stromzähler Sensor.

Mit dem Update werden keine Daten mehr vom Strommesser empfangen. Ich habe das Device auch schon gelöscht, es wird aber kein neues Device per autocreate angelegt. Im Log kann ich auch kein Fehler finden.

Nachdem Restore auf die Version vor 12.12 kommen die Daten wieder an und die Readings werden aktualisiert.

SW auf dem Wemos am Zähler ist diese: https://github.com/Eisbaeeer/Ferraris_MQTT_Energy_Counter_Meter_TCRT5000

List vom Zähler Sensor Device:


Internals:
   CID        ESP8266Client_Strom
   DEF        ESP8266Client_Strom
   DEVICETOPIC MQTT2_ESP8266Client_Strom
   FUUID      5f328d5e-f33f-8133-0b8a-0da2dff88df5f1fc
   IODev      MQTT_Server_2
   NAME       MQTT2_ESP8266Client_Strom
   NR         998
   STATE      Zaehler: 134912 kWh <br>
VerbrauchJahr: 1084.0 kWh <br>
Verb. Heute: 6.0 kWh <br>
Verb. Gestern: 24.0 kWh<br>
Kosten Heute: 1.63 € <br>
Kosten Gestern: 7.14 € <br>
Verb.zurZeit: 17.93 kWh
   TYPE       MQTT2_DEVICE
   READINGS:
     2020-10-27 13:22:17   IPAddress       192.168.0.57
     2020-11-12 14:08:19   Z1_Ablesestand  133828
     2020-12-18 09:44:40   Z1_KW           17.93
     2020-12-18 09:44:40   Z1_Stand        134912
     2020-12-17 23:59:50   Z1_Stand_Vortag 134906
     2020-12-18 09:44:40   Z1_UKWh         96
     2020-12-18 09:44:40   Z1_verbrJahr    1084.0
     2020-12-18 09:44:40   Z1_verbrTagEuro 1.63
     2020-12-18 09:44:40   Z1_verbrTagkWh  6.0
     2020-12-18 09:44:40   Z1_verbrVortagEuro 7.14
     2020-12-17 23:59:50   Z1_verbrVortagkWh 24.0
Attributes:
   IODev      MQTT_Server_2
   alias      Stromverbrauch
   autocreate 0
   event-on-update-reading .*
   group      Verbrauch
   icon       stromzaehler_icon
   readingList ESP8266Client_Strom:Ferraris/Strom/Z\xc3\xa4hler1/Stand:.* Z1_Stand
ESP8266Client_Strom:Ferraris/Strom/Z\xc3\xa4hler1/KW:.* Z1_KW
ESP8266Client_Strom:Ferraris/Strom/Z\xc3\xa4hler1/UKWh:.* Z1_UKWh

   room       91_Verbrauch,MQTT2_DEVICE
   stateFormat Zaehler: Z1_Stand kWh <br>
VerbrauchJahr: Z1_verbrJahr kWh <br>
Verb. Heute: Z1_verbrTagkWh kWh <br>
Verb. Gestern: Z1_verbrVortagkWh kWh<br>
Kosten Heute: Z1_verbrTagEuro € <br>
Kosten Gestern: Z1_verbrVortagEuro € <br>
Verb.zurZeit: Z1_KW kWh
   userReadings Z1_verbrTagkWh {sprintf("%.1f", ReadingsVal("MQTT2_ESP8266Client_Strom","Z1_Stand",0)-ReadingsVal("MQTT2_ESP8266Client_Strom","Z1_Stand_Vortag",0)) ;;;; },
Z1_verbrTagEuro {sprintf("%.2f", ReadingsVal("MQTT2_ESP8266Client_Strom","Z1_verbrTagkWh",0)*0.2724) ;;;; },
Z1_verbrVortagEuro {sprintf("%.2f", ReadingsVal("MQTT2_ESP8266Client_Strom","Z1_verbrVortagkWh",0)*0.2977) ;;;; },
Z1_verbrJahr {sprintf("%.1f", ReadingsVal("MQTT2_ESP8266Client_Strom","Z1_Stand",0)-ReadingsVal("MQTT2_ESP8266Client_Strom","Z1_Ablesestand",0)) ;;;; }



defmod MQTT2_ESP8266Client_Strom MQTT2_DEVICE ESP8266Client_Strom
attr MQTT2_ESP8266Client_Strom IODev MQTT_Server_2
attr MQTT2_ESP8266Client_Strom alias Stromverbrauch
attr MQTT2_ESP8266Client_Strom autocreate 1
attr MQTT2_ESP8266Client_Strom event-on-update-reading .*
attr MQTT2_ESP8266Client_Strom group Verbrauch
attr MQTT2_ESP8266Client_Strom icon stromzaehler_icon
attr MQTT2_ESP8266Client_Strom readingList ESP8266Client_Strom:Ferraris/Strom/Z\xc3\xa4hler1/Stand:.* Z1_Stand\
ESP8266Client_Strom:Ferraris/Strom/Z\xc3\xa4hler1/KW:.* Z1_KW\
ESP8266Client_Strom:Ferraris/Strom/Z\xc3\xa4hler1/UKWh:.* Z1_UKWh\

attr MQTT2_ESP8266Client_Strom room 91_Verbrauch,MQTT2_DEVICE
attr MQTT2_ESP8266Client_Strom stateFormat Zaehler: Z1_Stand kWh <br> \
VerbrauchJahr: Z1_verbrJahr kWh <br> \
Verb. Heute: Z1_verbrTagkWh kWh <br> \
Verb. Gestern: Z1_verbrVortagkWh kWh<br> \
Kosten Heute: Z1_verbrTagEuro € <br> \
Kosten Gestern: Z1_verbrVortagEuro € <br> \
Verb.zurZeit: Z1_KW kWh
attr MQTT2_ESP8266Client_Strom userReadings Z1_verbrTagkWh {sprintf("%.1f", ReadingsVal("MQTT2_ESP8266Client_Strom","Z1_Stand",0)-ReadingsVal("MQTT2_ESP8266Client_Strom","Z1_Stand_Vortag",0)) ;;;;;;;; },\
Z1_verbrTagEuro {sprintf("%.2f", ReadingsVal("MQTT2_ESP8266Client_Strom","Z1_verbrTagkWh",0)*0.2724) ;;;;;;;; },\
Z1_verbrVortagEuro {sprintf("%.2f", ReadingsVal("MQTT2_ESP8266Client_Strom","Z1_verbrVortagkWh",0)*0.2977) ;;;;;;;; },\
Z1_verbrJahr {sprintf("%.1f", ReadingsVal("MQTT2_ESP8266Client_Strom","Z1_Stand",0)-ReadingsVal("MQTT2_ESP8266Client_Strom","Z1_Ablesestand",0)) ;;;;;;;; }


Otto123

Zitatseit dem Update vom 12.12
Und die Version vom 14.12. ?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz


hanswerner1

ich habe den verbose geändert, jetzt habe ich "Bad line >< for MQTT2_ESP8266Client_Strom" im Log stehen.

rudolfkoenig

- ich kriege mit der aktuellen Version keine Fehlermeldung, falls ich die unten abgebildete Daten lade.
- die Version 23299 (vom 12-06) liefert die Meldung, auf verbose level 1:
  - ich frage mich, auf was verbose bei Dir stand, damit erst durch eine Aenderung die Meldung zu sehen war.
  - diese Meldung ist relativ alt (2020-06-17), von wann ist deine "Version vor 12.12"?
- die Ursache ist eine (mehre oder weniger) leere Zeile.


Ich habe das Modul erweitert, damit leere readingsList Zeilen auch mitten drin, nicht nur am Anfang oder am Ende, ignoriert werden.

hanswerner1

Stand leider auf 0, hatte ich vor Wochen mal gemacht und vergessen wieder auf 3 zu stellen.
Die Version vor 12.12 dürfte auch nicht alt gewesen sein, mache meist 2x pro Woche ein Update.



hanswerner1

Auch mit der Version von heute morgen, bekomme ich keine Readings Aktualisierung von meinem Stromzähler

Mit Verbose 0 im MQTT2 Modul steht folgendes im Log:


2020.12.19 11:21:14 4:   MQTT_Server_192.168.0.57_52395 ESP8266Client-Strom PUBLISH Ferraris/Strom/Zähler1/Stand:134932
2020.12.19 11:21:14 5: MQTT_Server: dispatch autocreate=simple\000ESP8266Client_Strom\000Ferraris/Strom/Zähler1/Stand\000134932
2020.12.19 11:21:14 5: in:  PUBLISH: 0!(0)(26)Ferraris/Strom/Z(195)(164)hler1/KW10.22
2020.12.19 11:21:14 4:   MQTT_Server_192.168.0.57_52395 ESP8266Client-Strom PUBLISH Ferraris/Strom/Zähler1/KW:10.22
2020.12.19 11:21:14 5: MQTT_Server: dispatch autocreate=simple\000ESP8266Client_Strom\000Ferraris/Strom/Zähler1/KW\00010.22
2020.12.19 11:21:14 5: in:  PUBLISH: 0 (0)(28)Ferraris/Strom/Z(195)(164)hler1/UKWh96
2020.12.19 11:21:14 4:   MQTT_Server_192.168.0.57_52395 ESP8266Client-Strom PUBLISH Ferraris/Strom/Zähler1/UKWh:96
2020.12.19 11:21:14 5: MQTT_Server: dispatch autocreate=simple\000ESP8266Client_Strom\000Ferraris/Strom/Zähler1/UKWh\00096
2020.12.19 11:21:14 5: in:  PUBLISH: 0 (0)(29)Ferraris/Strom/Z(195)(164)hler2/Stand0
2020.12.19 11:21:14 4:   MQTT_Server_192.168.0.57_52395 ESP8266Client-Strom PUBLISH Ferraris/Strom/Zähler2/Stand:0
2020.12.19 11:21:14 5: MQTT_Server: dispatch autocreate=simple\000ESP8266Client_Strom\000Ferraris/Strom/Zähler2/Stand\0000
2020.12.19 11:21:14 5: in:  PUBLISH: 0(31)(0)(26)Ferraris/Strom/Z(195)(164)hler2/KWinf
2020.12.19 11:21:14 4:   MQTT_Server_192.168.0.57_52395 ESP8266Client-Strom PUBLISH Ferraris/Strom/Zähler2/KW:inf
2020.12.19 11:21:14 5: MQTT_Server: dispatch autocreate=simple\000ESP8266Client_Strom\000Ferraris/Strom/Zähler2/KW\000inf
2020.12.19 11:21:14 5: in:  PUBLISH: 0 (0)(28)Ferraris/Strom/Z(195)(164)hler2/UKWh96
2020.12.19 11:21:14 4:   MQTT_Server_192.168.0.57_52395 ESP8266Client-Strom PUBLISH Ferraris/Strom/Zähler2/UKWh:96
2020.12.19 11:21:14 5: MQTT_Server: dispatch autocreate=simple\000ESP8266Client_Strom\000Ferraris/Strom/Zähler2/UKWh\00096
2020.12.19 11:21:14 5: in:  PUBLISH: 0 (0)(29)Ferraris/Strom/Z(195)(164)hler3/Stand0
2020.12.19 11:21:14 4:   MQTT_Server_192.168.0.57_52395 ESP8266Client-Strom PUBLISH Ferraris/Strom/Zähler3/Stand:0
2020.12.19 11:21:14 5: MQTT_Server: dispatch autocreate=simple\000ESP8266Client_Strom\000Ferraris/Strom/Zähler3/Stand\0000
2020.12.19 11:21:14 5: in:  PUBLISH: 0(31)(0)(26)Ferraris/Strom/Z(195)(164)hler3/KWinf
2020.12.19 11:21:14 4:   MQTT_Server_192.168.0.57_52395 ESP8266Client-Strom PUBLISH Ferraris/Strom/Zähler3/KW:inf
2020.12.19 11:21:14 5: MQTT_Server: dispatch autocreate=simple\000ESP8266Client_Strom\000Ferraris/Strom/Zähler3/KW\000inf
2020.12.19 11:21:14 5: in:  PUBLISH: 0(31)(0)(28)Ferraris/Strom/Z(195)(164)hler3/UKWh0
2020.12.19 11:21:14 4:   MQTT_Server_192.168.0.57_52395 ESP8266Client-Strom PUBLISH Ferraris/Strom/Zähler3/UKWh:0
2020.12.19 11:21:14 5: MQTT_Server: dispatch autocreate=simple\000ESP8266Client_Strom\000Ferraris/Strom/Zähler3/UKWh\0000
2020.12.19 11:21:14 5: in:  PUBLISH: 0 (0)(29)Ferraris/Strom/Z(195)(164)hler4/Stand0
2020.12.19 11:21:14 4:   MQTT_Server_192.168.0.57_52395 ESP8266Client-Strom PUBLISH Ferraris/Strom/Zähler4/Stand:0
2020.12.19 11:21:14 5: MQTT_Server: dispatch autocreate=simple\000ESP8266Client_Strom\000Ferraris/Strom/Zähler4/Stand\0000
2020.12.19 11:21:14 5: in:  PUBLISH: 0(31)(0)(26)Ferraris/Strom/Z(195)(164)hler4/KWinf
2020.12.19 11:21:14 4:   MQTT_Server_192.168.0.57_52395 ESP8266Client-Strom PUBLISH Ferraris/Strom/Zähler4/KW:inf
2020.12.19 11:21:14 5: MQTT_Server: dispatch autocreate=simple\000ESP8266Client_Strom\000Ferraris/Strom/Zähler4/KW\000inf
2020.12.19 11:21:14 5: in:  PUBLISH: 0(31)(0)(28)Ferraris/Strom/Z(195)(164)hler4/UKWh0
2020.12.19 11:21:14 4:   MQTT_Server_192.168.0.57_52395 ESP8266Client-Strom PUBLISH Ferraris/Strom/Zähler4/UKWh:0
2020.12.19 11:21:14 5: MQTT_Server: dispatch autocreate=simple\000ESP8266Client_Strom\000Ferraris/Strom/Zähler4/UKWh\0000


Mit Autocreate im Device wird folgende ReadingList erzeugt:


ESP8266Client_Strom:Ferraris/Strom/Z\xc3\xa4hler1/Stand:.* Stand
ESP8266Client_Strom:Ferraris/Strom/Z\xc3\xa4hler1/KW:.* KW
ESP8266Client_Strom:Ferraris/Strom/Z\xc3\xa4hler1/UKWh:.* UKWh
ESP8266Client_Strom:Ferraris/Strom/Z\xc3\xa4hler2/Stand:.* Stand
ESP8266Client_Strom:Ferraris/Strom/Z\xc3\xa4hler2/KW:.* KW
ESP8266Client_Strom:Ferraris/Strom/Z\xc3\xa4hler2/UKWh:.* UKWh
ESP8266Client_Strom:Ferraris/Strom/Z\xc3\xa4hler3/Stand:.* Stand
ESP8266Client_Strom:Ferraris/Strom/Z\xc3\xa4hler3/KW:.* KW
ESP8266Client_Strom:Ferraris/Strom/Z\xc3\xa4hler3/UKWh:.* UKWh
ESP8266Client_Strom:Ferraris/Strom/Z\xc3\xa4hler4/Stand:.* Stand
ESP8266Client_Strom:Ferraris/Strom/Z\xc3\xa4hler4/KW:.* KW
ESP8266Client_Strom:Ferraris/Strom/Z\xc3\xa4hler4/UKWh:.* UKWh


Aber die Readings werden nicht aktualisiert.


rudolfkoenig

Topics mit Umlauten wurden nach den letzten Optimierungen ignoriert.
Ich habe das jetzt gefixt, indem ich die Optimierung fuer Topics mit Umlauten deaktiviert habe.

Otto123

Ich finde man kann bei Namen die ausschließlich technische Relevanz haben auf Zeichen außerhalb von [a-zA-Z0-9] verzichten. Man kann noch über [-_] nachdenken.
Man muss es ja nicht unnötig kompliziert machen :)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

herrmannj

Mqtt ist ein standardisiertes Protokoll und da ist das zulässig

Otto123

Ich wollte nicht sagen, dass es unzulässig ist.
Aber man muss ja nicht alles tun was zulässig ist ;)

Ich komme noch aus einer Zeit wo in den einen Namen '_' und in den Anderen '-' nicht zulässig war. An Umlaute war da gar nicht zu denken.
Da trägt man bleibende "Schäden" davon ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

rudolfkoenig

Solche Topics sind auch in FHEM zulaessig, der Zugriff ist halt z.Zt. nicht extra optimiert.

hanswerner1

Zitat von: rudolfkoenig am 19 Dezember 2020, 12:43:40
Topics mit Umlauten wurden nach den letzten Optimierungen ignoriert.
Ich habe das jetzt gefixt, indem ich die Optimierung fuer Topics mit Umlauten deaktiviert habe.

Jetzt klappts wieder. Vielen Dank !!!

Prof. Dr. Peter Henning

Bei den Optimierungen hat sich noch ein Fehler eingeschlichen.
Das Attribut disconnetAfter führt nicht mehr zu einem disconnect des Devices nach der angegeben Zahl von Sekunden.

LG

pah