shelly 2.5 rule mit Schalter

Geflasht oder ungeflasht ...

Moderator: seppy

Antworten
urlauber22
Beiträge: 11
Registriert: 4. Aug 2021 18:15

shelly 2.5 rule mit Schalter

Beitrag von urlauber22 »

Hallo,

Ich habe mir eine Regel erstellt, die meinen Rolladen abschaltet wenn die Balkontür offen ist. Sie funktioniert über die APP sehr gut.

Code: Alles auswählen

rule "Balkontür auf Rolladen hoch APP"

when

 		Item DGRolladenWZTuer_Steuerung0offen100geschlossen received command DOWN 

then
		if ((receivedCommand == DOWN) && (ZWaveNode003FGDW_SensorDoor.state == OPEN))    {
              	 sendCommand(DGRolladenWZTuer_Steuerung0offen100geschlossen, STOP)
}
end

Jetzt brauche Ich aber noch eine für den Hardware Schalter mit dem ich den shelly schalte.

Wenn Ich den Schalter betätige kommt im Log folgendes:

[openhab.event.ItemStateChangedEvent ] - Item 'DGRolladenWZTuer_Status' changed from stop to close]


Ich komme einfach nicht mit dem "ItemStateChangedEvent" klar, habe da keinen ansetzpunkt.

hat da jemande eine Idee?

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

Re: shelly 2.5 rule mit Schalter

Beitrag von udo1toni »

Ich verstehe nicht, was Dein konkretes Problem ist.

Das Changed Event kann ebenfalls als Trigger für Rules verwendet werden, nur dass es halt nicht received command heißt sondern changed.

Deine Itemnamen sind übrigens fürchterlich ;)

Code: Alles auswählen

rule "Balkontür auf Rolladen hoch Taster"
when
    Item DGRolladenWZTuer_Status changed
then
    if(DGRolladenWZTuer_Status.state.toString == "close" && ZWaveNode003FGDW_SensorDoor.state == OPEN) 
        DGRolladenWZTuer_Steuerung0offen100geschlossen.sendCommand(STOP)
end
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

urlauber22
Beiträge: 11
Registriert: 4. Aug 2021 18:15

Re: shelly 2.5 rule mit Schalter

Beitrag von urlauber22 »

Hallo udo1toni,

dankeschön, das ist genau das was Ich gesucht habe, aber nicht hinbekommen habe.

Mit den Bezeichnungen hast recht, Werde mich bessern :)

urlauber22
Beiträge: 11
Registriert: 4. Aug 2021 18:15

Re: shelly 2.5 rule mit Schalter

Beitrag von urlauber22 »

Hi,

wenn Ich jetzt in die Regel folgendes implementier:

Code: Alles auswählen

 Item DGRolladenWZTuer_Status changed from stop to close 
funkioniert sie nicht mehr.

Grund ist Ich muss die Richtung vorgeben.
Das bedeutet sie soll funktionieren wenn der Rolladen oben ist und geschlossen wird.

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

Re: shelly 2.5 rule mit Schalter

Beitrag von udo1toni »

Was kein Wunder ist. Du kannst nicht einfach beliebige Dinge als Status im Trigger hinterlegen. Da es sich hier um ein String Item handelt, ist stop und close kein Status, sondern ein String.

Das mag aus Anwendersicht verwirrend sein :) aber so als Grundsatz:
Erlaubte Status sind:
Für alle Itemtypen: UNDEV, NULL (eventuell gibt es auch noch weitere "kein gültiger Status" Status, NULL ist der Urzustand beim Start von openHAB)
Zusätzlich für Switch: ON, OFF
Zusätzlich für Contact: OPEN, CLOSED
Es gibt noch ein paar weitere Itemtypen mit potenziell sinnvollen Status, z.B. das Player Item (STOP, PLAY), aber schon bei Number kommen erhebliche Probleme auf, denn 1.0 ist ein anderer Status als 1.
Es gibt aber auch keinen triftigen Grund, den Status so abzufragen. Wenn Du möchtest, dass die Rule nur reagiert, wenn der Rollladen vorher gestoppt war, kannst Du die Rule weitgehend unverändert verwenden, Du musst lediglich eine weitere Bedingung einbauen:

Code: Alles auswählen

rule "Balkontür auf Rolladen hoch Taster"
when
    Item DGRolladenWZTuer_Status changed
then
    if(previousState.toString == "stop" && newState.toString == "close" && ZWaveNode003FGDW_SensorDoor.state == OPEN) 
        DGRolladenWZTuer_Steuerung0offen100geschlossen.sendCommand(STOP)
end
Die beiden Objekte perviousState und newState sind implizite Variablen, welche automatisch in jeder Rule zur Verfügung stehen, die über das changed Ereignis getriggert wurden.

Allerdings könnte man dann den Rollladen schließen, indem man zunächst den Befehl zum Öffnen sendet und unmittelbar daran anschließend den Schließen Befehl.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

urlauber22
Beiträge: 11
Registriert: 4. Aug 2021 18:15

Re: shelly 2.5 rule mit Schalter

Beitrag von urlauber22 »

Lese Ich das dann so richtig:

Erstens wird abgefragt, wie der Status zu Beginn ist. Dann wird Abgefragt ob der Befehl "close" und dann noch ob die Tür "offen" ist.

War dann doch schwieriger als gedacht. Hatte noch nie so was.

Danke

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

Re: shelly 2.5 rule mit Schalter

Beitrag von udo1toni »

Nein, die Rule löst beim Ereignis changed aus. Das bedeutet, der Status des angegebenen Items hat sich geändert.

Innerhalb der Rule werden zwei Status abgefragt, nämlich der vom triggernden Item und der von der Tür.
Es geht hier nicht um Befehle, sondern ausschließlich um Zustände (Status).

Wenn man im Trigger schreibt: changed from <alter Wert> to <neuer Wert>, wird der Trigger eben entsprechend eingeschränkt, er löst erst aus, wenn das angegebene Item vom Zustand <alter Wert> kommend direkt zum Zustand <neuer Wert> wechselt.
Diese Einschränkung kann sinnvoll sein, genauso kann man aber innerhalb der Rule beide Zustände abfragen, eben über die impliziten Variablen previousState und newState. Dann muss man die Einschränkung nicht im Trigger vornehmen (besonders praktisch, wenn man sonst mehrere Rules bräuchte).

Ich kenne ja die Unstände drum herum nicht, gewöhnlich sollte ein Aktor als Item abgebildet sein. Es sollte nicht möglich sein, den Aktor zu steuern, ohne dass openHAB das umgehend mitbekommt, z.B. indem der Aktor eine Meldung schickt, dass er den Motor startet. Das ist hier wohl indirekt der Fall, das Item DGRolladenWZTuer_Status meldet den Start der Fahrt, sobald diese beginnt. Nur deshalb lässt sich die Fahrt auch zu Beginn stoppen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten