Also wenn ich Deinen Code richtig verstanden habe, landet in pureIntent das Wort Wohnzimmer (2. Teil von intentName)
Im slot 0 befindet sich das Wort Stehlampe, während slot 1 (value.value) den Wert 1 enthält, da die Befehl in "ein" und "schalten" zerlegt wurde. Beim Ausschalten wäre der Wert dann 0 für "aus". Entsprechend nehme ich an, sollte die Rule eher so aussehen:
Code: Alles auswählen
rule "on_off"
when
Item Snips_Intent received update
then
logInfo("Snips Intent: ", Snips_Intent.state.toString)
val String intentName = transform("JSONPATH", "$.intent.intentName", Snips_Intent.state.toString)
val String pureIntent = intentName.split(":").get(1)
val String device = transform("JSONPATH", "$.slots[0].value.value", Snips_Intent.state.toString)
val String device_val = transform("JSONPATH", "$.slots[1].value.value", Snips_Intent.state.toString)
logInfo("snips", "Snips Raum: {} Gerät: {} Befehl: {}", pureIntent, device, device_val)
// pureIntent = pureIntent.toLowerCase
val oh2ONOFF = if(device_val == "1") ON else OFF
if (device == "Stehlampe")
switch1.sendCommand(oh2ONOFF)
end
Da kein Wert zur Laufzeit der Rule geändert wird, reichen Konstanten zum Speichern. oh2ONOFF ist besser unbestimmt, denn dann kann man direkt OnOffType als Wert verwenden. Die Zuweisung über den ternären Operator spart dabei Platz und ist besser lesbar

openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet