Udo hat dir ja schon beschreiben, dass man in der Konfiguration (configuration.yaml), den Parameter
output ändern kann. Das geht entweder im Frontend oder mit einem Editor (nano) direkt in der "configuration.yaml". Ich habe hier beide Möglichkeiten gesetzt
attribute_and_json und kann nun sowohl einzelne Atribute oder auch JSON-Srings selektieren.
Hier mein SetUp für eine Schaltsteckdose in OH:
.things:
Code: Alles auswählen
Thing mqtt:topic:danny:tpspe202 "3R Plug E2 02" (mqtt:broker:danny ) @ "zigbee2mqtt"
[ availabilityTopic="zigbee2mqtt/tp_sp_e2_02/availability", transformationPattern="JSONPATH:$.state", payloadNotAvailable="offline", payloadAvailable= "online" ]
{
Channels:
Type switch : setget "3P E2 02 Ein/Aus" [ stateTopic="zigbee2mqtt/tp_sp_e2_02/state", commandTopic="zigbee2mqtt/trpe2_02/set/state", on="ON", off="OFF" ]
Type number : voltage "3P E2 02 Spannung" [ stateTopic="zigbee2mqtt/tp_sp_e2_02/voltage", unit="V" ]
Type string : poweron "3P E2 02 Power ON Behaveior" [ stateTopic="zigbee2mqtt/tp_sp_e2_02/power_on_behavior" ]
Type number : acfreq "3P E2 02 AC Frequenz" [ stateTopic="zigbee2mqtt/tp_sp_e2_02/ac_frequency", unit="Hz" ]
Type number : power "3P E2 02 Leistung" [ stateTopic="zigbee2mqtt/tp_sp_e2_02/power", unit="W" ]
Type number : powerfac "3P E2 02 Leistungsfaktor" [ stateTopic="zigbee2mqtt/tp_sp_e2_02/power_factor"]
Type number : energy "3P E2 02 Energie" [ stateTopic="zigbee2mqtt/tp_sp_e2_02/energy", unit="kWh" ]
Type number : current "3P E2 02 Verbrauch" [ stateTopic="zigbee2mqtt/tp_sp_e2_02/current", unit="A" ]
Type number : linkquality "3P E2 02 Empfangsstärke LQI" [ stateTopic="zigbee2mqtt/tp_sp_e2_02", transformationPattern="JSONPATH:$.linkquality", unit="lqi" ]
Type switch : reachable "3P E2 02 Reachable" [ stateTopic="zigbee2mqtt/tp_sp_e2_02/availability", transformationPattern="JSONPATH:$.state", on="online", off="offline" ]
}
und die entsprechenden Items dazu.
.items
Code: Alles auswählen
// Steckdose 3R E1 tpspe202
Group gtp_sp_e2_02 "Steckdose 3P E1 02" <gosundsp111> (gUG_Schlafen) ["PowerOutlet"]
Switch tp_sp_e2_02_switch "Steckdose 3P E1 02 [MAP(de.map):%s]" <light> (gtp_sp_e2_02, gT_OnOff) ["Switch"] { channel="mqtt:topic:danny:tpspe202:setget"}
Number:ElectricPotential tp_sp_e2_02_voltage "Steckdose 3P E1 02 Spannung [%.1f]" <light> (gtp_sp_e2_02) ["Voltage"] { channel="mqtt:topic:danny:tpspe202:voltage"}
String tp_sp_e2_02_poweron "Steckdose 3P E1 02 PowerOn" <gosundsp111> (gtp_sp_e2_02) ["Point"] { channel="mqtt:topic:danny:tpspe202:poweron"}
Number:Frequency tp_sp_e2_02_acfrec "Steckdose 3P E1 02 AC Frequenz" <siren1> (gtp_sp_e2_02) ["Frequency"] { channel="mqtt:topic:danny:tpspe202:acfreq" }
Number:Power tp_sp_e2_02_power "Steckdose 3P E1 02 Leistung" <qualityofservice> (gtp_sp_e2_02) ["Power", "Measurement"] { channel="mqtt:topic:danny:tpspe202:power", stateDescription="" [pattern="%.0f W"] }
Number tp_sp_e2_02_powerfac "Steckdose 3P E1 02 L-Faktor [%.1f]" <qualityofservice> (gtp_sp_e2_02) ["Point"] { channel="mqtt:topic:danny:tpspe202:powerfac" }
Number:Energy tp_sp_e2_02_energy "Steckdose 3P E1 02 Energie [%.2f %unit%]" <qualityofservice> (gtp_sp_e2_02) ["Energy", "Measurement"] { channel="mqtt:topic:danny:tpspe202:energy" }
Number:ElectricCurrent tp_sp_e2_02_current "Steckdose 3P E1 02 Verbrauch [%.1f %unit%]" <qualityofservice> (gtp_sp_e2_02) ["Current", "Measurement"] { channel="mqtt:topic:danny:tpspe202:current" }
Number tp_sp_e2_02_linkquality "Steckdose 3P E1 02 LQI " <siren1> (gtp_sp_e2_02) ["Level"] { channel="mqtt:topic:danny:tpspe202:linkquality" }
Switch tp_sp_e2_02_Unreach "Steckdose 3P E1 02 Erreichbarkeit [%s]" <siren1> (gtp_sp_e2_02,gLWT) ["Point"] { channel="mqtt:topic:danny:tpspe202:reachable" }
Das Schalten (AN/AUS) wird über Attribute gesteuert. Damit erspare ich mir das
formatBeforePublish. Wie ich sehe hast du auch den "Doppelpunkt" in deinem Payload mitgegeben. Hast du es auch schon mal ohne probiert ? (Halbwissen/Try-Error). Vielleicht ist das auch der Grund für die Fehlermeldung "*** PAYLOAD IS NOT VALID JSON DATA ***"
Was meinst du damit
Selter hat geschrieben: ↑17. Feb 2025 19:24
Die MQTT-Messages erscheinen jedoch weiterhin doppelt
Wo erscheinen die doppelt ?
Hier noch der JSON-String für den Schalter aus dem Frontend(Status):
Code: Alles auswählen
{
"ac_frequency": 50,
"current": 0.06,
"energy": 15.84,
"last_seen": "2025-02-17T23:44:00+01:00",
"linkquality": 148,
"power": 0.2,
"power_factor": 0.05,
"state": "ON",
"update": {
"installed_version": 268513372,
"latest_version": 268513372,
"state": "idle"
},
"voltage": 233.7
}
Vielleicht hilft dir das weiter.