Ole8700 / openhab

Automatically exported from code.google.com/p/openhab
GNU General Public License v3.0
1 stars 0 forks source link

Implement ZWave Binding #265

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
General ZWave Support

Implement binding for ZWave Controller/Device/Network support. 

Original issue reported on code.google.com by bmcro...@gmail.com on 29 Apr 2013 at 12:25

GoogleCodeExporter commented 9 years ago
I will post the branch location soon. 

Original comment by bmcro...@gmail.com on 29 Apr 2013 at 12:29

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Here is what my config items file looks like:

Group gZwaveConfig (All)
Group gZwaveNode01 "Node 01" (gZwaveConfig)
Group gZwaveNode02 "Node 02" (gZwaveConfig)
Group gZwaveNode03 "Node 03" (gZwaveConfig)
Group gZwaveNode04 "Node 04" (gZwaveConfig)
Group gZwaveNode05 "Node 05" (gZwaveConfig)
Group gZwaveNode06 "Node 06" (gZwaveConfig)
Group gZwaveNode07 "Node 07" (gZwaveConfig)

String ZwaveNode02HomeID    "Home ID [%s]" (gZwaveNode02) {zwave="2:homeid"}
String ZwaveNode02NetworkID "Network ID [%s]" (gZwaveNode02) {zwave="2:nodeid"}
String ZwaveNode02LastUpdated   "Last Updated [%s]" (gZwaveNode02) 
{zwave="2:lastupdate"}
String ZwaveNode02Listening "Listening [%s]" (gZwaveNode02) 
{zwave="2:listening"}
String ZwaveNode02Routing   "Routing [%s]" (gZwaveNode02) {zwave="2:routing"}
String ZwaveNode02Version   "Version [%s]" (gZwaveNode02) {zwave="2:version"}
String ZwaveNode02BasicCommandClass "Basic Command Class [%s]" (gZwaveNode02) 
{zwave="2:basic"}
String ZwaveNode02GenericCommandClass   "Generic Command Class [%s]" 
(gZwaveNode02) {zwave="2:generic"}
String ZwaveNode02SpcificCommandClass   "Specific Command Class [%s]" 
(gZwaveNode02) {zwave="2:specific"}

And then my command items file:

/*Lights */
Switch Light_Basement_RecRoom_PictureBox "Picture Box" (Lights_Basement) 
{zwave="2"}
Switch Light_Basement_RecRoom_Overhead  "Overhead" (Lights_Basement) {zwave="3"}
Switch Light_FirstFloor_Kitchen_Overhead "Kitchen Overhead" (Lights_FirstFloor) 
{zwave="4"}
Switch Light_FirstFloor_Dining_Overhead "Dining Overhead" (Lights_FirstFloor) 
{zwave="5"}
Switch Light_FirstFloor_Entry_Overhead "Entry Overhead" (Lights_FirstFloor) 
{zwave="6"}
Switch Light_Outside_FrontPorch "Front Porch" (Lights_Outside) {zwave="7"}

I can foresee implementing an additional : beyond what is shown for specific 
updates.

Thoughts?  

Original comment by bmcro...@gmail.com on 2 May 2013 at 10:26

GoogleCodeExporter commented 9 years ago
Victor, I assign this issue to you to further track the progress as you are 
involved in this.

Original comment by kai.openhab on 5 May 2013 at 6:47

GoogleCodeExporter commented 9 years ago

Original comment by teichsta on 7 May 2013 at 3:50

GoogleCodeExporter commented 9 years ago
Ready for Alpha (or if there is something prior to alpha) testing. 

First step is to understand how many nodes you have registered to your zwave 
controller. 

1) Update your openhab.cfg to tell the zwave binding where your zwave 
controller is connected.
Example:

############################### start zwave Binding 
#########################################
zwave:port=/dev/ttyUSB0
############################### end zwave Binding 
#########################################

2) load the attached JAR to your addons folder

3) Once you have the config correct, you will start to see lots of messages at 
start up. The majority you can ignore. Look for the message like below...

18:56:34.866 INFO  o.o.b.z.i.p.ZWaveController[:285]- ------------Number of 
Nodes Found Registered to ZWave Controller------------
18:56:34.866 INFO  o.o.b.z.i.p.ZWaveController[:286]- # Nodes = 9
18:56:34.866 INFO  o.o.b.z.i.p.ZWaveController[:287]- 
----------------------------------------------------------------------------

This indicates how many Nodes have been discovered to be connected to your 
controller you specified above. This is a important point. As you can see, i 
only have 9 nodes connected (some of which may be sleeping/alive/dead/or other, 
will get to that in a second).

4) update your items file to include the reporting features of the zwave 
binding (example of one node reporting all that we know about it is below). 
Notice that at the moment the only supported item type is string for any of the 
reporting features. Also, the syntax for reporting is as follows: {zwave="<Node 
ID>:<Report Value>"}. Where Node id it 1 - # Nodes that you found out from the 
logs (see above). Few notes:
 -- I have not mapped the hex values for Manufacturer, Device Type, or Device Type ID yet. But have validated they are discovered correctly. 
 -- Last Updated isn't reliable yet. 
 -- Listening, should normally be true. It indicates if the node is listening on the network.
 -- Sleeping or Dead. Haven't put the logic in place yet to find out if the node is just sleeping or if its in fact dead or if its just disconnected.
 -- Routing. All devices should be routing except the controller.
 -- Command Classes. Are the hex value and label of the command classes discovered during init. 

String ZwaveNode02HomeID    "Home ID [%s]" (gZwaveNode02) {zwave="2:homeid"}
String ZwaveNode02NetworkID "Network ID [%s]" (gZwaveNode02) {zwave="2:nodeid"}
String ZwaveNode02Manufacturer  "Manufacturer [%s]" (gZwaveNode02) 
{zwave="2:manufacturer"}
String ZwaveNode02DeviceType    "Device Type [%s]" (gZwaveNode02) 
{zwave="2:device_type"}
String ZwaveNode02DeviceTypeID  "Device Type ID [%s]" (gZwaveNode02) 
{zwave="2:device_type_id"}
String ZwaveNode02LastUpdated   "Last Updated [%s]" (gZwaveNode02) 
{zwave="2:lastupdate"}
String ZwaveNode02Listening "Listening? [%s]" (gZwaveNode02) 
{zwave="2:listening"}
String ZwaveNode02SleepingOrDead    "Sleeping or Dead? [%s]" (gZwaveNode02) 
{zwave="2:sleeping_dead"}
String ZwaveNode02Routing   "Routing [%s]" (gZwaveNode02) {zwave="2:routing"}
String ZwaveNode02Version   "Version [%s]" (gZwaveNode02) {zwave="2:version"}
String ZwaveNode02BasicCommandClass "Basic Command Class [%s]" (gZwaveNode02) 
{zwave="2:basic"}
String ZwaveNode02BasicCommandClassLabel    "Basic Command Class Label [%s]" 
(gZwaveNode02) {zwave="2:basic_label"}
String ZwaveNode02GenericCommandClass   "Generic Command Class [%s]" 
(gZwaveNode02) {zwave="2:generic"}
String ZwaveNode02GenericCommandClassLabel  "Generic Command Class Label [%s]" 
(gZwaveNode02) {zwave="2:generic_label"}
String ZwaveNode02SpcificCommandClass   "Specific Command Class [%s]" 
(gZwaveNode02) {zwave="2:specific"}
String ZwaveNode02SpcificCommandClassLabel  "Specific Command Class Label [%s]" 
(gZwaveNode02) {zwave="2:specific_label"}

5) Now that you have all your nodes reporting information you can setup your 
items file to actually control one of the devices. Currently only Switch and 
Dimmer Item types are supported. HOWEVER!!!!! The validation of the item type 
to node device is not complete! :-O SOOOOOO, you need to use the information 
that was reported out of step number 2 to find out if in fact your device 
supports either a switch or dimmer.

A dimmer type will have a Generic Command Class reported as a "Multi-Level 
Switch"; a switch type will have a Generic Command Class reported as a "Binary 
Switch".

Example of my items file for controlling the zwave devices....

Switch Light_Outside_FrontPorch "Front Porch" (Lights_Outside) {zwave="7"}
Dimmer Light_FirstFloor_Kitchen_Overhead_Dimmer "Kitchen Overhead Dimmer [%d 
%%]" (Lights_FirstFloor) {zwave="4"}

5) Finally, there are some statistics capabilities that allow you to report on 
how your zwave network is preforming. Again, these are currently only String 
types. In addition, they will only report information for Node ID 1, the 
controller. As the controller is the keeper of the network. 

String ZwaveStatsSOF "Number Start of Frames[%s]" (gZwaveStats) {zwave="1:sof"}
String ZwaveStatsACK "Number of Acknowledgments [%s]" (gZwaveStats) 
{zwave="1:ack"}
String ZwaveStatsCAN "Number of CAN [%s]" (gZwaveStats) {zwave="1:can"}
String ZwaveStatsNAK "Number of NAK [%s]" (gZwaveStats) {zwave="1:nak"}
String ZwaveStatsOOF "Number of OOF [%s]" (gZwaveStats) {zwave="1:oof"}

Notes:
-- Node ID 1 is most always the zwave controller. As such the binding won't 
discover as much information about it. See below for an example items config 
for the controller.
// Node 01 Data //
String ZwaveNode01HomeID    "Home ID [%s]" (gZwaveNode01) {zwave="1:homeid"}
String ZwaveNode01NetworkID "Network ID [%s]" (gZwaveNode01) {zwave="1:nodeid"}
String ZwaveNode01LastUpdated   "Last Updated [%s]" (gZwaveNode01) 
{zwave="1:lastupdate"}
String ZwaveNode01Listening "Listening? [%s]" (gZwaveNode01) 
{zwave="1:listening"}
String ZwaveNode01Routing   "Routing [%s]" (gZwaveNode01) {zwave="1:routing"}
String ZwaveNode01Version   "Version [%s]" (gZwaveNode01) {zwave="1:version"}
String ZwaveNode01BasicCommandClass "Basic Command Class Label [%s]" 
(gZwaveNode01) {zwave="1:basic_label"}
String ZwaveNode01GenericCommandClass   "Generic Command Class Label [%s]" 
(gZwaveNode01) {zwave="1:generic_label"}
String ZwaveNode01SpcificCommandClass   "Specific Command Class [%s]" 
(gZwaveNode01) {zwave="1:specific"}
String ZwaveNode01SpcificCommandClassLabel  "Specific Command Class Label [%s]" 
(gZwaveNode01) {zwave="1:specific_label"}

Original comment by bmcro...@gmail.com on 17 May 2013 at 11:18

Attachments:

GoogleCodeExporter commented 9 years ago
Brian,

I have 15 devices, when first run most of them are dead or sleeping and non 
responsive. I switched some lights on and off manually and restarted openhab to 
get the devices to react. But not all react. I wil diagnose the situation 
further and post updates here.

Thanks Evert

Original comment by evertva...@gmail.com on 18 May 2013 at 6:52

GoogleCodeExporter commented 9 years ago
If you post a clean start up openhab log here I can take a look...

Original comment by bmcro...@gmail.com on 18 May 2013 at 11:21

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Please find the updated JAR file attached. The polling of the zwave devices was 
congesting the network too much. Removed it for now.

In order to get the updated status on your devices do the following: 
1) Start openhab w/ zwave binding
2) re-cycle all zwave nodes so that openhab requests node state
3) Enjoy! All updates to the node will now be synced to openhab (either manual 
or through openhab).

the binding will eventually automatically handle the init of the device current 
state; but doesn't yet.

Also, took out Item Dimmer support. It doesn't seem to be working 100% of the 
time. You can still use a Switch Item for dimmer nodes.

Original comment by bmcro...@gmail.com on 18 May 2013 at 1:15

Attachments:

GoogleCodeExporter commented 9 years ago
Here is my log. it all goes wrong around 10:11:38.090.

I set the serial logging to WARN because it was too verbose. If you need that 
too, I will enable it for you.

Thanks Brian!

Original comment by evertva...@gmail.com on 20 May 2013 at 8:20

Attachments:

GoogleCodeExporter commented 9 years ago
Hi!

I have been playing with "org.openhab.binding.zwave_1.2.0.201305180911.jar"
and a "Fibaro Controlled Switch" and it worked straight away.
I can enable/disable the Z-Wave switch with OpenHab now.

The binding seems easy to use. At least for what I tested... 

I use Aeon Labs Z-Stick as the controller, with Windows 7.
I will be testing it on a Raspberry soon and try to do more complex things.

I now it is still a preliminary version but it looks good!!
Great work Victor!
I am looking forward to getting the final release.
Any hints about the date?

Thanks!

Original comment by serca...@gmail.com on 30 May 2013 at 2:30

GoogleCodeExporter commented 9 years ago
Hi,

Not at all, really. Those huge thanks should go to Brian, who picked up my 
half-working code and made it really alive! (It's allliiiivvvveeee, 
allliiiiiiiiiiiveeee! :-)

Original comment by belovic...@gmail.com on 30 May 2013 at 8:37

GoogleCodeExporter commented 9 years ago
Just FYI, I gave this a try on my raspberry pi with the razberry-zwave-daughter 
board attached a few days ago and was able to control one of my plugi-in dimmer 
switches (on/off only). Only problem was the switches in openhab being a bit 
wonky, since the dimmer-switch being a dimmer does not instantly switch from 
zero to desired brightness but fading smoothly.
If necessary I could upload some log of this.

Original comment by tlan...@gmail.com on 30 May 2013 at 8:47

GoogleCodeExporter commented 9 years ago
So i have noticed that as well. The issue is the protocol specification
around "application update" command class reporting. Not all Binary
Switches are required to report this update. BUT all zwave controllers
expect it, its the only way (without polling) that we can receive updated
about a zwave device.

So what happens is some devices will report this request to the zwave
controller (when a state is changed), stating that...hey, you need to
update your information about me...something changed. Then we can update
the state information. However, without that reporting request from the
device...we currently do not update the information.

The only way around this is to implement polling of the devices. This is
fine for a small number of devices on the zwave network. But imagine if you
had 254 devices on the network that you were polling every x seconds. This
would create a unneeded congestion on the network.

I am currently trying to find ways around this, hopefully will have a
answer soon.

P.S. Glad to see the beta binding is working for you.

Original comment by bmcro...@gmail.com on 31 May 2013 at 1:12

GoogleCodeExporter commented 9 years ago
Evert:

Sorry took me so long to look at your log. I have noticed this happens when 
things get out of sync on the zwave network during start-up. The only way i 
have found to fix it is to run openzwave to query the network. After that, stop 
openzwave and restart OH. ozw has some means to clear the network errors that 
OH does not yet. 

Also, i would suggest you attempt to run with just the zwave binding first. 
Once that is working you can overlay the others you have running.

This is still a very beta binding ;) Thanks for the patients. 

Original comment by cfasz...@gmail.com on 31 May 2013 at 1:22

GoogleCodeExporter commented 9 years ago
Sorry for the confusion!
Thanks to Brian too, then...

I have tried the Z-wave binding on a Raspberry Pi and it also works with Aeon 
Labs Z-Stick.

It is true that the responsiveness of the binding seems to be a problem.
I only have one z-wave device but it sometimes takes a lot of time to get the 
commands or update the state if externally changed.

I know it is planned but it would be very useful to know if a z-wave device is 
dead. I have a controlled switch, but if I unplug it, Openhab still thinks it 
is there.

By the way, my controlled switch has a Power-Meter (in Watts) that may be 
queried. Is there a way to do it with this binding? I have been able to do it 
with Z-wave.me but not with this binding. Is my fault or is it unimplemented 
yet?

Great work Brian and Victor :-)

Original comment by serca...@gmail.com on 31 May 2013 at 9:02

GoogleCodeExporter commented 9 years ago
The sleeping/dead is already implemented. 

String ZwaveNode02SleepingOrDead    "Sleeping or Dead? [%s]" (gZwaveNode02) 
{zwave="2:sleeping_dead"}

Above is a example item binding to query the state. 

The means to query a Power-Meter (or the command class that supports that) is 
in place within the code. It is just not implemented full yet to support OH.

Original comment by bmcro...@gmail.com on 31 May 2013 at 11:23

GoogleCodeExporter commented 9 years ago
Hi,

I am sorry to report that I tried to use the sleeping/dead feature but it does 
not seem to work.
It always says "False". It does not matter if I unplug the device.
I tried several times with both GreenT and Classic IU, but it does not work.
It does work with Zwave.me, though, so I am sure the device works fine.
My device is a Fibaro Controlled Switch.

I used what you wrote:
String ZwaveNode02SleepingOrDead    "Sleeping or Dead? [%s]" (gZwaveNode02) 
{zwave="2:sleeping_dead"}

Thanks!

Original comment by serca...@gmail.com on 3 Jun 2013 at 9:48

GoogleCodeExporter commented 9 years ago
When you first start OH, is the device plugged in (i.e. able to communicate
with your zwave controller)?

It only discovers the state of the devices once, during the init.

Original comment by bmcro...@gmail.com on 3 Jun 2013 at 11:39

GoogleCodeExporter commented 9 years ago
Oh. I see.
My device was indeed plugged in when I started OH.
If I unplug it right before the start, it works, although it takes more than 5 
minutes to get the sleeping_dead state right...

However, I think it makes a lot more sense to detect a device death whenever it 
may happen, not only at the start. I don't mean instantenously, but OH should 
know that within a reasonable time. Is this possible?

For instance, I plan to use OH to detect whenever the controlled switch (which 
will be installed in the fridge socket) is disconnected, in order to detect 
power cuts on my fridge, warn me and save all the food... 

It is only an example, but I think that the detection of the sleeping_dead 
state at the start is of a very reduced interest.
Is there a way to change that?

Thanks for your time, Brian.

Original comment by serca...@gmail.com on 3 Jun 2013 at 2:27

GoogleCodeExporter commented 9 years ago
Thanks for the current zwave integration! :-)
I'm using org.openhab.binding.zwave_1.2.0.201305180911.jar and doing some tests 
with Fibaro FGD-211 Universal Dimmer. It works but only as switch.
I receive the the following error: "WARN  o.o.b.z.i.ZWaveActiveBinding[:241] - 
Unknown command >DECREASE<"

Is this correct? Since I'm an openhab newbie it's possible that I've a 
configuration error.

Thanks, Daniel

Original comment by daniel.a...@gmail.com on 11 Jun 2013 at 9:23

GoogleCodeExporter commented 9 years ago
Hey Daniel:

The binding only supports Switch Items for control. Still working out some
bugs to get the rest of the Zwave Types (Dimmers, Sensors, etc) supported.

Original comment by bmcro...@gmail.com on 11 Jun 2013 at 9:50

GoogleCodeExporter commented 9 years ago
Hey Brian - finally got around to taking the plunge and installing my Z-Wave 
in-wall switch. Your binding worked first time! Added a Switch item with the 
appropriate ID and I can now switch my lights on and off. Excellent stuff! 

One question - if I manually switch the lights on/off at the wall I was 
expecting the state change to be sent back to openHAB via the ZWave bus and the 
item would be updated in my openHAB UI. This isn't happening however. 

Do I have an issue here or is this as expected? Is this possible or does the 
ZWave bus not function like this? Other than that I am very happy - looking 
forward to further advancements!

Original comment by ben.jone...@gmail.com on 22 Jun 2013 at 3:56

GoogleCodeExporter commented 9 years ago
I am still getting my head wrapped around Z-Wave, but what I have understood 
all of the nodes report changes to the controller.  It is possible for a node 
to be activated by another node directly, so it is important for the controller 
to know what is going on.

The question is, what does the controller do with this information, and how is 
it linked into OpenHAB.  If I were you, I would check out some debug logs about 
the commands that are being received and see if you are seeing an event which 
shows your switch state change.

Original comment by gee...@gmail.com on 23 Jun 2013 at 9:11

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Ben:

The zwave controller is "supposed" to get a ApplicationUpdate request each time 
a zwave node is changed (i.e. manually triggered). However, for some reason 
unknown to me yet, I have found that not all zwave devices support this command 
class. 

I will be debugging this today.

Original comment by bmcro...@gmail.com on 23 Jun 2013 at 4:26

GoogleCodeExporter commented 9 years ago
All zwave communication is available via the controller and hence the openhab 
bus. However, we have only enable the necessary processing for Switch items--so 
far.

Original comment by bmcro...@gmail.com on 23 Jun 2013 at 4:28

GoogleCodeExporter commented 9 years ago
Yep - checking my logs there is no message coming from my device when the 
switch is manually toggled. So I guess this is a case of the ApplicationUpdate 
message not being sent. I am using a simple In Wall Micro Switch (non-dimmable).

Original comment by ben.jone...@gmail.com on 23 Jun 2013 at 8:40

GoogleCodeExporter commented 9 years ago
I updates the code to poll the devices based on a configuration item in
your openhab.cfg. I will generate the new jar shortly.

Original comment by bmcro...@gmail.com on 23 Jun 2013 at 11:09

GoogleCodeExporter commented 9 years ago
Hey Brian, I have just installed my second Z-Wave device - this time a Fibaro 
2x1.5kW relay (FGS221). The first relay is being handled fine (although still 
no state update when I manually toggle the switch) but the second relay is not 
being handled. I noticed in the log the following messages - this snippet is 
actually two messages, one when I flicked the wall switch ON and then another 
when I flicked it OFF.

It is pretty obvious you haven't coded for the 0x60 command class yet, but what 
is interesting is that these state change messages are getting fired back from 
the device. There is nothing in the logs when I flick the switch for relay one 
however, but that relay is controllable via openHAB using the node id detected 
for the device.

I am very keen to help out with this, as I intend to buy more of these Fibaro 
devices - they are much smaller than the Aeon in-wall micro switches and thus 
much easier to fit around all the wiring.

Is there anything I can do to assist? Or should I just take a clone of your 
code and start from there?

Log...

21:18:20.046 INFO  o.o.b.z.i.p.SerialInterface$SerialInterfaceThread[:270]- 
Message = 01 0C 00 04 04 03 06 60 0A 02 10 01 25 AA
21:18:20.047 INFO  o.o.b.z.i.p.SerialMessage[:131]- Calculated checksum = 0xAA
21:18:20.047 INFO  o.o.b.z.i.p.SerialInterface[:148]- Message is valid, sending 
ACK
21:18:20.048 INFO  o.o.b.z.i.p.ZWaveController[:235]- Incoming message to 
process
21:18:20.048 INFO  o.o.b.z.i.p.ZWaveController[:236]- 04 03 06 60 0A 02 10 01 25
21:18:20.049 INFO  o.o.b.z.i.p.ZWaveController[:375]- Message type = REQUEST
21:18:20.049 INFO  o.o.b.z.i.p.ZWaveController[:383]- Got 
MessageApplicationCommandHandler for Source Node = 3 and CommandClass = 0x60
21:18:20.049 INFO  o.o.b.z.i.p.ZWaveController[:427]- TODO: Implement 
processing of CommandClass = 0x60
21:18:20.049 INFO  o.o.b.z.i.p.ZWaveController[:431]- MessageSendData request.
21:18:20.050 INFO  o.o.b.z.i.p.ZWaveController[:638]- Handle Message Send Data 
Request
21:18:21.403 INFO  o.o.b.z.i.p.SerialInterface$SerialInterfaceThread[:270]- 
Message = 01 0C 00 04 04 03 06 60 0A 02 10 01 25 AA
21:18:21.404 INFO  o.o.b.z.i.p.SerialMessage[:131]- Calculated checksum = 0xAA
21:18:21.404 INFO  o.o.b.z.i.p.SerialInterface[:148]- Message is valid, sending 
ACK
21:18:21.405 INFO  o.o.b.z.i.p.ZWaveController[:235]- Incoming message to 
process
21:18:21.405 INFO  o.o.b.z.i.p.ZWaveController[:236]- 04 03 06 60 0A 02 10 01 25
21:18:21.406 INFO  o.o.b.z.i.p.ZWaveController[:375]- Message type = REQUEST
21:18:21.406 INFO  o.o.b.z.i.p.ZWaveController[:383]- Got 
MessageApplicationCommandHandler for Source Node = 3 and CommandClass = 0x60
21:18:21.406 INFO  o.o.b.z.i.p.ZWaveController[:427]- TODO: Implement 
processing of CommandClass = 0x60
21:18:21.407 INFO  o.o.b.z.i.p.ZWaveController[:431]- MessageSendData request.
21:18:21.407 INFO  o.o.b.z.i.p.ZWaveController[:638]- Handle Message Send Data 
Request

Original comment by ben.jone...@gmail.com on 2 Jul 2013 at 9:29

GoogleCodeExporter commented 9 years ago
0x60 is Mutil-Channel v2...and you are correct, it is not implemented
within the OH Zwave Binding--yet.

Looking into the details of that command class. It will be fairly easy to
add support.

There is a few additional command classes we will have to add for multi
channel support; in addition to adding a Instance identifier to the
ZwaveNode class definition. Finally, will have to figure out how the
binding configuration will support multiple channels on one zwave node.

Initial thought is to add a *.x when identifying the node. Where * equals
the node as reported by the controller and x equals the instance on that
node. Thoughts?

Original comment by bmcro...@gmail.com on 3 Jul 2013 at 7:49

GoogleCodeExporter commented 9 years ago
Yep - that sort of binding config is the sort of thing I was thinking as well. 
There are potentially quite a few devices with multiple end points (thinking 
energy monitors, temp/humidity sensors) so this stuff will hopefully be useful 
for other areas as well. 

I have been talking to the local distributor of Fibaro devices here in New 
Zealand and he has been quite helpful. He sent me a log/output of a multi 
switch device talking to the Fibaro control center which shows the parentID and 
command class details. Not sure if it is all that useful but thought I would 
log it here for reference.

Looking forward to testing this stuff out!

Fibaro log...

{"id":5,"name":"Extraction 
Fan","roomID":4,"type":"binary_light","properties":{"UIMessageSendTime":"2012-09
-25 
06:06:38","classConfigure":"0,0,2,2,2,0,2,2,0,0","classGeneric":"37","classSuppo
rt":"37,39,96,112,114,115,133,134,142,239","classVersion":"1,1,2,1,1,1,2,1,1,1",
"dead":"0","deviceControlType":"13","deviceIcon":"11","disabled":"0","emailNotif
icationID":"4","emailNotificationType":"1","endPoint":"0","isBatteryOperated":"0
","isLight":"0","liliOffCommand":"","liliOnCommand":"","log":"","logTemp":"","ne
edConfigure":"5","type":"binary_light","nodeID":"30","parametersTemplate":"15","
parentID":"1","pollingRetryError":"","pollingTime":"","pollingTimeNext":"","poll
ingTimeSec":"0","productInfo":"1,15,2,0,1,4,1,4","pushNotificationID":"4","pushN
otificationType":"1","requestNodeNeighborState":"0","requestNodeNeighborStateTim
eStemp":"0","showChildren":"1","smsNotificationID":"3","smsNotificationType":"0"
,"sortOrder":"999","type":"16","unit":"","userDescription":"","value":"0","zwave
Company":"Fibar 
Group","zwaveInfo":"3,3,20","zwaveVersion":"1,4"},"actions":{"pollingTimeSec":1,
"requestNodeNeighborUpdate":0,"turnOff":0,"turnOn":0},"created":1371516199,"modi
fied":1371516199,"sortOrder":5}
{"id":7,"name":"Main 
Light","roomID":4,"type":"binary_light","properties":{"UIMessageSendTime":"0000-
00-00 
00:00:00","classConfigure":"1","classGeneric":"37","classSupport":"37","classVer
sion":"1","dead":"0","deviceControlType":"2","deviceIcon":"1","disabled":"0","em
ailNotificationID":"3","emailNotificationType":"0","endPoint":"2","isBatteryOper
ated":"0","isLight":"1","liliOffCommand":"","liliOnCommand":"","log":"","logTemp
":"","needConfigure":"5","type":"binary_light","nodeID":"30","parametersTemplate
":"0","parentID":"5","pollingRetryError":"","pollingTime":"","pollingTimeNext":"
","pollingTimeSec":"0","productInfo":"1,15,2,0,1,4,1,4","pushNotificationID":"3"
,"pushNotificationType":"0","requestNodeNeighborState":"0","requestNodeNeighborS
tateTimeStemp":"0","showChildren":"0","smsNotificationID":"3","smsNotificationTy
pe":"0","sortOrder":"999","type":"16","unit":"","userDescription":"","value":"1"
,"zwaveCompany":"Fibar 
Group","zwaveInfo":"","zwaveVersion":"1,4"},"actions":{"pollingTimeSec":1,"reque
stNodeNeighborUpdate":0,"turnOff":0,"turnOn":0},"created":1371516199,"modified":
1371516199,"sortOrder":7},

Original comment by ben.jone...@gmail.com on 3 Jul 2013 at 8:21

GoogleCodeExporter commented 9 years ago
Hello!
First of all, thanks for your great work!
Second, I have a small Z-Wave network and I'm trying to use OpenHAB with your 
binding.
I have followed the instructions from Comment#3, and everything seems ok, but I 
don't have a message:
"------------Number of Nodes Found Registered to ZWave Controller------------"
in my logs.

There are only two messages connected with Z-Wave:
19:11:31.161 DEBUG o.o.b.z.i.ZWaveActivator[:54] - Z-Wave binding has been 
started.
...
19:13:19.964 DEBUG o.o.b.z.i.ZWaveActiveBinding[:81] - activate()

What's wrong? Maybe you need info about my Controller? If so, I am ready to 
post it.
Thank you!

Original comment by roher.ro...@gmail.com on 4 Jul 2013 at 3:33

GoogleCodeExporter commented 9 years ago
[OT]

I'd like to say THANK YOU to all of you driving the Z-Wave Issue. It will be 
great to present some Z-Wave stuff at JavaOne in San Francisco at the end of 
September.

Keep coding and supporting openHAB :-)

Cheers,

Thomas E.-E.

Original comment by teichsta on 4 Jul 2013 at 9:28

GoogleCodeExporter commented 9 years ago
Are you using the JAR I posted or are you attempting to build it yourself?

Original comment by bmcro...@gmail.com on 4 Jul 2013 at 9:53

GoogleCodeExporter commented 9 years ago
Have you pushed your latest changes Brian? If so I am keen to take up the reins 
and get this multi instance stuff working/tested. Cheers, Ben.

Original comment by ben.jone...@gmail.com on 4 Jul 2013 at 10:09

GoogleCodeExporter commented 9 years ago
I did. However, please wait to pull it down. In a attempt to ensure it was
OK, I created a clean clone and attempted to rebuild. It failed.

I am working the issue this weekend...stay tuned. I will post once I figure
out the issue and its safe to start work.

I welocome the help!!! I would however prefer we work off the same clone.
Just make sure we coordinate changes and what eachother is working on. I am
mainly working to close out all my TODO statements. And add better
validation and error handling.

Also, as normal, follow good source code repo practices so we can stay in
sync with eachother.

Original comment by bmcro...@gmail.com on 5 Jul 2013 at 3:13

GoogleCodeExporter commented 9 years ago
Sounds like a good plan. I will wait till you confirm it is ready for testing. 
Could you also have a look at the discussion I just started re. the serial 
device config for Linux symlinks - and add the fix to the ZWave binding? That 
will make life a lot easier for me!

Original comment by ben.jone...@gmail.com on 5 Jul 2013 at 3:22

GoogleCodeExporter commented 9 years ago
> Are you using the JAR I posted or are you attempting to build it yourself?
I am using the JAR you have posted in Comment#11.

Original comment by roher.ro...@gmail.com on 5 Jul 2013 at 8:02

GoogleCodeExporter commented 9 years ago
I also want to offer my help. I've got a couple of fibaro dimmers, switches and 
a roller shutter node. I fixed the compilation issue and also fixed the dimmer 
handling.
Dimmer and switches are working nicely now. 

Original comment by jwsp...@gmail.com on 15 Jul 2013 at 3:21

GoogleCodeExporter commented 9 years ago
Did you pull from my clone? I can add you as commit allowed. That way we
can all work off the same clone . And easier to incorporate into OH build
once we are done.

Original comment by bmcro...@gmail.com on 15 Jul 2013 at 4:33

GoogleCodeExporter commented 9 years ago
OK with me. Keeps things central.

Original comment by jwsp...@gmail.com on 15 Jul 2013 at 6:50

GoogleCodeExporter commented 9 years ago
can you please test a commit and push? I don't see a means to give permissions 
on my clone...

Original comment by bmcro...@gmail.com on 15 Jul 2013 at 7:24

GoogleCodeExporter commented 9 years ago
abort: HTTP Error 404: Not Found. Probably no permissions yet.

Original comment by jwsp...@gmail.com on 15 Jul 2013 at 7:38

GoogleCodeExporter commented 9 years ago
Brian - does this mean you clone has your latest code? Any chance you have 
implemented support for multi instance switches? Unfortunately my dev PC is too 
far away from my in-wall multi instance Fibaro switch so I have been having 
difficulty running in debug mode, and since it is 'in-wall' it is not a trivial 
task to move it...

Original comment by ben.jone...@gmail.com on 15 Jul 2013 at 8:50

GoogleCodeExporter commented 9 years ago
I'm getting a FGS221 delivered tomorrow that i'm not planning on putting into 
the wall before it works. I'll see what I can do.

Original comment by jwsp...@gmail.com on 15 Jul 2013 at 11:41

GoogleCodeExporter commented 9 years ago
Great - I look forward to hearing how you get on. It will require a change to 
the binding config (see the notes above for Brian's ideas on this).

Original comment by ben.jone...@gmail.com on 15 Jul 2013 at 11:42

GoogleCodeExporter commented 9 years ago
OK, Got the switch and started working on implementing multiinstance commands.

Original comment by jwsp...@gmail.com on 16 Jul 2013 at 1:00