Hallo!
Das Attribut "jsonMap" stellt mich (wieder einmal) vor Rätsel:
Ich habe ein Device SML_Reader, das mit dieser readingList-Definition:
DL/SML_Reader/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }
folgende Werte liefert:
LK13BE_Amperage_L1_curr 1.09 2024-05-23 17:09:08
LK13BE_Amperage_L2_curr 0.39 2024-05-23 17:09:08
LK13BE_Amperage_L3_curr 0.22 2024-05-23 17:09:08
LK13BE_HZ 50.00 2024-05-23 17:09:08
LK13BE_Power_L1_curr 183 2024-05-23 17:09:08
LK13BE_Power_L2_curr 47 2024-05-23 17:09:08
LK13BE_Power_L3_curr 33 2024-05-23 17:09:08
LK13BE_Power_curr 282 2024-05-23 17:09:08
LK13BE_Power_total_in 5470.9 2024-05-23 17:09:08
LK13BE_Power_total_out 0.0 2024-05-23 17:09:08
LK13BE_Volt_L1_curr 236.4 2024-05-23 17:09:08
LK13BE_Volt_L2_curr 238.3 2024-05-23 17:09:08
LK13BE_Volt_L3_curr 236.0 2024-05-23 17:09:08
LK13BE_phase_angle_l2_l1 241.5 2024-05-23 17:09:08
LK13BE_phase_angle_l3_l1 119.5 2024-05-23 17:09:08
LK13BE_phase_angle_p1 337.8 2024-05-23 17:09:08
LK13BE_phase_angle_p2 309.3 2024-05-23 17:09:08
LK13BE_phase_angle_p3 335.4 2024-05-23 17:09:08
Time 2024-05-23T17:09:08 2024-05-23 17:09:08
phase1 201 2024-05-23 17:09:08
Das versuche ich einzuschränken mit dem Attribut für "jsonMap"
LK13BE_Power_L1_curr:pwr1 LK13BE_Power_L2_curr:pwr2 LK13BE_Power_L3_curr:pwr3
Das klappt auch; es erscheinen jetzt nur folgende Readings:
pwr1 193 2024-05-23 18:23:08
pwr2 19 2024-05-23 18:23:08
pwr3 39 2024-05-23 18:23:08
Aber wenn ich folgende Definition des Attributes "jsonMap"
LK13BE_Power_L1_curr:pwr1 \
LK13BE_Power_L2_curr:pwr2 \
LK13BE_Power_L3_curr:pwr3
verwende, fehlt das Reading für L2; es wird nur folgendes ausgegeben:
pwr1 206 2024-05-23 18:27:08
pwr3 120 2024-05-23 18:27:08
Was passiert da, das ich nicht verstehe?
Gruß
Wolfgang
ZitatAber wenn ich folgende Definition des Attributes "jsonMap"
LK13BE_Power_L1_curr:pwr1 \
LK13BE_Power_L2_curr:pwr2 \
LK13BE_Power_L3_curr:pwr3
Hallo,
die Hilfe sagt:
Zitatspace or newline separated list of oldReading:newReading pairs.
Beides kombinieren (Leerzeichen und newline), wie Du es machst, geht nicht. Kann ich bei mir nachvollziehen.
Gruß
Thomas
OK, danke Thomas.
Habe die "Spaces" entfernt und erhalte jetzt folgendes Bild:
pwr1_ 499 2024-05-23 19:09:08
pwr2_ 19 2024-05-23 19:09:08
pwr3 173 2024-05-23 19:09:08
Es erscheinen jetzt tatsächlich 3 Einträge.
Allerdings enthalten die beiden ersten am Ende noch ein UnderScore-Zeichen!???
Ganz schön zickig, das FHEM das!
Fehler-Toleranz gleich Null, was Spaces etc. anbelangt...
Gruß
Wolfgang
ZitatGanz schön zickig, das FHEM das!
Du nimmst Änderungen an der fhem.cfg vor, nur so kann ich mir deine gezeigte Definition erklären und darum das zickige Verhalten. Über
attr jsonMap im Device hättest das gar nicht ohne weiteres im Attribut eingetragen bekommen.
ZitatAllerdings enthalten die beiden ersten am Ende noch ein UnderScore-Zeichen!???
Zeig halt jetzt mal ein
komplettes List, mit dem besagten, vermuteten Hintergrund ist der Spielraum für Spekulationen sehr groß.
ZitatDu nimmst Änderungen an der fhem.cfg vor, nur so kann ich mir deine gezeigte Definition erklären und darum das zickige Verhalten. Über attr jsonMap im Device hättest das gar nicht ohne weiteres im Attribut eingetragen bekommen.
Da irrst Du! Alle Änderungen bzw. Einträge habe ich innerhalb der Web-Oberfläche vorgenommen!!!
ZitatZeig halt jetzt mal ein komplettes List, mit dem besagten, vermuteten Hintergrund ist der Spielraum für Spekulationen sehr groß.
Ok, hier schau:
[code]define SML_Reader MQTT2_DEVICE
attr SML_Reader icon virtualbox-alt
attr SML_Reader jsonMap LK13BE_Power_L1_curr:pwr1\\
LK13BE_Power_L2_curr:pwr2\\
LK13BE_Power_L3_curr:pwr3
attr SML_Reader readingList DL/SML_Reader/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP,,'pwr') }
attr SML_Reader room EnergieRaum
attr SML_Reader stateFormat {\
"Energy: "\
.ReadingsVal($name,"LK13BE_Power_total_in",0)." kWh"\
.", Power: "\
.ReadingsVal($name,"LK13BE_Power_curr",0)." ("\
\
.ReadingsVal($name,"pwr1",0).", "\
.ReadingsVal($name,"pwr2",0).", "\
.ReadingsVal($name,"pwr3",0).") W"\
}
# FUUID 65c4e698-f33f-c887-3ca9-a7c9eda7e499a557
# IODev mqt_w10
# LASTInputDev mqt_w10
# MSGCNT 13666
# NAME SML_Reader
# NR 743
# STATE Energy: 0 kWh, Power: 0 (0, 0, 39) W
# TYPE MQTT2_DEVICE
# eventCount 13666
# mqt_w10_MSGCNT 13666
# mqt_w10_TIME 2024-05-23 19:56:07
# JSONMAP:
# LK13BE_Power_L1_curr pwr1\
# LK13BE_Power_L2_curr pwr2\
# LK13BE_Power_L3_curr pwr3
# OLDREADINGS:
# READINGS:
# 2024-05-23 19:56:07 pwr1_ 505
# 2024-05-23 19:56:07 pwr2_ 102
# 2024-05-23 19:56:07 pwr3 39
#
setstate SML_Reader Energy: 0 kWh, Power: 0 (0, 0, 39) W
setstate SML_Reader 2024-05-23 19:56:07 pwr1_ 505
setstate SML_Reader 2024-05-23 19:56:07 pwr2_ 102
setstate SML_Reader 2024-05-23 19:56:07 pwr3 39
ZitatGanz schön zickig, das FHEM das!
Damit meinte ich, daß die Programmierer 'mal "ltrim", "rtrim" und "trim" hätten anwenden können...
Gruß
Wolfgang
attr SML_Reader jsonMap LK13BE_Power_L1_curr:pwr1\\
LK13BE_Power_L2_curr:pwr2\\
LK13BE_Power_L3_curr:pwr3
Wie hast das gemacht die zwei \ (newline) da hinzubekommen ? Über den "Raw-Editor" ?
ZitatWie hast das gemacht die zwei \ (newline) da hinzubekommen ? Über den "Raw-Editor" ?
Ok, alles klar; ich hatte von Hand im Editor des WebEnds die BackSlashes eingegeben. Jetzt habe ich sie mal weggemacht - und jetzt stimmt das Bild.
Das hake ich jetzt (für mich) unter dem Kapitel "zickig" ab; FHEm ist eben extrem gewöhnungsbedürftig hinsichtlich Leerzeichen, Kommata, Semikola, Slashes, und, und und.
Da könnte man dem unbedarften Benutzer etwas entgegengekommen: Trim (s.o.) einsetzen, "\\" -> "\" usw.
Ein hartes Brot ist da zu kauen...
Wolfgang