ZigBeeForDomoticZ plugin Wiki

Schneider WISER system ( big thanks to @hairv and @badz)

Purpose

Purpose of this page is to share all findings regarding the WISER Zigbee product familly.

Work in progress, so only validated informations are written

Pairing

In short your extended PANID must looks like : 0x—-484504015e10, where the 1st 4 digits can be any hex digit

Wiser Smeter

  1. Get Active Endpoint List
    • 6 EndPoints : 0b, 0c, 0d, 0e, 0f, 10
  2. Get Model name via read attribute 0x0000/0x0005
    • EH-ZB-BMS
  3. For each EndPoint
    1. Simple Descriptor Request
      • Cluster In
        • 0x0000
        • 0x0001
        • 0x0003
        • 0x0009
        • 0x0702
        • 0xfe02
      • Cluster Out
        • 0x0019
    2. Bind 0x0019, 0x0000, 0x0001, 0x0000, 0x0003, 0x0702
  4. For each EndPoint
    • Configure Reporting Cluster 0x0702
      • Attribute 0x0000 DataType: 0x25 Uint48 0x0000ffffffffffff , Min: 30, Max: 30
      • Attribute 0x0400 DataType: 0x2a Int24: 400, Min: 30, Max: 30
      • Attribute 0x0002 DataType: 0x25 Uint48 0x0000ffffffffffff, Min: 30, Max: 30
  5. Read Attribute Cluster 0x0000 Attribute 0x0007
  6. Read Attribute Cluster 0x0000 Attribute 0x0013
  7. Read Attribute Cluster 0x0000 Attribute 0xe000
  8. Read Attribute Cluster 0x0000 Attribute 0xe001
  9. Read Attribute Cluster 0x0000 Attribute 0xe002

  10. For each EndPoint
    1. Read Attribute Cluster 0x0702 Attribute 0x0000
    2. Read Attribute Cluster 0x0702 Attribute 0x0400
    3. Read Attribute Cluster 0x0702 Attribute 0x0002
    4. Read Attribute Cluster 0x0702 Attribute 0x0300
    5. Read Attribute Cluster 0x0702 Attribute 0x0301

    6. Read Attribute Cluster 0x0702 Attribute 0x0302
    7. Read Attribute Cluster 0x0702 Attribute 0x0801
    8. Read Attribute Cluster 0x0702 Attribute 0x5000
    9. Read Attribute Cluster 0x0702 Attribute 0x5001

    10. Read Attribute Cluster 0x0702 Attribute 0xe200
    11. Read Attribute Cluster 0x0702 Attribute 0xe201
    12. Read Attribute Cluster 0x0702 Attribute 0xe202
  11. Command Specific: Cluster 0x0009 cmd: 0x50 payload 0x00 0x00 0x00
  12. Command Specific: Cluster 0x0009 cmd: 0x50 payload 0x01 0x00 0x00

  13. On EndPoint 0x0b
  14. Read Attribute Cluster 0x0001 Attribute 0x0035
  15. Read Attribute Cluster 0x0001 Attribute 0x0036
  16. Read Attribute Cluster 0x0001 Attribute 0x0020

  17. Write Attribute 0x0000 Attribute 0xe050 ( Data Type: Bool 0x10; Value: True 0x01 )

  18. Command Specific: Cluster 0x0009 cmd: 0x50 payload 0x10 0x01 0x00
  19. Command Specific: Cluster 0x0009 cmd: 0x50 payload 0x10 0x02 0x07
  20. Command Specific: Cluster 0x0009 cmd: 0x50 payload 0x11 0x02 0x07
  21. Command Specific: Cluster 0x0009 cmd: 0x50 payload 0x16 0x02 0x07

Wiser Smart Plug

Discovery steps

  1. Get Active Endpoint List
  2. Simple Descriptor Request
  3. Get Model name via read attribute 0x0000/0x0005
  4. Bind 0x0019
  5. Bind 0x0000
  6. Bind 0x0009
  7. Bind 0x0003
  8. Bind 0x0006
  9. Bind 0x0702
  10. Configure Reporting on Cluster 0x0702 Attribute 0x0000 ( Min: 600, Max: 600)
  11. Configure Reporting on Cluster 0x0702 Attribute 0x0400 ( Min: 30, Max: 600)
  12. Configure Reporting on Cluster 0x0006 Attribute 0x0000 ( Min: 0, Max 600)
  13. Read Attribute 0x0000 Attribute 0x0007 (Power Source)
  14. Read Attribute 0x0000 Attribute 0x0013 (Alarm Mask)
  15. Read Attribute 0x0000 Attribute 0xe000 (Version logicielle processeur réseau)
  16. Read Attribute 0x0000 Attribute 0xe001 (Version logicielle application)
  17. Read Attribute 0x0000 Attribute 0xe002 (Version matérielle application)
  18. Read Attribute 0x0702 Attribute 0x0000, 0x0400, 0x0300, 0x0301, 0x0302
  19. Read Attribute 0x0702 Attribute 0x5a20 (Schneider Specific)
  20. Read Attribute 0x0006 Attribute 0x0000 (ON/OFF)
  21. Write Attribute 0x0000 Attribute 0xe050 ( Data Type: Bool 0x10; Value: True 0x01 )
  22. Write Attribute 0x0000 Attribute 0x0010 (Location Description) ( Data Type: String 0x42; Value: string )

Metering Attributes

DEC HEX VALUE
0 0 currentSummationDelivered
256 100 currentTier1SummationDelivered
258 102 currentTier2SummationDelivered
260 104 currentTier3SummationDelivered
262 106 currentTier4SummationDelivered
264 108 currentTier5SummationDelivered
266 10A currentTier6SummationDelivered
2 2 currentMaxDemandDelivered
6 6 powerFactor
768 300 unitOfMeasure
769 301 multiplier
770 302 divisor
512 200 meterStatus
771 303 summationFormatting
772 304 demandFormatting
774 306 meterType
1024 400 instantaneousDemand
2049 801 Electricity Alarm Mask
20480 5000 electricCurrentMultiplier
20481 5001 electricCurrentDivisor
20737 5101 RMSElectricCurrentPhase1
20753 5111 maxElectricCurrentPhase1
20769 5121 RMSElectricCurrentPhase1MaxThreshold
21760 5500 voltageMultiplier
21761 5501 voltageDivisor
22017 5601 RMSVoltagePhase1
22049 5621 RMSVoltagePhase1MinThreshold
22050 5622 RMSVoltagePhase1MaxThreshold
23072 5A20 activePowerAlarmMask
23073 5A21 activePowerMinThreshold
23074 5A22 activePowerMaxThreshold
23296 5B00 apparentPower
23345 5B31 apparentPowerMultiplier
23346 5B32 apparentPowerDivisor
24576 6000 loadConnectedLabel
28674 7002 numberOfPhases
28675 7003 supplierContractName
28688 7010 numberOfTiers
28690 7012 tiersAlarmMask
28752 7050 referencePowerFactor
28753 7051 referenceRMSElectricCurrent
28758 7056 referenceRMSVoltage
28766 705E referenceFrequency
57600 E100 MMSSensorType
57632 E120 MMSAlarmsMask
57856 E200 ctStatusRegister This is for BMS (first bit 0 == Not active, first bit 1 == Active
57857 E201 ctPowerConfiguration
57858 E202 ctCalibrationMultiplier

Wiser Actuator

  1. Device Announcement

  2. Active Endpoint Response
  3. Read Attribute 0x0000/0x0005
    • Receive : EH-ZB-HACT
  4. Simple Descriptor Request
    • Profile: 0x0104
    • DeviceID: 0x0301
    • Input Cluster
      • 0x0000
      • 0x0003
      • 0x0009
      • 0x0201
      • 0x0702
      • 0xfe02
    • Output Cluster
      • 0x0019
      • 0x0402
  5. Bind Cluster 0x0019
  6. Bind Cluster 0x0000
  7. Bind Cluster 0x0009
  8. Bind Cluster 0x0003
  9. Bind Cluster 0x0201

  10. Configure Reporting 0x0201 Attr: 0x0012 Type: 0x29 Min: 600 Max: 600
  11. Configure Reporting 0x0702 Attr: 0x0000 Type: 0x25 Min: 600 Max: 600
  12. Configure Reporting 0x0702 Attr: 0x0400 Type: 0x2a Min: 30 Max: 600

  13. Read Attribute 0x0000 / 0x0007
  14. Read Attribute 0x0000 / 0x0013
  15. Read Attribute 0x0000 / 0xe000 (Manufacturer Specific)
  16. Read Attribute 0x0000 / 0xe001 (Manufacturer Specific)
  17. Read Attribute 0x0000 / 0xe002 (Manufacturer Specific)
  18. Read Attribute 0x0201 / 0x0012
  19. Read Attribute 0x0201 / 0x0015
  20. Read Attribute 0x0201 / 0x0016

  21. Read Attribute 0x0201 / 0xe011 (Manufacturer Specific)

  22. Read Attribute 0x0702 / 0x0000
  23. Read Attribute 0x0702 / 0x0400
  24. Read Attribute 0x0702 / 0x0300
  25. Read Attribute 0x0702 / 0x0301
  26. Read Attribute 0x0702 / 0x0302

  27. Read Attribute 0x0702 / 0x5a20

  28. Write Attribute 0x0000 Attribute 0xe050 ( Data Type: Bool 0x10; Value: True 0x01 )
  29. Write Attribute 0x0201 Attribute 0x0010 Type: 0x28 Value: 0
  30. Write Attribute 0x0201 Attribute 0xe010 Type: 0x30 Value: 0x01
  31. Write Attribute 0x0201 Attribute 0xe011 Type: 0x18 Value: 0x00

  32. Write Attribute 0x0000 Attribute 0x5000 (Location Description) ( Data Type: String 0x42; Value: string )

Device Informations

EP 0b
ProfileID 0104
ZDeviceID 0301
Manufacturer Name : "Schneider Electric"
Model: EH-ZB-HACT

Application Version 0010
Cluster IN Count: 06
Cluster In 1: 0000 (Basic)
Cluster In 2: 0003 (Identify)
Cluster In 3: 0009 (Alarms)
Cluster In 4: 0201 (Thermostat)
Cluster In 5: 0702
Cluster In 6: fe02
Cluster OUT Count: 02
Cluster Out 1: 0019 (Over-the-Air Upgrade)
Cluster Out 2: 0402 (Temperature Measurement)

Cluster

Wiser Thermostat

Discovery process

  1. Request Active End Point
  2. Simple Descriptor Request
    • Ep: 0b
    • Cluster In:
    • 0x0000
    • 0x0001
    • 0x0003
    • 0x0009
    • 0x0204
    • 0xfe02 * Cluster Out
    • 0x0019
    • 0x0201
  3. Read Attribute 0x0000 / 0x0005 ( Model Name )
    • EH-ZB-RTS
  4. Read Attribute 0x0000 / 0xe000
    • SNP.R.04.01.14
  5. Bind 0x0019
  6. Bind 0x0201
  7. Bind 0x0402
  8. Bind 0x0000
  9. Bind 0x0001
  10. Bind 0x0009
  11. Bind 0x0003
  12. Bind 0x0204

  13. Configure Reporting 0x0402 on Attribut 0x0000 / Min: 30 Max: 30 /Measured Value 0.01

  14. Read Attribute Cluster 0x0000 on attribute 0x0007 ( Power Source )
  15. Read Attribute Cluster 0x0000 on attribute 0x0013 ( Alarm Mask)
  16. Read Attribute Cluster 0x0000 on attribute 0xe000
  17. Read Attribute Cluster 0x0000 on attribute 0xe001
  18. Read Attribute Cluster 0x0000 on attribute 0xe002
  19. Read Attribute Cluster 0x0001 on attribute 0x0035, 0x0036, 0x0020
  20. Read Attribute Cluster 0x0402 on attribute 0x0000 ( Temperature )

  21. Write attribute Cluster 0x0000 on attribute 0xe050 DataType: 0x10 Value 0x01
  22. Write Attribute Cluster 0x0000 on attribute 0x5011 DataType: 0x42 Value ‘en’

  23. Read Attribute Cluster 0x0001 on attribute 0x0020
  24. Write Attribute Cluster 0x0000 on attribute 0x0010 DataType: 0x42 Value is a string which give the name of the Zone

At a point of time the device is quering the controler

Device Informations

ProfileID : "0104"
ZDeviceID : "0302"
Manufacturer : "105e"
MacCapa: 0x80
DeviceType : "RFD"
LogicalType : "End Device"
PowerSource : "Battery"
ReceiveOnIdle : "Off"
Stack Version : "2"
ZCL Version : "1"
Max Buffer Size : "50"
Max Rx : "00a0"
Max Tx : "00a0"
Manufacturer Name : "Schneider Electric"
Model: EH-ZB-RTS

Ep: 0b
Cluster IN Count: 07
Cluster In 1: 0000 (Basic)
Cluster In 2: 0001 (Power Configuration)
Cluster In 3: 0003 (Identify)
Cluster In 4: 0009 (Alarms)
Cluster In 5: 0204 (Thermostat User Interface Configuration)
Cluster In 6: 0402 (Temperature Measurement)
Cluster In 7: fe02
Cluster OUT Count: 02
Cluster Out 1: 0019 (Over-the-Air Upgrade)
Cluster Out 2: 0201 (Thermostat)

Decoded scenario ( Schneider HUB, 1 Thermostat, 2 Actuators )

  1. Thermostat sending local Temperature to:
    1. Hub by Report Attribute Cluster 0x0402 Attribute 0x0000
    2. actuators by Report Attribute Cluster 0x0402 Attribute 0x0000
  2. Thermostat requesting Attribute from the Hub
    1. OccupedHeatingSetPoint by Read Attribute Cluster 0x0201 on Attribute 0x0012
    2. 0xe010 by Read Attribute Cluster 0x0201 on Attribute 0xe010 ( Hub returning Getting 8-Bit enum value: 0x01 )
    3. MaxHeatSetpointLimit by Read Attribute Cluster 0x0201 on Attribute 0x0016 ( Hub returning response 3500 )
    4. MinHeatSetpointLimit by Read Attribute Cluster 0x0201 on Attribute 0x0015 ( Hub returning response 50 )
  3. each Actuators sending Instantaneous Demand to:
    1. Hub by Report Attribute Cluster 0x0702 Attribute 0x0400

At that stage, someone set a target temperature on the Application managing the HUB

  1. Thermostat sending SetPoint to:
    1. HUB by using the command 0xe0 on Cluster 0x0201
    2. Actuators by using the command 0xe0 on Cluster 0x0201
  2. HUB sending SetPoint to:
    1. Actuators by using the command 0xe0 on Cluster 0x0201
  3. each Actuators sending Instantaneous Demand to
    1. Hub by Report Attribute Cluster 0x0702 Attribute 0x0400

Binding Thermostat with Actuator

  1. Binding cluster Thermostat of Actuator with Thermostat
    • Source Actuator
    • Target Thermostat
    • Cluster 0x0201
  2. Binding cluster Temperature Measurement of Thermostat with Actuator
    • Source Thermostat
    • Target Actuator
    • Cluster 0x0402

comments

Decoding specifc cluster

Decoding Cluster 0x0201 Command Specific 0xe0

Decoding Cluster 0x0201 on Attribute 0xe010

Decoding Cluster 0x0201 on Attribute 0xe011

ATTRIBUTE_THERMOSTAT_HACT_CONFIG

Reporting Configuration

# Simple Metering, current summation delivered.
# Always report after 30 seconds / 10 minutes whatever the change.
702_0_0_normal_interval_minimum=600
702_0_0_normal_interval_maximum=600
702_0_0_normal_reportable_change=281474976710655
702_0_0_fast_interval_minimum=30
702_0_0_fast_interval_maximum=30
702_0_0_fast_reportable_change=281474976710655

# Simple Metering, current max demand delivered.
# Always report after 30 seconds / 10 minutes whatever the change.
702_2_0_normal_interval_minimum=600
702_2_0_normal_interval_maximum=600
702_2_0_normal_reportable_change=16777215
702_2_0_fast_interval_minimum=30
702_2_0_fast_interval_maximum=30
702_2_0_fast_reportable_change=16777215

# Simple Metering, instantaneous demand.
# Commented out, we want to use values from MeteringFeatureImpl
#702_400_0_normal_interval_minimum=600
#702_400_0_normal_interval_maximum=600
#702_400_0_normal_reportable_change=16777215
#702_400_0_fast_interval_minimum=30
#702_400_0_fast_interval_maximum=30
#702_400_0_fast_reportable_change=16777215

# Temperature Measurement, current measured value, battery device
# Report interval: [1 minute; 10 minutes], change: 1,00 C
402_0_1_normal_interval_minimum=60
402_0_1_normal_interval_maximum=600
402_0_1_normal_reportable_change=100

# On/Off
# Report on-change and always after 10 minutes.
6_0_0_normal_interval_minimum=0
6_0_0_normal_interval_maximum=600
6_0_0_normal_interval_change=1

# Thermostat Set-Point, current measured value, battery device
# Report interval: 10 minutes whatever the change.
201_12_1_normal_interval_minimum=600
201_12_1_normal_interval_maximum=600
201_12_1_normal_reportable_change=32767

# Thermostat Local Temperature, current measured value, battery device
# Report interval: [1 minute; 10 minutes], change: 1,00 C
201_0_1_normal_interval_minimum=60
201_0_1_normal_interval_maximum=600
201_0_1_normal_reportable_change=100

# Thermostat Valve Position, current measured value, battery device
# Report interval: [1 minute; 10 minutes]
201_e030_1_normal_interval_minimum=60
201_e030_1_normal_interval_maximum=600
201_e030_1_normal_reportable_change=10

# Thermostat Open Window Detection Status
# Report on-change or otherwise never
201_e012_0_normal_interval_minimum=10
201_e012_0_normal_interval_maximum=600
201_e012_0_normal_reportable_change=1

# Thermostat Calibration Status, current calibration status, battery device
# Report interval: [0 minute; 10 minutes]
201_e031_1_normal_interval_minimum=10
201_e031_1_normal_interval_maximum=600
201_e031_1_normal_reportable_change=1

Attribut Thermostat

| cluster | cluster name | Attribut | purpose | value | type|Read / Write | |—|—|—|—|—|—|—| |0x0000 | Basic | 0x0005 | Mode Identifier |EH-ZB-RTS |0x42| Read| |0x0000 | Basic | 0x0007 | Power source | 0x03 |0x30 (8bits enum)| Read| |0x0000 | Basic | 0x0020 | Location Description| Zigate zone |0x342| Write| |0x0000 | Basic | 0x0013 | Alarm Mask | 0x00 |0x18 (8bits bitmap)| Read| |0x0000 | Basic | 0xe000 | brickSWVersion | SNP.R.04.01.14 |0x42| Read| |0x0000 | Basic | 0xe001 | applSWVersion | RTS.R.04.01.00 |0x42| Read| |0x0000 | Basic | 0xe002 | version | RTS.R.00.00.2 |0x42| Read| |0x0000 | Basic | 0xe050 | Commissioned | 0x01 |0x10| Write| |0x0000 | Basic | 0x5011 | Language | en,fr,… |0x42| Write| |||||||| |0x0001 | Power Configuration | 0x0035 | Alarm Mask | 0x01 |0x18 (8bits bitmap)| Read| |0x0001 | Power Configuration | 0x0036 | Battery Voltage Minimum Threshold | voltage |0x20| Read| |0x0001 | Power Configuration | 0x0020 | Battery Voltage | voltage |0x20| Read| |||||||| |0x0201 | Thermostat | 0x0012 | Occuppied Heating Setpoint | Temperature |0x29| Read to Coordinnator| |0x0201 | Thermostat | 0x0015 | Min Heating Setpoint | Temperature |0x29| Read to Coordinnator| |0x0201 | Thermostat | 0x0016 | Max Heating Setpoint | Temperature |0x29| Read to Coordinnator| |0x0201 | Thermostat | 0xe010 | Thermostat Mode | 0x01 (Manual) |0x30| Read to Coordinnator| |||||||| |0x0402 | Thermostat Measurement | 0x0000 | Measure Value | Temperature |0x29| Read|

thermostat commands

cluster cluster name command purpose payload
0x0201 Thermostat 0xe0 setpoint zone 0x01 + temperature in centi degree (uint16) + end 0xff
0x0201 Thermostat 0xe1 set fip mode zone 0x01 + fip mode (0-confort, 1-confort -1, 2 confort -2, 3-eco, 4-FrostP, 5-off) + prio (0x01) end 0xff

Sources of information: