Seite 1 von 2

Time Cron Regeln funktionieren nicht mehr

Verfasst: 10. Jul 2019 16:58
von dagobert23
Hallo zusammen,

ich habe das Problem, dass meine Regeln nach einiger Zeit (manchmal Tage, manchmal Stunden) einfach nicht mehr ausgeführt werden. Habe zum Beispiel eine Time Cron Regel die minütlich ausgeführt wird. Diese sehe ich anfänglich auch im Log. Irgendwann wird sie aber einfach nicht mehr ausgeführt.
Erst sobald ich den OpenHab Service neu starte läuft wieder alles. Hat jemand ein ähnliches Problem schonmal gelöst ?
Wäre sehr dankbar den Fehler zu finden.

Danke u. Gruß
dagobert23

Re: Time Cron Regeln funktionieren nicht mehr

Verfasst: 10. Jul 2019 19:16
von sihui
dagobert23 hat geschrieben: 10. Jul 2019 16:58 ich habe das Problem, dass meine Regeln nach einiger Zeit (manchmal Tage, manchmal Stunden) einfach nicht mehr ausgeführt werden. Habe zum Beispiel eine Time Cron Regel die minütlich ausgeführt wird. Diese sehe ich anfänglich auch im Log. Irgendwann wird sie aber einfach nicht mehr ausgeführt.
Erst sobald ich den OpenHab Service neu starte läuft wieder alles. Hat jemand ein ähnliches Problem schonmal gelöst ?
Thread Pool ausgereizt?
udo1toni hat geschrieben: 4. Feb 2019 23:54 Also, es gibt zwei verschiedene Grenzen im Zusammenhang mit Rules:

1. openHAB hält einen Thread Pool vor, in dem die Rules laufen. Dieser Thread Pool ist default für 5 Rules definiert.
2. openHAB hält einen weiteren Thread Pool vor, der am Scheduler hängt. Dieser Thread Pool ist default für 2 Rules definiert.

Das bedeutet, insgesamt können bis zu sieben Rules gleichzeitig ausgeführt werden, zwei, die durch Time cron Trigger oder einem per createTimer() erstellten Timer laufen, fünf weitere, die durch andere Trigger ausgelöst werden/wurden. Dazu zählen auch die System started Rules, auch, falls solche Rules zusätzlich durch Time cron getriggert werden.

Re: Time Cron Regeln funktionieren nicht mehr

Verfasst: 10. Jul 2019 19:33
von dagobert23
Hallo sihui,

vielen Dank erstmal für die schnelle Antwort !
Ich werd mal alle Regeln bis auf eine Time cron rausnehmen und beobachten obs dann länger funktioniert.
Melde mich wieder...

Gruß dagobert23

Re: Time Cron Regeln funktionieren nicht mehr

Verfasst: 12. Jul 2019 08:36
von dagobert23
So nun konnte ich das mal beobachten...
Aktuell ist nur noch eine Regel aktiv die minütlich etwas prüft. Zur Kontrolle habe ich eine Ausgabe ins Log reingemacht.
Gestern abend hab ich meinen Pi und die DIenste neu gestartet. Heute morgen konnte ich im Logfile den Ausgabetext schon nicht mehr sehen.
Ab wann das ganze nicht mehr lief kann ich leider nicht genau sagen...
Bin am verzweifeln was ich falsch mache :roll:

Jemand noch ne gute Idee ?

Hab schon überlegt einfach den Openhab Dienst täglich einmal per Rule neu zu starten da es danach meistens wieder geht, ist aber wohl nicht Sinn der Sache.

Re: Time Cron Regeln funktionieren nicht mehr

Verfasst: 12. Jul 2019 18:16
von sihui
dagobert23 hat geschrieben: 12. Jul 2019 08:36 Aktuell ist nur noch eine Regel aktiv die minütlich etwas prüft. Zur Kontrolle habe ich eine Ausgabe ins Log reingemacht.
Wenn dieser eine time cron Thread nicht beendet wird wenn der nächste Durchlauf startet hast du das von dir geschilderte Problem.

Re: Time Cron Regeln funktionieren nicht mehr

Verfasst: 12. Jul 2019 19:54
von dagobert23
Okay, aber verstehe nicht ganz was daran falsch sein soll. Hier die Testregel

Code: Alles auswählen

rule "Mintülicher Test"
when 
    Time cron "0 * * ? * 1-5"   // minütlicher Aufruf
then
    logInfo("Testregel","Nur ein Test")
end
Wird der Thread denn nicht nach Ausführung direkt auch beendet? Sorry wenn ich so blöd frage aber bin ziemlich neu im Thema ;)
Andere haben doch bestimmt auch mehrere solcher Rules am laufen...

Re: Time Cron Regeln funktionieren nicht mehr

Verfasst: 12. Jul 2019 20:02
von sihui
dagobert23 hat geschrieben: 12. Jul 2019 19:54 Okay, aber verstehe nicht ganz was daran falsch sein soll.
Ich habe nicht gesagt das es falsch ist, da du die Regel nie gezeigt hast.
Nein, die Regel sollte ohne Probleme funktionieren.
Ja, man kann mehrere davon laufen lassen, normalerweise auch ohne Probleme.
Deaktiviere einfach mal alle anderen Regeln für einen Test um zu sehen ob die time cron Regeln überhaupt die Ursache des Problems sind.
Außerdem sollte die openhab.log einiges zu einem möglichen Fehler aussagen können.

Re: Time Cron Regeln funktionieren nicht mehr

Verfasst: 12. Jul 2019 20:13
von dagobert23
Ich habe nun im Ordner /etc/openhab2/rules nur noch 2 Files die auf .rules enden und somit scharf sein sollten. Alles andere in dem Ordner wurde umbenannt. Hier der Inhalt der beiden Dateien:

Code: Alles auswählen

rule "Abfall"
when
  Time cron "0 0 18 * * ?" 
then
 
 var String abfallart
 abfallart = CalDav_Abfall.state.toString

 if (now.isAfter(new DateTime((CalDav_Date.state as DateTimeType).getCalendar().getTime()).minusHours(24)) &&
            now.isBefore(new DateTime((CalDav_Date.state as DateTimeType).getCalendar().getTime()))) {
 
   sendMail("meineadresse@gmail.com", "Abfallinfo", "Morgen ist " + abfallart)
   logInfo("Mailabfall", "MailTonne" + abfallart)
   sendCommand(Hausinformation, abfallart)
 
   }
   
end
Und die andere Datei ist ein Wecker

Code: Alles auswählen

import org.openhab.core.library.types.*
import org.openhab.core.persistence.*
import org.openhab.model.script.actions.*
import org.openhab.action.squeezebox.*
import org.joda.time.*

rule "Wecker - Aenderung der Konfiguration"
when
    Item weckerZeitStunde received update or
    Item weckerZeitMinute received update 
then
    var weckerStunde =  weckerZeitStunde.state as DecimalType
    var weckerMinute =  weckerZeitMinute.state as DecimalType
    
    var String weckerText = ''
    if (weckerStunde.intValue < 10) weckerText = '0'
    weckerText = weckerText + weckerStunde.intValue + ':'
    if (weckerMinute.intValue < 10) weckerText = weckerText + '0'
    weckerText = weckerText + weckerMinute.intValue
    postUpdate(weckerZeitMessage, weckerText)

end


rule "Wecker - prüfen"
when 
    Time cron "0 * * ? * 1-5"
then
    var weckerStunde =  (weckerZeitStunde.state as DecimalType).intValue
    var weckerMinute =  (weckerZeitMinute.state as DecimalType).intValue

    if (
        (now.getHourOfDay.intValue == weckerStunde) && (now.getMinuteOfHour.intValue == weckerMinute)
        && (
            ((weckerMontag.state == ON) && now.getDayOfWeek.intValue == 1) ||
            ((weckerDienstag.state == ON) && now.getDayOfWeek.intValue == 2) ||
            ((weckerMittwoch.state == ON) && now.getDayOfWeek.intValue == 3) ||
            ((weckerDonnerstag.state == ON) && now.getDayOfWeek.intValue == 4) ||
            ((weckerFreitag.state == ON) && now.getDayOfWeek.intValue == 5) ||
            ((weckerSamstag.state == ON) && now.getDayOfWeek.intValue == 6) ||
            ((weckerSonntag.state == ON) && now.getDayOfWeek.intValue == 7)
            )
    ) {
        logInfo ('rules','Wecker wird aktiviert...')

        if (weckerRolladen.state == ON){
            sendCommand(RolladenEGZentral, UP)
        }
        if (weckerLicht.state == ON){
            sendCommand(LichtAnkleide, ON)
        }
  
    } else {
        logInfo('rules','Wecker nicht aktiviert, Bedingung für Wecker trifft nicht zu')
        
    }
end
Gibt es die Möglichkeit anstatt im LogViewer eine Ausgabe zu machen auch in eine Datei zu schreiben mit Zeitstempel ? Dann könnte ich mal schauen wie lange die Regeln funktionieren und wann sie aussteigen.

Danke für deine Hilfe !

Re: Time Cron Regeln funktionieren nicht mehr

Verfasst: 13. Jul 2019 18:11
von sihui
dagobert23 hat geschrieben: 12. Jul 2019 20:13 Gibt es die Möglichkeit anstatt im LogViewer eine Ausgabe zu machen auch in eine Datei zu schreiben mit Zeitstempel ?
Ich weiß leider nicht was du mit "Logviewer" meinst. Hast du eine openHABian Installation? Da gibt es zusätzliche Logviewer (ich glaube frontail), habe ich aber noch nie probiert.

Der "normale" Weg sich die Logs anzuschauen sind die openhab.log und natürlich das events.log:

https://www.openhab.org/docs/administra ... ile-system

Re: Time Cron Regeln funktionieren nicht mehr

Verfasst: 14. Jul 2019 13:00
von peter-pan
Ich denke was shiu mit frontail meint, ist der ganz normale OPENHAB LOG VIEWER, der in der Auswahlmaske neben BasicUI, PaperUI, etc. angezeigt wird.

Du hast ja eine schöne Testregel erstellt. Diese kannst du ja in Frontail filtern (oben rechts). Gib einfach das Wort "Testregel" ein, dann siehst du nur die Logs mit Zeitstempel deiner Testregel. Dann kannst du sehen, ob bzw. wann die Regel nicht mehr läuft, falls das die Ursache sein sollte.