NEEO Remote Binding/Transport

@Mherwege

  1. Discovery is a bit wacky because of the way NEEO does it and some bugs in the jmdns implementation. Basically - the brain rarely sends out announcements on it’s own and really waits for a query. jmdns doesn’t ever query - it only passively listens (and it’s buffer size is too small - so I get partial results that I can use). So discovery isn’t rock solid. Next time that happens - run “dns-sd -B _neeo._tcp” from the command line. That will run a query and you’ll see it immediately in the inbox. Note: the command itself caches - so it will only query if you haven’t run it for x amount of time (although it’s really short).
  2. Yes - next step was to make it a trigger channel. I wanted to get this out before learning what and how to do trigger channels.
  3. That exception a few people get from time to time and I don’t know the cause. Has something to do with the old version not being cleanly uninstalled. Could you tell me exactly how you installed the new version (ie simply dropped the jar on top of the other, had no prior jar, etc)?

BTW - next up is making that channel a trigger channel and finally addressing OH1 items.

@Mherwege
So I was just reading about trigger channels - correct me if I’m wrong but there is no payload with them? You just send event types? In that case, it’s wrong for this forward actions because the actions have a payload (example: launching a recipe will give me a “{ action=‘launch’, recipe=‘recipename’ }” and a button press gives us different parameters. BTW - none of the forward actions are documented - so I don’t even know what combinations of parameters are valid yet.

Here we go:

2017-11-22 14:02:01.647 [ERROR] [org.openhab.binding.neeo            ] - [org.openhab.binding.neeo.type.NeeoChannelTypeProvider] Cannot register Component
org.osgi.service.component.ComponentException: The component name 'org.openhab.binding.neeo.type.NeeoChannelTypeProvider' has already been registered by Bundle 216 (org.openhab.binding.neeo) as Component of Class org.openhab.binding.neeo.internal.type.NeeoChannelTypeProviderImpl
	at org.apache.felix.scr.impl.ComponentRegistry.checkComponentName(ComponentRegistry.java:222) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.BundleComponentActivator.loadDescriptor(BundleComponentActivator.java:448) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.BundleComponentActivator.initialize(BundleComponentActivator.java:315) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.BundleComponentActivator.<init>(BundleComponentActivator.java:268) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:388) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.Activator.access$200(Activator.java:54) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:265) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.utils.extender.AbstractExtender.createExtension(AbstractExtender.java:254) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.utils.extender.AbstractExtender.modifiedBundle(AbstractExtender.java:227) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.utils.extender.AbstractExtender.addingBundle(AbstractExtender.java:187) [39:org.apache.felix.scr:2.0.12]
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:469) [?:?]
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:415) [?:?]
	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) [?:?]
	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229) [?:?]
	at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:444) [?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:903) [?:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:213) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:120) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:156) [?:?]
	at org.eclipse.osgi.container.Module.publishEvent(Module.java:476) [?:?]
	at org.eclipse.osgi.container.Module.start(Module.java:467) [?:?]
	at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:470) [?:?]
	at org.eclipse.osgi.container.ModuleContainer.start(ModuleContainer.java:736) [?:?]
	at org.eclipse.osgi.container.ModuleContainer.applyDelta(ModuleContainer.java:727) [?:?]
	at org.eclipse.osgi.container.ModuleContainer.resolveAndApply(ModuleContainer.java:497) [?:?]
	at org.eclipse.osgi.container.ModuleContainer.resolve(ModuleContainer.java:443) [?:?]
	at org.eclipse.osgi.container.ModuleContainer.refresh(ModuleContainer.java:987) [?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1368) [?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1) [?:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) [?:?]
2017-11-22 14:02:01.655 [ERROR] [org.openhab.binding.neeo            ] - [org.openhab.binding.neeo.type.NeeoConfigDescriptionProvider] Cannot register Component
org.osgi.service.component.ComponentException: The component name 'org.openhab.binding.neeo.type.NeeoConfigDescriptionProvider' has already been registered by Bundle 216 (org.openhab.binding.neeo) as Component of Class org.openhab.binding.neeo.internal.type.NeeoConfigDescriptionProviderImpl
	at org.apache.felix.scr.impl.ComponentRegistry.checkComponentName(ComponentRegistry.java:222) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.BundleComponentActivator.loadDescriptor(BundleComponentActivator.java:448) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.BundleComponentActivator.initialize(BundleComponentActivator.java:315) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.BundleComponentActivator.<init>(BundleComponentActivator.java:268) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:388) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.Activator.access$200(Activator.java:54) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:265) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.utils.extender.AbstractExtender.createExtension(AbstractExtender.java:254) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.utils.extender.AbstractExtender.modifiedBundle(AbstractExtender.java:227) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.utils.extender.AbstractExtender.addingBundle(AbstractExtender.java:187) [39:org.apache.felix.scr:2.0.12]
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:469) [?:?]
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:415) [?:?]
	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) [?:?]
	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229) [?:?]
	at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:444) [?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:903) [?:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:213) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:120) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:156) [?:?]
	at org.eclipse.osgi.container.Module.publishEvent(Module.java:476) [?:?]
	at org.eclipse.osgi.container.Module.start(Module.java:467) [?:?]
	at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:470) [?:?]
	at org.eclipse.osgi.container.ModuleContainer.start(ModuleContainer.java:736) [?:?]
	at org.eclipse.osgi.container.ModuleContainer.applyDelta(ModuleContainer.java:727) [?:?]
	at org.eclipse.osgi.container.ModuleContainer.resolveAndApply(ModuleContainer.java:497) [?:?]
	at org.eclipse.osgi.container.ModuleContainer.resolve(ModuleContainer.java:443) [?:?]
	at org.eclipse.osgi.container.ModuleContainer.refresh(ModuleContainer.java:987) [?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1368) [?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1) [?:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) [?:?]
2017-11-22 14:02:01.660 [ERROR] [org.openhab.binding.neeo            ] - [org.openhab.binding.neeo.type.NeeoThingTypeProvider] Cannot register Component
org.osgi.service.component.ComponentException: The component name 'org.openhab.binding.neeo.type.NeeoThingTypeProvider' has already been registered by Bundle 216 (org.openhab.binding.neeo) as Component of Class org.openhab.binding.neeo.internal.type.NeeoThingTypeProviderImpl
	at org.apache.felix.scr.impl.ComponentRegistry.checkComponentName(ComponentRegistry.java:222) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.BundleComponentActivator.loadDescriptor(BundleComponentActivator.java:448) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.BundleComponentActivator.initialize(BundleComponentActivator.java:315) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.BundleComponentActivator.<init>(BundleComponentActivator.java:268) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:388) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.Activator.access$200(Activator.java:54) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:265) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.utils.extender.AbstractExtender.createExtension(AbstractExtender.java:254) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.utils.extender.AbstractExtender.modifiedBundle(AbstractExtender.java:227) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.utils.extender.AbstractExtender.addingBundle(AbstractExtender.java:187) [39:org.apache.felix.scr:2.0.12]
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:469) [?:?]
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:415) [?:?]
	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) [?:?]
	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229) [?:?]
	at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:444) [?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:903) [?:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:213) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:120) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:156) [?:?]
	at org.eclipse.osgi.container.Module.publishEvent(Module.java:476) [?:?]
	at org.eclipse.osgi.container.Module.start(Module.java:467) [?:?]
	at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:470) [?:?]
	at org.eclipse.osgi.container.ModuleContainer.start(ModuleContainer.java:736) [?:?]
	at org.eclipse.osgi.container.ModuleContainer.applyDelta(ModuleContainer.java:727) [?:?]
	at org.eclipse.osgi.container.ModuleContainer.resolveAndApply(ModuleContainer.java:497) [?:?]
	at org.eclipse.osgi.container.ModuleContainer.resolve(ModuleContainer.java:443) [?:?]
	at org.eclipse.osgi.container.ModuleContainer.refresh(ModuleContainer.java:987) [?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1368) [?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1) [?:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) [?:?]
2017-11-22 14:02:01.664 [ERROR] [org.openhab.binding.neeo            ] - [org.openhab.binding.neeo.type.NeeoTypeGenerator] Cannot register Component
org.osgi.service.component.ComponentException: The component name 'org.openhab.binding.neeo.type.NeeoTypeGenerator' has already been registered by Bundle 216 (org.openhab.binding.neeo) as Component of Class org.openhab.binding.neeo.internal.type.NeeoTypeGeneratorImpl
	at org.apache.felix.scr.impl.ComponentRegistry.checkComponentName(ComponentRegistry.java:222) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.BundleComponentActivator.loadDescriptor(BundleComponentActivator.java:448) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.BundleComponentActivator.initialize(BundleComponentActivator.java:315) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.BundleComponentActivator.<init>(BundleComponentActivator.java:268) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:388) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.Activator.access$200(Activator.java:54) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:265) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.utils.extender.AbstractExtender.createExtension(AbstractExtender.java:254) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.utils.extender.AbstractExtender.modifiedBundle(AbstractExtender.java:227) [39:org.apache.felix.scr:2.0.12]
	at org.apache.felix.utils.extender.AbstractExtender.addingBundle(AbstractExtender.java:187) [39:org.apache.felix.scr:2.0.12]
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:469) [?:?]
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:415) [?:?]
	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) [?:?]
	at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229) [?:?]
	at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:444) [?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:903) [?:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:213) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:120) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:112) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:156) [?:?]
	at org.eclipse.osgi.container.Module.publishEvent(Module.java:476) [?:?]
	at org.eclipse.osgi.container.Module.start(Module.java:467) [?:?]
	at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:470) [?:?]
	at org.eclipse.osgi.container.ModuleContainer.start(ModuleContainer.java:736) [?:?]
	at org.eclipse.osgi.container.ModuleContainer.applyDelta(ModuleContainer.java:727) [?:?]
	at org.eclipse.osgi.container.ModuleContainer.resolveAndApply(ModuleContainer.java:497) [?:?]
	at org.eclipse.osgi.container.ModuleContainer.resolve(ModuleContainer.java:443) [?:?]
	at org.eclipse.osgi.container.ModuleContainer.refresh(ModuleContainer.java:987) [?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1368) [?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent(ModuleContainer.java:1) [?:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) [?:?]
2017-11-22 14:02:24.462 [INFO ] [g.discovery.internal.PersistentInbox] - Added new thing 'neeo:brain:57472939' to inbox.

@Dragonfly

Same issue as @Mherwege is having - let me play on my end a bit

@tmrobert8 There is a payload with triggers.
There is a triggerChannel method in the BaseThingHandler that has 2 arguments: channelUID and event, whereby event can be any string and is the payload.
I implemented this here: https://github.com/openhab/openhab2-addons/blob/master/addons/binding/org.openhab.binding.nikohomecontrol/src/main/java/org/openhab/binding/nikohomecontrol/handler/NikoHomeControlBridgeHandler.java (lines 257 and onwards). Your thing-types.xml should contain corresponding channel type definitions (example here: https://github.com/openhab/openhab2-addons/blob/master/addons/binding/org.openhab.binding.nikohomecontrol/ESH-INF/thing/thing-types.xml).

@tmrobert8
If forwardActions would be implemented as a trigger channel, this rule should do what you had before:

rule "NEEO"
    when
        Channel 'neeo:brain:d487672e:forwardActions' triggered
    then
        logInfo("neeo", "action received")
        
        var data = receivedEvent.getEvent()
 
        logInfo("neeo", "data: {}", data)

        var String action = transform("JSONPATH", "$.action", data);
        var String device = transform("JSONPATH", "$.device", data);
        var String room = transform("JSONPATH", "$.room", data);
        var String actionparameter = transform("JSONPATH", "$.actionparameter", data);
        
        logInfo("neeo", "action: {}, device: {}, room: {}, actionparameter: " + actionparameter, action, device, room)
end

@Mherwege

Ah - interesting - thanks. I’ll have it implemented in the next version

@tmrobert8 Regarding the exceptions at startup.
I tested again to make sure.
I stopped OH, cleared temp and cache and restarted. I then stopped OH again after a few minutes to make sure the cache was populated and I had a clean start. The errors still appeared at the top of my start log. I have them every time I start.

@tmrobert8
I tested again removing a device thing (so not the NEEO bridge thing), to see if it came back in discovery. It did not. It also did not when manually triggering the discovery from the inbox.
I then tried as you suggested and ran avahi-browse -t _neeo._tcp (alternative for your dns-sd -B _neeo._tcp command, but on the RPi). The brain was immediately discovered on the command line interface. However, again, the device did not come back in OH.
Maybe another thing that could have influenced this. I saw the below in my log, which seems to hint at the thing not being removed fully (but it is gone from the UI). Maybe that has something to do with it.

2017-11-23 16:43:46.211 [hingStatusInfoChangedEvent] - 'neeo:device-6338072190860132352:d487672e:room:device' changed from ONLINE to REMOVING
2017-11-23 16:43:46.231 [hingStatusInfoChangedEvent] - 'neeo:device-6338072190860132352:d487672e:room:device' changed from REMOVING to REMOVED
2017-11-23 16:43:46.254 [hingStatusInfoChangedEvent] - 'neeo:device-6338072190860132352:d487672e:room:device' changed from REMOVED to UNINITIALIZED
2017-11-23 16:43:46.266 [hingStatusInfoChangedEvent] - 'neeo:device-6338072190860132352:d487672e:room:device' changed from REMOVED to UNINITIALIZED (HANDLER_MISSING_ERROR)

Hi Thomas
You got it. As soon as there are two time the same name in items all items disappear from neeo transport page. Thanks again for the hint.

FYI - big update later this week (should be, in my eyes, feature complete with everything I wanted in it). Should also address most of these bugs. After this next release, I’m going to do bug fixes and try to get approved for the merge. Keep an eye posted on this thread.

2 Likes

After installing this I it runs fine but I have problems when I restart OH. It hangs on startup and the only thing that appears on the default page is the Neeo connector - none of the UI’s . Hangs on installing UI’s. Sometimes I can clear the cache and tmp and it will restart OK… sometimes not. Worked dependably before and I have only a couple of plugins installed. Hope you found something in the update that might remedy this

Yes - that’s a bit of a ‘not sure what to do’ bug. Problem is that I use the item label as the neeo label - and the neeo label must be unique. Unfortunately if you have a thing that does grouping - and you have the same name between the two groups - it’s unique in OH but not in NEEO. I’m trying to address that by adding the group name to the label if it’s grouped.

BTW - for those having issues with discovery - I think it’s a bug in the brain’s MDNS handling. However - if you go onto the NEEO APP and do the change brain - that triggers the brain to send out it’s discovery beacons. Seems to work reliably.

I’m having a problem with the binding where I can turn off scenarios from OpenHAB but turning them on has no effect.

All the states seem to update fine in the Paper UI when controlling using the NEEO remote (Status toggles, current state values), and once I have turned a scenario on sliding the toggle to off in the Paper UI will turn the scenario off but sliding a toggle from off to on has no effect.

Looking through the logs I found this:

00:07:58.733 [ERROR] [ome.core.thing.link.ThingLinkManager] - Exception occurred while informing handler:channelKey must not be empty
java.lang.IllegalArgumentException: channelKey must not be empty
	at org.openhab.binding.neeo.NeeoUtil.requireNotEmpty(NeeoUtil.java:95)[226:org.openhab.binding.neeo:2.1.0.201706091502]
	at org.openhab.binding.neeo.handler.NeeoRoomHandler.refreshChannel(NeeoRoomHandler.java:142)[226:org.openhab.binding.neeo:2.1.0.201706091502]
	at org.openhab.binding.neeo.handler.NeeoRoomHandler.handleCommand(NeeoRoomHandler.java:98)[226:org.openhab.binding.neeo:2.1.0.201706091502]
	at org.eclipse.smarthome.core.thing.binding.BaseThingHandler.channelLinked(BaseThingHandler.java:207)[109:org.eclipse.smarthome.core.thing:0.9.0.b5]
	at org.eclipse.smarthome.core.thing.link.ThingLinkManager.informHandlerAboutLinkedChannel(ThingLinkManager.java:264)[109:org.eclipse.smarthome.core.thing:0.9.0.b5]
	at org.eclipse.smarthome.core.thing.link.ThingLinkManager.receiveTypedEvent(ThingLinkManager.java:304)[109:org.eclipse.smarthome.core.thing:0.9.0.b5]
	at org.eclipse.smarthome.core.thing.link.ThingLinkManager.receiveTypedEvent(ThingLinkManager.java:1)[109:org.eclipse.smarthome.core.thing:0.9.0.b5]
	at org.eclipse.smarthome.core.events.AbstractTypedEventSubscriber.receive(AbstractTypedEventSubscriber.java:50)[102:org.eclipse.smarthome.core:0.9.0.b5]
	at org.eclipse.smarthome.core.internal.events.OSGiEventManager$1.call(OSGiEventManager.java:192)[102:org.eclipse.smarthome.core:0.9.0.b5]
	at org.eclipse.smarthome.core.internal.events.OSGiEventManager$1.call(OSGiEventManager.java:1)[102:org.eclipse.smarthome.core:0.9.0.b5]
	at org.eclipse.smarthome.core.common.SafeMethodCaller$CallableWrapper.call(SafeMethodCaller.java:181)[102:org.eclipse.smarthome.core:0.9.0.b5]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_102]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_102]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_102]
	at java.lang.Thread.run(Thread.java:745)[:1.8.0_102]
00:07:58.735 [ERROR] [ome.core.thing.link.ThingLinkManager] - Exception occurred while informing handler:channelKey must not be empty
java.lang.IllegalArgumentException: channelKey must not be empty
	at org.openhab.binding.neeo.NeeoUtil.requireNotEmpty(NeeoUtil.java:95)[226:org.openhab.binding.neeo:2.1.0.201706091502]
	at org.openhab.binding.neeo.handler.NeeoRoomHandler.refreshChannel(NeeoRoomHandler.java:142)[226:org.openhab.binding.neeo:2.1.0.201706091502]
	at org.openhab.binding.neeo.handler.NeeoRoomHandler.handleCommand(NeeoRoomHandler.java:98)[226:org.openhab.binding.neeo:2.1.0.201706091502]
	at org.eclipse.smarthome.core.thing.binding.BaseThingHandler.channelLinked(BaseThingHandler.java:207)[109:org.eclipse.smarthome.core.thing:0.9.0.b5]
	at org.eclipse.smarthome.core.thing.link.ThingLinkManager.informHandlerAboutLinkedChannel(ThingLinkManager.java:264)[109:org.eclipse.smarthome.core.thing:0.9.0.b5]
	at org.eclipse.smarthome.core.thing.link.ThingLinkManager.receiveTypedEvent(ThingLinkManager.java:304)[109:org.eclipse.smarthome.core.thing:0.9.0.b5]
	at org.eclipse.smarthome.core.thing.link.ThingLinkManager.receiveTypedEvent(ThingLinkManager.java:1)[109:org.eclipse.smarthome.core.thing:0.9.0.b5]
	at org.eclipse.smarthome.core.events.AbstractTypedEventSubscriber.receive(AbstractTypedEventSubscriber.java:50)[102:org.eclipse.smarthome.core:0.9.0.b5]
	at org.eclipse.smarthome.core.internal.events.OSGiEventManager$1.call(OSGiEventManager.java:192)[102:org.eclipse.smarthome.core:0.9.0.b5]
	at org.eclipse.smarthome.core.internal.events.OSGiEventManager$1.call(OSGiEventManager.java:1)[102:org.eclipse.smarthome.core:0.9.0.b5]
	at org.eclipse.smarthome.core.common.SafeMethodCaller$CallableWrapper.call(SafeMethodCaller.java:181)[102:org.eclipse.smarthome.core:0.9.0.b5]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_102]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_102]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_102]
	at java.lang.Thread.run(Thread.java:745)[:1.8.0_102]

I also noticed the Thing “NEEO Room Living Room” shows Status: OFFLINE - COMMUNICATION_ERROR Internal Server Error

Any advice on how to troubleshoot next would be great!
Nic

I think the items come back if you disable “expose all” in openhab.

@Nic_P

Both of those issues have already been fixed in the upcoming version (which I’m still testing)

@aco and everyone
The name issue has also been fixed in the upcoming version (in addition to a bunch of other fixes). Next version is very exciting but since so much has changed - is taking me awhile to test out on my own system (one of the biggest is that I’ve got multiple brains now - and I’m making sure it works fine with them {and enables features for multiple ones}).

Just posted the latest binding/transport. There is ALOT of bug fixes here and ALOT of new functionality - I’m going to only say some of the highlights:

Binding

  1. You will likely need to drop all your existing neeo things and rediscover for them to work properly (the underlying types have changed and I think some of the channel names have changed)
  2. Names/Type names have all changed to show the brainid (for those with multiple brains) and to generally look better.
  3. ActiveScenarios/Current step have changed to trigger channels
  4. Forward Actions has changed to a trigger channel
  5. Too many bug fixes to list - but should address everything mentioned plus alot not mentioned
  6. The binding will now check the availability of the brain and will go online/offline as it changes

Transport (Brains page)

  1. I’ve added the ability to blink the LED (if you have multiple brains - helps identify)

Transport (Things page)

  1. Ability to search all your things
  2. Ability to create a VIRTUAL thing. This will enable you to mix/match existing OH2 channels and use OH1 items. Simply create a new virtual thing - be sure to name it! You can then hit the “+” sign to assign items (OH1/OH2) to the virtual thing (or import an existing items file to create it). I’ll eventually be posting a video demonstrating this.
  3. Added trigger channels (the puzzle piece icon). You can define your own trigger channel on either a virtual thing or an OH2 thing. The trigger can then happen from the NEEO remote and fire off your own rule (will appear as a button on the remote). I’ll eventually be creating a video demonstrating this.
  4. If there are trigger channels, you can download a rules template to use with the trigger items already defined in the template (the down arrow icon).
  5. The ability to expose other brains to any brain (there is a switch in the service->configuration that you can toggle for automatically exposing the items). This is really nice if you have multiple brains. Will allow you to create recipes on a brain that includes devices on other brains (I’ll be posting a video about this eventually)
  6. LOTSA of bug fixes on the transport

** Know issues **
Discovery is still an issue. If you download the latest 2.2 snapshot - it’s actually much improved (I depend on the jmdns service in openhab for discovery). The issue with discovering an item, deleting it from the inbox and not finding it on another discovery is related to this (the jmdns service woudn’t find it again). I’m still doing some investigations on this.

** What now **
I’m going to be ONLY doing bug fixes at this point. While you all test - I’ll be fixing up the code to eventually be merged. The only feature that is not in here yet - I want to add a NEEO plugin manager tab that will allow you to run/watchdog any NEEO plugin that people are creating.

1 Like

Did you post the sony-binding?! or has it just the wrong name…

I Just add the link again - so it´s easier to find :wink:

lol - reposted the correct one! Thanks for seeing that…