Zigbee2mqtt: Salus radiator thermostat

Created on 11 Nov 2018  Â·  36Comments  Â·  Source: Koenkk/zigbee2mqtt

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.

stale

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.

All 36 comments

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)

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.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

alwashe picture alwashe  Â·  4Comments

Underknowledge picture Underknowledge  Â·  4Comments

mpuff picture mpuff  Â·  3Comments

andreasbrett picture andreasbrett  Â·  4Comments

RefineryX picture RefineryX  Â·  4Comments