Hey,
I just stumpled across a company called "Salus" (Website) which create a bunch of different Zigbee devices. They offer quite a cheap solution for radiators since they basically don't use a gateway (they sell their zigbee stick for 9,99€ and then sell another thermostat for around 15-30€)
Now their smart radiators only cost about 24€ - and I'm really curious about looking into them. Is there anyone who has tested something with Salus before? I know from the eCozy thermostat #129 that adding a new device that basically has no functionality/buttons on its own to create messages is quite hard to add.
Thank's for the hint. Looks like a great alternative to the eCozy thermostats. In theory, once the eCozy is implemented, the same converters should be applicable to the Salus, as well (assuming the adhere to the zigbee standard).
I got my hands on a Salus TRV10RFM and tried pairing it with zigbee2mqtt. For now its failing with invalid cluster id 64512:
zigbee2mqtt:info 8.12.2018, 14:14:34 zigbee-shepherd started
zigbee2mqtt:info 8.12.2018, 14:14:34 Coordinator firmware version: '20180815'
zigbee2mqtt:info 8.12.2018, 14:14:34 Currently 0 devices are joined:
zigbee2mqtt:warn 8.12.2018, 14:14:34 `permit_join` set to `true` in configuration.yaml.
zigbee2mqtt:warn 8.12.2018, 14:14:34 Allowing new devices to join.
zigbee2mqtt:warn 8.12.2018, 14:14:34 Set `permit_join` to `false` once you joined all devices.
zigbee2mqtt:info 8.12.2018, 14:14:34 Zigbee: allowing new devices to join.
zigbee2mqtt:info 8.12.2018, 14:14:34 Connecting to MQTT server at mqtt://localhost
zigbee-shepherd:request REQ --> ZDO:mgmtPermitJoinReq +27ms
cc-znp:SREQ --> ZDO:mgmtPermitJoinReq, { addrmode: 15, dstaddr: 65532, duration: 255, tcsignificance: 0 } +0ms
serialport:main _write 10 bytes of data +36ms
serialport:bindings write 10 bytes +36ms
serialport:unixWrite Starting write 10 bytes offset 0 bytesToWrite 10 +49ms
zigbee2mqtt:info 8.12.2018, 14:14:34 zigbee-shepherd ready
serialport:unixWrite write returned null 10 +1ms
serialport:unixWrite wrote 10 bytes +0ms
serialport:unixWrite Finished writing 10 bytes +0ms
serialport:main binding.write write finished +1ms
zigbee2mqtt:info 8.12.2018, 14:14:34 Connected to MQTT server
zigbee2mqtt:info 8.12.2018, 14:14:34 MQTT publish: topic 'zigbee2mqtt/bridge/state', payload 'online'
serialport:poller received "readable" +45ms
serialport:bindings read +12ms
serialport:unixRead Starting read +45ms
serialport:unixRead Finished read 6 bytes +1ms
serialport:main binding.read finished +12ms
cc-znp { sof: 254,
cc-znp len: 1,
cc-znp type: 'SRSP',
cc-znp subsys: 'ZDO',
cc-znp cmd: 'mgmtPermitJoinReq',
cc-znp payload: { status: 0 },
cc-znp fcs: 82,
cc-znp csum: 82 } +15ms
serialport:main _read reading +1ms
serialport:bindings read +2ms
serialport:unixRead Starting read +1ms
cc-znp:SRSP <-- ZDO:mgmtPermitJoinReq, { status: 0 } +1ms
serialport:unixRead waiting for readable because of code: EAGAIN +2ms
serialport:poller Polling for "readable" +4ms
serialport:poller received "readable" +1ms
serialport:bindings read +3ms
serialport:unixRead Starting read +1ms
serialport:unixRead Finished read 6 bytes +0ms
serialport:main binding.read finished +3ms
cc-znp { sof: 254,
cc-znp len: 1,
cc-znp type: 'AREQ',
cc-znp subsys: 'ZDO',
cc-znp cmd: 'permitJoinInd',
cc-znp payload: { duration: 255 },
cc-znp fcs: 112,
cc-znp csum: 112 } +3ms
serialport:main _read reading +1ms
serialport:bindings read +1ms
serialport:unixRead Starting read +1ms
cc-znp:AREQ <-- ZDO:permitJoinInd, { duration: 255 } +1ms
zigbee-shepherd:msgHdlr IND <-- ZDO:permitJoinInd +0ms
serialport:unixRead waiting for readable because of code: EAGAIN +2ms
serialport:poller Polling for "readable" +3ms
serialport:poller received "readable" +0ms
serialport:bindings read +2ms
serialport:unixRead Starting read +0ms
serialport:unixRead Finished read 8 bytes +0ms
serialport:main binding.read finished +2ms
cc-znp { sof: 254,
cc-znp len: 3,
cc-znp type: 'AREQ',
cc-znp subsys: 'ZDO',
cc-znp cmd: 'mgmtPermitJoinRsp',
cc-znp payload: { srcaddr: 0, status: 0 },
cc-znp fcs: 240,
cc-znp csum: 240 } +2ms
serialport:main _read reading +1ms
serialport:bindings read +1ms
serialport:unixRead Starting read +1ms
cc-znp:AREQ <-- ZDO:mgmtPermitJoinRsp, { srcaddr: 0, status: 0 } +0ms
zigbee-shepherd:msgHdlr IND <-- ZDO:mgmtPermitJoinRsp +0ms
serialport:unixRead waiting for readable because of code: EAGAIN +0ms
serialport:poller Polling for "readable" +1ms
serialport:poller received "readable" +18s
serialport:bindings read +18s
serialport:unixRead Starting read +18s
serialport:unixRead Finished read 17 bytes +0ms
serialport:main binding.read finished +18s
cc-znp { sof: 254,
cc-znp len: 12,
cc-znp type: 'AREQ',
cc-znp subsys: 'ZDO',
cc-znp cmd: 'tcDeviceInd',
cc-znp payload:
cc-znp { nwkaddr: 45821, extaddr: '0x001e5e09020ac2d6', parentaddr: 0 },
cc-znp fcs: 153,
cc-znp csum: 153 } +18s
serialport:main _read reading +1ms
serialport:bindings read +1ms
serialport:unixRead Starting read +1ms
cc-znp:AREQ <-- ZDO:tcDeviceInd, { nwkaddr: 45821, extaddr: '0x001e5e09020ac2d6', parentaddr: 0 } +1ms
zigbee-shepherd:msgHdlr IND <-- ZDO:tcDeviceInd +0ms
serialport:unixRead waiting for readable because of code: EAGAIN +1ms
serialport:poller Polling for "readable" +2ms
serialport:poller received "readable" +464ms
serialport:bindings read +465ms
serialport:unixRead Starting read +465ms
serialport:unixRead Finished read 30 bytes +0ms
serialport:main binding.read finished +466ms
cc-znp { sof: 254,
cc-znp len: 25,
cc-znp type: 'AREQ',
cc-znp subsys: 'AF',
cc-znp cmd: 'incomingMsg',
cc-znp payload:
cc-znp { groupid: 0,
cc-znp clusterid: 0,
cc-znp srcaddr: 45821,
cc-znp srcendpoint: 6,
cc-znp dstendpoint: 1,
cc-znp wasbroadcast: 0,
cc-znp linkquality: 110,
cc-znp securityuse: 0,
cc-znp timestamp: 10503280,
cc-znp transseqnumber: 0,
cc-znp len: 5,
cc-znp data: <Buffer 10 08 00 05 00> },
cc-znp fcs: 36,
cc-znp csum: 36 } +468ms
serialport:main _read reading +4ms
serialport:bindings read +5ms
serialport:unixRead Starting read +4ms
cc-znp:AREQ <-- AF:incomingMsg, { groupid: 0, clusterid: 0, srcaddr: 45821, srcendpoint: 6, dstendpoint: 1, wasbroadcast: 0, linkquality: 110, securityuse: 0, timestamp: 10503280, transseqnumber: 0, len: 5, data: <Buffer 10 08 00 05 00> } +1ms
zigbee-shepherd:af dispatchIncomingMsg(): type: incomingMsg, msg: [object Object] +2ms
zigbee-shepherd:msgHdlr IND <-- AF:incomingMsg, transId: 0 +0ms
serialport:unixRead Finished read 18 bytes +3ms
serialport:main binding.read finished +3ms
cc-znp { sof: 254,
cc-znp len: 13,
cc-znp type: 'AREQ',
cc-znp subsys: 'ZDO',
cc-znp cmd: 'endDeviceAnnceInd',
cc-znp payload:
cc-znp { srcaddr: 45821,
cc-znp nwkaddr: 45821,
cc-znp ieeeaddr: '0x001e5e09020ac2d6',
cc-znp capabilities: 128 },
cc-znp fcs: 92,
cc-znp csum: 92 } +2ms
serialport:main _read reading +1ms
serialport:bindings read +4ms
serialport:unixRead Starting read +1ms
cc-znp:AREQ <-- ZDO:endDeviceAnnceInd, { srcaddr: 45821, nwkaddr: 45821, ieeeaddr: '0x001e5e09020ac2d6', capabilities: 128 } +1ms
zigbee-shepherd spinlock: false [] +0ms
zigbee-shepherd:request REQ --> ZDO:nodeDescReq +0ms
cc-znp:SREQ --> ZDO:nodeDescReq, { dstaddr: 45821, nwkaddrofinterest: 45821 } +1ms
serialport:main _write 9 bytes of data +2ms
serialport:bindings write 9 bytes +2ms
zigbee-shepherd:msgHdlr IND <-- ZDO:endDeviceAnnceInd +1ms
serialport:unixWrite Starting write 9 bytes offset 0 bytesToWrite 9 +18s
serialport:unixRead waiting for readable because of code: EAGAIN +3ms
serialport:poller Polling for "readable" +12ms
serialport:unixWrite write returned null 9 +0ms
serialport:unixWrite wrote 9 bytes +0ms
serialport:unixWrite Finished writing 9 bytes +0ms
serialport:main binding.write write finished +1ms
serialport:poller received "readable" +6ms
serialport:bindings read +7ms
serialport:unixRead Starting read +6ms
serialport:unixRead Finished read 6 bytes +0ms
serialport:main binding.read finished +6ms
cc-znp { sof: 254,
cc-znp len: 1,
cc-znp type: 'SRSP',
cc-znp subsys: 'ZDO',
cc-znp cmd: 'nodeDescReq',
cc-znp payload: { status: 0 },
cc-znp fcs: 102,
cc-znp csum: 102 } +7ms
serialport:main _read reading +1ms
serialport:bindings read +1ms
serialport:unixRead Starting read +1ms
cc-znp:SRSP <-- ZDO:nodeDescReq, { status: 0 } +0ms
serialport:unixRead waiting for readable because of code: EAGAIN +0ms
serialport:poller Polling for "readable" +1ms
serialport:poller received "readable" +431ms
serialport:bindings read +431ms
serialport:unixRead Starting read +432ms
serialport:unixRead Finished read 23 bytes +0ms
serialport:main binding.read finished +432ms
cc-znp { sof: 254,
cc-znp len: 18,
cc-znp type: 'AREQ',
cc-znp subsys: 'ZDO',
cc-znp cmd: 'nodeDescRsp',
cc-znp payload:
cc-znp { srcaddr: 45821,
cc-znp status: 0,
cc-znp nwkaddr: 45821,
cc-znp logicaltype_cmplxdescavai_userdescavai: 2,
cc-znp apsflags_freqband: 64,
cc-znp maccapflags: 128,
cc-znp manufacturercode: 4216,
cc-znp maxbuffersize: 82,
cc-znp maxintransfersize: 255,
cc-znp servermask: 0,
cc-znp maxouttransfersize: 255,
cc-znp descriptorcap: 0 },
cc-znp fcs: 45,
cc-znp csum: 45 } +434ms
serialport:main _read reading +3ms
serialport:bindings read +4ms
serialport:unixRead Starting read +4ms
cc-znp:AREQ <-- ZDO:nodeDescRsp, { srcaddr: 45821, status: 0, nwkaddr: 45821, logicaltype_cmplxdescavai_userdescavai: 2, apsflags_freqband: 64, maccapflags: 128, manufacturercode: 4216, maxbuffersize: 82, maxintransfersize: 255, servermask: 0, maxouttransfersize: 255, descriptorcap: 0 } +2ms
zigbee-shepherd:msgHdlr IND <-- ZDO:nodeDescRsp +0ms
zigbee-shepherd:request REQ --> ZDO:activeEpReq +1ms
cc-znp:SREQ --> ZDO:activeEpReq, { dstaddr: 45821, nwkaddrofinterest: 45821 } +0ms
serialport:main _write 9 bytes of data +3ms
serialport:bindings write 9 bytes +3ms
serialport:unixWrite Starting write 9 bytes offset 0 bytesToWrite 9 +446ms
serialport:unixRead waiting for readable because of code: EAGAIN +3ms
serialport:poller Polling for "readable" +8ms
serialport:unixWrite write returned null 9 +0ms
serialport:unixWrite wrote 9 bytes +0ms
serialport:unixWrite Finished writing 9 bytes +0ms
serialport:main binding.write write finished +1ms
serialport:poller received "readable" +6ms
serialport:bindings read +7ms
serialport:unixRead Starting read +7ms
serialport:unixRead Finished read 6 bytes +0ms
serialport:main binding.read finished +7ms
cc-znp { sof: 254,
cc-znp len: 1,
cc-znp type: 'SRSP',
cc-znp subsys: 'ZDO',
cc-znp cmd: 'activeEpReq',
cc-znp payload: { status: 0 },
cc-znp fcs: 97,
cc-znp csum: 97 } +9ms
serialport:main _read reading +0ms
serialport:bindings read +1ms
serialport:unixRead Starting read +0ms
cc-znp:SRSP <-- ZDO:activeEpReq, { status: 0 } +0ms
serialport:unixRead waiting for readable because of code: EAGAIN +0ms
serialport:poller Polling for "readable" +1ms
serialport:poller received "readable" +236ms
serialport:bindings read +237ms
serialport:unixRead Starting read +238ms
serialport:unixRead Finished read 12 bytes +0ms
serialport:main binding.read finished +238ms
cc-znp { sof: 254,
cc-znp len: 7,
cc-znp type: 'AREQ',
cc-znp subsys: 'ZDO',
cc-znp cmd: 'activeEpRsp',
cc-znp payload:
cc-znp { srcaddr: 45821,
cc-znp status: 0,
cc-znp nwkaddr: 45821,
cc-znp activeepcount: 1,
cc-znp activeeplist: <Buffer 06> },
cc-znp fcs: 192,
cc-znp csum: 192 } +240ms
serialport:main _read reading +3ms
serialport:bindings read +4ms
serialport:unixRead Starting read +3ms
cc-znp:AREQ <-- ZDO:activeEpRsp, { srcaddr: 45821, status: 0, nwkaddr: 45821, activeepcount: 1, activeeplist: <Buffer 06> } +1ms
zigbee-shepherd:msgHdlr IND <-- ZDO:activeEpRsp +0ms
zigbee-shepherd:request REQ --> ZDO:simpleDescReq +1ms
cc-znp:SREQ --> ZDO:simpleDescReq, { dstaddr: 45821, nwkaddrofinterest: 45821, endpoint: 6 } +0ms
serialport:main _write 10 bytes of data +2ms
serialport:bindings write 10 bytes +2ms
serialport:unixWrite Starting write 10 bytes offset 0 bytesToWrite 10 +250ms
serialport:unixRead waiting for readable because of code: EAGAIN +3ms
serialport:poller Polling for "readable" +8ms
serialport:unixWrite write returned null 10 +1ms
serialport:unixWrite wrote 10 bytes +0ms
serialport:unixWrite Finished writing 10 bytes +0ms
serialport:main binding.write write finished +1ms
serialport:poller received "readable" +6ms
serialport:bindings read +7ms
serialport:unixRead Starting read +6ms
serialport:unixRead Finished read 6 bytes +1ms
serialport:main binding.read finished +7ms
cc-znp { sof: 254,
cc-znp len: 1,
cc-znp type: 'SRSP',
cc-znp subsys: 'ZDO',
cc-znp cmd: 'simpleDescReq',
cc-znp payload: { status: 0 },
cc-znp fcs: 96,
cc-znp csum: 96 } +9ms
serialport:main _read reading +0ms
serialport:bindings read +1ms
serialport:unixRead Starting read +0ms
cc-znp:SRSP <-- ZDO:simpleDescReq, { status: 0 } +0ms
serialport:unixRead waiting for readable because of code: EAGAIN +0ms
serialport:poller Polling for "readable" +2ms
serialport:poller received "readable" +237ms
serialport:bindings read +239ms
serialport:unixRead Starting read +239ms
serialport:main binding.read finished +239ms
cc-znp { sof: 254,
cc-znp len: 24,
cc-znp type: 'AREQ',
cc-znp subsys: 'ZDO',
cc-znp cmd: 'simpleDescRsp',
cc-znp payload:
cc-znp { srcaddr: 45821,
cc-znp status: 0,
cc-znp nwkaddr: 45821,
cc-znp len: 18,
cc-znp endpoint: 6,
cc-znp profileid: 260,
cc-znp deviceid: 2,
cc-znp deviceversion: 0,
cc-znp numinclusters: 3,
cc-znp inclusterlist: <Buffer 00 00 03 00 00 fc>,
cc-znp numoutclusters: 2,
cc-znp outclusterlist: <Buffer 19 00 00 fc> },
cc-znp fcs: 209,
cc-znp csum: 209 } +241ms
serialport:main _read reading +3ms
serialport:bindings read +5ms
serialport:unixRead Starting read +6ms
cc-znp:AREQ <-- ZDO:simpleDescRsp, { srcaddr: 45821, status: 0, nwkaddr: 45821, len: 18, endpoint: 6, profileid: 260, deviceid: 2, deviceversion: 0, numinclusters: 3, inclusterlist: <Buffer 00 00 03 00 00 fc>, numoutclusters: 2, outclusterlist: <Buffer 19 00 00 fc> } +4ms
zigbee-shepherd:msgHdlr IND <-- ZDO:simpleDescRsp +0ms
serialport:unixRead waiting for readable because of code: EAGAIN +3ms
serialport:poller Polling for "readable" +10ms
zigbee-shepherd:request REQ --> AF:dataRequest, transId: 1 +7ms
cc-znp:SREQ --> AF:dataRequest, { dstaddr: 45821, destendpoint: 6, srcendpoint: 1, clusterid: 0, transid: 1, options: 48, radius: 30, len: 9, data: <Buffer 00 01 00 04 00 05 00 07 00> } +0ms
serialport:main _write 24 bytes of data +10ms
serialport:bindings write 24 bytes +8ms
serialport:unixWrite Starting write 24 bytes offset 0 bytesToWrite 24 +260ms
serialport:unixWrite write returned null 24 +0ms
serialport:unixWrite wrote 24 bytes +0ms
serialport:unixWrite Finished writing 24 bytes +0ms
serialport:main binding.write write finished +1ms
serialport:poller received "readable" +11ms
serialport:bindings read +7ms
serialport:unixRead Starting read +11ms
serialport:unixRead Finished read 6 bytes +1ms
serialport:main binding.read finished +7ms
cc-znp { sof: 254,
cc-znp len: 1,
cc-znp type: 'SRSP',
cc-znp subsys: 'AF',
cc-znp cmd: 'dataRequest',
cc-znp payload: { status: 0 },
cc-znp fcs: 100,
cc-znp csum: 100 } +8ms
serialport:main _read reading +0ms
serialport:bindings read +1ms
serialport:unixRead Starting read +0ms
cc-znp:SRSP <-- AF:dataRequest, { status: 0 } +0ms
zigbee-shepherd:request RSP <-- AF:dataRequest, status: 0 +0ms
serialport:unixRead waiting for readable because of code: EAGAIN +1ms
serialport:poller Polling for "readable" +2ms
serialport:poller received "readable" +121ms
serialport:bindings read +122ms
serialport:unixRead Starting read +121ms
serialport:unixRead Finished read 102 bytes +1ms
serialport:main binding.read finished +123ms
cc-znp { sof: 254,
cc-znp len: 97,
cc-znp type: 'AREQ',
cc-znp subsys: 'AF',
cc-znp cmd: 'incomingMsg',
cc-znp payload:
cc-znp { groupid: 0,
cc-znp clusterid: 64512,
cc-znp srcaddr: 45821,
cc-znp srcendpoint: 6,
cc-znp dstendpoint: 1,
cc-znp wasbroadcast: 0,
cc-znp linkquality: 97,
cc-znp securityuse: 0,
cc-znp timestamp: 10506737,
cc-znp transseqnumber: 0,
cc-znp len: 77,
cc-znp data:
cc-znp <Buffer 0d 78 10 0e 36 02 49 44 32 20 6f 70 52 61 74 65 3a 30 30 20 54 72 76 53 74 61 74 65 3a 30 20 42 61 74 3a 30 20 72 54 65 6d 70 3a 30 30 30 30 20 53 70 ... 27 more bytes> },
cc-znp fcs: 124,
cc-znp csum: 124 } +124ms
serialport:main _read reading +2ms
serialport:bindings read +3ms
serialport:unixRead Starting read +2ms
cc-znp:AREQ <-- AF:incomingMsg, { groupid: 0, clusterid: 64512, srcaddr: 45821, srcendpoint: 6, dstendpoint: 1, wasbroadcast: 0, linkquality: 97, securityuse: 0, timestamp: 10506737, transseqnumber: 0, len: 77, data: <Buffer 0d 78 10 0e 36 02 49 44 32 20 6f 70 52 61 74 65 3a 30 30 20 54 72 76 53 74 61 74 65 3a 30 20 42 61 74 3a 30 20 72 54 65 6d 70 3a 30 30 30 30 20 53 70 ... 27 more bytes> } +1ms
zigbee-shepherd:af dispatchIncomingMsg(): type: incomingMsg, msg: [object Object] +0ms
/home/xyz/tmp/zigbee/zigbee2mqtt/node_modules/zcl-packet/lib/functional.js:27
throw new Error('Unrecognized cluster');
^
Error: Unrecognized cluster
at new FuncPayload (/home/xyz/tmp/zigbee/zigbee2mqtt/node_modules/zcl-packet/lib/functional.js:27:15)
at /home/xyz/tmp/zigbee/zigbee2mqtt/node_modules/zcl-packet/lib/zcl.js:33:22
at Dissolve.<anonymous> (/home/xyz/tmp/zigbee/zigbee2mqtt/node_modules/zcl-packet/lib/zcl.js:121:9)
at Object.onceWrapper (events.js:273:13)
at Dissolve.emit (events.js:182:13)
at Dissolve.<anonymous> (/home/xyz/tmp/zigbee/zigbee2mqtt/node_modules/dissolve-chunks/index.js:73:29)
at Dissolve.emit (events.js:182:13)
at emitReadable_ (/home/xyz/tmp/zigbee/zigbee2mqtt/node_modules/dissolve/node_modules/readable-stream/lib/_stream_readable.js:456:10)
at emitReadable (/home/xyz/tmp/zigbee/zigbee2mqtt/node_modules/dissolve/node_modules/readable-stream/lib/_stream_readable.js:450:7)
at readableAddChunk (/home/xyz/tmp/zigbee/zigbee2mqtt/node_modules/dissolve/node_modules/readable-stream/lib/_stream_readable.js:206:11)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] start: `node index.js`
npm ERR! Exit status 1
@toha can you try adding the cluster (https://github.com/Koenkk/zcl-id/blob/master/definitions/common.json#L95)
It fails with Unrecognized command then:
[...]
cc-znp:SREQ --> AF:dataRequest, { dstaddr: 30475, destendpoint: 6, srcendpoint: 1, clusterid: 0, transid: 2, options: 48, radius: 30, len: 6, data: <Buffer 00 02 0c 00 00 f0> } +0ms
serialport:main _write 21 bytes of data +11ms
serialport:bindings write 21 bytes +10ms
serialport:unixWrite Starting write 21 bytes offset 0 bytesToWrite 21 +264ms
serialport:unixWrite write returned null 21 +0ms
serialport:unixWrite wrote 21 bytes +0ms
serialport:unixWrite Finished writing 21 bytes +0ms
serialport:main binding.write write finished +0ms
serialport:poller received "readable" +9ms
serialport:bindings read +6ms
serialport:unixRead Starting read +9ms
serialport:unixRead Finished read 6 bytes +0ms
serialport:main binding.read finished +6ms
cc-znp { sof: 254,
cc-znp len: 1,
cc-znp type: 'SRSP',
cc-znp subsys: 'AF',
cc-znp cmd: 'dataRequest',
cc-znp payload: { status: 0 },
cc-znp fcs: 100,
cc-znp csum: 100 } +8ms
serialport:main _read reading +1ms
serialport:bindings read +1ms
serialport:unixRead Starting read +1ms
cc-znp:SRSP <-- AF:dataRequest, { status: 0 } +0ms
zigbee-shepherd:request RSP <-- AF:dataRequest, status: 0 +0ms
serialport:unixRead waiting for readable because of code: EAGAIN +0ms
serialport:poller Polling for "readable" +2ms
serialport:poller received "readable" +133ms
serialport:bindings read +134ms
serialport:unixRead Starting read +134ms
serialport:unixRead Finished read 106 bytes +0ms
serialport:main binding.read finished +134ms
cc-znp { sof: 254,
cc-znp len: 101,
cc-znp type: 'AREQ',
cc-znp subsys: 'AF',
cc-znp cmd: 'incomingMsg',
cc-znp payload:
cc-znp { groupid: 0,
cc-znp clusterid: 64512,
cc-znp srcaddr: 30475,
cc-znp srcendpoint: 6,
cc-znp dstendpoint: 1,
cc-znp wasbroadcast: 0,
cc-znp linkquality: 105,
cc-znp securityuse: 0,
cc-znp timestamp: 9080252,
cc-znp transseqnumber: 0,
cc-znp len: 81,
cc-znp data:
cc-znp <Buffer 0d 78 10 05 36 03 49 44 33 20 6f 74 61 45 72 72 3a 30 20 65 72 72 43 6f 64 65 3a 30 30 30 30 30 30 30 30 20 6d 63 75 45 72 72 3a 30 30 38 31 30 30 30 ... 31 more bytes> },
cc-znp fcs: 171,
cc-znp csum: 171 } +135ms
serialport:main _read reading +2ms
serialport:bindings read +2ms
serialport:unixRead Starting read +2ms
cc-znp:AREQ <-- AF:incomingMsg, { groupid: 0, clusterid: 64512, srcaddr: 30475, srcendpoint: 6, dstendpoint: 1, wasbroadcast: 0, linkquality: 105, securityuse: 0, timestamp: 9080252, transseqnumber: 0, len: 81, data: <Buffer 0d 78 10 05 36 03 49 44 33 20 6f 74 61 45 72 72 3a 30 20 65 72 72 43 6f 64 65 3a 30 30 30 30 30 30 30 30 20 6d 63 75 45 72 72 3a 30 30 38 31 30 30 30 ... 31 more bytes> } +1ms
zigbee-shepherd:af dispatchIncomingMsg(): type: incomingMsg, msg: [object Object] +0ms
/home/xyz/tmp/zigbee/zigbee2mqtt/node_modules/zcl-packet/lib/functional.js:33
throw new Error('Unrecognized command');
^
Error: Unrecognized command
at new FuncPayload (/home/xyz/tmp/zigbee/zigbee2mqtt/node_modules/zcl-packet/lib/functional.js:33:15)
at /home/xyz/tmp/zigbee/zigbee2mqtt/node_modules/zcl-packet/lib/zcl.js:33:22
at Dissolve.<anonymous> (/home/xyz/tmp/zigbee/zigbee2mqtt/node_modules/zcl-packet/lib/zcl.js:121:9)
at Object.onceWrapper (events.js:273:13)
at Dissolve.emit (events.js:182:13)
at Dissolve.<anonymous> (/home/xyz/tmp/zigbee/zigbee2mqtt/node_modules/dissolve-chunks/index.js:73:29)
at Dissolve.emit (events.js:182:13)
at emitReadable_ (/home/xyz/tmp/zigbee/zigbee2mqtt/node_modules/dissolve/node_modules/readable-stream/lib/_stream_readable.js:456:10)
at emitReadable (/home/xyz/tmp/zigbee/zigbee2mqtt/node_modules/dissolve/node_modules/readable-stream/lib/_stream_readable.js:450:7)
at readableAddChunk (/home/xyz/tmp/zigbee/zigbee2mqtt/node_modules/dissolve/node_modules/readable-stream/lib/_stream_readable.js:206:11)
npm ERR! code ELIFECYCLE
I tried adding something to cluster_defs.json but no success yet.
@toha
Any news regarding these Salus TRVs?
P.S. Happy New Year everybody!!! :smile:
We (@jamct, @merlinschumacher and I) requested the TRV10RFM as a testing sample from Salus and just got our package. Depending on who has time, we will try to get the thermostat working. As far as I can see, a lot of the general HVAC stuff has already implemented. We'll see how we can move forward with that.
@toha like in: https://github.com/zigbeer/zcl-id/blob/master/definitions/cluster_defs.json#L65?
I gave that a try and got the standard output:
"Device with modelID 'SAL6EM1' is not supported."
It's a little late, so I'm stopping here and will continue tomorrow. Besides that, I just can't seem to make out how to move on from here, regarding the cluster-definitions for the device. I have written converters before, but not as deeply as this is into the ZigBee protocol. I haven't found any further documentation so far :( Where can I find the log as detailed as the one that @toha provided? @Koenkk could you provide us with a more detailed explanation on how to proceed in this case? We are in contact with Salus and I feel they are pretty open to answering our questions. We also have their gateway and a separate sniffer CC2531.
Thanks!
@ctandi You can get detailed output by starting zigbee2mqtt with DEBUG=* npm start.
I hope to get some time at the weekend to continue testing the device. What I found ist that TRV10RFM drains batteries in no time. Had to replace the batteries twice in three days.
Hey all, my dad just brought 8 of there TRV, reply keen to get them working for him to!
Great to have someone else working on that as well. I haven't had time to play around last weekend. I might give it a try this afternoon.
It's weird that your batteries drain so quickly @toha. A Salus technician told me that they expect an average lifetime of one year.
I have Hass.io and haven't been able to even map the custom device so not sure I will be much help. This is my first Zigbee2MQTT project.. But I will continue to have a play later today
Im just getting this:
zigbee2mqtt:info 2019-1-14 15:17:54 Logging to directory: '/share/zigbee2mqtt/log/2019-01-14.15-17-54'
/zigbee2mqtt-1.0.1/node_modules/zigbee-shepherd-converters/devices.js:3
model: 'TRV10RFM', // Vendor model number, look on the device for a model number
^
SyntaxError: Unexpected token :
at createScript (vm.js:80:10)
at Object.runInThisContext (vm.js:139:10)
at Module._compile (module.js:617:28)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
at Module.require (module.js:597:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/zigbee2mqtt-1.0.1/node_modules/zigbee-shepherd-converters/index.js:3:17)
npm
ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] start: `node index.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] start script.
npm
ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2019-01-14T15_17_55_085Z-debug.log
2019-01-14T15:17:55: PM2 log: App [npm:0] exited with code [1] via signal [SIGINT]
2019-01-14T15:17:55: PM2 log: App [npm:0] starting in -fork mode-
2019-01-14T15:17:55: PM2 log: App [npm:0] online
> [email protected] start /zigbee2mqtt-1.0.1
> node index.js
I worked out my error above. But haven't managed to get much further. @ctandi, did you manage to get any further on this?
Hey @ctandi, Any luck on working out these TRV's?
Hi, sorry for not responding, we've been quite busy here (https://www.heise.de/newsticker/meldung/No-Name-Hausautomation-Luecke-erlaubt-leichten-Firmware-Upload-4284783.html). I will try to make some time to get the thermostats going next week.
That would be awesome! Thanks!
Get Outlook for iOShttps://aka.ms/o0ukef
From: Andrijan Möcker notifications@github.com
Sent: Thursday, January 24, 2019 9:29:37 AM
To: Koenkk/zigbee2mqtt
Cc: pwrangles; Comment
Subject: Re: [Koenkk/zigbee2mqtt] Salus radiator thermostat (#587)
Hi, sorry for not responding, we've been quite busy here (https://www.heise.de/newsticker/meldung/No-Name-Hausautomation-Luecke-erlaubt-leichten-Firmware-Upload-4284783.html). I will try to make some time to get the thermostats going next week.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://github.com/Koenkk/zigbee2mqtt/issues/587#issuecomment-457127708, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AdPYjxmChqqehmuBlzV3mgGSccHyOi3Qks5vGX0BgaJpZM4YYmaN.
Evening @ctandi, How did you get on this week with cracking the TRV's. We are thinking of returning them next week if not
Happy to give it a try if someone wants to send me his/her thermostat. Else I can definitely recommend the ecozy. They are quite cheap on eBay (Kleinanzeigen), as well.
I can send you one. Send me a Mail: Ciaran.baulig Gmail
Watching this with interest as I need to invest in a set of TRVs and the cheap eCozy ones seem to have sold.
Me too, Good afternoon @sebastianheierhoff - Have you managed to make any progress with these TRV's
Working on it, but unfortunately I am running into another issue at the moment (see https://github.com/Koenkk/zigbee2mqtt/issues/1102)
All those wanting to contribute can check out: https://github.com/sebastianheierhoff/zigbee-shepherd-converters/tree/salustrv10rfm; https://github.com/sebastianheierhoff/zcl-packet/tree/salustrv10rfm and https://github.com/sebastianheierhoff/zcl-id/tree/salustrv10rfm. Work in progress.
Sorry for not responding for so long. I had just way too much work to do, to start working on it. But I talked to Salus and one thing that might be of interest is that the thermostat doesn't have a temperatur sensor. It's just there to open an close the valve. I suspect that's why they say that you need another wall thermostat.
Interesting. They seem to be using quite a lot of manufactur specific messages/ cluster (see also https://github.com/Koenkk/zigbee2mqtt/issues/917). To speed up implementation, it would be really nice if they'd be willing to tell us about these messages (structure, content, etc.)
Sorry for not responding for so long. I had just way too much work to do, to start working on it. But I talked to Salus and one thing that might be of interest is that the thermostat doesn't have a temperatur sensor. It's just there to open an close the valve. I suspect that's why they say that you need another wall thermostat.
I don’t know about other people, but that would actually be preferable for me. I have thermometers in each room linked to HASS that are much better placed than by the TRV’s. That’s part of what’s put me off other TRV-based systems.
Good morning all, any progress guys?
I didn't really have time to continue working on this. Is anyone else still trying?
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
hello:
We managed to do something useful with this device?
BR
I have up and went with some zwave devices.
Get Outlook for iOShttps://aka.ms/o0ukef
From: zhapwey notifications@github.com
Sent: Friday, September 20, 2019 8:54:37 AM
To: Koenkk/zigbee2mqtt zigbee2mqtt@noreply.github.com
Cc: pwrangles kingphil123@hotmail.co.uk; Comment comment@noreply.github.com
Subject: Re: [Koenkk/zigbee2mqtt] Salus radiator thermostat (#587)
hello:
We managed to do something useful with this device?
BR
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://github.com/Koenkk/zigbee2mqtt/issues/587?email_source=notifications&email_token=AHJ5RD22SA3R35DFUWVNVB3QKR6T3A5CNFSM4GDCM2G2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD7F44FQ#issuecomment-533450262, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AHJ5RD54GDQQQOUDWGOLVNDQKR6T3ANCNFSM4GDCM2GQ.
I'm also interested if someone got this working as this looks to be the cheapest zigbee thermostat around by far.
There are some on Amazon for 16 Euros.. it's a shame that we did not get them working :(
Ditto. They have a nicely designed ZigBee thermostat that I would be willing to lend to a developer if they wanted to investigate further
I have given mine to @sebastianheierhoff but unfortunately he did not continue working on the project.
Most helpful comment
We (@jamct, @merlinschumacher and I) requested the TRV10RFM as a testing sample from Salus and just got our package. Depending on who has time, we will try to get the thermostat working. As far as I can see, a lot of the general HVAC stuff has already implemented. We'll see how we can move forward with that.