FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: BorisKsoll am 27 November 2020, 20:49:47

Titel: Tasmota->MQTT2->Fhem Readingsproxy liefert falschen State
Beitrag von: BorisKsoll am 27 November 2020, 20:49:47
Moin,

zugegebenermaßen verstehe ich nur anteilig, was ich "gebastelt" habe:

Ich habe eine 4-ch Relaiskarte mit ESP8266 mit Tasmota/MQTT2 in fhem eingebunden.

Dann habe ich eines der Relais als Readingsproxy "vereinzelt". Das Ergebnis: on/of/toggle funktioniert, Steuerung mit Alexa funktioniert, State wird falsch angezeigt -> somit auch das falsche devStateIcon -> keine Bedienung über das devStateIcon.

Im MQTT2-Device habe ich folgenden Status:

STATE     P1: set off P2: set on P3: set on P4: set on

Es geht um Power3, das entsprechende Reading:

POWER3   set on   2020-11-27 19:44:03

Bis hier ist alles so, wie es soll. Die Schaltzustände werden im State und im Reading korrekt angezeigt.

Zum "Vereinzeln" habe ich jetzt einen Readingsproxy gebastelt:

defmod nebenlicht_luefterlicht readingsProxy TasmotaKueche:POWER3
attr nebenlicht_luefterlicht alexaName Lüfterlicht
attr nebenlicht_luefterlicht alias Lüfterlicht
attr nebenlicht_luefterlicht devStateIcon off:bk_off on:bk_on:off
attr nebenlicht_luefterlicht fp_LCARS_OG2 240,765,1,Licht
attr nebenlicht_luefterlicht genericDeviceType switch
attr nebenlicht_luefterlicht group Aktoren
attr nebenlicht_luefterlicht room Küche Oben
attr nebenlicht_luefterlicht setFn {($CMD eq "on")?"POWER3 on":"POWER3 off"}
attr nebenlicht_luefterlicht setList on off
attr nebenlicht_luefterlicht valueFn {($VALUE == 0)?"off":"on"}
attr nebenlicht_luefterlicht webCmd on:off

setstate nebenlicht_luefterlicht off
setstate nebenlicht_luefterlicht 2020-11-27 19:44:03 lastCmd on
setstate nebenlicht_luefterlicht 2020-11-27 19:44:03 state off




lastCMD ist korrekt, state nicht...

Wo habe ich jetzt den Fehler eingebaut?

Ich "ahne", dass das Reading "Power3" nicht den state sondern das lastcmd anzeigt...

Viele Grüße & schon jetzt vielen Dank
Boris
Titel: Antw:Tasmota->MQTT2->Fhem Readingsproxy liefert falschen State
Beitrag von: TomLee am 27 November 2020, 21:22:32
Warum denn überhaupt der Umweg über readingsProxy (ergeben fünf Devices), was spricht gegen vier MQTT2-Devices?

Für jeden Kanal ein Device ermöglicht auf ganz einfachem Weg das tasmota_4channel_split-Template (inkl. Assistenten zur Sprachsteuerungsgeschichte, mein ich) auf das TasmotaKueche-Device.

Zum devStateIcon im readingsProxy: was denn, wenn du dein bisheriges devStateIcon einfach löschst ?

Verstehe es so das die Bedienung und Steuerung dann klappen sollte, gut möglich das ich aber was übersehe.

Gruß

Thomas
Titel: Antw:Tasmota->MQTT2->Fhem Readingsproxy liefert falschen State
Beitrag von: BorisKsoll am 28 November 2020, 15:49:53
Moin Thomas,

danke für die schnelle Antwort.

Der Umweg über ReadingProxy war das anwenden vorhandenen Wissens auf eine neue Situation - die Möglichkeit der Split-Templates hatte ich nicht erkannt.

Das Löschen des Icons im bisherigen Setting bringt übrigens keine Änderung. Ich habe dann das "default" Symbol - also die Glühlampe, die nicht reagiert...

Ich werde mal die Split-Lösung testen und berichten...
Titel: Antw:Tasmota->MQTT2->Fhem Readingsproxy liefert falschen State
Beitrag von: BorisKsoll am 28 November 2020, 16:15:29
Moin,

mit dem Split funktioniert alles bestens - auch das alternative StadeIcon, dass ich für den Floorplan brauche.

Es ergeben sich zwei neue Fragen, ich weiß nicht ob die vielleicht ein neues Thema rechtfertigen:

- Beim Devicename wird vor dem Namen/Alias ein hue_filled_outlet angezeigt. Warum?
- Wenn ich an den ESP8266 zum 4-ch-Relais noch einen Sensor anschliessen möchte DHT11 oder 18b20...), wie gehe ich vor? Muss ich das dann als MQTT2-Device "zu Fuß" einrichten? Einfach das Template wechseln würde die vorhandenen Devices überschreiben?

Viele Grüße
Boris
Titel: Antw:Tasmota->MQTT2->Fhem Readingsproxy liefert falschen State
Beitrag von: TomLee am 28 November 2020, 16:41:23
Zitat- Beim Devicename wird vor dem Namen/Alias ein hue_filled_outlet angezeigt. Warum?

Beim ausführen vom tasmota_4channel_split-Template wird im Hintergrund auf die zu splittenden Geräte das tasmota_basic_state_power1 angewendet.
Und in diesem Template wird per default das Icon hue_filled_outlet gesetzt.
Aus dem Template:
par:ICON;ICON as set, defaults to hue_filled_outlet;{ AttrVal("DEVICE","icon","hue_filled_outlet") }
attr DEVICE icon ICON


Wenns dich stört einfach löschen.

ZitatMuss ich das dann als MQTT2-Device "zu Fuß" einrichten?

Ich denke ja, einfach dann den readingList-Eintrag (den mit dem SENSOR-Topic) nach dem manuellen anlegen des Sensor-Device aus den anderen Devices rausnehmen/löschen und falls schon einmal empfangen alle oder nur das Sensor-Reading(s) löschen.

Titel: Antw:Tasmota->MQTT2->Fhem Readingsproxy liefert falschen State
Beitrag von: Otto123 am 28 November 2020, 20:01:00
Zitat von: BorisKsoll am 28 November 2020, 16:15:29
noch einen Sensor anschliessen möchte DHT11 oder 18b20...), wie gehe ich vor?
Hallo Boris,
da steht hier was dazu https://wiki.fhem.de/wiki/MQTT2-Module_-_Praxisbeispiele#Allgemeines
Zitatwenn man weitere Readings aus dem Gerät erwartet, etwa, weil zusätzliche Sensoren vorhanden sind. In diesem Fall empfiehlt es sich, das autocreate-Attribut an dem MQTT2_DEVICE zu löschen, damit alle weiteren Informationen verarbeitet werden
Gruß Otto
Titel: Antw:Tasmota->MQTT2->Fhem Readingsproxy liefert falschen State
Beitrag von: BorisKsoll am 30 November 2020, 15:23:20
Super.

Jetzt habe ich die Sensoren - mit ID zur Unterscheidung - in den Readings der MQTT2-Device.

DS18B20-1_Id  020792457A66  2020-11-30 15:16:59
DS18B20-1_Temperature  5.5  2020-11-30 15:16:59
DS18B20-2_Id  020C9245D538  2020-11-30 15:16:59
DS18B20-2_Temperature  5.3  2020-11-30 15:16:59
DS18B20_Id  01145529F2AA  2020-11-29 17:09:30
DS18B20_Temperature  5.3


Jetzt möchte ich auf die Werte zugreifen. Ich probier mal ein wenig...

defmod TemperaturenOG1 readingsGroup TasmoServer_CH1:DS18B20.*

Liefert schon ein ein ganz brauchbares Ergebnis:

TemperaturenOG1
TasmoServer_CH1:DS18B20-1_Id
020792457A66
2020-11-30 15:46:59
TasmoServer_CH1:DS18B20-1_Temperature
4.3
2020-11-30 15:46:59
TasmoServer_CH1:DS18B20-2_Id
020C9245D538
2020-11-30 15:46:59
TasmoServer_CH1:DS18B20-2_Temperature
4.5
2020-11-30 15:46:59
TasmoServer_CH1:DS18B20_Id
01145529F2AA
2020-11-29 17:09:30
TasmoServer_CH1:DS18B20_Temperature
5.3
2020-11-29 17:09:30


Bleiben die IDs jetzt immer dem gleichen Sensor zugeordnet oder kann sich die Reihenfolge ändern?

Wenn ich jetzt die Temperatur eines einzelnen Senders z.B. in einem Readingsproxy nutzen möchte, könnte ich dann mit

define TemeraturWohnzimmer ReadingsProxy MQTT2Gerät:DS18B20-2

arbeiten oder hätte ich dann regelmäßig den falschen Sensor?

Titel: Antw:Tasmota->MQTT2->Fhem Readingsproxy liefert falschen State
Beitrag von: Beta-User am 30 November 2020, 15:54:17
Die Reading-Inhalte können sich ändern. Es gibt deswegen auch ein separates attrTemplate, das sich mit mehreren DS18B20 beschäftigt - tasmota_use_DS18x20_id.

Ggf. musst du da aber auch noch etwas nacharbeiten, wenn du das mit einer normalen Aktor-Funktion kombinieren willst...
Titel: Antw:Tasmota->MQTT2->Fhem Readingsproxy liefert falschen State
Beitrag von: BorisKsoll am 30 November 2020, 16:11:35
OK - das wäre am leichtesten. Leider laufen meine 18B20 an einem Gerät, an dem auch eine 4ch-Relaiskarte läuft. Deshalb habe ich es mit dem 4ch-split-template eingerichtet.

Würde ich jetzt das 18b20-Template nutzen, wären die fertig  eingerichteten Devices für die Relais dann noch vorhanden oder verloren?

Titel: Antw:Tasmota->MQTT2->Fhem Readingsproxy liefert falschen State
Beitrag von: Beta-User am 30 November 2020, 16:25:32
Jein.

Nimm einfach eine Kopie von dem ersten Kanal, benenne den um und spiel dann erst mal mit dem attrTemplate auf der Kopie rum. Später kannst du dann entscheiden, ob die Sensoren an den Hauptkanal (oder wo auch immer hin) sollen. Kann nur sein, dass das das Handling auf dem kombinierten Device etwas schwieriger macht.

MQTT2_SERVER verteilt die eingehenden Infos grundsätzlich an alle MQTT2_DEVIC-Instanzen, die passende readingList-Einträge haben, von daher kann man ohne weiteres zusätzliches "Spielmaterial" generieren, ohne dass man (in FHEM) groß was kaputtmachen muss...
Titel: Antw:Tasmota->MQTT2->Fhem Readingsproxy liefert falschen State
Beitrag von: BorisKsoll am 30 November 2020, 17:31:49
Ich habe jetzt den CH1 kopiert und dann das Template geändert - danach hatte ich in den attribs eine Mischung aus alt und neu.

Deshalb habe ich noch einmal eine neue Kopie erstellt und alle attribs, die eindeutig vom 4ch kamen, gelöscht. Anschliessend das Template gewechselt.

Allerdings sehen die Readings noch exakt so aus wie zuvor:

Readings
DS18B20-1_Id
020792457A66
2020-11-30 17:17:53
DS18B20-1_Temperature
3.9
2020-11-30 17:17:53
DS18B20-2_Id
020C9245D538
2020-11-30 17:17:53
DS18B20-2_Temperature
4.1
2020-11-30 17:17:53
Heap
26
2020-11-30 17:17:53
LoadAvg
19
2020-11-30 17:17:53
MqttCount
1
2020-11-30 17:17:53
POWER2
off
2020-11-30 17:17:53
Sleep
50
2020-11-30 17:17:53
SleepMode
Dynamic
2020-11-30 17:17:53
TempUnit
C
2020-11-30 17:17:53
Time
2020-11-30T17:17:53
2020-11-30 17:17:53
Uptime
0T01:20:09
2020-11-30 17:17:53
UptimeSec
4809
2020-11-30 17:17:53
Wifi_AP
2
2020-11-30 17:17:53
Wifi_BSSId
E0:28:6D:2A:CE:D0
2020-11-30 17:17:53
Wifi_Channel
1
2020-11-30 17:17:53
Wifi_Downtime
0T00:00:03
2020-11-30 17:17:53
Wifi_LinkCount
1
2020-11-30 17:17:53
Wifi_RSSI
100
2020-11-30 17:17:53
Wifi_SSId
DianaTroy
2020-11-30 17:17:53
Wifi_Signal
-50
2020-11-30 17:17:53
attrTemplateVersion
20200522 or prior
2020-11-30 17:19:25
subscriptions
cmnd/TasmoServer/# cmnd/TasmoServer_fb/# cmnd/tasmotas/#
2020-11-30 17:17:06


Was hätte ich hier:

Specify the unknown parameters for tasmota_use_DS18x20_id:

eingeben müssen? "hä?" dürfte unpassend sein...

...hä findet sich dann in der Readingslist wieder:

hä/INFO.:.* { json2nameValue($EVENT) }
  hä/RESULT:.* { my %ret; while ($EVENT =~ /.Id...([A-F0-9]{12})...Temperature..([-]?[\d]+\.[\d]+)./g) { $ret{"Temperatur_".$1}=$2; }; return \%ret; }
  hä/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }


deshalb habe ich es mal mit "tele/TasmoServer" versucht, in der Hoffnung, dass diese Ausgabe aus der Tasmota-Konsole

17:22:53 MQT: tele/TasmoServer/SENSOR = {"Time":"2020-11-30T17:22:53","DS18B20-1":{"Id":"020792457A66","Temperature":4.1},"DS18B20-2":{"Id":"020C9245D538","Temperature":4.3},"TempUnit":"C"}
zum Erfolg führt. Leider funktioniert auch das nicht.




  hä/RESULT:.* { my %ret; while ($EVENT =~ /.Id...([A-F0-9]{12})...Temperature..([-]?[\d]+\.[\d]+)./g) { $ret{"Temperatur_".$1}=$2; }; return \%ret; }
 


Verstehe ich diesen Code richtig: While -> ausführen solange noch Listenenlemente mit Id und 12 Stellen Hex folgen und dann die Temperatur ausgeben?


Titel: Antw:Tasmota->MQTT2->Fhem Readingsproxy liefert falschen State
Beitrag von: Beta-User am 30 November 2020, 17:45:01
Kann es sein, dass sich die topics bei Tasmota geändert haben?
Ursprünglich kam das wohl über den RESULT-Zweig, aber zwischenzeitlich (seit 9.x?) scheint das SENSOR zu sein. Die betreffende Zeile müsste demnach lauten:

tele/TasmoServer/SENSOR:.* { my %ret; while ($EVENT =~ /.Id...([A-F0-9]{12})...Temperature..([-]?[\d]+\.[\d]+)./g) { $ret{"Temperatur_".$1}=$2; }; return \%ret; }
Die Schleife füllt einen Hash mit "Temperatur_ID"=>"Temperatur-Wert"-Paaren und gibt dann den Hash zurück. Daraus werden dann per bulk-Update die Readings generiert.

(Grummel, das klingt nach Arbeit in den attrTemplate...)
Titel: Antw:Tasmota->MQTT2->Fhem Readingsproxy liefert falschen State
Beitrag von: BorisKsoll am 30 November 2020, 17:55:25
Mein Tasmota ist 9.1.0

eine komplette Konsolenausgabe:

16:32:53 MQT: tele/TasmoServer/STATE = {"Time":"2020-11-30T16:32:53","Uptime":"0T00:35:09","UptimeSec":2109,"Heap":26,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER1":"off","POWER2":"off","POWER3":"off","POWER4":"off","Wifi":{"AP":2,"SSId":"DianaTroy","BSSId":"E0:28:6D:2A:CE:D0","Channel":1,"RSSI":98,"Signal":-51,"LinkCount":1,"Downtime":"0T00:00:03"}}
16:32:53 MQT: tele/TasmoServer/SENSOR = {"Time":"2020-11-30T16:32:53","DS18B20-1":{"Id":"020792457A66","Temperature":4.1},"DS18B20-2":{"Id":"020C9245D538","Temperature":4.3},"TempUnit":"C"}
16:37:53 MQT: tele/TasmoServer/STATE = {"Time":"2020-11-30T16:37:53","Uptime":"0T00:40:09","UptimeSec":2409,"Heap":26,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER1":"off","POWER2":"off","POWER3":"off","POWER4":"off","Wifi":{"AP":2,"SSId":"DianaTroy","BSSId":"E0:28:6D:2A:CE:D0","Channel":1,"RSSI":98,"Signal":-51,"LinkCount":1,"Downtime":"0T00:00:03"}}
16:37:53 MQT: tele/TasmoServer/SENSOR = {"Time":"2020-11-30T16:37:53","DS18B20-1":{"Id":"020792457A66","Temperature":4.1},"DS18B20-2":{"Id":"020C9245D538","Temperature":4.3},"TempUnit":"C"}
16:42:53 MQT: tele/TasmoServer/STATE = {"Time":"2020-11-30T16:42:53","Uptime":"0T00:45:09","UptimeSec":2709,"Heap":26,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER1":"off","POWER2":"off","POWER3":"off","POWER4":"off","Wifi":{"AP":2,"SSId":"DianaTroy","BSSId":"E0:28:6D:2A:CE:D0","Channel":1,"RSSI":100,"Signal":-50,"LinkCount":1,"Downtime":"0T00:00:03"}}
16:42:53 MQT: tele/TasmoServer/SENSOR = {"Time":"2020-11-30T16:42:53","DS18B20-1":{"Id":"020792457A66","Temperature":3.9},"DS18B20-2":{"Id":"020C9245D538","Temperature":4.3},"TempUnit":"C"}
16:47:53 MQT: tele/TasmoServer/STATE = {"Time":"2020-11-30T16:47:53","Uptime":"0T00:50:09","UptimeSec":3009,"Heap":26,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER1":"off","POWER2":"off","POWER3":"off","POWER4":"off","Wifi":{"AP":2,"SSId":"DianaTroy","BSSId":"E0:28:6D:2A:CE:D0","Channel":1,"RSSI":100,"Signal":-50,"LinkCount":1,"Downtime":"0T00:00:03"}}
16:47:53 MQT: tele/TasmoServer/SENSOR = {"Time":"2020-11-30T16:47:53","DS18B20-1":{"Id":"020792457A66","Temperature":4.3},"DS18B20-2":{"Id":"020C9245D538","Temperature":4.3},"TempUnit":"C"}
16:52:53 MQT: tele/TasmoServer/STATE = {"Time":"2020-11-30T16:52:53","Uptime":"0T00:55:09","UptimeSec":3309,"Heap":26,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER1":"off","POWER2":"off","POWER3":"off","POWER4":"off","Wifi":{"AP":2,"SSId":"DianaTroy","BSSId":"E0:28:6D:2A:CE:D0","Channel":1,"RSSI":100,"Signal":-50,"LinkCount":1,"Downtime":"0T00:00:03"}}
16:52:53 MQT: tele/TasmoServer/SENSOR = {"Time":"2020-11-30T16:52:53","DS18B20-1":{"Id":"020792457A66","Temperature":4.3},"DS18B20-2":{"Id":"020C9245D538","Temperature":4.3},"TempUnit":"C"}
16:54:46 MQT: stat/TasmoServer/RESULT = {"POWER1":"on"}
16:54:46 MQT: stat/TasmoServer/POWER1 = on
16:54:47 MQT: stat/TasmoServer/RESULT = {"POWER1":"off"}
16:54:47 MQT: stat/TasmoServer/POWER1 = off
16:54:50 MQT: stat/TasmoServer/RESULT = {"POWER1":"on"}
16:54:50 MQT: stat/TasmoServer/POWER1 = on
16:54:54 MQT: stat/TasmoServer/RESULT = {"POWER1":"off"}
16:54:54 MQT: stat/TasmoServer/POWER1 = off
16:57:53 MQT: tele/TasmoServer/STATE = {"Time":"2020-11-30T16:57:53","Uptime":"0T01:00:09","UptimeSec":3609,"Heap":26,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER1":"off","POWER2":"off","POWER3":"off","POWER4":"off","Wifi":{"AP":2,"SSId":"DianaTroy","BSSId":"E0:28:6D:2A:CE:D0","Channel":1,"RSSI":100,"Signal":-50,"LinkCount":1,"Downtime":"0T00:00:03"}}
16:57:53 MQT: tele/TasmoServer/SENSOR = {"Time":"2020-11-30T16:57:53","DS18B20-1":{"Id":"020792457A66","Temperature":4.3},"DS18B20-2":{"Id":"020C9245D538","Temperature":4.3},"TempUnit":"C"}
17:02:53 MQT: tele/TasmoServer/STATE = {"Time":"2020-11-30T17:02:53","Uptime":"0T01:05:09","UptimeSec":3909,"Heap":25,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER1":"off","POWER2":"off","POWER3":"off","POWER4":"off","Wifi":{"AP":2,"SSId":"DianaTroy","BSSId":"E0:28:6D:2A:CE:D0","Channel":1,"RSSI":98,"Signal":-51,"LinkCount":1,"Downtime":"0T00:00:03"}}
17:02:53 MQT: tele/TasmoServer/SENSOR = {"Time":"2020-11-30T17:02:53","DS18B20-1":{"Id":"020792457A66","Temperature":3.9},"DS18B20-2":{"Id":"020C9245D538","Temperature":4.3},"TempUnit":"C"}
17:07:53 MQT: tele/TasmoServer/STATE = {"Time":"2020-11-30T17:07:53","Uptime":"0T01:10:09","UptimeSec":4209,"Heap":26,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER1":"off","POWER2":"off","POWER3":"off","POWER4":"off","Wifi":{"AP":2,"SSId":"DianaTroy","BSSId":"E0:28:6D:2A:CE:D0","Channel":1,"RSSI":98,"Signal":-51,"LinkCount":1,"Downtime":"0T00:00:03"}}
17:07:53 MQT: tele/TasmoServer/SENSOR = {"Time":"2020-11-30T17:07:53","DS18B20-1":{"Id":"020792457A66","Temperature":4.2},"DS18B20-2":{"Id":"020C9245D538","Temperature":4.3},"TempUnit":"C"}
17:12:53 MQT: tele/TasmoServer/STATE = {"Time":"2020-11-30T17:12:53","Uptime":"0T01:15:09","UptimeSec":4509,"Heap":25,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER1":"off","POWER2":"off","POWER3":"off","POWER4":"off","Wifi":{"AP":2,"SSId":"DianaTroy","BSSId":"E0:28:6D:2A:CE:D0","Channel":1,"RSSI":98,"Signal":-51,"LinkCount":1,"Downtime":"0T00:00:03"}}
17:12:53 MQT: tele/TasmoServer/SENSOR = {"Time":"2020-11-30T17:12:53","DS18B20-1":{"Id":"020792457A66","Temperature":3.9},"DS18B20-2":{"Id":"020C9245D538","Temperature":4.1},"TempUnit":"C"}
17:17:53 MQT: tele/TasmoServer/STATE = {"Time":"2020-11-30T17:17:53","Uptime":"0T01:20:09","UptimeSec":4809,"Heap":26,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER1":"off","POWER2":"off","POWER3":"off","POWER4":"off","Wifi":{"AP":2,"SSId":"DianaTroy","BSSId":"E0:28:6D:2A:CE:D0","Channel":1,"RSSI":100,"Signal":-50,"LinkCount":1,"Downtime":"0T00:00:03"}}
17:17:53 MQT: tele/TasmoServer/SENSOR = {"Time":"2020-11-30T17:17:53","DS18B20-1":{"Id":"020792457A66","Temperature":3.9},"DS18B20-2":{"Id":"020C9245D538","Temperature":4.1},"TempUnit":"C"}
17:22:53 MQT: tele/TasmoServer/STATE = {"Time":"2020-11-30T17:22:53","Uptime":"0T01:25:09","UptimeSec":5109,"Heap":26,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER1":"off","POWER2":"off","POWER3":"off","POWER4":"off","Wifi":{"AP":2,"SSId":"DianaTroy","BSSId":"E0:28:6D:2A:CE:D0","Channel":1,"RSSI":98,"Signal":-51,"LinkCount":1,"Downtime":"0T00:00:03"}}
17:22:53 MQT: tele/TasmoServer/SENSOR = {"Time":"2020-11-30T17:22:53","DS18B20-1":{"Id":"020792457A66","Temperature":4.1},"DS18B20-2":{"Id":"020C9245D538","Temperature":4.3},"TempUnit":"C"}
17:27:53 MQT: tele/TasmoServer/STATE = {"Time":"2020-11-30T17:27:53","Uptime":"0T01:30:09","UptimeSec":5409,"Heap":25,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER1":"off","POWER2":"off","POWER3":"off","POWER4":"off","Wifi":{"AP":2,"SSId":"DianaTroy","BSSId":"E0:28:6D:2A:CE:D0","Channel":1,"RSSI":98,"Signal":-51,"LinkCount":1,"Downtime":"0T00:00:03"}}
17:27:53 MQT: tele/TasmoServer/SENSOR = {"Time":"2020-11-30T17:27:53","DS18B20-1":{"Id":"020792457A66","Temperature":4.1},"DS18B20-2":{"Id":"020C9245D538","Temperature":4.1},"TempUnit":"C"}
17:32:53 MQT: tele/TasmoServer/STATE = {"Time":"2020-11-30T17:32:53","Uptime":"0T01:35:09","UptimeSec":5709,"Heap":26,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER1":"off","POWER2":"off","POWER3":"off","POWER4":"off","Wifi":{"AP":2,"SSId":"DianaTroy","BSSId":"E0:28:6D:2A:CE:D0","Channel":1,"RSSI":96,"Signal":-52,"LinkCount":1,"Downtime":"0T00:00:03"}}
17:32:53 MQT: tele/TasmoServer/SENSOR = {"Time":"2020-11-30T17:32:53","DS18B20-1":{"Id":"020792457A66","Temperature":4.1},"DS18B20-2":{"Id":"020C9245D538","Temperature":4.3},"TempUnit":"C"}
17:37:53 MQT: tele/TasmoServer/STATE = {"Time":"2020-11-30T17:37:53","Uptime":"0T01:40:09","UptimeSec":6009,"Heap":26,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER1":"off","POWER2":"off","POWER3":"off","POWER4":"off","Wifi":{"AP":2,"SSId":"DianaTroy","BSSId":"E0:28:6D:2A:CE:D0","Channel":1,"RSSI":96,"Signal":-52,"LinkCount":1,"Downtime":"0T00:00:03"}}
17:37:53 MQT: tele/TasmoServer/SENSOR = {"Time":"2020-11-30T17:37:53","DS18B20-1":{"Id":"020792457A66","Temperature":4.1},"DS18B20-2":{"Id":"020C9245D538","Temperature":4.3},"TempUnit":"C"}
17:42:53 MQT: tele/TasmoServer/STATE = {"Time":"2020-11-30T17:42:53","Uptime":"0T01:45:09","UptimeSec":6309,"Heap":26,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER1":"off","POWER2":"off","POWER3":"off","POWER4":"off","Wifi":{"AP":2,"SSId":"DianaTroy","BSSId":"E0:28:6D:2A:CE:D0","Channel":1,"RSSI":96,"Signal":-52,"LinkCount":1,"Downtime":"0T00:00:03"}}
17:42:53 MQT: tele/TasmoServer/SENSOR = {"Time":"2020-11-30T17:42:53","DS18B20-1":{"Id":"020792457A66","Temperature":4.1},"DS18B20-2":{"Id":"020C9245D538","Temperature":4.3},"TempUnit":"C"}
17:47:53 MQT: tele/TasmoServer/STATE = {"Time":"2020-11-30T17:47:53","Uptime":"0T01:50:09","UptimeSec":6609,"Heap":26,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER1":"off","POWER2":"off","POWER3":"off","POWER4":"off","Wifi":{"AP":2,"SSId":"DianaTroy","BSSId":"E0:28:6D:2A:CE:D0","Channel":1,"RSSI":98,"Signal":-51,"LinkCount":1,"Downtime":"0T00:00:03"}}
17:47:53 MQT: tele/TasmoServer/SENSOR = {"Time":"2020-11-30T17:47:53","DS18B20-1":{"Id":"020792457A66","Temperature":4.2},"DS18B20-2":{"Id":"020C9245D538","Temperature":4.3},"TempUnit":"C"}


Meine ReadingList sieht jetzt so aus:

tele/TasmoServer/INFO.:.* { json2nameValue($EVENT) }

tele/TasmoServer/SENSOR:.* { my %ret; while ($EVENT =~ /.Id...([A-F0-9]{12})...Temperature..([-]?[\d]+\.[\d]+)./g) { $ret{"Temperatur_".$1}=$2; }; return \%ret; }

tele/TasmoServer//RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }


Jetzt werden die Paare ID/Temperatur angezeigt!

Temperatur_020792457A66
4.1
2020-11-30 18:02:53
Temperatur_020C9245D538
4.2
2020-11-30 18:02:53


Ich habe noch die erste und dritte Zeile entfernt, um zu sehen ob sich was ändert  - die Readinglist besteht jetzt nur noch aus der modifizierten Zeile.

tele/TasmoServer/SENSOR:.* { my %ret; while ($EVENT =~ /.Id...([A-F0-9]{12})...Temperature..([-]?[\d]+\.[\d]+)./g) { $ret{"Temperatur_".$1}=$2; }; return \%ret; }

Müssten jetzt weniger Readings angezeigt werden? (Werden sie nicht). Hier einmal die Übersicht:

DS18B20-1_Id
020792457A66
2020-11-30 17:17:53
DS18B20-1_Temperature
3.9
2020-11-30 17:17:53
DS18B20-2_Id
020C9245D538
2020-11-30 17:17:53
DS18B20-2_Temperature
4.1
2020-11-30 17:17:53
Heap
26
2020-11-30 17:17:53
LoadAvg
19
2020-11-30 17:17:53
MqttCount
1
2020-11-30 17:17:53
POWER2
off
2020-11-30 17:17:53
Sleep
50
2020-11-30 17:17:53
SleepMode
Dynamic
2020-11-30 17:17:53
TempUnit
C
2020-11-30 17:17:53
Temperatur_020792457A66
4.1
2020-11-30 18:02:53
Temperatur_020C9245D538
4.2
2020-11-30 18:02:53
Time
2020-11-30T17:17:53
2020-11-30 17:17:53
Uptime
0T01:20:09
2020-11-30 17:17:53
UptimeSec
4809
2020-11-30 17:17:53
Wifi_AP
2
2020-11-30 17:17:53
Wifi_BSSId
E0:28:6D:2A:CE:D0
2020-11-30 17:17:53
Wifi_Channel
1
2020-11-30 17:17:53
Wifi_Downtime
0T00:00:03
2020-11-30 17:17:53
Wifi_LinkCount
1
2020-11-30 17:17:53
Wifi_RSSI
100
2020-11-30 17:17:53
Wifi_SSId
DianaTroy
2020-11-30 17:17:53
Wifi_Signal
-50
2020-11-30 17:17:53
attrTemplateVersion
20200522 or prior
2020-11-30 17:19:25
subscriptions
cmnd/TasmoServer/# cmnd/TasmoServer_fb/# cmnd/tasmotas/#
2020-11-30 17:17:06
Titel: Antw:Tasmota->MQTT2->Fhem Readingsproxy liefert falschen State
Beitrag von: Beta-User am 30 November 2020, 18:04:03
Na ja, da passen auch ein paar Dinge nur bedingt aufeinander...

Zumindest die letzte Zeile sollte eher so aussehen:
stat/TasmoServer/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }

Und Readings sieht man ggf. erst nachdem man die Seite refresht hat?
Titel: Antw:Tasmota->MQTT2->Fhem Readingsproxy liefert falschen State
Beitrag von: BorisKsoll am 30 November 2020, 18:08:29
Sorry, ich war gerade noch dabei, meinen Beitrag zu editieren. Sie tauchen jetzt wohlbehalten in den Readings auf.

Ich würde jetzt etwas "aufräumen" - also auch bei den Relais die unnötigen Readings löschen. Da werde ich wohl etwas trial and error austesten ;-)

Titel: Antw:Tasmota->MQTT2->Fhem Readingsproxy liefert falschen State
Beitrag von: BorisKsoll am 30 November 2020, 18:15:23
Super:

define Wohnzimmertemperatur ReadingsProxy TasmoServerSensoren:Temperatur_020792457A66

funktioniert jetzt. Ich bin glücklich ;-)

Vielen Dank für die Hilfe!