Moin zusammen,
hab hier einen Sonoff Basic mit DS18B20 Temperatursensor. Funktioniert auch soweit, aber die Readings werden nicht vereinzelt. Als Ergebnis erhalte ich nur SENSOR. Möchte gerne measured-temp als einzelnes Reading. Modul expandJSON ist eingebunden und wie folgt definiert.
Hier das List von meinem Sonoff Basic.
Internals:
CHANGED
IODev myBroker
NAME SO_BASIC_01_dht
NR 317
STATE off
TYPE MQTT_DEVICE
OLDREADINGS:
READINGS:
2018-03-20 10:19:13 SENSOR {"Time":"2018.03.20 10:19:12","DS18B20":{"Temperature":4.6},"TempUnit":"C"}
2018-03-20 10:19:13 measured-temp -99.00
2018-03-20 09:30:38 state OFF
2018-03-20 10:19:13 transmission-state incoming publish received
message_ids:
publishSets:
:
topic fhem/Testroom/SO_BASIC_01/cmnd/power
values:
on
off
sets:
off
on
subscribe:
fhem/Testroom/SO_BASIC_01/tele/SENSOR
fhem/Testroom/SO_BASIC_01/stat/POWER
subscribeExpr:
^fhem\/Testroom\/SO_BASIC_01\/tele\/SENSOR$
^fhem\/Testroom\/SO_BASIC_01\/stat\/POWER$
subscribeReadings:
fhem/Testroom/SO_BASIC_01/stat/POWER:
cmd
name state
fhem/Testroom/SO_BASIC_01/tele/SENSOR:
cmd
name SENSOR
Attributes:
IODev myBroker
comment 192.168.10.102
event-on-change-reading state,subscribeReading_SENSOR
eventMap ON:on OFF:off
publishSet on off fhem/Testroom/SO_BASIC_01/cmnd/power
room MQTT
stateFormat state
subscribeReading_SENSOR fhem/Testroom/SO_BASIC_01/tele/SENSOR
subscribeReading_state fhem/Testroom/SO_BASIC_01/stat/POWER
userReadings measured-temp {sprintf("%.2f",ReadingsVal("SO_BASIC_01_dht","temperature",-99))}
verbose 1
webCmd on:off:toggle
Und hier das List vom EXPANDJSON
Internals:
DEF SO.*:SENSOR.*:.{.*} (Temperature)
NAME ej3
NR 319
NTFY_ORDER 50-ej3
STATE active
TYPE expandJSON
s_regexp SO.*:SENSOR.*:.{.*}
t_regexp (Temperature)
version 1.12
READINGS:
2018-03-20 08:10:23 state active
helper:
addReadingsPrefix 1
Attributes:
addReadingsPrefix 1
room MQTT
Wozu schreibt Dein Sonoff soviel?
Ich habe diesen Sensor an einem ESP32 und lasse nur die Temperatur übertragen.
Internals:
IODev MQTTBroker
NAME mqtt_AQ_Temperatur
NR 630
STATE 25.25 °C
TYPE MQTT_DEVICE
Helper:
DBLOG:
Temperatur:
logdb:
TIME 1521540510.9874
VALUE 25.25
READINGS:
2018-03-20 11:08:30 Temperatur 25.25
2018-03-20 11:08:30 transmission-state incoming publish received
message_ids:
sets:
subscribe:
Aquarium/Temperatur
subscribeExpr:
^Aquarium\/Temperatur$
subscribeReadings:
Aquarium/Temperatur:
cmd
name Temperatur
Attributes:
IODev MQTTBroker
room Aquarium,Test
stateFormat Temperatur °C
subscribeReading_Temperatur Aquarium/Temperatur
Zitat von: rabehd am 20 März 2018, 11:13:37
Wozu schreibt Dein Sonoff soviel?
Ich habe diesen Sensor an einem ESP32 und lasse nur die Temperatur
Das scheint wohl die Ausgabe der Tasmota Firmware auf POWER zu sein.
Tasmota Version 5.11.1j
Build-Datum & -Uhrzeit 2018.03.15 00:13:59
Core-/SDK-Version 2_4_0/2.1.0 (deb1901)
Userreadings?
mit dem Teilstring von SENSOR
Zitat von: rabehd am 20 März 2018, 13:00:32
Userreadings?
mit dem Teilstring von SENSOR
Ich war davon ausgegangen, dass expandJSON die Temperatur als Einzelwertung bereistellt.
https://forum.fhem.de/index.php?topic=79978.0 (https://forum.fhem.de/index.php?topic=79978.0) hilft nicht?
Zitat von: rabehd am 20 März 2018, 13:22:40
https://forum.fhem.de/index.php?topic=79978.0 (https://forum.fhem.de/index.php?topic=79978.0) hilft nicht?
Danke für den Tipp. Hat aber leider nichts geholfen. Habe das mal komplett so nachgebaut.
Internals:
CHANGED
IODev myBroker
NAME SO_BASIC_01_TEMP
NR 320
STATE -99.00
TYPE MQTT_DEVICE
READINGS:
2018-03-20 22:10:26 SENSOR {"Time":"2018.03.20 22:10:25","DS18B20":{"Temperature":-0.6},"TempUnit":"C"}
2018-03-20 22:10:26 transmission-state incoming publish received
message_ids:
sets:
subscribe:
fhem/Testroom/SO_BASIC_01/tele/SENSOR
subscribeExpr:
^fhem\/Testroom\/SO_BASIC_01\/tele\/SENSOR$
subscribeReadings:
fhem/Testroom/SO_BASIC_01/tele/SENSOR:
cmd
name SENSOR
Attributes:
IODev myBroker
comment 192.168.10.102
event-on-change-reading state
room MQTT
stateFormat {sprintf("%.2f",ReadingsVal($name,"DS18B20_Temperature",-99))}
subscribeReading_SENSOR fhem/Testroom/SO_BASIC_01/tele/SENSOR
verbose 1
Internals:
DEF SO.*:.*:.{.*}
NAME ej3
NOTIFYDEV SO.*
NR 319
NTFY_ORDER 50-ej3
STATE active
TYPE expandJSON
s_regexp SO.*:.*:.{.*}
t_regexp .*
version 1.12
READINGS:
2018-03-20 21:44:53 state active
helper:
addReadingsPrefix 1
Attributes:
addReadingsPrefix 1
room MQTT
Hat vielleicht noch jemand eine Idee? Anscheinend zerlegt expandJSON geschachtelte MQTT Strings nicht. Komme hier einfach nicht weiter.
{"Time":"2018-03-29T23:24:09","ENERGY":{"Total":0.184,"Yesterday":0.000,"Today":0.185,"Period":0,"Power":3,"Factor":0.25,"Voltage":232,"Current":0.049}}
Ich habe dafür das 10_tasmota_device.pm Modul von https://github.com/klein0r/fhem-tasmota (https://github.com/klein0r/fhem-tasmota) genommen. Die Readings werden damit automatisch angelegt, expandJSON ist nicht erforderlich.
Ein Video zu diesem Modul gibt es unter https://haus-automatisierung.com/hardware/sonoff/2017/12/20/sonoff-vorstellung-part-9.html (https://haus-automatisierung.com/hardware/sonoff/2017/12/20/sonoff-vorstellung-part-9.html)
Zitat von: berbar am 20 März 2018, 22:17:24
event-on-change-reading state
Damit löst das Reading SENOSR kein Event aus. Ohne Events wird auch nichts verarbeitet, egal ob notify, expandJSON, ... oder sonst etwas.
Zitat von: dev0 am 30 März 2018, 09:26:29
Damit löst das Reading SENOSR kein Event aus. Ohne Events wird auch nichts verarbeitet, egal ob notify, expandJSON, ... oder sonst etwas.
Warum bekomme ich die Temperatur nicht als einzelnes Reading? Time und TempUnit funktionieren ja.
Internals:
DEF SON_BA_01_T:Sensor:.{.*} (Time|Temperature|TempUnit)
NAME ej3
NR 319
NTFY_ORDER 50-ej3
STATE active
TYPE expandJSON
s_regexp SON_BA_01_T:Sensor:.{.*}
t_regexp (Time|Temperature|TempUnit)
version 1.12
READINGS:
2018-03-30 16:19:28 state active
helper:
Attributes:
disable 0
room MQTT
verbose 3
Lass die target regex mal weg.
Zitat von: dev0 am 30 März 2018, 19:19:45
Lass die target regex mal weg.
Jetzt geht's.
Danke!
Für die Nachwelt: Wenn die target regex benutzt wird, dann müssen die Readings so angegeben werden wie sie auch angelegt werden.