Text-Item inhaltlich als String abfragen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
hurra
Beiträge: 66
Registriert: 28. Aug 2019 10:52
Answers: 0

Text-Item inhaltlich als String abfragen

Beitrag 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

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

Re: Text-Item inhaltlich als String abfragen

Beitrag 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"
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Text-Item inhaltlich als String abfragen

Beitrag 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-)
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

Benutzeravatar
KellerK1nd
Beiträge: 432
Registriert: 17. Jun 2019 16:45
Answers: 1
Wohnort: Griesheim

Re: Text-Item inhaltlich als String abfragen

Beitrag 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.
Betriebssystem: Proxmox 7.3-4
openHAB Container: debian11 LXC
openHAB Version: 3.4
Hardware: HomeServer Eigenbau mit einem Intel i5 9600K
Smarthome-Equipment:
- Rasperrymatic
- deConz
- HUE
- Shellys
- Mosquitto
- AVM Fritz!Box

hurra
Beiträge: 66
Registriert: 28. Aug 2019 10:52
Answers: 0

Re: Text-Item inhaltlich als String abfragen

Beitrag von hurra »

Es hat tatsächlich alles gepasst, nur haben in der if-schleife die geschweiften Klammern gefehlt :/

Antworten