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
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
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...
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
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.
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
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?
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...
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?
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...
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?
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...)
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
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?
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 ;-)
Super:
define Wohnzimmertemperatur ReadingsProxy TasmoServerSensoren:Temperatur_020792457A66
funktioniert jetzt. Ich bin glücklich ;-)
Vielen Dank für die Hilfe!