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
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.