milo
(M)
December 2, 2020, 7:16pm
71
Hello,
i always get this error:
script execution of rule with UID 'ephemeris-1' failed: An error occurred during the script execution: Could not invoke method: org.openhab.core.model.script.actions.BusEvent.postUpdate(org.openhab.core.items.Item,org.openhab.core.types.State) on instance: null in ephemeris
how do i know which rule is ephermis-1 ??? and what is there all about?
Iāve reverted to 2037 - looks much better for now.
rlkoshak
(Rich Koshak)
December 2, 2020, 8:09pm
73
There is an issue to address that and use the rule name instead of UID in those errors. In the mean time you can query the REST API for the rule with that UID and you should be able to tell from the JSON you get back which rule is the problem.
I would expect you have a rule names or containing āephemerisā in the name.
milo
(M)
December 2, 2020, 8:58pm
74
@rlkoshak How do I query the rule Id via rest?
Much more complex and less legible than just copy/paste files to this forumā¦ A bulk export/import would be welcome.
Lolodomo
(Lolodomo)
December 2, 2020, 9:50pm
76
Just open thƩ rules page to see the mapping rule name / rule UID,
rlkoshak
(Rich Koshak)
December 2, 2020, 10:09pm
77
Go to Developer Tools ā API Explorer and scroll down to the Rules section. They are interactive docs so you can issue the query from there.
rlkoshak
(Rich Koshak)
December 2, 2020, 10:15pm
78
Itās no more or less legible than the .things file syntax and .rules file syntax. Donāt confuse familiarity with legibility.
And itās not more complex than opening a text editor, opening the .rules file, and copy and paste the rule into the forum.
The steps are literally just open MainUI, browse to the rule, click on ācodeā, copy and paste the rule into the forum. Thereās only one extra click.
Iāve already opened an issue for import of the YAML files.
I donāt know if there is an issue for bulk import/export. Iām not sure it makes a lot of sense. If you are working with bulk like that it may make more sense to use the raw JSON and REST API, the JSONDB files themselves, or just stick to your text based configs in the first place. But a feature request can be made by anyone.
DeanC
(Dean)
December 2, 2020, 10:57pm
79
Iām having some trouble converting my OH2 DSL rules over to OH3 when they use Ephemeris.
The OH2 rule is:
rule "Weekend Morning"
when
Time cron "0 30 07 ? * * *"
then
if ((Morning_Scene.state != ON) && ((Holiday_Scene.state == ON) || Ephemeris.isWeekend || Ephemeris.isBankHoliday) {
Morning_Scene.sendCommand(ON)
}
end
And my corresponding OH3 rule is:
triggers:
- id: "1"
configuration:
cronExpression: 0 30 7 * * ? *
type: timer.GenericCronTrigger
conditions:
- inputs: {}
id: "2"
label: Not work day
configuration:
type: application/vnd.openhab.dsl.rule
script: (Holiday_Scene.state == ON) || Ephemeris.isWeekend ||
Ephemeris.isBankHoliday
type: script.ScriptCondition
- inputs: {}
id: "4"
configuration:
itemName: Morning_Scene
state: ON
operator: "!="
type: core.ItemStateCondition
actions:
- inputs: {}
id: "3"
configuration:
itemName: Morning_Scene
command: ON
type: core.ItemCommandAction
But the rule fails with the less than helpful message
[ERROR] [e.automation.internal.RuleEngineImpl] - Failed to execute rule 'Weekend_Morning': null
Any suggestions?
rlkoshak
(Rich Koshak)
December 2, 2020, 11:13pm
80
The only code here is in the conditions. Thatās the most likely source of the error. I can think of a few ways to debug this.
First make sure Morning_Scene is properly defined. Iām assuming you selected the Item through the UI so itās probably fine but if you edited the YAML in the code tab it might have a typo or something.
Simplify the script condition. Just check for Holiday_Scene first. If that works add in the isWeekend and then the isBankHoliday. That should tell you which call is failing or if there is something fundamentally wrong with the script over all if Holiday_Scene.state == ON fails.
There is nothing obviously wrong with the rule over all. But Iāve no experience writing Rules DSL in MainUI so there may be something I donāt know that is acting weird. We need to find which of those three calls is failing to determine if a bug needs to be filed I think.
jsjames
(Jeff James)
December 3, 2020, 4:21am
81
Hi Paul - I have the same issue with OH3. Setpoints via the defaultui are not working consistently (Iāve only had them work once so far - and not sure why). I tried both safari and chrome as web browser with similar results.
1 Like
sidamos
(Sid Amos)
December 3, 2020, 6:25am
82
Where can items be imported? I donāt see it.
milo
(M)
December 3, 2020, 7:29am
83
Can someone help me quick with the correct expression instead of
now.getDayOfWeek
?
I know the times library changed but donāt know from which to whichā¦and canāt find itā¦
i tried this
LocalDate.now().getDayOfWeek()
also not possibleā¦
Kai
(Kai Kreuzer)
December 3, 2020, 7:52am
84
In my rule:
logInfo("TEST", now.getDayOfWeek().toString)
Console output:
08:51:29.670 [INFO ] [org.openhab.core.model.script.TEST ] - THURSDAY
milo
(M)
December 3, 2020, 8:10am
85
Ok I need in OH3
toString() or getValue()
to get the name of the Day or the Integer value.
Regards
Kai
(Kai Kreuzer)
December 3, 2020, 8:49am
86
No, the toString
is only necessary to print it as a string in the log statement (as it expects a string parameter). The getDayOfWeek()
returns an enum as per the javadoc .
Tron
(Michael Frotscher)
December 3, 2020, 2:30pm
88
Hi Guys,
is it just me or does MapDB work in your M4? For me, it crashes on startup on either M3 or M4 and thus does not initialize the item states.
I found some discussion on this for M1, but nothing newer nor a solution.
Thanks!
hmerk
(Hans-Jƶrg Merk)
December 3, 2020, 2:38pm
89
No, working fine for meā¦
wborn
(Wouter Born)
December 3, 2020, 2:40pm
90
If crashes means you see the exception in this issue:
opened 07:24PM - 18 Oct 20 UTC
closed 06:11PM - 12 Dec 20 UTC
I get this error on openhab 3 m1 and latest snapshot build #1973. No values are ā¦ restored.
```
[ERROR] [org.openhab.persistence.mapdb ] - bundle org.openhab.persistence.mapdb:3.0.0.202010181646 (256)[org.openhab.persistence.mapdb.internal.MapDbPersistenceService(315)] : The activate method has thrown an exception
java.lang.RuntimeException: java.lang.ClassNotFoundException: org.openhab.persistence.mapdb.internal.MapDBitemSerializer cannot be found by org.openhab.persistence.mapdb_3.0.0.202010181646
at org.mapdb.SerializerPojo.classForName(SerializerPojo.java:99) ~[?:?]
at org.mapdb.SerializerPojo.<init>(SerializerPojo.java:116) ~[?:?]
at org.mapdb.Store.getSerializerPojo(Store.java:113) ~[?:?]
at org.mapdb.EngineWrapper.getSerializerPojo(EngineWrapper.java:135) ~[?:?]
at org.mapdb.EngineWrapper.getSerializerPojo(EngineWrapper.java:135) ~[?:?]
at org.mapdb.DB.<init>(DB.java:82) ~[?:?]
at org.mapdb.DBMaker.make(DBMaker.java:704) ~[?:?]
at org.openhab.persistence.mapdb.internal.MapDbPersistenceService.activate(MapDbPersistenceService.java:94) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
at org.apache.felix.scr.impl.inject.methods.BaseMethod.invokeMethod(BaseMethod.java:228) ~[bundleFile:?]
at org.apache.felix.scr.impl.inject.methods.BaseMethod.access$500(BaseMethod.java:41) ~[bundleFile:?]
at org.apache.felix.scr.impl.inject.methods.BaseMethod$Resolved.invoke(BaseMethod.java:664) ~[bundleFile:?]
at org.apache.felix.scr.impl.inject.methods.BaseMethod.invoke(BaseMethod.java:510) [bundleFile:?]
at org.apache.felix.scr.impl.inject.methods.ActivateMethod.invoke(ActivateMethod.java:317) [bundleFile:?]
at org.apache.felix.scr.impl.inject.methods.ActivateMethod.invoke(ActivateMethod.java:307) [bundleFile:?]
at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:340) [bundleFile:?]
at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:114) [bundleFile:?]
at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:982) [bundleFile:?]
at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:955) [bundleFile:?]
at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:900) [bundleFile:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse$1.run(ServiceFactoryUse.java:212) [org.eclipse.osgi-3.12.100.jar:?]
at java.security.AccessController.doPrivileged(Native Method) [?:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:210) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:111) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:45) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:508) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:461) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:624) [org.eclipse.osgi-3.12.100.jar:?]
at org.apache.felix.scr.impl.manager.SingleRefPair.getServiceObject(SingleRefPair.java:86) [bundleFile:?]
at org.apache.felix.scr.impl.inject.BindParameters.getServiceObject(BindParameters.java:47) [bundleFile:?]
at org.apache.felix.scr.impl.inject.methods.BindMethod.getServiceObject(BindMethod.java:664) [bundleFile:?]
at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2308) [bundleFile:?]
at org.apache.felix.scr.impl.manager.DependencyManager.doInvokeBindMethod(DependencyManager.java:1805) [bundleFile:?]
at org.apache.felix.scr.impl.manager.DependencyManager.invokeBindMethod(DependencyManager.java:1788) [bundleFile:?]
at org.apache.felix.scr.impl.manager.SingleComponentManager.invokeBindMethod(SingleComponentManager.java:435) [bundleFile:?]
at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:325) [bundleFile:?]
at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:294) [bundleFile:?]
at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1216) [bundleFile:?]
at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1137) [bundleFile:?]
at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.trackAdding(ServiceTracker.java:944) [bundleFile:?]
at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.track(ServiceTracker.java:880) [bundleFile:?]
at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1168) [bundleFile:?]
at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:125) [bundleFile:?]
at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:920) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:862) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:801) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:127) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:225) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:469) [org.eclipse.osgi-3.12.100.jar:?]
at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:906) [bundleFile:?]
at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:892) [bundleFile:?]
at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:128) [bundleFile:?]
at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:959) [bundleFile:?]
at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:732) [bundleFile:?]
at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:666) [bundleFile:?]
at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:432) [bundleFile:?]
at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:665) [bundleFile:?]
at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:338) [bundleFile:?]
at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:382) [bundleFile:?]
at org.apache.felix.scr.impl.Activator.access$200(Activator.java:49) [bundleFile:?]
at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:264) [bundleFile:?]
at org.apache.felix.scr.impl.AbstractExtender.createExtension(AbstractExtender.java:196) [bundleFile:?]
at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:169) [bundleFile:?]
at org.apache.felix.scr.impl.AbstractExtender.modifiedBundle(AbstractExtender.java:49) [bundleFile:?]
at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:482) [osgi.core-6.0.0.jar:?]
at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:415) [osgi.core-6.0.0.jar:?]
at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:232) [osgi.core-6.0.0.jar:?]
at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:444) [osgi.core-6.0.0.jar:?]
at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:908) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:213) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:120) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:168) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.container.Module.publishEvent(Module.java:476) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.container.Module.start(Module.java:467) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1634) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1614) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1585) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1528) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) [org.eclipse.osgi-3.12.100.jar:?]
Caused by: java.lang.ClassNotFoundException: org.openhab.persistence.mapdb.internal.MapDBitemSerializer cannot be found by org.openhab.persistence.mapdb_3.0.0.202010181646
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:484) ~[org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:395) ~[org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:387) ~[org.eclipse.osgi-3.12.100.jar:?]
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:150) ~[org.eclipse.osgi-3.12.100.jar:?]
at java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[?:?]
at java.lang.Class.forName0(Native Method) ~[?:?]
at java.lang.Class.forName(Class.java:398) ~[?:?]
at org.mapdb.SerializerPojo.classForName(SerializerPojo.java:97) ~[?:?]
... 89 more
```
ā¦ then you need to remove the DB file and start from scratch.