New binding: Isy

You can see after the reboot and the first connection to the websocket, an error is thrown with the org.xml.sax.SAXParseException element type: actino Is this the root cause?
Should this be action?

I’ll be back online this evening.

Thanks for your help!
-Chase


2017-03-19 12:48:35.211 [DEBUG] [org.openhab.binding.isy             ] - BundleEvent STOPPED - org.openhab.binding.isy
2017-03-19 12:48:35.236 [INFO ] [panel.internal.HABPanelDashboardTile] - Stopped HABPanel
2017-03-19 12:48:35.265 [INFO ] [arthome.ui.paper.internal.PaperUIApp] - Stopped Paper UI
2017-03-19 12:48:35.398 [INFO ] [basic.internal.servlet.WebAppServlet] - Stopped Basic UI
2017-03-19 12:48:35.486 [INFO ] [.dashboard.internal.DashboardService] - Stopped dashboard
2017-03-19 12:49:58.542 [INFO ] [ore.internal.i18n.LocaleProviderImpl] - Locale set to en_US
2017-03-19 12:50:22.246 [INFO ] [.dashboard.internal.DashboardService] - Started dashboard at /start
2017-03-19 12:50:24.330 [INFO ] [basic.internal.servlet.WebAppServlet] - Started Basic UI at /basicui/app
2017-03-19 12:50:24.536 [INFO ] [arthome.ui.paper.internal.PaperUIApp] - Started Paper UI at /paperui
2017-03-19 12:50:24.865 [INFO ] [panel.internal.HABPanelDashboardTile] - Started HABPanel at /habpanel
2017-03-19 12:50:24.872 [DEBUG] [org.openhab.binding.isy             ] - BundleEvent STARTING - org.openhab.binding.isy
2017-03-19 12:50:24.883 [DEBUG] [org.openhab.binding.isy             ] - BundleEvent STARTED - org.openhab.binding.isy
2017-03-19 12:50:25.022 [DEBUG] [org.openhab.binding.isy             ] - ServiceEvent REGISTERED - {org.eclipse.smarthome.core.thing.binding.ThingHandlerFactory}={component.name=bindin$
2017-03-19 12:50:25.391 [DEBUG] [org.openhab.binding.isy             ] - ServiceEvent REGISTERED - {org.eclipse.smarthome.config.discovery.DiscoveryService}={service.id=279, service.bu$
2017-03-19 12:50:25.413 [DEBUG] [inding.isy.handler.IsyHandlerFactory] - registerIsyBridgeDiscoveryService(): Bridge Handler - org.openhab.binding.isy.handler.IsyBridgeHandler@1a5fa1a,$
2017-03-19 12:50:25.502 [DEBUG] [binding.isy.handler.IsyBridgeHandler] - initialize called for bridge handler
2017-03-19 12:50:26.449 [DEBUG] [sy.internal.IsyWebSocketSubscription] - Socket Connected: WebSocketSession[websocket=JettyListenerEventDriver[org.openhab.binding.isy.internal.IsyWebSo$
2017-03-19 12:50:26.452 [INFO ] [sy.internal.IsyWebSocketSubscription] - Connecting to :ws://x.x.x.x:xxxx/rest/subscribe
2017-03-19 12:50:26.453 [DEBUG] [sy.internal.IsyWebSocketSubscription] - in finally in IsyWebSocketSubscription
2017-03-19 12:50:26.535 [ERROR] [sy.internal.IsyWebSocketSubscription] - parse exception
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 91; The element type "actino" must be terminated by the matching end-tag "</actino>".
        at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257)[:1.8.0_112]
        at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)[:1.8.0_112]
        at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)[:1.8.0_112]
        at org.openhab.binding.isy.internal.IsyWebSocketSubscription.parseXml(IsyWebSocketSubscription.java:126)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.openhab.binding.isy.internal.IsyWebSocketSubscription.onWebSocketText(IsyWebSocketSubscription.java:111)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.common.events.JettyListenerEventDriver.onTextMessage(JettyListenerEventDriver.java:128)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.common.message.SimpleTextMessage.messageComplete(SimpleTextMessage.java:69)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.appendMessage(AbstractEventDriver.java:65)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.common.events.JettyListenerEventDriver.onTextFrame(JettyListenerEventDriver.java:122)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.incomingFrame(AbstractEventDriver.java:161)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.common.WebSocketSession.incomingFrame(WebSocketSession.java:308)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.common.extensions.ExtensionStack.incomingFrame(ExtensionStack.java:214)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.common.Parser.notifyFrame(Parser.java:220)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.common.Parser.parse(Parser.java:258)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.client.io.WebSocketClientConnection.onOpen(WebSocketClientConnection.java:92)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.client.io.UpgradeConnection.upgradeConnection(UpgradeConnection.java:306)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.client.io.UpgradeConnection.read(UpgradeConnection.java:243)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.client.io.UpgradeConnection.onFillable(UpgradeConnection.java:163)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)[72:org.eclipse.jetty.io:9.2.19.v20160908]
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)[83:org.eclipse.jetty.util:9.2.19.v20160908]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)[83:org.eclipse.jetty.util:9.2.19.v20160908]
        at java.lang.Thread.run(Thread.java:745)[:1.8.0_112]
2017-03-19 12:50:26.585 [ERROR] [sy.internal.IsyWebSocketSubscription] - parse exception
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 91; The element type "actino" must be terminated by the matching end-tag "</actino>".
        at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257)[:1.8.0_112]
        at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)[:1.8.0_112]
        at org.openhab.binding.isy.internal.IsyWebSocketSubscription.parseXml(IsyWebSocketSubscription.java:126)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.openhab.binding.isy.internal.IsyWebSocketSubscription.onWebSocketText(IsyWebSocketSubscription.java:111)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.common.events.JettyListenerEventDriver.onTextMessage(JettyListenerEventDriver.java:128)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.common.message.SimpleTextMessage.messageComplete(SimpleTextMessage.java:69)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.appendMessage(AbstractEventDriver.java:65)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.common.events.JettyListenerEventDriver.onTextFrame(JettyListenerEventDriver.java:122)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.incomingFrame(AbstractEventDriver.java:161)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.common.WebSocketSession.incomingFrame(WebSocketSession.java:308)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.common.extensions.ExtensionStack.incomingFrame(ExtensionStack.java:214)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.common.Parser.notifyFrame(Parser.java:220)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.common.Parser.parse(Parser.java:258)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.readParse(AbstractWebSocketConnection.java:632)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onFillable(AbstractWebSocketConnection.java:480)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)[72:org.eclipse.jetty.io:9.2.19.v20160908]
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)[83:org.eclipse.jetty.util:9.2.19.v20160908]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)[83:org.eclipse.jetty.util:9.2.19.v20160908]
        at java.lang.Thread.run(Thread.java:745)[:1.8.0_112]
2017-03-19 12:50:26.598 [WARN ] [clipse.jetty.websocket.common.Parser] -
org.eclipse.jetty.websocket.api.ProtocolException: Unknown opcode: 6
        at org.eclipse.jetty.websocket.common.Parser.parseFrame(Parser.java:327)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.common.Parser.parse(Parser.java:254)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.readParse(AbstractWebSocketConnection.java:632)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onFillable(AbstractWebSocketConnection.java:480)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)[72:org.eclipse.jetty.io:9.2.19.v20160908]
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)[83:org.eclipse.jetty.util:9.2.19.v20160908]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)[83:org.eclipse.jetty.util:9.2.19.v20160908]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)[83:org.eclipse.jetty.util:9.2.19.v20160908]
        at java.lang.Thread.run(Thread.java:745)[:1.8.0_112]
2017-03-19 12:50:26.601 [ERROR] [sy.internal.IsyWebSocketSubscription] - Error with websocket communication
org.eclipse.jetty.websocket.api.ProtocolException: Unknown opcode: 6
        at org.eclipse.jetty.websocket.common.Parser.parseFrame(Parser.java:327)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.common.Parser.parse(Parser.java:254)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.readParse(AbstractWebSocketConnection.java:632)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onFillable(AbstractWebSocketConnection.java:480)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)[72:org.eclipse.jetty.io:9.2.19.v20160908]
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)[83:org.eclipse.jetty.util:9.2.19.v20160908]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)[83:org.eclipse.jetty.util:9.2.19.v20160908]
        at java.lang.Thread.run(Thread.java:745)[:1.8.0_112]
2017-03-19 12:50:26.677 [DEBUG] [sy.internal.IsyWebSocketSubscription] - Socket Closed: [1002] Unknown opcode: 6
2017-03-19 12:50:27.298 [DEBUG] [sy.internal.IsyWebSocketSubscription] - Control: _4, Action: 5, Node:
2017-03-19 12:50:27.300 [WARN ] [clipse.jetty.websocket.common.Parser] -
org.eclipse.jetty.websocket.api.WebSocketException: java.lang.NullPointerException
        at org.eclipse.jetty.websocket.common.Parser.parse(Parser.java:280)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.client.io.WebSocketClientConnection.onOpen(WebSocketClientConnection.java:92)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.client.io.UpgradeConnection.upgradeConnection(UpgradeConnection.java:306)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.client.io.UpgradeConnection.read(UpgradeConnection.java:243)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.client.io.UpgradeConnection.onFillable(UpgradeConnection.java:163)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)[72:org.eclipse.jetty.io:9.2.19.v20160908]
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)[83:org.eclipse.jetty.util:9.2.19.v20160908]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)[83:org.eclipse.jetty.util:9.2.19.v20160908]
        at java.lang.Thread.run(Thread.java:745)[:1.8.0_112]
Caused by: java.lang.NullPointerException
        at org.eclipse.jetty.websocket.common.Parser.parse(Parser.java:259)[181:org.openhab.binding.isy:2.1.0.201703172158]
        ... 8 more
2017-03-19 12:50:27.312 [WARN ] [e.jetty.util.thread.QueuedThreadPool] -
org.eclipse.jetty.websocket.api.WebSocketException: java.lang.NullPointerException
        at org.eclipse.jetty.websocket.common.Parser.parse(Parser.java:280)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.client.io.WebSocketClientConnection.onOpen(WebSocketClientConnection.java:92)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.client.io.UpgradeConnection.upgradeConnection(UpgradeConnection.java:306)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.client.io.UpgradeConnection.read(UpgradeConnection.java:243)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.websocket.client.io.UpgradeConnection.onFillable(UpgradeConnection.java:163)[181:org.openhab.binding.isy:2.1.0.201703172158]
        at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)[72:org.eclipse.jetty.io:9.2.19.v20160908]
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)[83:org.eclipse.jetty.util:9.2.19.v20160908]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)[83:org.eclipse.jetty.util:9.2.19.v20160908]
        at java.lang.Thread.run(Thread.java:745)[:1.8.0_112]
Caused by: java.lang.NullPointerException
        at org.eclipse.jetty.websocket.common.Parser.parse(Parser.java:259)[181:org.openhab.binding.isy:2.1.0.201703172158]
        ... 8 more
2017-03-19 12:50:27.347 [WARN ] [e.jetty.util.thread.QueuedThreadPool] - Unexpected thread death: org.eclipse.jetty.util.thread.QueuedThreadPool$3@281812 in WebSocketClient@26548549{ST$
2017-03-19 12:50:29.679 [INFO ] [sy.internal.IsyWebSocketSubscription] - Reconnecting via Websocket to Isy.
2017-03-19 12:50:29.714 [DEBUG] [sy.internal.IsyWebSocketSubscription] - Socket Connected: WebSocketSession[websocket=JettyListenerEventDriver[org.openhab.binding.isy.internal.IsyWebSo$
2017-03-19 12:50:29.716 [INFO ] [sy.internal.IsyWebSocketSubscription] - Connecting to :ws://x.x.x.x:xxxx/rest/subscribe
2017-03-19 12:50:29.719 [DEBUG] [sy.internal.IsyWebSocketSubscription] - in finally in IsyWebSocketSubscription
2017-03-19 12:50:29.742 [DEBUG] [sy.internal.IsyWebSocketSubscription] - Control: , Action: , Node:
2017-03-19 12:50:29.776 [DEBUG] [sy.internal.IsyWebSocketSubscription] - Control: _4, Action: 5, Node:
2017-03-19 12:50:29.805 [DEBUG] [sy.internal.IsyWebSocketSubscription] - Control: _4, Action: 6, Node:

I get those errors once and awhile too. I think it is just because of malformed xml from the ISY. The subscription is continuing, so the binding is continuing to watch for messages. I am under the impression these can be ignored for now.

I’ll take a look to see if it makes sense/is possible to suppress those messages. I would just rather leave them in right now while the binding is so new instead of burying things.

Craig,
I’ve let the debug run all day. I’m checking back on the logs. I think I see the problem. It pulled all of the Insteon objects into the inbox. I don’t see my 2 Z-Wave Switches. The Address is ZW002-1
When I tried to manually add this as a load switch, it wants the insteon address.
I believe I’m getting the error parsing because it is looking for an Insteon address 12 34 56 and can’t parse the ZWave products.

When manually a thing from the ISY hub, it is asking for the Insteon address.

Let me know if you agree w/ this.

2017-03-19 13:12:42.415 [DEBUG] [binding.isy.handler.IsyBridgeHandler] - find thing handler for address: ZW002_1
2017-03-19 13:12:42.416 [WARN ] [sy.internal.IsyWebSocketSubscription] - Unhandled Error (closing connection)
java.lang.ArrayIndexOutOfBoundsException: 1
        at org.openhab.binding.isy.internal.InsteonAddress.stripDeviceId(InsteonAddress.java:58)[181:org.openhab.binding.isy:2.1.0.201703172158]

-Chase

yes. no support for z-wave at this time. I don’t have any of it.

Could you try changing the log levels to TRACE instead of debug and see if that logs the event message before that warning? Maybe I could add support for z-wave via your help. I’d be interested to see the xml which is coming from ISY when the status changes on your z-wave device.

Craig,
I checked out your ISY branch and made made a few modifications. I’ll send you a PM shortly. This got rid of the warning and error message logged every 3 seconds as it polled the ISY and threw an exception if ZWave devices were installed.

Cool, thanks Chase.

Just for clarification in case anyone reads this, there isn’t polling going on. It must be the ISY sending that message via the websocket subscription…but look forward to the changes.

thanks.
craig

Great AddOn. I too have a mixed Insteon / Zwave implementation in ISY and it is crashing when trying to parse the InsteonAddress. Zwave devices have a consistent pattern of ZWxxx-y where xxx is the device id and y is perhaps a channel. The rest interface of the ISY can take that key as a string in the same way it does an Insteon device.

I spend more time in C# than java but it looks like the InsteonAddress class may need refactoring to support that pattern.

Hi Aaron,

Yes, Chase has been adding z-wave support, hope to have it merged soon. I’ll keep you posted.

I am having a problem with the auto discovery. The error in the log file is.

2017-03-30 15:31:08.696 [ERROR] [sy.discovery.IsyRestDiscoveryService] - error in discover scenes
java.lang.IllegalArgumentException: UID segment '~AlyshaMonitor' contains invalid characters. Each segment of the UID must match the pattern [A-Za-z0-9_-]*.

In some app’s using the ~ will hide the device from the user in the app. I can rename everything but until I get openhab working the way I want I still need them. The ~ was the original way to hide devices in the Universal Devises AJAX web interface. Any chance the code can be adjusted to accommodate an ~ in the device name.

Chris

Hi Chris,

Shouldn’t be a problem to add support for that. I just can’t get to it until tomorrow though.

craig

Craig,

Thanks so much looking forward to switching from 1.9 to the 2.0 version.

Chris

ok, I have made a change to the binding such that the id of the thing within openhab no longer uses the name of the device in Isy, but for nodes the address, and it uses the id for programs and scenes.

This should eliminate the possibility of errors during discovery.

you can get the latest from the market place, or my build server.

cheers,
craig

1 Like

Craig,

Thanks for making the changes. I still think the auto discover is not finding everything, and I have several devices that are showing up as unrecognized. Over the weekend I will see if I can find the errors in the auto discover, and the device ID’s of the unrecognized devices.

Is this version the same as 1.9 when you create items that control a scene in that you set the control as the scene and an actual device for status.

Hi Chris,

Just let me know what ids are showing up as unrecognized, and I’ll try and add them.

I’m not familiar with 1.9…but, I think yes, you can turn a scene on or off, and that will change whatever nodes are assigned to that scene, so you will see the status cane for the various devices as specified within the Isy scene.

Craig,

The device ID’s for some unrecognized devices

Insteon Thermostat Adapter v.95 - 05.03
SwitchLinc Relay W/ Sense v.37 - 02.15
SwitchLinc Dimmer v.35 - 01.01
Micro Module On/Off v.43 - 02.2F
In-LineLinc Relay W/ Sense v.38 - 02.14
Dual On/Off Outlet v.44 - 02.39

Also the Device ID of 01.2E is discovered as a light dimmer, but it is a FanLink so it has two channels. This first one is a light dimmer, and the second channel is a 3 speed fan control.

Device ID 07.00 You have as a garage door control, but the IOLinc can be used for other things.

I thought you wrote the 1.9 binding also. In the 1.9 binding for a scene you can have it monitor the status of an actual device and adjust the scenes on / off state based on that device.

If you need anything else just let me know, and thank you for all the work you have put into this binding.

Thanks,
Chris

Chris,

How does the sense feature work? I tried to read a little about it, but it wasn’t quite clear to me. Basically most of these switch/dimmer devices have either a dimmer, or a switch or multiples of those features.

Do you think sense can be modeled as an on/off switch for instance?

thanks,
craig

Craig,
Devices with the sense feature just have an extra wire on the back that when the line voltage is applied it triggers the device to turn on and when the line voltage is disconnected it turns the device off. In the ISY administration panel event log when the sense turns the device on and off a DON and DOF command is sent.

Chris

Craig,
And yes it just needs to be an on/off switch.

Chris,

Do devices w sense have more than 1 device id ? i.e. xx xx xx 1, and xx xx xx 2 as other devices do such as motion or leak detectors?

If so, do changes via the sense wire end having instead messages being sent as well as the DON/DOF for the load?

Does the 3 speed control show us as device id 2 for this device?