Both rules have a green “IDLE” sign next to it.
But why is the second “simple” rule working as expected and the first script based rule is not working at all?
I found in another discussion that Java could be a problem but the installed version sould be fine:
openjdk version “11.0.17” 2022-10-18
OpenJDK Runtime Environment (build 11.0.17+8-post-Ubuntu-1ubuntu220.04)
OpenJDK 64-Bit Server VM (build 11.0.17+8-post-Ubuntu-1ubuntu220.04, mixed mode, sharing)
What do I do wrong?
I would be grateful for any hints…
here is more technical info
buildString: Release Build
I couldn’t say why one works and another doesn’t but I do know that Quartz is picky. Using a Quartz cron expression builder as well as the builder built into MainUI I get * * * * * ? * for every second. The primary difference is the field where “?” appears and that there is one extra field, though I think that last one is generally optional.
As an aside, if you are looking to do more than just test stuff that’s one thing. But OH is an event based system. There is almost always a better way than polling.
thank you very much for your suggestion, but it didn’t change the situation and the script based rule still isn’t triggered.
I came up with this simple time based rule for tests since my other rule that should be triggered by openweathermap also wasn’t triggered…do you have a suggestion for an event triggered rule that should work? (maybe based on an generic MQTT device) I would appreciate any ideas that would help me. Maybe also a hint where error messages should be. There are none in the normal log.
The fact that openHAB is so hard to use (with no error message for me to work with) is a bit sad. I am preparing a school IoT project with esp32 development boards using MQTT to exchange sensor values. I thought it would make everything more interesting if I included a smart home platform. Just to show how easy it is to incorporate these actuators and sensors into a standard smart home platform and derive intelligent decisions based on additional information, such as external weather data …
I’m actually a bit surprised that the MQTT stuff is all solvable and understandable (even in openHAB after some learning) and it seems that I fail to use openHAB rules - which I thought would be the easy part of this project.
That’s two separate issues. I couldn’t tell you why the OWM rule didn’t trigger. You don’t say what the trigger of this rule is. I would guess it would be based on an Item changed event. If the rule didn’t trigger, it’s almost certainly because the Item didn’t change.
For testing it’s usually best to run the rules manually from MainUI or add a Switch Item to trigger it so you have more control over when it runs.
All rules are triggered by some event. Any rule defined to trigger based on an event that actually occurs should work.
All errors get logged to openhab.log.
It’s hard to say where things are going wrong. You’ve not posted any logs from openhab.log to indicate whether or not the file based rule was even loaded.
I didn’t post this log because there isn’t any error in the log. So my guess was, that this is not helpful. But maybe you can see more that I can:
2023-01-15 04:43:19.773 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Time zone set to 'Europe/Berlin'.
2023-01-15 04:43:19.951 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Location set to xxxx,xxxx'.
2023-01-15 04:43:19.952 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Locale set to 'de'.
2023-01-15 04:43:19.953 [INFO ] [.core.internal.i18n.I18nProviderImpl] - Measurement system set to 'SI'.
2023-01-15 04:43:45.004 [INFO ] [.core.model.lsp.internal.ModelServer] - Started Language Server Protocol (LSP) service on port 5007
2023-01-15 04:43:48.330 [INFO ] [ab.ui.habpanel.internal.HABPanelTile] - Started HABPanel at /habpanel
2023-01-15 04:43:49.866 [INFO ] [.transport.mqtt.MqttBrokerConnection] - Starting MQTT broker connection to 'localhost' with clientid Maler
2023-01-15 04:43:50.804 [INFO ] [e.automation.internal.RuleEngineImpl] - Rule engine started.
I thought a time based event is the simplest possible event, since I was not able to make the rules work based on other events. I thought that I made an error in writing the rule. But it seems that at least the cron based rule seems to be formulated correctly, but still isn’t working.
I’ll try to write a rule based on the MQTT generic device since this is the device I currently understand best.
I now enforced the execution of the time based rule by “run now” and this error message occured in the openhab.log
Is this helpful?
2023-01-15 05:35:09.223 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'TestTime' failed: ___ rule ___ "TestTime"
Time cron "* * * * * ___ ? *"
logInfo("___","rule Test Time")
1. The method or field rule is undefined; line 1, column 0, length 4
2. The method or field when is undefined; line 2, column 16, length 4
3. The method or field cron is undefined; line 3, column 30, length 4
4. The method or field then is undefined; line 4, column 51, length 4
5. The method or field end is undefined; line 7, column 141, length 3
6. This expression is not allowed in this context, since it doesn't cause any side effects.; line 1, column 5, length 10
7. This expression is not allowed in this context, since it doesn't cause any side effects.; line 3, column 25, length 4
8. This expression is not allowed in this context, since it doesn't cause any side effects.; line 3, column 35, length 15
since everything seems to be undefined…
I used this script language option for creating the rule:
I can see that the file was never loaded. You should get a “Model loaded …” for every config file loaded from a text config file, including rules.
So the question is, what’s the name is the file that rule is in? Where is that file? What are the permissions of the file?
It just further points to either the file being in the wrong folder or had the wrong extension. The original rule is using Rules DSL syntax so it must be in a file that ends in “.rules” and is placed in the /etc/openHABian/rules folder.
Or you’ve put a whole file based rule definition as the action to a UI rule. In the UI, all that you put into the script action is the stuff between “then” and “end”. The rest of the rule is defined through the UI.
I’m starting to think this is what you’ve done. Get rid of everything up to and including “then” in your script action and remove the “end” as well. The trigger, name, and description are all defined through the UI.
It might help to review/review the rules pages in the Getting Started Tutorial.