Z-Wave-Me / z-way-issues

This repo is only to host issues for Z-Way.
6 stars 1 forks source link

Protection set (2,0) - HTTP 500. #37

Closed piotrmaslanka closed 9 years ago

piotrmaslanka commented 9 years ago

Trying to set Protection(Local=2, RF=0) on a Danfoss living thermostat ends with HTTP 500 from the ZWaveAPI.

Following API call is generated (this is generated even by the Expert UI): /ZWaveAPI/Run/devices[3].instances[0].commandClasses[117].Set(2,0)

Which is reponded to by the server with: HTTP 500 Error: Invalid argument

Set commands of (0,0), (0) and (2) result in the same error.

Problem was already reported to razberry@z-wave.me.

piotrmaslanka commented 9 years ago

z-way-server log reports

[2015-02-20 11:33:28.534] [W] [zway] Node 3:0 CC Protection: Unsupported rfState in set command - ignored

It very much looks like device not supporting rfState prevents me from writing it's local state. It shouldn't be so.

PoltoS commented 9 years ago

Please paste more log about Protection CC. On Z-Way load or interview you will see devices[X].instances[0].commandClasses[117]

Please show us these lines

piotrmaslanka commented 9 years ago

/ZWaveAPI/Run/devices[3].instances[0].commandClasses[117] yields

{"name":"Protection","data":{"invalidateTime":1424344021,"updateTime":1424344020,"type":"empty","value":null,"supported":{"invalidateTime":1424344021,"updateTime":1424344020,"type":"bool","value":true},"version":{"invalidateTime":1424344021,"updateTime":1424344020,"type":"int","value":2},"security":{"invalidateTime":1424344019,"updateTime":1424344020,"type":"bool","value":false},"interviewDone":{"invalidateTime":1424344019,"updateTime":1424344022,"type":"bool","value":true},"interviewCounter":{"invalidateTime":1424344019,"updateTime":1424344021,"type":"int","value":9},"state":{"invalidateTime":1424344021,"updateTime":1424344022,"type":"int","value":0},"rfState":{"invalidateTime":1424344021,"updateTime":1424344022,"type":"int","value":0},"exclusive":{"invalidateTime":1424344021,"updateTime":1424344020,"type":"empty","value":null},"timeout":{"invalidateTime":1424344021,"updateTime":1424344020,"type":"empty","value":null},"stateCap":{"invalidateTime":1424344020,"updateTime":1424344021,"type":"int","value":5},"rfStateCap":{"invalidateTime":1424344020,"updateTime":1424344021,"type":"int","value":0},"exclusiveCap":{"invalidateTime":1424344020,"updateTime":1424344021,"type":"bool","value":false},"timeoutCap":{"invalidateTime":1424344020,"updateTime":1424344021,"type":"bool","value":false}},"id":117}
pieceofsummer commented 9 years ago

rfStateCap is 0 for some reason, and it means none of RF protection states (not even 0) are supported. Could actually be a bug inside device, or some invalid data. Try re-interviewing the command class.

PoltoS commented 9 years ago

Checked logs, indeed device sends us:

[2015-02-23 07:50:52.601] [D] [zway] SETDATA devices.17.instances.0.commandClasses.117.data.exclusiveCap = False
[2015-02-23 07:50:52.602] [D] [zway] SETDATA devices.17.instances.0.commandClasses.117.data.timeoutCap = False
[2015-02-23 07:50:52.602] [D] [zway] SETDATA devices.17.instances.0.commandClasses.117.data.stateCap = 5 (0x00000005)
[2015-02-23 07:50:52.602] [D] [zway] SETDATA devices.17.instances.0.commandClasses.117.data.rfStateCap = 0 (0x00000000)

But as I understand, it is valid to have stateCap or rfStateCap equal to 0. This means that no protection of that type is supported, means we should ignore this type in Set command. Isn't it?

piotrmaslanka commented 9 years ago

Both Danfoss 014G0002 and 014G0003 report same rfStateCap. I think that in this case RF state should be ignored in Set command.

pieceofsummer commented 9 years ago

Okay, sounds reasonable. Fixed, will be included in rc22.