Ankündigung

Einklappen
Keine Ankündigung bisher.

Rules, durch einen String eine Aktion auslösen OH2

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Rules, durch einen String eine Aktion auslösen OH2

    Hallo,
    ich frage über das Http Binding die Zustände meiner Hausgeräte ab. Nun möchte ich durch die Ausgaben gern eine Aktion auslösen und zB. per Mail oder Pebble-Aktion informiert werden.

    Die Items hierzu sind fast ausschließlich Strings bei denen ich als Ausgabe zB "Pause" "In Betrieb" oder "Ende" bekomme. Meine Frage wäre nun wie kann ich damit umgehen ?
    Eine Aktion schaut im Prinzip so aus :
    " rule "A1 turned OFF"
    when
    Item X10_Test_A1 changed from ON to OFF
    then
    logInfo("X10_Test_A", "Turned off")
    pebbleNotification("kirk", "A1 Off", "A1 turned off at")
    end "

    Nun kann ich die Zeile " Item X10_Test_A1 changed from ON to OFF" nicht in " Item X10_Test_A1 changed from Pause to In Betrieb" ändern weil das in einen Fehler läuft, zudem hätte ich gern noch "In Betrieb" noch in der pebbleNotifikation hätte aber ein X10_Test_A1.status läuft leider nicht.

    Es fehlt mir hierzu der Ansatz, vielleicht hätte jemand einen Tipp für mich.

    Gruß
    Frank

    #2
    Du musst in diesem Fall daran denken, dass ON und OFF States sind, Du möchtest aber Strings verwenden, was durchaus geht, Du musst nur Anführungszeichen verwenden:
    Code:
    Item X10_Test_A1 changed from "Pause" to "In Betrieb"
    Falls es partout im Trigger nicht klappen will, kannst Du immer noch auf ein if() ausweichen:
    Code:
    rule "A1 Test"
    when
        Item X10_Test_A1 changed
    then
        if(X10_Test_A1.state.toString == "In Betrieb" {
            //mach was sinnvolles
        }
        else if(X10_Test_A1.state.toString == "Pause" {
            //mach was sinnvolles
        }
    end
    In dem Zusammenhang ist noch zu beachten, dass manchmal mehr (unsichtbar) da steht, als vermutet, z.B. könnte durchaus ein Leerzeichen hinten dran hängen, weshalb der Trigger dann nicht funktioniert. Das kann man eventuell erst sehen, wenn man gezielt den Status per logInfo() ausgibt und für sichtbare Begrenzungen drumherum sorgt:
    Code:
    when
        Item myItem changed
    then
        logInfo ("myRule","myItem=" + myItem.state.toString + "<<<")
    end

    Kommentar

    Lädt...
    X