Zigbee POPP Z701721 thermostatic radiator valve (TRV) – exposing all available items

The POPP Z701721 is a Zigbee TRV, which is also sold as white label under the Danfoss brand.

According to the data sheet (PDF) and to the Zigbee2MQTT entry for this device, it supports more channels than are currently exposed by the OpenHAB 3 Zigbee binding, namely:

  • Battery level
  • Battery alarm
  • Local temperature
  • Battery voltage
  • Occupied heating setpoint
  • System mode

I find that a number of the non-exposed items would be of interest, such as:

This TRV currently appears as a “Generic ZigBee Device”.

If it matters, I am running a POPP ZB-stick coordinator (Ember NCP, firmware

What would be required to expose those extra items in OpenHAB?

Not sure if this might help (I don’t know the first thing about Zigbee, I’m basically just copying and pasting from Add support for SONOFF SNZB-02ZigBee Temperature & Humidity Sensor · Issue #638 · openhab/org.openhab.binding.zigbee · GitHub):

Result of running zigbee endpoint XXX on the CLI for one of these devices
openhab> zigbee endpoint 9040/1
IEEE Address      : B4E3F9FFFEDF07DD
Network Address   : 9040
Endpoint          : 1
Device Profile    : 0x0104, ZIGBEE_HOME_AUTOMATION
Device Type       : 0x0301, THERMOSTAT
Device Version    : 1
Input Clusters    : (Server)
   0000 Basic
     - APS Security disabled
        S       0 r-- UNSIGNED_8_BIT_INTEGER    ZCL Version                              Fri Apr 22 10:15:59 GMT 2022 3
        S       1 r-- UNSIGNED_8_BIT_INTEGER    Application Version                      Fri Apr 22 10:15:59 GMT 2022 12
        S       2 r-- UNSIGNED_8_BIT_INTEGER    Stack Version                            Fri Apr 22 10:15:59 GMT 2022 8
        S       3 r-- UNSIGNED_8_BIT_INTEGER    HW Version                               Fri Apr 22 10:15:59 GMT 2022 69
        S       4 r-- CHARACTER_STRING          Manufacturer Name                        Fri Apr 22 10:15:59 GMT 2022 D5X84YU
        S       5 r-- CHARACTER_STRING          Model Identifier                         Fri Apr 22 10:15:59 GMT 2022 eT093WRO
        S       6 r-- CHARACTER_STRING          Date Code                                Fri Apr 22 10:15:59 GMT 2022 20220121
        S       7 r-- ENUMERATION_8_BIT         Power Source                              
        S       8 r-- ENUMERATION_8_BIT         Generic Device Class                      
        S       9 r-- ENUMERATION_8_BIT         Generic Device Type                       
        S      10 r-- CHARACTER_STRING          Product Code                              
        S      11 r-- CHARACTER_STRING          Product URL                               
        S      16 rw- CHARACTER_STRING          Location Description                      
        S      17 rw- ENUMERATION_8_BIT         Physical Environment                      
        S      18 rw- BOOLEAN                   Device Enabled                            
        S      19 rw- BITMAP_8_BIT              Alarm Mask                                
        S      20 rw- BITMAP_8_BIT              Disable Local Config                      
        S   16384 r-- CHARACTER_STRING          SW Build ID                               
   0001 Power Configuration
     - APS Security disabled
        U       0 r-- UNSIGNED_16_BIT_INTEGER   Mains Voltage                             
        U       1 r-- UNSIGNED_16_BIT_INTEGER   Mains Frequency                           
        U      16 rw- BITMAP_8_BIT              Mains Alarm Mask                          
        U      17 rw- UNSIGNED_16_BIT_INTEGER   Mains Voltage Min Threshold               
        U      18 rw- UNSIGNED_16_BIT_INTEGER   Mains Voltage Max Threshold               
        U      19 rw- UNSIGNED_16_BIT_INTEGER   Mains Voltage Dwell Trip Point            
        S      32 r-- UNSIGNED_8_BIT_INTEGER    Battery Voltage                          Sun Apr 24 13:18:55 GMT 2022 32
        S      33 r-s UNSIGNED_8_BIT_INTEGER    Battery Percentage Remaining             Sun Apr 24 13:35:29 GMT 2022 190
        U      48 rw- CHARACTER_STRING          Battery Manufacturer                      
        U      49 rw- ENUMERATION_8_BIT         Battery Size                              
        U      50 rw- UNSIGNED_16_BIT_INTEGER   Battery A Hr Rating                       
        U      51 rw- UNSIGNED_8_BIT_INTEGER    Battery Quantity                          
        U      52 rw- UNSIGNED_8_BIT_INTEGER    Battery Rated Voltage                     
        U      53 rw- BITMAP_8_BIT              Battery Alarm Mask                        
        U      54 rw- UNSIGNED_8_BIT_INTEGER    Battery Voltage Min Threshold             
        U      55 rw- UNSIGNED_8_BIT_INTEGER    Battery Voltage Threshold 1               
        U      56 rw- UNSIGNED_8_BIT_INTEGER    Battery Voltage Threshold 2               
        U      57 rw- UNSIGNED_8_BIT_INTEGER    Battery Voltage Threshold 3               
        U      58 rw- UNSIGNED_8_BIT_INTEGER    Battery Percentage Min Threshold          
        U      59 rw- UNSIGNED_8_BIT_INTEGER    Battery Percentage Threshold 1            
        U      60 rw- UNSIGNED_8_BIT_INTEGER    Battery Percentage Threshold 2            
        U      61 rw- UNSIGNED_8_BIT_INTEGER    Battery Percentage Threshold 3            
        U      62 r-- BITMAP_32_BIT             Battery Alarm State                       
   0003 Identify
     - APS Security disabled
        S       0 rw- UNSIGNED_16_BIT_INTEGER   Identify Time                             
   000A Time
     - APS Security disabled
        S       0 rw- UTCTIME                   Time                                      
        S       1 rw- BITMAP_8_BIT              Time Status                               
        S       2 rw- SIGNED_32_BIT_INTEGER     Time Zone                                 
        S       3 rw- UTCTIME                   DST Start                                 
        S       4 rw- UTCTIME                   DST End                                   
        S       5 rw- SIGNED_32_BIT_INTEGER     DST Shift                                 
        S       6 r-- UTCTIME                   Standard Time                             
        S       7 r-- UTCTIME                   Local Time                                
        S       8 r-- UTCTIME                   Last Set Time                             
        S       9 rw- UTCTIME                   Valid Until Time                          
   0020 Poll Control
     - APS Security disabled
        S       0 rws UNSIGNED_32_BIT_INTEGER   Checkin Interval                          
        S       1 r-s UNSIGNED_32_BIT_INTEGER   Long Poll Interval                        
        S       2 r-s UNSIGNED_16_BIT_INTEGER   Short Poll Interval                       
        S       3 r-s UNSIGNED_16_BIT_INTEGER   Fast Poll Timeout                         
        S       4 r-- UNSIGNED_32_BIT_INTEGER   Checkin Interval Min                      
        S       5 r-- UNSIGNED_32_BIT_INTEGER   Long Poll Interval Min                    
        S       6 r-- UNSIGNED_16_BIT_INTEGER   Fast Poll Timeout Max                     
   0201 Thermostat
     - APS Security disabled
        S       0 r-s SIGNED_16_BIT_INTEGER     Local Temperature                        Sun Apr 24 13:41:48 GMT 2022 2007
        S       1 r-- SIGNED_16_BIT_INTEGER     Outdoor Temperature                       
        S       2 r-- BITMAP_8_BIT              Occupancy                                 
        S       3 r-- SIGNED_16_BIT_INTEGER     Abs Min Heat Setpoint Limit               
        S       4 r-- SIGNED_16_BIT_INTEGER     Abs Max Heat Setpoint Limit               
        S       5 r-- SIGNED_16_BIT_INTEGER     Abs Min Cool Setpoint Limit               
        S       6 r-- SIGNED_16_BIT_INTEGER     Abs Max Cool Setpoint Limit               
        S       7 r-s UNSIGNED_8_BIT_INTEGER    Pi Cooling Demand                         
        S       8 r-s UNSIGNED_8_BIT_INTEGER    Pi Heating Demand                        Sun Apr 24 08:08:28 GMT 2022 0
        S       9 rw- BITMAP_8_BIT              Hvac System Type Configuration            
        S      16 rw- SIGNED_8_BIT_INTEGER      Local Temperature Calibration             
        S      17 rw- SIGNED_16_BIT_INTEGER     Occupied Cooling Setpoint                 
        S      18 rw- SIGNED_16_BIT_INTEGER     Occupied Heating Setpoint                Sun Apr 24 13:15:13 GMT 2022 1700
        S      19 rw- SIGNED_16_BIT_INTEGER     Unoccupied Cooling Setpoint               
        S      20 rw- SIGNED_16_BIT_INTEGER     Unoccupied Heating Setpoint               
        S      21 rw- SIGNED_16_BIT_INTEGER     Min Heat Setpoint Limit                   
        S      22 rw- SIGNED_16_BIT_INTEGER     Max Heat Setpoint Limit                   
        S      23 rw- SIGNED_16_BIT_INTEGER     Min Cool Setpoint Limit                   
        S      24 rw- SIGNED_16_BIT_INTEGER     Max Cool Setpoint Limit                   
        S      25 rw- SIGNED_8_BIT_INTEGER      Min Setpoint Dead Band                    
        S      26 rw- BITMAP_8_BIT              Remote Sensing                            
        S      27 rw- ENUMERATION_8_BIT         Control Sequence Of Operation            Wed Apr 20 20:29:43 GMT 2022 2
        S      28 rw- ENUMERATION_8_BIT         System Mode                              Sun Apr 24 13:07:46 GMT 2022 4
        S      29 r-- BITMAP_8_BIT              Alarm Mask                                
        S      30 r-- ENUMERATION_8_BIT         Thermostat Running Mode                   
        S      32 r-- ENUMERATION_8_BIT         Start Of Week                             
        S      33 r-- UNSIGNED_8_BIT_INTEGER    Numer Of Weekly Transitions               
        S      34 r-- UNSIGNED_8_BIT_INTEGER    Numer Of Daily Transitions                
        S      35 rw- ENUMERATION_8_BIT         Temperature Setpoint Hold                 
        S      36 rw- UNSIGNED_16_BIT_INTEGER   Temperature Setpoint Hold Duration        
        S      37 rw- BITMAP_8_BIT              Thermostat Programming Operation Mode     
        S      41 r-- BITMAP_16_BIT             Thermostat Running State                  
        S      48 r-- ENUMERATION_8_BIT         Setpoint Change Source                   Sat Apr 23 19:07:04 GMT 2022 2
        S      49 r-- UNSIGNED_16_BIT_INTEGER   Setpoint Change Amount                    
        S      50 r-- UTCTIME                   Setpoint Change Source Timestamp          
        S      52 rw- UNSIGNED_8_BIT_INTEGER    Occupied Setback                          
        S      53 r-- UNSIGNED_8_BIT_INTEGER    Occupied Setback Min                      
        S      54 r-- UNSIGNED_8_BIT_INTEGER    Occupied Setback Max                      
        S      55 rw- UNSIGNED_8_BIT_INTEGER    Unoccupied Setback                        
        S      56 r-- UNSIGNED_8_BIT_INTEGER    Unoccupied Setback Min                    
        S      57 r-- UNSIGNED_8_BIT_INTEGER    Unoccupied Setback Max                    
        S      58 rw- UNSIGNED_8_BIT_INTEGER    Emergency Heat Delta                      
        S      64 rw- ENUMERATION_8_BIT         AC Type                                   
        S      65 rw- UNSIGNED_16_BIT_INTEGER   AC Capacity                               
        S      66 rw- ENUMERATION_8_BIT         AC Refrigerant Type                       
        S      67 rw- ENUMERATION_8_BIT         AC Compressor Type                        
        S      68 rw- BITMAP_32_BIT             AC Error Code                             
        S      69 rw- ENUMERATION_8_BIT         AC Louver Position                        
        S      70 r-- SIGNED_16_BIT_INTEGER     AC Coil Temperature                       
        S      71 rw- ENUMERATION_8_BIT         AC Capacity Format                        
   0204 Thermostat User Interface Configuration
     - APS Security disabled
        S       0 rws ENUMERATION_8_BIT         Temperature Display Mode                  
        S       1 rws ENUMERATION_8_BIT         Keypad Lockout                            
        S       2 rws ENUMERATION_8_BIT         Schedule Programming Visibility           
   0B05 Diagnostics
     - APS Security disabled
        S       0 r-- UNSIGNED_16_BIT_INTEGER   Number Of Resets                          
        S       1 r-- UNSIGNED_16_BIT_INTEGER   Persistent Memory Writes                  
        S     256 r-- UNSIGNED_32_BIT_INTEGER   MAC Rx Bcast                              
        S     257 r-- UNSIGNED_32_BIT_INTEGER   MAC Tx Bcast                              
        S     258 r-- UNSIGNED_32_BIT_INTEGER   MAC Rx Ucast                              
        S     259 r-- UNSIGNED_32_BIT_INTEGER   MAC Tx Ucast                              
        S     260 r-- UNSIGNED_16_BIT_INTEGER   MAC Tx Ucast Retry                        
        S     261 r-- UNSIGNED_16_BIT_INTEGER   MAC Tx Ucast Fail                         
        S     262 r-- UNSIGNED_16_BIT_INTEGER   APS Rx Bcast                              
        S     263 r-- UNSIGNED_16_BIT_INTEGER   APS Tx Bcast                              
        S     264 r-- UNSIGNED_16_BIT_INTEGER   APS Rx Ucast                              
        S     265 r-- UNSIGNED_16_BIT_INTEGER   APS Tx Ucast Success                      
        S     266 r-- UNSIGNED_16_BIT_INTEGER   APS Tx Ucast Retry                        
        S     267 r-- UNSIGNED_16_BIT_INTEGER   APS Tx Ucast Fail                         
        S     268 r-- UNSIGNED_16_BIT_INTEGER   Route Disc Initiated                      
        S     269 r-- UNSIGNED_16_BIT_INTEGER   Neighbor Added                            
        S     270 r-- UNSIGNED_16_BIT_INTEGER   Neighbor Removed                          
        S     271 r-- UNSIGNED_16_BIT_INTEGER   Neighbor Stale                            
        S     272 r-- UNSIGNED_16_BIT_INTEGER   Join Indication                           
        S     273 r-- UNSIGNED_16_BIT_INTEGER   Child Moved                               
        S     274 r-- UNSIGNED_16_BIT_INTEGER   NWK FC Failure                            
        S     275 r-- UNSIGNED_16_BIT_INTEGER   APS FC Failure                            
        S     276 r-- UNSIGNED_16_BIT_INTEGER   APS Unauthorized Key                      
        S     277 r-- UNSIGNED_16_BIT_INTEGER   NWK Decrypt Failures                      
        S     278 r-- UNSIGNED_16_BIT_INTEGER   APS Decrypt Failures                      
        S     279 r-- UNSIGNED_16_BIT_INTEGER   Packet Buffer Allocate Failures           
        S     280 r-- UNSIGNED_16_BIT_INTEGER   Relayed Ucast                             
        S     281 r-- UNSIGNED_16_BIT_INTEGER   Phy To MAC Queue Limit Reached            
        S     282 r-- UNSIGNED_16_BIT_INTEGER   Packet Validate Drop Count                
        S     283 r-- UNSIGNED_16_BIT_INTEGER   Average MAC Retry Per APS Message Sent    
        S     284 r-- UNSIGNED_8_BIT_INTEGER    Last Message LQI                          
        S     285 r-- SIGNED_8_BIT_INTEGER      Last Message RSSI                         
Output Clusters   : (Client)
   0000 Basic
     - APS Security disabled
   0019 Ota Upgrade
     - APS Security disabled
        S       0 r-- IEEE_ADDRESS              Upgrade Server ID                         
        S       1 r-- UNSIGNED_32_BIT_INTEGER   File Offset                               
        S       2 r-- UNSIGNED_32_BIT_INTEGER   Current File Version                     Wed Apr 20 20:27:50 GMT 2022 268
        S       3 r-- UNSIGNED_16_BIT_INTEGER   Current ZigBee Stack Version              
        S       4 r-- UNSIGNED_32_BIT_INTEGER   Downloaded File Version                   
        S       5 r-- UNSIGNED_16_BIT_INTEGER   Downloaded ZigBee Stack Version           
        S       6 r-- ENUMERATION_8_BIT         Image Upgrade Status                      
        S       7 r-- UNSIGNED_16_BIT_INTEGER   Manufacturer ID                           
        S       8 r-- UNSIGNED_16_BIT_INTEGER   Image Type ID                             
        S       9 r-- UNSIGNED_16_BIT_INTEGER   Minimum Block Request Period              
        S      10 r-- UNSIGNED_32_BIT_INTEGER   Image Stamp                               

Any idea how I can add some of those missing items (clusters? Is that the right term?) to OpenHAB?

PS: If your browser truncates the dump horizontally, here’s the raw listing (expires on 2022-05-23): https://pastebin.com/raw/62y5QUBR

Also the Zigbee cluster specifications from the white-label Danfoss Ally version. As far as I can tell so far this is exactly the same product:

Sadly, I seem to be hitting a snag if I try to read a manufacturer-specific attribute (in this case, 0x4031 – “Heat Supply Request”, ref. the PDF above):

openhab> zigbee read 9040/1 0x0201 0x4031
Reading endpoint 2350/1, cluster server cluster Thermostat (0201), attributes Attribute 16433
Response for cluster 0x0201
Attribute 16433  Error UNSUPPORTED_ATTRIBUTE

This post from @chris suggests that there is a way to add those manufacturer-specific attributes to the Zigbee binding, though I’m still trying to figure out how.

This error comes from the device, so it means that the device doesn’t support this attribute. It may be that the request needs another flag which isn’t set here - I need to check this.

Thank you @chris. Is there anything I can do from my side to help out?