Da stimmen mehrere Dinge nicht...
Es gibt grundsätzlich zwei Möglichkeiten, entweder über ein Item oder über einen Channel.
Wählst Du den Weg über ein Item, muss der Trigger der Rule auch
Item xyz ... lauten.
Dann gibt es weitere zwei Möglichkeiten

nämlich:
- Entweder, Du verwendest einen Status, dann müsste der Trigger auf received update oder wahlweise auf changed lauten (bei Letzterem müsste die Payload sich dann ändern, damit die Rule triggert)
- Oder Du setzt in den Advanced Options "is command", womit dann ein ankommender Status als Command gewertet wird. Dann muss die Rule auf received command triggern.
In beiden Fällen gibt es implizite Variablen, die den aktuellen Status (newState) bzw. das empfangene Command (receivedCommand) bereitstellen.
Wählst Du den Weg über einen Channel, musst Du als
Channeltyp zwingend
Trigger wählen. Diesen Channeltyp kannst Du dann mit genau zwei verschiedenen Itemtypen verlinken, nämlich String oder DateTime, in beiden Fällen musst Du aber ein passendes Profile setzen, für das String Item kannst Du nur
Trigger Event String wählen, für DateTime nur den
Zeitstempel bei Auslöser, was auch die einzigen erwartbar sinnvollen Optionen sind.
Allerdings benötigst Du die Items nicht unbedingt, der Witz eines Trigger Channels ist ja, dass man ohne Item auskommen kann.
In diesem Fall kannst Du dann den Channel als Triggerquelle nutzen. Weiterhin gibt es dann auch eine implizite Variable
receivedEvent, die ist aber schon vom Typ String und enthält den Wert, der den Channel getriggert hat. Ein Konstrukt
kann es nicht geben, denn ein Trigger ist nun mal kein Command.
So, also drei Möglichkeiten:
Code: Alles auswählen
rule "MQTT Schaltung empfangen"
when
Item ArbeitszimmerGenericMQTT_TestTopicfuerMQTT received Update
then
if(newState.toString == "blink") {
Test_Schalter_B.sendCommand(ON)
}
end
oder (Channel muss auf "Is command" konfiguriert werden):
Code: Alles auswählen
rule "MQTT Schaltung empfangen"
when
Item ArbeitszimmerGenericMQTT_TestTopicfuerMQTT received command
then
if(receivedCommand.toString == "blink") {
Test_Schalter_B.sendCommand(ON)
}
end
oder (Channel muss auf Typ Trigger geändert werden, das Item wird nicht benötigt)
Code: Alles auswählen
rule "MQTT Schaltung empfangen"
when
Channel 'mqtt:topic:mosquitto_argon:arbeitszimmer:test_topic_mqtt_led' triggered
then
if(receivedEvent == "blink") {
Test_Schalter_B.sendCommand(ON)
}
end
Beachte bitte, dass Du nicht irgendwelche Phantasie-UIDs

angeben kannst. Es muss schon ein vorhandener Channel verwendet werden.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet