Hallo,
ich habe hier ein Gerät mit Tasmota 6.2.1.14 geflasht, ei dem ein DS18B20 verbaut ist.
Auf der Web-Page wird die richtige Temperatur angezeigt.
In den Readings erscheint auch
TempTas
{"Time":"2018-10-12T19:03:14","DS18B20":{"Temperature":26.4},"TempUnit":"C"}
Aber in meinen STATE wird immer 0.0 angezeigt :-(
Hier meine Definition
defmod TestTasmota MQTT_DEVICE
attr TestTasmota IODev Mosquitto
attr TestTasmota room 98_Test
attr TestTasmota stateFormat {sprintf("Temperatur: %.1f Grad", ReadingsVal($name,"temperature",0))}
attr TestTasmota subscribeReading_TempTas tele/sonoff/SENSOR
setstate TestTasmota Temperatur: 0.0 Grad
setstate TestTasmota 2018-10-12 20:03:14 TempTas {"Time":"2018-10-12T19:03:14","DS18B20":{"Temperature":26.4},"TempUnit":"C"}
setstate TestTasmota 2018-10-12 20:03:14 transmission-state incoming publish received
Was mache ich falsch?
Danke für Eure Hilfe...
Hallo ersthelfer,
gibt es denn ein reading "temperature"? Wenn nicht, dann wird der Ersatzwert genommen, den du als "0" definiert hast.
Viele Grüße Gisbert
als Reading habe ich TempTas.
Aber ich habe keine Ahnung, wie ich die Syntax jetzt aufbauen muss.
Bei einen Easy ESP geräten kommt immer direkt die Temparatur zurück und nicht wie hier ein String, den ich noch irgendwie zerlegen muss
Hallo ersthelfer,
ich hänge mal ein list meines Devices ("Heizung") und die raw-Definition an, auf dem auch Tasmota läuft.
Vielleicht findest du dort noch die ein oder andere Anregung.
In deinem Fall müsste dann das richtig sein:
attr TestTasmota stateFormat {sprintf("Temperatur: %.1f Grad", ReadingsVal($name,"TemTas",0))}
Das setzt voraus, dass ein Reading "TempTas" vorhanden ist.
Falls nicht, dann setze das folgende Attribut, damit werden alle Sendungen des Devices subskribiert:
autoSubscribeReadings +/Heizung/+
- wobei bei mir das MQTT-Topic in Tasmota "Heizung" lautet.
list "Heizung":
Internals:
.autoSubscribeExpr ^[^/]+\/Heizung\/([^/]+)$
.autoSubscribeTopic +/Heizung/+
.lastTimeDS18B20-1_Id 1540645048.78619
.lastTimeDS18B20-1_Temperature 1540645048.78619
.lastTimeDS18B20-2_Id 1540645048.78619
.lastTimeDS18B20-2_Temperature 1540645048.78619
.lastTimeDS18B20-3_Id 1540645048.78619
.lastTimeDS18B20-3_Temperature 1540645048.78619
.lastTimeDS18B20-4_Id 1540645048.78619
.lastTimeDS18B20-4_Temperature 1540645048.78619
.lastTimeHeizung.Ruecklauf 1540645048.6821
.lastTimeHeizung.Spreizung 1540645048.6821
.lastTimeHeizung.Vorlauf 1540645048.6821
.lastTimeLWT 1540637121.098
.lastTimePOWER1 1540645048.73335
.lastTimePOWER2 1540645048.73335
.lastTimePumpe 1540645048.6821
.lastTimeRESULT 1540642534.41355
.lastTimeSENSOR 1540645048.76364
.lastTimeSTATE 1540645048.71147
.lastTimeSystem.Info 1540645048.6821
.lastTimeTempUnit 1540645048.78619
.lastTimeTime 1540645048.73335
.lastTimeUPTIME 1540642559.67874
.lastTimeUptime 1540645048.73335
.lastTimeVcc 1540645048.73335
.lastTimeWarmwasseraustritt 1540645048.6821
.lastTimeWarmwasserpumpe 1540645048.6821
.lastTimeWarmwasserspeicher 1540645048.6821
.lastTimeWifi_AP 1540645048.73335
.lastTimeWifi_APMac 1540645048.73335
.lastTimeWifi_RSSI 1540645048.73335
.lastTimeWifi_SSId 1540645048.73335
.lastTimeZeitstempel 1540645048.6821
.lastTimetransmission-state 1540645048.6821
CFGFN ./FHEM/HeizungWarmwasser.cfg
IODev MyBroker
NAME Heizung
NR 408
STATE <span style='color:#000000'>Speicherpumpe: aus</span><br/>Speicher: 54.1°C<br/>Leitung: 51.8°C<br/>Vorlauf: 25.3°C<br/>Rücklauf: 23.6°C<br/>Spreizung: 1.7°C<br/>Betrieb: 10123 min<br/>RSSI: 28%<br/>2018-10-27 14:57
TYPE MQTT_DEVICE
.attraggr:
.attrminint:
.*:110
.qos:
* 0
.retain:
* 0
.userReadings:
HASH(0x4856348)
HASH(0x485a4e8)
HASH(0x485a578)
HASH(0x485a620)
HASH(0x485a680)
HASH(0x485a740)
HASH(0x485a7d0)
HASH(0x485a860)
HASH(0x485a8f0)
READINGS:
2018-10-27 14:57:28 DS18B20-1_Id 00000758CE9A
2018-10-27 14:57:28 DS18B20-1_Temperature 23.62
2018-10-27 14:57:28 DS18B20-2_Id 02160148D6EE
2018-10-27 14:57:28 DS18B20-2_Temperature 51.81
2018-10-27 14:57:28 DS18B20-3_Id 0216015DC7EE
2018-10-27 14:57:28 DS18B20-3_Temperature 54.13
2018-10-27 14:57:28 DS18B20-4_Id 03160508A1FF
2018-10-27 14:57:28 DS18B20-4_Temperature 25.31
2018-10-27 14:57:28 Heizung.Ruecklauf 23.6
2018-10-27 14:57:28 Heizung.Spreizung 1.7
2018-10-27 14:57:28 Heizung.Vorlauf 25.3
2018-10-20 14:14:03 INFO1 {"Module":"Sonoff Dual","Version":"6.2.1","FallbackTopic":"Heizung_2A9659","GroupTopic":"sonoffs"}
2018-10-20 14:14:03 INFO2 {"WebServerMode":"Admin","Hostname":"Heizung-5721","IPAddress":"192.168.2.18"}
2018-10-20 14:14:03 INFO3 {"RestartReason":"Power on"}
2018-10-27 12:45:21 LWT Online
2018-10-20 14:14:03 POWER
2018-10-27 14:57:28 POWER1 OFF
2018-10-27 14:57:28 POWER2 OFF
2018-10-27 14:57:28 Pumpe 1
2018-10-27 14:15:34 RESULT {"POWER1":"OFF"}
2018-10-27 14:57:28 SENSOR {"Time":"1970-01-08T00:43:29","DS18B20-1":{"Id":"00000758CE9A","Temperature":23.62},"DS18B20-2":{"Id":"02160148D6EE","Temperature":51.81},"DS18B20-3":{"Id":"0216015DC7EE","Temperature":54.13},"DS18B20-4":{"Id":"03160508A1FF","Temperature":25.31},"TempUnit":"C"}
2018-10-27 14:57:28 STATE {"Time":"1970-01-08T00:43:29","Uptime":"7T00:42:16","Vcc":3.226,"POWER1":"OFF","POWER2":"OFF","Wifi":{"AP":1,"SSId":"IoTSenham","RSSI":28,"APMac":"FE:EC:DA:87:88:E6"}}
2018-10-27 14:57:28 System.Info 10123
2018-10-27 14:57:28 TempUnit C
2018-10-27 14:57:28 Time 1970-01-08T00:43:29
2018-10-27 14:15:59 UPTIME {"Time":"1970-01-08T00:02:00","Uptime":"7T00:00:47"}
2018-10-27 14:57:28 Uptime 7T00:42:16
2018-10-27 14:57:28 Vcc 3.226
2018-10-27 14:57:28 Warmwasseraustritt 51.8
2018-10-27 14:57:28 Warmwasserpumpe <span style='color:#000000'>Speicherpumpe: aus</span>
2018-10-27 14:57:28 Warmwasserspeicher 54.1
2018-10-27 14:57:28 Wifi_AP 1
2018-10-27 14:57:28 Wifi_APMac FE:EC:DA:87:88:E6
2018-10-27 14:57:28 Wifi_RSSI 28
2018-10-27 14:57:28 Wifi_SSId IoTSenham
2018-10-27 14:57:28 Zeitstempel 2018-10-27 14:57
2018-10-27 14:57:28 transmission-state incoming publish received
helper:
bm:
MQTT::DEVICE::Attr:
cnt 1
dmx -1000
dtot 0
dtotcnt 0
mTS 27.10. 12:47:20
max 0.00529193878173828
tot 0.00529193878173828
mAr:
set
Heizung
subscribeReading_POWER1
cmnd/Heizung/POWER1
MQTT::DEVICE::Set:
cnt 346
dmx -1000
dtot 0
dtotcnt 0
mTS 27.10. 12:47:20
max 0.0640430450439453
tot 0.316527843475342
mAr:
HASH(0x4857340)
Heizung
POWER1
off
message_ids:
publishSets:
POWER1:
topic cmnd/Heizung/POWER1
values:
ON
OFF
POWER2:
topic cmnd/Heizung/POWER2
values:
ON
OFF
sets:
POWER1 ON,OFF
POWER2 ON,OFF
subscribe:
+/Heizung/+
tele/Heizung/INFO1
tele/Heizung/INFO2
tele/Heizung/INFO3
tele/Heizung/LWT
cmnd/Heizung/POWER
stat/Heizung/POWER1
stat/Heizung/POWER2
stat/Heizung/RESULT
tele/Heizung/SENSOR
tele/Heizung/STATE
tele/Heizung/UPTIME
cmnd/Heizung/POWER1
subscribeExpr:
^[^/]+\/Heizung\/([^/]+)$
^tele\/Heizung\/INFO1$
^tele\/Heizung\/INFO2$
^tele\/Heizung\/INFO3$
^tele\/Heizung\/LWT$
^cmnd\/Heizung\/POWER$
^stat\/Heizung\/POWER1$
^stat\/Heizung\/POWER2$
^stat\/Heizung\/RESULT$
^tele\/Heizung\/SENSOR$
^tele\/Heizung\/STATE$
^tele\/Heizung\/UPTIME$
^cmnd\/Heizung\/POWER1$
subscribeQos:
+/Heizung/+
cmnd/Heizung/POWER 0
cmnd/Heizung/POWER1 0
stat/Heizung/POWER1 0
stat/Heizung/POWER2 0
stat/Heizung/RESULT 0
tele/Heizung/INFO1 0
tele/Heizung/INFO2 0
tele/Heizung/INFO3 0
tele/Heizung/LWT 0
tele/Heizung/SENSOR 0
tele/Heizung/STATE 0
tele/Heizung/UPTIME 0
subscribeReadings:
cmnd/Heizung/POWER:
cmd
name POWER
cmnd/Heizung/POWER1:
cmd
name POWER1
stat/Heizung/POWER1:
cmd
name POWER1
stat/Heizung/POWER2:
cmd
name POWER2
stat/Heizung/RESULT:
cmd
name RESULT
tele/Heizung/INFO1:
cmd
name INFO1
tele/Heizung/INFO2:
cmd
name INFO2
tele/Heizung/INFO3:
cmd
name INFO3
tele/Heizung/LWT:
cmd
name LWT
tele/Heizung/SENSOR:
cmd
name SENSOR
tele/Heizung/STATE:
cmd
name STATE
tele/Heizung/UPTIME:
cmd
name UPTIME
Attributes:
IODev MyBroker
autoSubscribeReadings +/Heizung/+
event-min-interval .*:110
icon sani_buffer_temp_all
publishSet_POWER1 ON OFF cmnd/Heizung/POWER1
publishSet_POWER2 ON OFF cmnd/Heizung/POWER2
room Heizung,Mobile
stateFormat Warmwasserpumpe<br/>Speicher: Warmwasserspeicher°C<br/>Leitung: Warmwasseraustritt°C<br/>Vorlauf: Heizung.Vorlauf°C<br/>Rücklauf: Heizung.Ruecklauf°C<br/>Spreizung: Heizung.Spreizung°C<br/>Betrieb: System.Info min<br/>RSSI: Wifi_RSSI%<br/>Zeitstempel
subscribeReading_INFO1 tele/Heizung/INFO1
subscribeReading_INFO2 tele/Heizung/INFO2
subscribeReading_INFO3 tele/Heizung/INFO3
subscribeReading_LWT tele/Heizung/LWT
subscribeReading_POWER cmnd/Heizung/POWER
subscribeReading_POWER1 cmnd/Heizung/POWER1
subscribeReading_POWER2 stat/Heizung/POWER2
subscribeReading_RESULT stat/Heizung/RESULT
subscribeReading_SENSOR tele/Heizung/SENSOR
subscribeReading_STATE tele/Heizung/STATE
subscribeReading_UPTIME tele/Heizung/UPTIME
userReadings Warmwasseraustritt {sprintf('%.1f', ReadingsVal($name,'DS18B20-2_Temperature',''))},
Warmwasserspeicher {sprintf('%.1f', ReadingsVal($name,'DS18B20-3_Temperature',''))},
Warmwasserpumpe {(ReadingsVal($name,'POWER1','') eq "OFF") ? "<span style='color:#000000'>Speicherpumpe: aus</span>":"<span style='color:#FF0000'>Speicherpumpe: an</span>"},
Pumpe {(ReadingsVal($name,'POWER1','') eq "OFF") ? "1":"0"},
Heizung.Vorlauf {sprintf('%.1f', ReadingsVal($name,'DS18B20-4_Temperature',''))},
Heizung.Ruecklauf {sprintf('%.1f', ReadingsVal($name,'DS18B20-1_Temperature',''))},
Heizung.Spreizung {sprintf('%.1f', ReadingsVal($name,'Heizung.Vorlauf','')-ReadingsVal($name,'Heizung.Ruecklauf',''))},
Zeitstempel {substr(ReadingsTimestamp($name,'STATE',''),0,16)},
System.Info {sprintf('%.0f',(time_str2num(ReadingsVal($name,'Time','')) + 3600) / 60)}
raw-Defintion:
defmod Heizung MQTT_DEVICE
attr Heizung IODev MyBroker
attr Heizung autoSubscribeReadings +/Heizung/+
attr Heizung event-min-interval .*:110
attr Heizung icon sani_buffer_temp_all
attr Heizung publishSet_POWER1 ON OFF cmnd/Heizung/POWER1
attr Heizung publishSet_POWER2 ON OFF cmnd/Heizung/POWER2
attr Heizung room Heizung,Mobile
attr Heizung stateFormat Warmwasserpumpe<br/>Speicher: Warmwasserspeicher°C<br/>Leitung: Warmwasseraustritt°C<br/>Vorlauf: Heizung.Vorlauf°C<br/>Rücklauf: Heizung.Ruecklauf°C<br/>Spreizung: Heizung.Spreizung°C<br/>Betrieb: System.Info min<br/>RSSI: Wifi_RSSI%<br/>Zeitstempel
attr Heizung subscribeReading_INFO1 tele/Heizung/INFO1
attr Heizung subscribeReading_INFO2 tele/Heizung/INFO2
attr Heizung subscribeReading_INFO3 tele/Heizung/INFO3
attr Heizung subscribeReading_LWT tele/Heizung/LWT
attr Heizung subscribeReading_POWER cmnd/Heizung/POWER
attr Heizung subscribeReading_POWER1 cmnd/Heizung/POWER1
attr Heizung subscribeReading_POWER2 stat/Heizung/POWER2
attr Heizung subscribeReading_RESULT stat/Heizung/RESULT
attr Heizung subscribeReading_SENSOR tele/Heizung/SENSOR
attr Heizung subscribeReading_STATE tele/Heizung/STATE
attr Heizung subscribeReading_UPTIME tele/Heizung/UPTIME
attr Heizung userReadings Warmwasseraustritt {sprintf('%.1f', ReadingsVal($name,'DS18B20-2_Temperature',''))}, \
Warmwasserspeicher {sprintf('%.1f', ReadingsVal($name,'DS18B20-3_Temperature',''))}, \
Warmwasserpumpe {(ReadingsVal($name,'POWER1','') eq "OFF") ? "<span style='color:#000000'>Speicherpumpe: aus</span>":"<span style='color:#FF0000'>Speicherpumpe: an</span>"}, \
Pumpe {(ReadingsVal($name,'POWER1','') eq "OFF") ? "1":"0"}, \
Heizung.Vorlauf {sprintf('%.1f', ReadingsVal($name,'DS18B20-4_Temperature',''))}, \
Heizung.Ruecklauf {sprintf('%.1f', ReadingsVal($name,'DS18B20-1_Temperature',''))}, \
Heizung.Spreizung {sprintf('%.1f', ReadingsVal($name,'Heizung.Vorlauf','')-ReadingsVal($name,'Heizung.Ruecklauf',''))}, \
Zeitstempel {substr(ReadingsTimestamp($name,'STATE',''),0,16)}, \
System.Info {sprintf('%.0f',(time_str2num(ReadingsVal($name,'Time','')) + 3600) / 60)}
Viele Grüße Gisbert
Hallo und erstmal danke für die Antworten.
Ich habe das jetzt so abgeändert:
defmod TestTasmota MQTT_DEVICE
attr TestTasmota IODev Mosquitto
attr TestTasmota room 98_Test
attr TestTasmota stateFormat {sprintf("Temperatur: %.1f Grad", ReadingsVal($name,"TempTas",0))}
attr TestTasmota subscribeReading_TempTas tele/sonoff/SENSOR
setstate TestTasmota Temperatur: 0.0 Grad
setstate TestTasmota 2018-10-27 17:45:16 TempTas {"Time":"2018-10-27T16:45:16","DS18B20":{"Temperature":23.8},"TempUnit":"C"}
setstate TestTasmota 2018-10-27 17:45:16 transmission-state incoming publish received
Aber es wird immer noch 0.0 angezeigt.
Ich frage mich, wie der String denn hier durchsucht wird.
Irgendwo muss ich doch bestimmt einen Teilstring eintragen, damit FHEM weis wo denn genau die Temperatur steht ?!?!
Ich habe mich an dieses Beispiel hier gehalten:
https://wiki.fhem.de/wiki/Sonoff (https://wiki.fhem.de/wiki/Sonoff)
Aber das scheint auch nicht richtig zu funktionieren :(
Hallo ersthelfer,
diese Definition zerpflückt die Bandwürmer an Readings in Einzelteile, Stichwort JSON, mehr weiß ich allerdings auch nicht.
define ej3 expandJSON .*:TempTas:.{.*}
Damit wird das Readings "TempTas" zerlegt.
Wenn du es für alle Devices und alle Readings haben willst, dann müsste es wahrscheinlich so aussehen (ungestest); ich würde das aber nicht machen, da dann alle Readings in allen Devices, die so aufgebaut sind, in Einzelteile zerlegt werden:
define ej3 expandJSON .*:.*:.{.*}
Dann musst du schauen, wie dein neues Reading heißt, vermutlich "TempTas_DS18B20_Temperature", da bin ich mir allerdings nicht ganz sicher.
Es würde mich interessieren, ob es wie vorgschlagen klappt.
Viele Grüße Gisbert
Hat geklappt, wie Du beschrieben hast ;D
Super, danke....