Denkfehler

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Benutzeravatar
Snatsch
Beiträge: 455
Registriert: 9. Jan 2021 22:55
Answers: 0

Denkfehler

Beitrag von Snatsch »

Ich mal wieder :shock: , irgendwie habe ich einen Denkfehler und bin mal wieder auf eure Hilfe angewiesen. Ich habe einen Türsensor an mein Gartentor gebaut und möchte das wenn sich es in der Zeit von 23- 6 Uhr öffnet das Licht angeht und ein Timer gesetzt wird. Der Timer soll aber nur gehen wenn die Beleuchtung beim Öffnen aus ist. Nach meiner Rule wird der Timer aber immer gesetzt. :(

Code: Alles auswählen

var Timer Gartentuere = null

rule "Nacht Gartentüre geöffnet"
when
    Item Gartenture_OpenClose changed
then
    if (AussenbeleuchtungTerrasse_Schalter.state == ON)
    if(now.getHour == 23 || now.getHour > 5) return;      
    Gartentuere?.cancel            // Falls ein Timer läuft: Abbruch
    if(Gartenture_OpenClose.state == OPEN) {  // Kontakt offen:
        MeldungTelegram.postUpdate("Die Gartentüre ist geöffnet worden")
        AussenbeleuchtungTerrasse_Schalter.sendCommand(ON)

    } else                                 // Kontakt nicht offen (also geschlossen):
        Gartentuere = createTimer(ZonedDateTime.now.plusMinutes(1), [|
            AussenbeleuchtungTerrasse_Schalter.sendCommand(OFF)

        ])
end
vielleicht kann mir jemand auf die Sprünge helfen :roll:
openhab4.3.1 auf Pi 5 8GB im Docker Portainer&Frontail /Grafana&InfluxDB und mosquitto auf Pi 3 in Docker Portainer/Pi 3 mit Docker zur Datensicherung / Pi 4 4GB Portainer & Deconz

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

Re: Denkfehler

Beitrag von udo1toni »

Du hast die Bedingungen falsch gesetzt. Also, abgesehen davon, dass die Bedingungen so auch nicht stimmen...

Sauberer:

Code: Alles auswählen

var Timer Gartentuere = null

rule "Nacht Gartentüre geöffnet"
when
    Item Gartenture_OpenClose changed to OPEN
then
    if(now.getHour < 23 && now.getHour > 5)                           // von 06:00:00 bis 22:59:59 Rule abbrechen
        return;
    if(AussenbeleuchtungTerrasse_Schalter.state == ON)                // Licht ist schon an
        return;
                                                                      // Ab hier sind alle Bedingungen für Timerbetrieb erfüllt
    Gartentuere?.cancel                                               // Falls ein Timer läuft, abbrechen
    MeldungTelegram.postUpdate("Die Gartentüre ist geöffnet worden")  // Meldung triggern
    AussenbeleuchtungTerrasse_Schalter.sendCommand(ON)                // Licht anschalten
    Gartentuere = createTimer(ZonedDateTime.now.plusMinutes(1), [|    // Timer starten
        AussenbeleuchtungTerrasse_Schalter.sendCommand(OFF)           // Licht ausschalten
    ])
end
Allerdings schaltet das Licht so nach einer Minute aus, egal, ob die Tür noch offen ist oder nicht. Falls das Licht auf jeden Fall an bleiben soll, bis die Tür wieder geschlossen wird, bietet sich eine Prüfung im Timer an:

Code: Alles auswählen

var Timer Gartentuere = null

rule "Nacht Gartentüre geöffnet"
when
    Item Gartenture_OpenClose changed to OPEN
then
    if(now.getHour < 23 && now.getHour > 5)                           // von 06:00:00 bis 22:59:59 Rule abbrechen
        return;
    if(AussenbeleuchtungTerrasse_Schalter.state == ON)                // Licht ist schon an
        return;
                                                                      // Ab hier sind alle Bedingungen für Timerbetrieb erfüllt
    Gartentuere?.cancel                                               // Falls ein Timer läuft, abbrechen
    MeldungTelegram.postUpdate("Die Gartentüre ist geöffnet worden")  // Meldung triggern
    AussenbeleuchtungTerrasse_Schalter.sendCommand(ON)                // Licht anschalten
    Gartentuere = createTimer(ZonedDateTime.now.plusMinutes(1), [|    // Timer starten
        if(Gartenture_OpenClose.state == CLOSED)
            AussenbeleuchtungTerrasse_Schalter.sendCommand(OFF)       // Licht ausschalten
        else
            Gartentuere.reschedule(ZonedDateTime.now.plusMinutes(1))
    ])
end
Variante 2 unterscheidet sich nur innerhalb des Timers. Man kann das auch anders lösen, da kommt es halt sehr drauf an, was Du erreichen willst. Deise Variante hat z.B. die Schwäche, dass das Licht nach einer Minute aus geht, wenn ich die Tür innerhalb der Minute schließe, also nicht erst eine Minute nach Schließen der Tür.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Benutzeravatar
Snatsch
Beiträge: 455
Registriert: 9. Jan 2021 22:55
Answers: 0

Re: Denkfehler

Beitrag von Snatsch »

:) vielen Dank für deine Mühe(wie so oft) Das mit den Timer auf eine Minute hatte ich nur zur Probe eingestellt. Sonnst sind eigentlich 15 Minuten.
openhab4.3.1 auf Pi 5 8GB im Docker Portainer&Frontail /Grafana&InfluxDB und mosquitto auf Pi 3 in Docker Portainer/Pi 3 mit Docker zur Datensicherung / Pi 4 4GB Portainer & Deconz

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

Denkfehler

Beitrag von udo1toni »

Snatsch hat geschrieben::) vielen Dank für deine Mühe(wie so oft) Das mit den Timer auf eine Minute hatte ich nur zur Probe eingestellt. Sonnst sind eigentlich 15 Minuten.
Ja, das habe ich mir schon gedacht. Das ändert aber nichts am grundlegenden Verhalten. Tor auf -> Licht an mit Timer 15 Minuten. Tor nach 14:57 Minuten zu -> Licht geht 3 Sekunden später aus. Tor nach 15:01 Minuten zu -> Licht geht 15 Minuten später aus. (Es sei denn, Du nimmst im Timer eine andere Wiederholzeit, die kann ja komplett unabhängig vom Initialtimer gedonnert sein)


Gesendet von iPad mit Tapatalk
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Benutzeravatar
Snatsch
Beiträge: 455
Registriert: 9. Jan 2021 22:55
Answers: 0

Re: Denkfehler

Beitrag von Snatsch »

;) Ist nur das Gartentor. Das sollte schnell wieder geschlossen werden. Sonst hauen die Hunde ab und im Dorf gibts Stress wenn zwei Rottweiler spazieren gehen :lol:
openhab4.3.1 auf Pi 5 8GB im Docker Portainer&Frontail /Grafana&InfluxDB und mosquitto auf Pi 3 in Docker Portainer/Pi 3 mit Docker zur Datensicherung / Pi 4 4GB Portainer & Deconz

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

Re: Denkfehler

Beitrag von udo1toni »

:)
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Antworten