OH3: Scripte/Regeln bei Systemstart automatisch ausführen
-
- Beiträge: 10
- Registriert: 16. Apr 2020 10:34
OH3: Scripte/Regeln bei Systemstart automatisch ausführen
Hallo zusammen,
OH3 bietet die Möglichkeit, per GUI Scripte und Regeln zu erstellen. Dabei kann als Trigger wohl definiert werden "When a Start level is reached" ... 20, 40, 60, ....
Meine Frage:
Welchen Grund kann es haben, dass dieser Trigger bei meiner Installation auf einem Raspi beim Start von OH3 offenbar nicht ausgelöst wird? Mit diesem Trigger definierte Regeln werden beim Start von OH3 nicht ausgeführt. Die definierte Regel kann testweise manuell gestartet werden und funktioniert dann auch einwandfrei.
Beste Grüße, Willi
OH3 bietet die Möglichkeit, per GUI Scripte und Regeln zu erstellen. Dabei kann als Trigger wohl definiert werden "When a Start level is reached" ... 20, 40, 60, ....
Meine Frage:
Welchen Grund kann es haben, dass dieser Trigger bei meiner Installation auf einem Raspi beim Start von OH3 offenbar nicht ausgelöst wird? Mit diesem Trigger definierte Regeln werden beim Start von OH3 nicht ausgeführt. Die definierte Regel kann testweise manuell gestartet werden und funktioniert dann auch einwandfrei.
Beste Grüße, Willi
-
- Beiträge: 10
- Registriert: 16. Apr 2020 10:34
Re: OH3: Scripte/Regeln bei Systemstart automatisch ausführen
Hallo allerseits,
mal andersherum gefragt - hat jemandvon Euch Erfahrunug mit dem Trigger "When a Start level is reached" beim Start des OH3 Systems? Nutzt jemand diese Funktion erfolgreich ?
Beste Grüße, Willi
mal andersherum gefragt - hat jemandvon Euch Erfahrunug mit dem Trigger "When a Start level is reached" beim Start des OH3 Systems? Nutzt jemand diese Funktion erfolgreich ?
Beste Grüße, Willi
-
- Beiträge: 9
- Registriert: 3. Jan 2021 09:04
Re: OH3: Scripte/Regeln bei Systemstart automatisch ausführen
Moin,
ich kann Dir leider nicht sagen, warum diese Rule bei Dir evtl. nicht getriggert wird. Ich kann Dir aber berichten, dass ich eine solche Rule bei mir erfolgreich laufen habe, um beim Systemstart den Item.state einiger Items auf einen bestimmten Wert zu setzen. Wird sauber durchgeführt und ich verwende die reached 100% Variante des Triggers. Den Rest dieser Rule habe ich ohne Script in der "dann mach..." Sektion definiert.
VG Jens
ich kann Dir leider nicht sagen, warum diese Rule bei Dir evtl. nicht getriggert wird. Ich kann Dir aber berichten, dass ich eine solche Rule bei mir erfolgreich laufen habe, um beim Systemstart den Item.state einiger Items auf einen bestimmten Wert zu setzen. Wird sauber durchgeführt und ich verwende die reached 100% Variante des Triggers. Den Rest dieser Rule habe ich ohne Script in der "dann mach..." Sektion definiert.
VG Jens
- Cyrelian
- Beiträge: 601
- Registriert: 24. Sep 2015 17:55
Re: OH3: Scripte/Regeln bei Systemstart automatisch ausführen
Hi Willi,
das scheint derzeit ein Problem/Bug zu sein. Schau mal hier: klick.
Bei mir ziehen die Trigger "System started" auch nicht mehr.
Ich habe in der KARAF Console mal das logging dafür auf INFO gestellt:
Code: Alles auswählen
log:set INFO openhab.core.service.StartLevelService
CU
Cyrelian
-
- Beiträge: 10
- Registriert: 16. Apr 2020 10:34
Re: OH3: Scripte/Regeln bei Systemstart automatisch ausführen
Hi Cyrelian,
danke für den Hinweis. Das scheint ja eine komplxere Geschichte zu sein.
Ich werde wohl vorläufig mal bei den textbasierten Regeln bleiben. Allerdings kommt es auch hier zu Fehlermeldungen, die ich in Version 2.5. nicht hatte. Laut Log-Eintrag wird die folgende Regel schon durchlaufen, bevor die "Rule engine" gestartet ist.
rule "System started"
when System started
then
logInfo('INFO', "Durchlaufe System started")
....
end
Hier der entsprechende Log:
2021-01-05 13:04:25.764 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Time zone set to 'Europe/Berlin'.
2021-01-05 13:04:25.825 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Location set to '......'.
2021-01-05 13:04:25.828 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Locale set to 'de_DE'.
2021-01-05 13:04:25.831 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Measurement system set to 'SI'.
2021-01-05 13:04:38.658 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'zuhause.items'
2021-01-05 13:04:40.530 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'mqtt.persist'
2021-01-05 13:04:40.663 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'rrd4j.persist'
2021-01-05 13:04:40.800 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'jdbc.persist'
2021-01-05 13:04:41.437 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'zuhause.sitemap'
2021-01-05 13:04:42.525 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'zuhause.things'
2021-01-05 13:04:45.937 [INFO ] [.core.model.lsp.internal.ModelServer] - Started Language Server Protocol (LSP) service on port 5007
2021-01-05 13:04:46.277 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'zuhause.rules'
2021-01-05 13:05:01.354 [INFO ] [org.openhab.core.model.script.INFO ] - Durchlaufe System started
2021-01-05 13:05:01.374 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'zuhause-1' failed: Could not cast NULL to org.openhab.core.library.types.DateTimeType; line 26, column 21, length 43 in zuhause
2021-01-05 13:05:01.378 [INFO ] [e.automation.internal.RuleEngineImpl] - Rule engine started.
2021-01-05 13:05:03.044 [INFO ] [org.openhab.ui.internal.UIService ] - Started UI on port 8080
2021-01-05 13:05:09.524 [INFO ] [ternal.dhcp.DHCPPacketListenerServer] - DHCP request packet listener online
Beste Grüße, Willi
danke für den Hinweis. Das scheint ja eine komplxere Geschichte zu sein.
Ich werde wohl vorläufig mal bei den textbasierten Regeln bleiben. Allerdings kommt es auch hier zu Fehlermeldungen, die ich in Version 2.5. nicht hatte. Laut Log-Eintrag wird die folgende Regel schon durchlaufen, bevor die "Rule engine" gestartet ist.
rule "System started"
when System started
then
logInfo('INFO', "Durchlaufe System started")
....
end
Hier der entsprechende Log:
2021-01-05 13:04:25.764 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Time zone set to 'Europe/Berlin'.
2021-01-05 13:04:25.825 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Location set to '......'.
2021-01-05 13:04:25.828 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Locale set to 'de_DE'.
2021-01-05 13:04:25.831 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Measurement system set to 'SI'.
2021-01-05 13:04:38.658 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'zuhause.items'
2021-01-05 13:04:40.530 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'mqtt.persist'
2021-01-05 13:04:40.663 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'rrd4j.persist'
2021-01-05 13:04:40.800 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'jdbc.persist'
2021-01-05 13:04:41.437 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'zuhause.sitemap'
2021-01-05 13:04:42.525 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'zuhause.things'
2021-01-05 13:04:45.937 [INFO ] [.core.model.lsp.internal.ModelServer] - Started Language Server Protocol (LSP) service on port 5007
2021-01-05 13:04:46.277 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'zuhause.rules'
2021-01-05 13:05:01.354 [INFO ] [org.openhab.core.model.script.INFO ] - Durchlaufe System started
2021-01-05 13:05:01.374 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'zuhause-1' failed: Could not cast NULL to org.openhab.core.library.types.DateTimeType; line 26, column 21, length 43 in zuhause
2021-01-05 13:05:01.378 [INFO ] [e.automation.internal.RuleEngineImpl] - Rule engine started.
2021-01-05 13:05:03.044 [INFO ] [org.openhab.ui.internal.UIService ] - Started UI on port 8080
2021-01-05 13:05:09.524 [INFO ] [ternal.dhcp.DHCPPacketListenerServer] - DHCP request packet listener online
Beste Grüße, Willi
- Cyrelian
- Beiträge: 601
- Registriert: 24. Sep 2015 17:55
Re: OH3: Scripte/Regeln bei Systemstart automatisch ausführen
Hi Willi,
das ist "normal"

Es werden erst alle RULE-Files geladen und geparst. Hier mal die Auflistung, was wann gestartet und geladen wird.
Code: Alles auswählen
00 - OSGi framework has been started
10 - OSGi application start level has been reached, i.e. bundles are activated
20 - Model entities (items, things, links, persist config) have been loaded, both from db as well as files
30 - Item states have been restored from persistence service, where applicable
40 - Rules are loaded and parsed, both from db as well as dsl and script files
50 - Rule engine has executed all "system started" rules and is active
70 - User interface is up and running
80 - All things have been initialized
100 - Startup is fully complete.
Code: Alles auswählen
2021-01-05 13:05:01.378 [INFO ] [e.automation.internal.RuleEngineImpl] - Rule engine started.

CU
Cyrelian
- peter-pan
- Beiträge: 2770
- Registriert: 28. Nov 2018 12:03
- Wohnort: Schwäbisch Gmünd
Re: OH3: Scripte/Regeln bei Systemstart automatisch ausführen
...ich lese gerade interessehalber mit.
Kann es auch sein, das es zu Problemen mit dem Start der Rule kommt, weil da evtl. noch ein anderer Fehler (Zeile 26) in dem Rule-File vorliegt ? (JodaTime vs. JavaTime). Mal abgesehen davon, dass es wohl auch noch einen Bug mit dem "System started"-Trigger in OH3 gab (gibt?).
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian
-
- Beiträge: 10
- Registriert: 16. Apr 2020 10:34
Re: OH3: Scripte/Regeln bei Systemstart automatisch ausführen
Hi,
hier mal die komplette "System Started" Rule und unten das resultierende Log.
Besagte Zeile 28 ist diese: val dayStart = (DatAstroDayLightStart.state as DateTimeType).getZonedDateTime()
==> sieht für mich eigenlich korrekt aus (zumal alles funktioniert, wenn ich die Regel manuell auslöse)
2021-01-06 10:38:10.628 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Time zone set to 'Europe/Berlin'.
2021-01-06 10:38:10.686 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Location set to '..........'.
2021-01-06 10:38:10.690 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Locale set to 'de_DE'.
2021-01-06 10:38:10.693 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Measurement system set to 'SI'.
2021-01-06 10:38:23.246 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'zuhause.items'
2021-01-06 10:38:25.248 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'mqtt.persist'
2021-01-06 10:38:25.386 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'rrd4j.persist'
2021-01-06 10:38:25.532 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'jdbc.persist'
2021-01-06 10:38:26.145 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'zuhause.sitemap'
2021-01-06 10:38:27.134 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'zuhause.things'
2021-01-06 10:38:30.787 [INFO ] [.core.model.lsp.internal.ModelServer] - Started Language Server Protocol (LSP) service on port 5007
2021-01-06 10:38:31.153 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'zuhause.rules'
2021-01-06 10:38:44.610 [INFO ] [org.openhab.ui.internal.UIService ] - Started UI on port 8080
2021-01-06 10:38:51.375 [INFO ] [org.openhab.core.model.script.INFO ] - Durchlaufe System started.
2021-01-06 10:38:51.513 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'zuhause-1' failed: Could not cast NULL to org.openhab.core.library.types.DateTimeType; line 28, column 21, length 43 in zuhause
2021-01-06 10:38:51.520 [INFO ] [e.automation.internal.RuleEngineImpl] - Rule engine started.
hier mal die komplette "System Started" Rule und unten das resultierende Log.
Den Schalter "SwiItemTest04" hab ich nur eingebaut, um die Regel im laufenden Betrieb auch jederzeit zum Test manuell laufen lassen zu können.rule "System started"
when System started or
Item SwiItemTest04 received command
then
logInfo('INFO', "Durchlaufe System started.")
val telegramAction = getActions("telegram","telegram:telegramBot:xxxxxx")
val dayStart = (DatAstroDayLightStart.state as DateTimeType).getZonedDateTime()
val dayEnd = (DatAstroDayLightEnd.state as DateTimeType).getZonedDateTime()
if (now.isAfter(dayStart) && now.isBefore(dayEnd)) {
NumIsDayLight.postUpdate(1)
logInfo('INFO', "Tageslicht: Es ist hell.")
}
else {
NumIsDayLight.postUpdate(0)
logInfo('INFO', "Tageslicht: Es ist dunkel.")
}
telegramAction.sendTelegram("openHAB gestartet.") // Nachricht an Telegram
logInfo('INFO', "Ende System started")
end
- Über den Testschalter manuell gestartet ist alles gut - keine Fehlermeldung.
- Automatisch beim System Startup gestartet tritt der Fehler (siehe Log) auf und die Abarbeitung der Rule bricht ab.
Besagte Zeile 28 ist diese: val dayStart = (DatAstroDayLightStart.state as DateTimeType).getZonedDateTime()
==> sieht für mich eigenlich korrekt aus (zumal alles funktioniert, wenn ich die Regel manuell auslöse)
2021-01-06 10:38:10.628 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Time zone set to 'Europe/Berlin'.
2021-01-06 10:38:10.686 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Location set to '..........'.
2021-01-06 10:38:10.690 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Locale set to 'de_DE'.
2021-01-06 10:38:10.693 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Measurement system set to 'SI'.
2021-01-06 10:38:23.246 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'zuhause.items'
2021-01-06 10:38:25.248 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'mqtt.persist'
2021-01-06 10:38:25.386 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'rrd4j.persist'
2021-01-06 10:38:25.532 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'jdbc.persist'
2021-01-06 10:38:26.145 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'zuhause.sitemap'
2021-01-06 10:38:27.134 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'zuhause.things'
2021-01-06 10:38:30.787 [INFO ] [.core.model.lsp.internal.ModelServer] - Started Language Server Protocol (LSP) service on port 5007
2021-01-06 10:38:31.153 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'zuhause.rules'
2021-01-06 10:38:44.610 [INFO ] [org.openhab.ui.internal.UIService ] - Started UI on port 8080
2021-01-06 10:38:51.375 [INFO ] [org.openhab.core.model.script.INFO ] - Durchlaufe System started.
2021-01-06 10:38:51.513 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'zuhause-1' failed: Could not cast NULL to org.openhab.core.library.types.DateTimeType; line 28, column 21, length 43 in zuhause
2021-01-06 10:38:51.520 [INFO ] [e.automation.internal.RuleEngineImpl] - Rule engine started.
- udo1toni
- Beiträge: 15265
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: OH3: Scripte/Regeln bei Systemstart automatisch ausführen
Nein, die Rule wird ganz normal ausgeführt. Das Item DatAstroDayLightStart ist aber noch nicht mit Daten befüllt, deshalb knallt es.
Gesendet von meinem SM-G973F mit Tapatalk
Gesendet von meinem SM-G973F mit Tapatalk
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet
- peter-pan
- Beiträge: 2770
- Registriert: 28. Nov 2018 12:03
- Wohnort: Schwäbisch Gmünd
Re: OH3: Scripte/Regeln bei Systemstart automatisch ausführen
Udo hatte natürlich Recht. Ich hab einfach mal einen Timer eingebaut und siehe da, es funktioniert.
Meine "etwas modifizierte" Rule:
Code: Alles auswählen
rule "System started"
when System started or
Item Dummy_4 changed to ON
then
logInfo('INFO', "Durchlaufe System started.")
createTimer(now.plusSeconds(90)) [|
//val telegramAction = getActions("telegram","telegram:telegramBot:xxxxxx")
val dayStart = (radiator_valve_05_next_change.state as DateTimeType).getZonedDateTime()
val dayEnd = (radiator_valve_05_next_change.state as DateTimeType).getZonedDateTime()
if (now.isAfter(dayStart) && now.isBefore(dayEnd)) {
//NumIsDayLight.postUpdate(1)
logInfo('INFO', "Tageslicht: Es ist hell.{}: {}",dayStart,dayEnd)
}
else {
//NumIsDayLight.postUpdate(0)
logInfo('INFO', "Tageslicht: Es ist dunkel.{}: {}",dayStart,dayEnd)
}
//telegramAction.sendTelegram("openHAB gestartet.") // Nachricht an Telegram
logInfo('INFO', "Ende System started")
]
end
Code: Alles auswählen
2021-01-06 16:32:02.184 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Time zone set to 'Europe/Berlin'.
2021-01-06 16:32:02.274 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Location set to '12.34567,1.23456'.
2021-01-06 16:32:02.282 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Locale set to 'de_DE'.
2021-01-06 16:32:24.638 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'test_avm.items'
2021-01-06 16:32:27.546 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'test_homematic.items'
2021-01-06 16:32:28.649 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'test.items'
2021-01-06 16:32:31.469 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'mosquitto_bridge.things'
2021-01-06 16:32:31.693 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'esp3201.things'
2021-01-06 16:32:31.804 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'mail.things'
2021-01-06 16:32:40.042 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'testDateTimePattern.rules'
2021-01-06 16:32:44.567 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'jodaTOzone.rules'
2021-01-06 16:32:47.246 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'test_start.rules'
2021-01-06 16:32:48.583 [INFO ] [.core.model.lsp.internal.ModelServer] - Started Language Server Protocol (LSP) service on port 5007
2021-01-06 16:32:58.802 [INFO ] [org.openhab.core.model.script.INFO ] - Durchlaufe System started.
2021-01-06 16:32:58.945 [INFO ] [e.automation.internal.RuleEngineImpl] - Rule engine started.
2021-01-06 16:33:00.115 [INFO ] [org.openhab.ui.internal.UIService ] - Started UI on port 8080
2021-01-06 16:33:51.691 [INFO ] [ab.ui.habpanel.internal.HABPanelTile] - Started HABPanel at /habpanel
2021-01-06 16:33:55.748 [INFO ] [.transport.mqtt.MqttBrokerConnection] - Starting MQTT broker connection to '192.168.123.45' with clientid OH2_vera
2021-01-06 16:33:55.818 [WARN ] [.MqttBrokerConnectionServiceInstance] - MqttBroker connection configuration faulty: host : You need to provide a hostname/IP!
2021-01-06 16:33:56.892 [INFO ] [ternal.communicator.client.RpcClient] - Interface 'WIRED' on gateway '3014F711A0001F98A9AABCAF' not available, disabling support
2021-01-06 16:33:56.928 [INFO ] [ternal.communicator.client.RpcClient] - Interface 'CUXD' on gateway '3014F711A0001F98A9AABCAF' not available, disabling support
2021-01-06 16:33:57.182 [INFO ] [ommunicator.AbstractHomematicGateway] - HmGatewayInfo[id=CCU,type=CCU2,firmware=3.53.34,address=PEQ2184367,rf=true,wired=false,hmip=true,cuxd=false,group=true]
2021-01-06 16:34:29.717 [INFO ] [org.openhab.core.model.script.INFO ] - Tageslicht: Es ist dunkel.2021-01-06T18:00+01:00: 2021-01-06T18:00+01:00
2021-01-06 16:34:29.726 [INFO ] [org.openhab.core.model.script.INFO ] - Ende System started
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian