mehrere Timer

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
hulda
Beiträge: 68
Registriert: 13. Jan 2018 19:43
Answers: 0

mehrere Timer

Beitrag von hulda »

Hallo
ich habe 2 Timer Regeln.
Wenn der Bewässerungstimer schaltet sich immer nach der gleichen Zeit ab wie de Beduftungstimer.
Hat jemand eine Idee warum das so ist?
Kann man überhaut 2 Timer benutzen?

Code: Alles auswählen

var Timer tbeAuto = null
var Timer tAuto = null

rule "Timer Bewässerung starten"
when
    Time cron "0 0 6 * * ?"  or                                                                       //täglich um 6 Uhr
    //Time cron "0 0 14 ? * MON-FRI" or                                                             // Montag bis Freitag 14 Uhr
    //Time cron "0 0 12 ? * SAT,SUN" or                                                             // Samstag und Sonntag 12 Uhr
    Item Bewaesserunghauptschalter received command ON                                               // Hauptschalter wurde geschaltet
then
    var Integer iStart = 6                                                                       // Startzeitvariable
    if(now.getDayOfWeek > 5) iStart = 6                                                          // Falls Wochenende
    if((receivedCommand === null && Bewaesserunghauptschalter.state != ON)
        || (receivedCommand == ON && now.plusHours(3).getHourOfDay <= iStart + 2))                     // Siehe Text
        return;
    tbeAuto?.cancel                                                                                 // eventuell vorhandenen Timer entfernen
    tbeAuto = createTimer(now.plusMillis(10), [|                                                    // Timer initialisieren
        if(Bewaesserung_An_Aus.state != ON) {                                                        // Falls Beduftung aus
            var Integer iOnTime = 10                                                              // Default ON-Zeit
            if(Bewaesserung_Timer_Anzeit.state instanceof Number)                                    // falls gültiger Wert
                iOnTime = (Bewaesserung_Timer_Anzeit.state as Number).intValue                       // übernimm ON-Zeit aus Item
            Bewaesserung_An_Aus.sendCommand(ON)                                                      //Beduftung an
            tbeAuto.reschedule(now.plusSeconds(iOnTime))                                            // Timer bis zum erneuten Ausschalten
        } else {                                                                                  // ansonsten
            var Integer iOffTime = 3600                                                            // Default OFF-Zeit
            if(Bewaesserung_Timer_Auszeit.state instanceof Number)                                   // falls gültiger Wert
                iOffTime = (Bewaesserung_Timer_Auszeit.state as Number).intValue                     // übernimm OFF-Zeit aus Item
            Bewaesserung_An_Aus.sendCommand(OFF)                                                     // Beduftung aus
            tbeAuto.reschedule(now.plusSeconds(iOffTime))                                           // Timer bis zum erneuten Einschalten
        }
    ])
end

rule "Timer Bewässerung stoppen"
when
    Time cron "0 0 22 * * ?" or                                                                   // täglich um 22 Uhr
    Item Bewaesserunghauptschalter received command OFF                                              // Hauptschalter wurde geschaltet
then
    Bewaesserung_An_Aus.sendCommand(OFF)                                                             // Beduftung abschalten
    tbeAuto?.cancel                                                                                 // und Timer stopppen
end






rule "Timer Beduftung starten"
when
    Time cron "0 0 14 ? * MON-FRI" or                                                             // Montag bis Freitag 14 Uhr
    Time cron "0 0 12 ? * SAT,SUN" or                                                             // Samstag und Sonntag 12 Uhr
    Item Beduftunghauptschalter received command ON                                               // Hauptschalter wurde geschaltet
then
    var Integer iStart = 14                                                                       // Startzeitvariable
    if(now.getDayOfWeek > 5) iStart = 12                                                          // Falls Wochenende
    if((receivedCommand === null && Beduftunghauptschalter.state != ON)
        || (receivedCommand == ON && now.plusHours(3).getHourOfDay <= iStart + 2))                     // Siehe Text
        return;
    tAuto?.cancel                                                                                 // eventuell vorhandenen Timer entfernen
    tAuto = createTimer(now.plusMillis(10), [|                                                    // Timer initialisieren
        if(Beduftung_An_Aus.state != ON) {                                                        // Falls Beduftung aus
            var Integer iOnTime = 10                                                              // Default ON-Zeit
            if(Beduftung_Timer_Anzeit.state instanceof Number)                                    // falls gültiger Wert
                iOnTime = (Beduftung_Timer_Anzeit.state as Number).intValue                       // übernimm ON-Zeit aus Item
            Beduftung_An_Aus.sendCommand(ON)                                                      //Beduftung an
            tAuto.reschedule(now.plusSeconds(iOnTime))                                            // Timer bis zum erneuten Ausschalten
        } else {                                                                                  // ansonsten
            var Integer iOffTime = 290                                                            // Default OFF-Zeit
            if(Beduftung_Timer_Auszeit.state instanceof Number)                                   // falls gültiger Wert
                iOffTime = (Beduftung_Timer_Auszeit.state as Number).intValue                     // übernimm OFF-Zeit aus Item
            Beduftung_An_Aus.sendCommand(OFF)                                                     // Beduftung aus
            tAuto.reschedule(now.plusSeconds(iOffTime))                                           // Timer bis zum erneuten Einschalten
        }
    ])
end

rule "Timer Beduftung stoppen"
when
    Time cron "0 0 21 * * ?" or                                                                   // täglich um 21 Uhr
    Item Beduftunghauptschalter received command OFF                                              // Hauptschalter wurde geschaltet
then
    Beduftung_An_Aus.sendCommand(OFF)                                                             // Beduftung abschalten
    tAuto?.cancel                                                                                 // und Timer stopppen
end

schon mal vielen Dank...

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

Re: mehrere Timer

Beitrag von udo1toni »

Grundsätzlich kannst Du beliebig viele Timer verwenden. Hast Du Logs davon, dass die beiden Timer zeitgleich auslösen?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten