Rachio Smart Sprinkler Controller

ok, lets go

here is the bundle, rename it to .jar, prepare as described above (create the .things file and insert your apikey) and copy the jar to your addons folder.
org.openhab.binding.rachio-2.3.0-SNAPSHOT.jar.pdf (251.1 KB)

mybe make a backup of your jsondb folder - it will create a lot of stuff


Will try it out this evening when I get home
is there a list of channels available somewhere so I know how to code my sitemap?

Squid

just use PaperUI to discover the things and then link them to items - pretty easy

ok
will do, I’ll also set up a separate logger so details should be easy to find :face_with_raised_eyebrow:

:+1: in this case make sure to enable DEBUG for the binding

https://docs.openhab.org/administration/logging.html

This should work (creating rachio.log with DEBUG info):

# rachio logger
log4j.logger.org.openhab.binding.rachio = DEBUG, rachio, osgi:*
log4j.additivity.org.openhab.binding.rachio = false

# File appender - rachio.log
log4j.appender.rachio=org.apache.log4j.RollingFileAppender
log4j.appender.rachio.layout=org.apache.log4j.PatternLayout
log4j.appender.rachio.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-26.26c{1}] - %m%n
log4j.appender.rachio.file=${openhab.logdir}/rachio.log
log4j.appender.rachio.append=true
log4j.appender.rachio.maxFileSize=10MB
log4j.appender.rachio.maxBackupIndex=10

The config file for logging is org.ops4j.pax.logging.cfg located in the userdata/etc folder (manual setup) or in /var/lib/openhab2/etc (apt/deb-based setup).

very similar to mine
 :wink:

_# LOGGER_
# RACHIO
log4j2.logger.rachio.name = org.openhab.binding.rachio
log4j2.logger.rachio.level = DEBUG
log4j2.logger.rachio.additivity = false
log4j2.logger.rachio.appenderRefs = rachio
log4j2.logger.rachio.appenderRef.rachio.ref = rachio
_# Appender_
# RACHIO
log4j2.appender.rachio.name = rachio
log4j2.appender.rachio.type = RollingRandomAccessFile
log4j2.appender.rachio.fileName = D:\\OpenHab\\userdata\\logs/rachio.log
log4j2.appender.rachio.filePattern = D:\\OpenHab\\userdata\\logs/rachio.log.%i
log4j2.appender.rachio.immediateFlush = true
log4j2.appender.rachio.append = true
log4j2.appender.rachio.layout.type = PatternLayout
log4j2.appender.rachio.layout.pattern = %d{dd-MMM-yyyy HH:mm:ss.SSS} [%-5.5p] [%-50.50c] - %m%n
log4j2.appender.rachio.policies.type = Policies
log4j2.appender.rachio.policies.size.type = SizeBasedTriggeringPolicy
log4j2.appender.rachio.policies.size.size = 10MB
log4j2.appender.rachio.strategy.type = DefaultRolloverStrategy
log4j2.appender.rachio.strategy.max = 10

@markus7017

Well I couldn’t wait to get home, so I remoted in and set things up.

I’m stuck on initializing
 :neutral_face:

Here’s what’s in my log:

07-Feb-2018 14:50:21.684 [DEBUG] [org.openhab.binding.rachio                        ] - BundleEvent INSTALLED - org.openhab.binding.rachio
07-Feb-2018 14:50:21.887 [DEBUG] [org.openhab.binding.rachio                        ] - BundleEvent RESOLVED - org.openhab.binding.rachio
07-Feb-2018 14:50:21.899 [DEBUG] [org.openhab.binding.rachio                        ] - BundleEvent [unknown:512] - org.openhab.binding.rachio
07-Feb-2018 14:50:21.947 [DEBUG] [org.openhab.binding.rachio                        ] - BundleEvent STARTING - org.openhab.binding.rachio
07-Feb-2018 14:50:21.949 [DEBUG] [org.openhab.binding.rachio                        ] - BundleEvent STARTED - org.openhab.binding.rachio
07-Feb-2018 14:50:21.998 [DEBUG] [org.openhab.binding.rachio                        ] - ServiceEvent REGISTERED - {javax.servlet.ServletContext}={osgi.web.symbolicname=org.openhab.binding.rachio, osgi.web.version=2.3.0.201802071915, osgi.web.contextname=default, osgi.web.contextpath=/, service.id=420, service.bundleid=247, service.scope=singleton} - org.openhab.binding.rachio
07-Feb-2018 14:50:22.001 [INFO ] [b.binding.rachio.internal.api.RachioWebHookServlet] - Started RachioWebhook servlet at /rachio/webhook
07-Feb-2018 14:50:22.002 [DEBUG] [org.openhab.binding.rachio                        ] - ServiceEvent REGISTERED - {javax.servlet.http.HttpServlet}={component.name=org.openhab.binding.rachio.internal.api.RachioWebHookServlet, component.id=256, service.id=419, service.bundleid=247, service.scope=bundle} - org.openhab.binding.rachio
07-Feb-2018 14:50:22.009 [DEBUG] [g.rachio.internal.discovery.RachioDiscoveryService] - Rachio: thing types: [rachio:device, rachio:zone, rachio:cloud] registered.
07-Feb-2018 14:50:22.012 [DEBUG] [g.rachio.internal.discovery.RachioDiscoveryService] - Starting background discovery for new Rachio controllers
07-Feb-2018 14:50:22.013 [DEBUG] [g.rachio.internal.discovery.RachioDiscoveryService] - RachioScan: API not yet initialized
07-Feb-2018 14:50:22.014 [DEBUG] [org.openhab.binding.rachio                        ] - ServiceEvent REGISTERED - {org.eclipse.smarthome.config.discovery.DiscoveryService}={component.name=org.openhab.binding.rachio.internal.discovery.RachioDiscoveryService, component.id=257, service.id=421, service.bundleid=247, service.scope=bundle} - org.openhab.binding.rachio
07-Feb-2018 14:50:22.017 [DEBUG] [enhab.binding.rachio.internal.RachioHandlerFactory] - Initialized Rachio Thing handler.
07-Feb-2018 14:50:22.019 [DEBUG] [org.openhab.binding.rachio                        ] - ServiceEvent REGISTERED - {org.eclipse.smarthome.core.thing.binding.ThingHandlerFactory}={component.name=org.openhab.binding.rachio.internal.RachioHandlerFactory, component.id=258, service.id=422, service.bundleid=247, service.scope=bundle} - org.openhab.binding.rachio
07-Feb-2018 14:50:22.031 [DEBUG] [enhab.binding.rachio.internal.RachioHandlerFactory] - Creating Rachio cloud thing handler
07-Feb-2018 14:50:22.038 [DEBUG] [enhab.binding.rachio.internal.RachioHandlerFactory] - Registering bed discovery service
07-Feb-2018 14:50:22.039 [DEBUG] [g.rachio.internal.discovery.RachioDiscoveryService] - Rachio: thing types: [rachio:device, rachio:zone, rachio:cloud] registered.
07-Feb-2018 14:50:22.041 [DEBUG] [org.openhab.binding.rachio                        ] - ServiceEvent REGISTERED - {org.eclipse.smarthome.config.discovery.DiscoveryService}={service.id=423, service.bundleid=247, service.scope=singleton} - org.openhab.binding.rachio
07-Feb-2018 14:50:22.045 [DEBUG] [org.openhab.binding.rachio                        ] - ServiceEvent REGISTERED - {org.eclipse.smarthome.config.core.status.ConfigStatusProvider}={service.id=424, service.bundleid=247, service.scope=singleton} - org.openhab.binding.rachio

Let me know what you would like me to do.

Squid

go to the inbox and run a scan on Rachio

Scan returns no results


did you created the rachio.things incl the apikey?
was the file loaded by OH? (check oprnhab.log)

Thing file was created and is visible in PaperUI

The .jar file was loaded as it’s provided logging information in it’s dedicated log file.

image

please create a .things file:
Bridge rachio:cloud:1 [ apikey=“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”, pollingInterval=60]
{
}

I did, that’s what created the THING in PAPER UI.

do you see the bridge thing under configure->things?
The bundle is loaded, I see the auto-discovery (which is not yet implemented), but I don‘t see the manual scan

Yes, look at the post a couple of items up and you’ll see my screen grab from Configure → Things

Again if you look up a couple of posts you will see the results of my manual scan where it did not return any results.

Also see this in the log


07-Feb-2018 15:13:02.588 [DEBUG] [g.rachio.internal.discovery.RachioDiscoveryService] - RachioDiscervery: discovery done.
07-Feb-2018 15:13:02.590 [DEBUG] [g.rachio.internal.discovery.RachioDiscoveryService] - RachioScan: API not yet initialized
07-Feb-2018 15:13:02.590 [DEBUG] [g.rachio.internal.discovery.RachioDiscoveryService] - RachioDiscervery: discovery done.
07-Feb-2018 15:13:02.591 [DEBUG] [g.rachio.internal.discovery.RachioDiscoveryService] - Starting scan for new Rachio controllers
07-Feb-2018 15:13:02.593 [DEBUG] [g.rachio.internal.discovery.RachioDiscoveryService] - RachioDiscervery: discovery done.
07-Feb-2018 15:14:02.592 [DEBUG] [g.rachio.internal.discovery.RachioDiscoveryService] - RachioDiscervery: discovery done.
07-Feb-2018 15:14:02.592 [DEBUG] [g.rachio.internal.discovery.RachioDiscoveryService] - RachioDiscervery: discovery done.

anything in openhab.log?

Yes, I see this at startup which I have not encountered until now


2018-02-07 14:50:22.050 [ERROR] [org.eclipse.smarthome.core.thing    ] - [org.eclipse.smarthome.core.thing.internal.ThingManager(84)] The addThingHandlerFactory method has thrown an exception
java.lang.IllegalArgumentException: interface org.eclipse.smarthome.config.core.status.ConfigStatusProvider is not visible from class loader
	at java.lang.reflect.Proxy$ProxyClassFactory.apply(Proxy.java:581) ~[?:?]
	at java.lang.reflect.Proxy$ProxyClassFactory.apply(Proxy.java:557) ~[?:?]
	at java.lang.reflect.WeakCache$Factory.get(WeakCache.java:230) ~[?:?]
	at java.lang.reflect.WeakCache.get(WeakCache.java:127) ~[?:?]
	at java.lang.reflect.Proxy.getProxyClass0(Proxy.java:419) ~[?:?]
	at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:719) ~[?:?]
	at org.eclipse.smarthome.core.internal.common.SafeCallerBuilderImpl.build(SafeCallerBuilderImpl.java:65) ~[?:?]
	at org.eclipse.smarthome.core.thing.internal.ThingManager.doInitializeHandler(ThingManager.java:635) ~[?:?]
	at org.eclipse.smarthome.core.thing.internal.ThingManager.initializeHandler(ThingManager.java:562) ~[?:?]
	at org.eclipse.smarthome.core.thing.internal.ThingManager.registerAndInitializeHandler(ThingManager.java:919) ~[?:?]
	at org.eclipse.smarthome.core.thing.internal.ThingManager.lambda$7(ThingManager.java:901) ~[?:?]
	at java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:891) ~[?:?]
	at java.util.concurrent.CopyOnWriteArraySet.forEach(CopyOnWriteArraySet.java:404) ~[?:?]
	at org.eclipse.smarthome.core.thing.internal.ThingManager.lambda$6(ThingManager.java:898) ~[?:?]
	at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) [?:?]
	at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) [?:?]
	at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) [?:?]
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) [?:?]
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) [?:?]
	at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) [?:?]
	at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) [?:?]
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) [?:?]
	at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) [?:?]
	at org.eclipse.smarthome.core.thing.internal.ThingManager.handleThingHandlerFactoryAddition(ThingManager.java:897) [116:org.eclipse.smarthome.core.thing:0.10.0.201801231340]
	at org.eclipse.smarthome.core.thing.internal.ThingManager.addThingHandlerFactory(ThingManager.java:869) [116:org.eclipse.smarthome.core.thing:0.10.0.201801231340]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
	at org.apache.felix.scr.impl.inject.BaseMethod.invokeMethod(BaseMethod.java:229) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.inject.BaseMethod.access$500(BaseMethod.java:39) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.inject.BaseMethod$Resolved.invoke(BaseMethod.java:650) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.inject.BaseMethod.invoke(BaseMethod.java:506) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.inject.BindMethod.invoke(BindMethod.java:658) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.DependencyManager.doInvokeBindMethod(DependencyManager.java:1722) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.DependencyManager.invokeBindMethod(DependencyManager.java:1699) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.SingleComponentManager.invokeBindMethod(SingleComponentManager.java:372) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:320) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.addedService(DependencyManager.java:291) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1215) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerAdded(ServiceTracker.java:1136) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.trackAdding(ServiceTracker.java:945) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.track(ServiceTracker.java:881) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1167) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:127) [42:org.apache.felix.scr:2.0.12]
	at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109) [?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:915) [?:?]
	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.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:862) [?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:801) [?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:127) [?:?]
	at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:225) [?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:464) [?:?]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:887) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.register(AbstractComponentManager.java:874) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.RegistrationManager.changeRegistration(RegistrationManager.java:132) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:941) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:741) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:675) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:430) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:657) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:341) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:390) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.Activator.access$200(Activator.java:54) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:265) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.utils.extender.AbstractExtender.createExtension(AbstractExtender.java:254) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.utils.extender.AbstractExtender.modifiedBundle(AbstractExtender.java:227) [42:org.apache.felix.scr:2.0.12]
	at org.apache.felix.utils.extender.AbstractExtender.addingBundle(AbstractExtender.java:187) [42: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) [?:?]

ok, need to check