Das Problem sind hier die vielen Anführungszeichen.
So sähe das JSON "lesbar formatiert" korrekt aus:
Code: Alles auswählen
{
"warning": {
"mode": "burgular",
"level": "low",
"strobe_level": "low",
"strobe": true,
"strobe_duty_cycle": 5,
"duration": 5
}
}
Wichtig:
burgular und
low sind Strings, die ebenfalls in Anführungszeichen stehen müssen.
true hingegen ist ein Boolean Wert und Zahlen müssen auch nicht in Anführungszeichen gesetzt werden.
Es gibt nun im Grunde drei Möglichkeiten, die Du alle ausprobieren kannst.
1. einfache statt doppelter Anführungszeichen innerhalb der Payload
Code: Alles auswählen
val mqttActions = getActions("mqtt","mqtt:broker:Zigbee2MQTTBroker")
mqttActions.publishMQTT("zigbee2mqtt/Sirene/set","{'warning': {'mode': 'burgular', 'level': 'low', 'strobe_level': 'low', 'strobe': true, 'strobe_duty_cycle': 5, 'duration': 5}}")
2, Anführungszeichen andersrum verwenden:
Code: Alles auswählen
val mqttActions = getActions("mqtt","mqtt:broker:Zigbee2MQTTBroker")
mqttActions.publishMQTT('zigbee2mqtt/Sirene/set','{"warning": {"mode": "burgular", "level": "low", "strobe_level": "low", "strobe": true, "strobe_duty_cycle": 5, "duration": 5}}')
3. Als letzte Variante könnte man die Anführungszeichen innerhalb des JSON noch escapen:
Code: Alles auswählen
val mqttActions = getActions("mqtt","mqtt:broker:Zigbee2MQTTBroker")
mqttActions.publishMQTT("zigbee2mqtt/Sirene/set","{\"warning\": {\"mode\": \"burgular\", \"level\": \"low\", \"strobe_level\": \"low\", \"strobe\": true, \"strobe_duty_cycle\": 5, \"duration\": 5}}")
Die letzte Variante muss funktionieren, bei den anderen beiden möchte ich sagen, dass es jeweils funktionieren sollte, aber ja nach Implementierung auch scheitern kann - entweder an den inneren oder an den äußeren Anführungszeichen

die Varianten 1 und 2 sind aber definitiv besser lesbar...
Übrigens ist es eleganter, ein String Item zu definieren, welches mit einem String Channel verknüpft ist, der
zigbee2mqtt/Sirene/set als
commandTopic eingetragen hat, dann kannst Du das JSON einfach per
MeinStringItem.sendCommand(MeinJSON) verschicken.
EDIT: Tippfehler korrigiert...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet