SnipsAi unter MQTT2.4 einbinden

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

tomy7om
Beiträge: 19
Registriert: 21. Nov 2019 09:05
Answers: 0

Re: SnipsAi unter MQTT2.4 einbinden

Beitrag von tomy7om »

hatte ich auch schon probiert; und eben vorsichtshalber nochmal ;-)
leider nix
Denke aber wie geschrieben, dass es am Zerlegen des Intents liegt - meine rule erwartet ja unter "pureIntent" ein/aus bzw. einschalten/ausschalten - im Log steht da ja aber "Wohnzimmer".
Ich muss wohl den Intent "anders" zerlegen - da bin ich gerade bei der Recherche, WIE...

tomy7om
Beiträge: 19
Registriert: 21. Nov 2019 09:05
Answers: 0

Re: SnipsAi unter MQTT2.4 einbinden

Beitrag von tomy7om »

...wenn ich nämlich fest was reinschreibe, funzt das ganze - sowohl mit "ON" als auch mit "OFF"

if (device_val == 'Stehlampe') {
sendCommand(switch1,"ON")

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: SnipsAi unter MQTT2.4 einbinden

Beitrag von peter-pan »

Kommt dann die Warnmeldung noch ? Wenn ja, probiere es mit 0, evtl. auch sendCommand(xxx,0) oder sendCommand(xxx,OFF)

Edit: Hab gerade gesehen, dass du das mit dem sendCommand-Befehl schon probiert hast.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: SnipsAi unter MQTT2.4 einbinden

Beitrag von peter-pan »

Ich hatte schon die Vermutung, dass das mit der Variablen und dem sendCommand-Befehl ein Problem ist, deshalb habe ich nochmal in der Doku (Rules) von OH2 nachgeschaut. Da findest du unter dem Punkt "Manipulating Item States" den Grund für die Log-Meldung und den Unterschied zwischen
MyItem.sendCommand(<new_state>) und sendCommand(MyItem, "<new_state>")
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

tomy7om
Beiträge: 19
Registriert: 21. Nov 2019 09:05
Answers: 0

Re: SnipsAi unter MQTT2.4 einbinden

Beitrag von tomy7om »

sorry, da hatte ich auch schon geschaut, und beide Varianten probiert... mit der gleichen Fehlermeldung.

Diese besagt ja, dass das Ergebnis meiner Rule, bezogen auf :
if (pureIntent == 'ein') {
oh2ONOFF = ON
} else if (pureIntent == 'aus') {
oh2ONOFF = OFF
"NULL" ergibt -> weil mein extrahiertes "pureIntent" ja schon nicht stimmt; wie oben geschrieben, denke ich, habe ich da einen Fehler beim Zerlegen des Intents, komme aber noch nicht drauf wie ich es machen muss... :cry:

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: SnipsAi unter MQTT2.4 einbinden

Beitrag von udo1toni »

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

Antworten