
Purpose of this page is to share all findings regarding the WISER Zigbee product familly.
Work in progress, so only validated informations are written
The legacy Wiser devices (models EH-ZB-…) need specific settings and a network with an extended PAN ID ending with 484504015e10; the Wiser Home devices pair as usual. See Schneider Wiser: how to set up.
The device parameters of the Wiser devices (room number, thermostat lock, open-window detection, shutter travel time, override) are listed in Device parameters.
Plugin version 9.1.009 and later. Earlier versions match a firmware file on the manufacturer code and image type only, and can offer a legacy file to the wrong model: do not put legacy firmware files in the firmware folder with an earlier version.
The legacy Wiser devices (models EH-ZB-…) are updated from Schneider’s own firmware package (WU.EH.R.04.05.08). Its OTADEF.xml file says which file goes to which model. These files use the same manufacturer code (0x105E) as the current Wiser range, and their image type does not tell one model from another, so the plugin uses that list instead:
| Model | Firmware files, in install order |
|---|---|
EH-ZB-RTS (Wiser Thermostat) |
EH_ZB_SNP_R_04_01_14_RTS.zigbee, then EH_RTS_R_04_01_00.zigbee |
EH-ZB-HACT (Wiser H-Relay) |
EH_ZB_SNP_R_04_01_14_HACT.zigbee, then EH_HAC_R_04_01_02.zigbee |
EH-ZB-LMACT (Wiser L-Relay) |
EH_ZB_SNP_R_04_01_14_LACT.zigbee, then EH_LAC_R_04_01_02.zigbee |
EH-ZB-SPD (Wiser Smart Plug FR) |
EH_ZB_SNP_R_04_01_14_SPD.zigbee, then EH_SPD_R_04_01_02.zigbee |
EH-ZB-SPD-V2 (Wiser Smart Plug DK) |
EH_PZA_R_03_02_64.zigbee, then EH_PMA_R_03_00_26.zigbee |
EH-ZB-UIO |
EH_UIO_R_04_01_18.zigbee |
EH-ZB-ECOBUTTON |
EH_ZB_SNP_R_04_01_14_ECO.zigbee, then EH_ECO_R_03_03_12.zigbee |
EH-ZB-BMS (Wiser S-Meter) |
EH_ZB_SNP_R_04_01_14_BMS.zigbee, then CTC.R.03.00.10.zigbee |
EH-ZB-VACT (Wiser Radiator Thermostat) |
EH_ZB_SNP_R_04_01_14_VACT.zigbee, then EH_VAC_R_04_00_02.zigbee |
The first file of a model (EH_ZB_SNP_…, or EH_PZA_… for EH-ZB-SPD-V2) is the Zigbee stack, the second one the application, as in Schneider’s package. EH-ZB-NANO (the Schneider hub, a USB .tar image) is not updated by the plugin.
OTAFirmware/SCHNEIDER-WISER/ and keep their names: unlike other firmware (see Update device firmware), the plugin recognises these files by their name.EH_, are never offered to another device. An EH_… file that is not in the table is offered to no device at all: the plugin log says so when the firmware folder is read.0x105E) firmware.The rest of this page gathers the protocol findings made in 2020-2021, with a ZiGate coordinator, while integrating the legacy Wiser devices.
Read Attribute Cluster 0x0000 Attribute 0xe002
Read Attribute Cluster 0x0702 Attribute 0x0301
Read Attribute Cluster 0x0702 Attribute 0x5001
Command Specific: Cluster 0x0009 cmd: 0x50 payload 0x01 0x00 0x00
Read Attribute Cluster 0x0001 Attribute 0x0020
Write Attribute 0x0000 Attribute 0xe050 ( Data Type: Bool 0x10; Value: True 0x01 )
| 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 |
Device Announcement
Bind Cluster 0x0201
Configure Reporting 0x0702 Attr: 0x0400 Type: 0x2a Min: 30 Max: 600
Read Attribute 0x0201 / 0x0016
Read Attribute 0x0201 / 0xe011 (Manufacturer Specific)
Read Attribute 0x0702 / 0x0302
Read Attribute 0x0702 / 0x5a20
Write Attribute 0x0201 Attribute 0xe011 Type: 0x18 Value: 0x00
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)
0x0000/0x5011 ATTRIBUTE_BASIC_LANGUAGE
0x0201/0xe011 HACT Configuration
Bind 0x0204
Configure Reporting 0x0402 on Attribut 0x0000 / Min: 30 Max: 30 /Measured Value 0.01
Read Attribute Cluster 0x0402 on attribute 0x0000 ( Temperature )
Write Attribute Cluster 0x0000 on attribute 0x5011 DataType: 0x42 Value ‘en’
At a point of time the device is quering the controler
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)
At that stage, someone set a target temperature on the Application managing the HUB
ZigBee Cluster Lib Frame: 0x11
Sequence number : 0xc1
Command : 0xe0
: 0x00
Length : 0x01
Value : 0x34 0x08 (Setpoint with LBHB , don't forgett the Endian ;-)
: 0xff
ATTRIBUTE_THERMOSTAT_HACT_CONFIG
# 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
| 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|
| 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: