Seite 1 von 1

Text-Item inhaltlich als String abfragen

Verfasst: 10. Mär 2021 15:26
von hurra
Hallo zusammen!

Ich möchte den letzten Alexa-Sprachbefehl auswerten und damit Routinen & Aktionen starten. Dazu habe ich mir folgende Regel ausgedacht:

Code: Alles auswählen

rule AlexaKuecheAbendRoutine
when
  Item Echo_Living_Room_LastVoiceCommand received update
then   
  if(Echo_Living_Room_LastVoiceCommand.state.toString == "gute nacht")
                Licht123.sendCommand(OFF)  
end
Wenn ich jetzt "gute nacht" rufe, wird der Befehl in der if-Schleife immer ausgeführt. Ich bin mir nicht sicher und finde auch keine Doku, wie Bedingung auszusehen hat. Anführungsstiche, Apostrophe,...?

Kann mir da bitte jemand helfen?
Danke!!
Christoph

Re: Text-Item inhaltlich als String abfragen

Verfasst: 10. Mär 2021 16:15
von peter-pan
Das passt doch alles.
Der Trigger ist, wenn sich "Echo_Living_Room_LastVoiceCommand" verändert (event).

und die Bedingung, um das Licht anzuschalten ist "gute nacht". Wenn du mehrere Dinge erledigt haben willst, musst du diese in geschweifte Klammern setzen.
Hier ein (willkürliches) Beispiel mit mehreren Bedingungen:

Code: Alles auswählen

rule "Sonos cross State Stop"
    when
        Item GA_Sonos_Control changed or 
        Member of gSonos_Play changed
    then
        logInfo("Sonos cross"," Name : {} Status {} ", triggeringItem.name, triggeringItem.state)  // debug
        val vSonosItem = triggeringItem.name.replace('Control','Stop_cross')
        logInfo("Sonos cross"," vSonosItem : {}", vSonosItem)    // debug
        if (triggeringItem.state == PAUSE) {
            postUpdate(vSonosItem, "OFF")
            logInfo("Sonos cross"," Lautsprecher {} ist OFF ", triggeringItem.name)
        }
          else if (triggeringItem.state == PLAY) {
            postUpdate(vSonosItem, "ON")
            logInfo("Sonos cross"," Lautsprecher {} ist ON ", triggeringItem.name)
          }
        else {
        logInfo("Sonos cross"," keine Änderung ")
        Sonoff_Basic_03.sendCommand(ON)
        }
end
Edit: der Name der Rule am Anfang, muss in Anführungszeichen, also - rule "AlexaKuecheAbendRoutine"

Re: Text-Item inhaltlich als String abfragen

Verfasst: 10. Mär 2021 16:33
von int5749
peter-pan hat geschrieben: 10. Mär 2021 16:15 Edit: der Name der Rule am Anfang, muss in Anführungszeichen, also - rule "AlexaKuecheAbendRoutine"
Doch nur, wenn der Name (wie bei Dir) Leerzeichen enthält? Ich habe auch einige Rules, ohne die "", wobei: schaden tuen die nicht 8-)

Re: Text-Item inhaltlich als String abfragen

Verfasst: 10. Mär 2021 16:40
von KellerK1nd
Ginge nicht noch received command? Bei Update ist klar, das ist dann ein Selbstläufer, es sei denn du kannst es über das Expire auf NULL setzen.

Re: Text-Item inhaltlich als String abfragen

Verfasst: 10. Mär 2021 21:10
von hurra
Es hat tatsächlich alles gepasst, nur haben in der if-schleife die geschweiften Klammern gefehlt :/