Skip to content

Commit fe04084

Browse files
authored
Merge pull request #71 from claudegel/quirks-V2
Quirks v2
2 parents 7a640c3 + 68546e8 commit fe04084

File tree

7 files changed

+1843
-1664
lines changed

7 files changed

+1843
-1664
lines changed

.idea/.gitignore

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/vcs.xml

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

Lines changed: 49 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ I'll list here all the custom cluster attribute with explanation about how to us
9292
|0xff01|0x0139|313|t.int16s|heat_lockout_temperature|-32768=off, celsius*100|report/read/write|
9393
|0xff01|0x013A|314|t.int16s|cool_lockout_temperature|-32768=off, celsius*100|read/write/report|
9494
|0xff01|0x013B|315|t.bitmab8|unknown|0,4|read/report|
95-
|0xff01|0x0200|512|t.bitmap32|status| 0x00000000|read/report|
95+
|0xff01|0x0200|512|t.bitmap32|dev_status| 0x00000000|read/report|
9696
|0xff01|0x0202|514|t.enum8|unknown|0,1,2,6|read|
9797
|0xff01|0x0260|608|t.bitmap16|unknown|0, 7967|read/write/report|
9898
|0xff01|0x0261|609|t.bitmap16|unknown|0|read/write/report|
@@ -191,7 +191,7 @@ I'll list here all the custom cluster attribute with explanation about how to us
191191
|0xff01|0x00A0|160|t.uint32_t|Timer|Time, 1 to 10800 seconds|read/write|
192192
|0xff01|0x00A1|161|t.uint32_t|Timer_countdown|Seconds remaining on timer|read|
193193
|0xff01|0x0119|281|t.uint16_t|ConnectedLoad| None: 0, watt|read/write|
194-
|0xff01|0x0200|512|t.bitmap32|status| 0x00000000| report/read|
194+
|0xff01|0x0200|512|t.bitmap32|dev_status| 0x00000000| report/read|
195195
|0xff01|0xFFFD|65533|t.uint16_t|cluster_revision|1|read|
196196
| --- | --- | --- | --- | --- | --- | ---|
197197
|0x0702|0x0000|0|t.uint48_t|CurrentSummationDelivered| Sum of delivered watt/hr|read/report|
@@ -224,17 +224,16 @@ I'll list here all the custom cluster attribute with explanation about how to us
224224
| --- | --- | --- | --- | --- | --- | ---|
225225
|0xff01|0x0001|1|t.bool|unknown|0, 1|read/write|
226226
|0xff01|0x0002|2|t.enum8|keypadLockout|0 = unlocked, 1 = locked|read/write|
227-
|0xff01|0x0003|3|t.uint16_t|firmware_number| |read|
228-
|0xff01|0x0004|4|t.CharacterString|firmware_version| |read|
227+
|0xff01|0x0003|3|t.uint16_t|firmware_number|378|read|
228+
|0xff01|0x0004|4|t.CharacterString|firmware_version|378|read|
229229
|0xff01|0x0060|96|t.uint16_t|ConnectedLoad| watt/hr|read|
230-
|0xff01|0x0070|112|t.bitmap8|CurrentLoad|watt/hr|read|
231-
|0xff01|0x0074|116|t.enum8|Unknown|255|read/write|
232-
|0xff01|0x0080|128|t.uint32_t|Unknown|16908288|read|
230+
|0xff01|0x0070|112|t.bitmap8|CurrentLoad|watt/hr|read/report|
231+
|0xff01|0x0074|116|t.enum8|Unknown|0, 1,255=undefined|read/write|
232+
|0xff01|0x0080|128|t.uint32_t|Unknown| |read|
233233
|0xff01|0x0090|144|t.uint32_t|currentSummationDelivered|watt/hr|read/report|
234234
|0xff01|0x00A0|160|t.uint32_t|Timer| Time, 1 to 86400 seconds|read/write|
235235
|0xff01|0x00A1|161|t.uint32_t|Timer_countDown| Seconds remaining on timer|read|
236-
|0xff01|0x00B0|176|t.Bool|Unknown|1|read/report|
237-
|0xff01|0x0200|512|t.bitmap32|status| 0x00000000 |read/report|
236+
|0xff01|0x0200|512|t.bitmap32|dev_status| 0x00000000 |read/report|
238237
|0xff01|0xFFFD|65533|t.uint16_t|cluster_revision| |read/report|
239238
| --- | --- | --- | --- | --- | --- | ---|
240239
|0x0006|0x0000|0|t.Bool|OnOff| 1=on, 0=off|read/report|
@@ -251,17 +250,18 @@ I'll list here all the custom cluster attribute with explanation about how to us
251250

252251
|Cluster|Attributes|Atribute decimal|Data type|Fonction |Value|Access|
253252
| --- | --- | --- | --- | --- | --- | ---|
254-
|0xff01|0x0002|2|t.enum8|keypadLockout|0 = unlocked, 1 = locked|read/write|
255-
|0xff01|0x0003|3|t.uint16_t|firmware_number| |read/write/report|
256-
|0xff01|0x0004|4|t.CharacterString|firmware_version|1|read|
253+
|0xff01|0x0001|1|t.Bool|Unknown|0, 1|read/write/report|
254+
|0xff01|0x0002|2|t.enum8|keypadLockout|0 = unlocked, 1 = locked|read/write/report|
255+
|0xff01|0x0003|3|t.uint16_t|firmware_number|378|read/report|
256+
|0xff01|0x0004|4|t.CharacterString|firmware_version|378|read/report|
257257
|0xff01|0x0010|16|t.int16s|unknown|400| |
258258
|0xff01|0x0013|19|t.enum8|unknown|1,2,3,4,16,21|read/write|
259-
|0xff01|0x0035|53|t.uint16_t|unknown|0|read/report|
260-
|0xff01|0x0037|55|t.uint16_t|unknown|744|read/write/report|
261-
|0xff01|0x0038|56|t.enum8|unknown|0|read/report|
259+
|0xff01|0x0035|53|t.uint16_t|unknown|0,22|read/report|
260+
|0xff01|0x0037|55|t.uint16_t|unknown|744, 1000|read/write/report|
261+
|0xff01|0x0038|56|t.enum8|unknown|0, 2|read/report|
262262
|0xff01|0x0060|96|t.uint16_t|ConnectedLoad|watt/hr|read|
263-
|0xff01|0x0070|112|t.bitmap8|CurrentLoad|watt/hr|read|
264-
|0xff01|0x0074|116|t.enum8|unknown|255|read/write/report|
263+
|0xff01|0x0070|112|t.bitmap8|CurrentLoad|watt/hr|read/report|
264+
|0xff01|0x0074|116|t.enum8|unknown|0,1,255|read/write/report|
265265
|0xff01|0x0076|118|t.uint8_t|drConfigWaterTempMin|0=off, 45 to 55 celsius|read/write/report|
266266
|0xff01|0x0077|119|t.uint8_t|drConfigWaterTempTime|2|read/write/report|
267267
|0xff01|0x0078|120|t.uint16_t|drWTTimeOn|240|read/write/report|
@@ -270,26 +270,26 @@ I'll list here all the custom cluster attribute with explanation about how to us
270270
|0xff01|0x007B|123|t.uint16_t|unknown|288|read/write/report|
271271
|0xff01|0x007C|124|t.int16s|min_measured_temp|water temp celsius*100|read/report|
272272
|0xff01|0x007D|125|t.int16s|max_measured_temp|water temp celsius*100|read/report|
273-
|0xff01|0x007E|126|t.enum8|water_temp_protection_type|0|read/write/report|
273+
|0xff01|0x007E|126|t.enum8|water_temp_protection_type|0,1|read/write/report|
274274
|0xff01|0c0080|128|t.uint32_t|unknown|0|read/report|
275275
|0xff01|0x0090|144|t.uint32_t|CurrentSummationDelivered|kwh|read/report|
276276
|0xff01|0x00A0|160|t.uint32_t|Timer| Time, 1 to 86400 seconds|read/write/report|
277277
|0xff01|0x00A1|161|t.uint32_t|Timer_countDown| Seconds remaining on timer|read/report|
278-
|0xff01|0x00B0|176|t.Bool|unknown|1|read/report|
279-
|0xff01|0x0101|257|Array| |read/report|
278+
|0xff01|0x00B0|176|t.Bool|unknown|0,1|read/report|
279+
|0xff01|0x0101|257|t.LVList| |read/report|
280280
|0xff01|0x012A|298|t.enum8|unknown|60|read/write/report|
281-
|0xff01|0x012C|300|Array|unknown| |read/report|
282-
|0xff01|0x0200|512|t.bitmap32|status| 0x00000000|read/report|
281+
|0xff01|0x012C|300|t.LVList|unknown| |read/report|
282+
|0xff01|0x0200|512|t.bitmap32|dev_status| ok=0x00000000, leak cable disconnected=0x00000040, temperature sensor disconnected=0x00000020|read/report|
283283
|0xff01|0x0202|514|t.enum8|unknown|1|read/report|
284284
|0xff01|0x0203|515|t.enum8|unknown|12|read/report|
285-
|0xff01|0x0280|640|t.int16s|max_measured_value|5300|read/write/report|
285+
|0xff01|0x0280|640|t.int16s|max_measured_value|5300, 10000|read/write/report|
286286
|0xff01|0x0281|641|t.uint16_t|unknown|0|read/write/report|
287287
|0xff01|0x0282|642|t.uint16_t|unknown|0|read/write/report|
288288
|0xff01|0x0283|643|t.uint8_t|ColdLoadPickupStatus| 1, 2|read/report|
289289
|0xff01|0x0284|644|t.uint16_t|coldLoadPickupRemainingTime|65535=off countdown| |
290290
|0xff01|0xFFFD|65533|t.uint16_t|cluster_revision| |read|
291291
| --- | --- | --- | --- | --- | --- | ---|
292-
|0x0500|0x0002|2|t.uint16_t|ZoneStatus|0=no leak, 1=leak|read|
292+
|0x0500|0x0002|2|t.uint16_t|ZoneStatus|48=no leak, 49=temp sensor disconnected, 50=leak sensor disconnected|read|
293293
| --- | --- | --- | --- | --- | --- | ---|
294294
|0x0006|0x0000|0|t.Bool|OnOff|1=on, 0=off|read/report|
295295
| --- | --- | --- | --- | --- | --- | ---|
@@ -311,12 +311,16 @@ I'll list here all the custom cluster attribute with explanation about how to us
311311
|1|0x0001|0x0020|32|t.uint8_t|Battery_Voltage| Volt*10|read/report|
312312
|1|0x0001|0x003e|62|t.bitmap32|BatteryAlarmState| 0=no alarm, 1=alarm|read/report|
313313
| --- | --- | --- | --- | --- | --- | --- | ---|
314+
|1|0xff01|0x0070|112|t.bitmap8|current_load|0-24 Wh|read/report|
315+
|1|0xff01|0x0074|116|t.enum8|Unknown|0,1,255=undefined|read/write/report|
314316
|1|0xff01|0x00A0|160|t.uint32_t|Timer|Time, 1 to 10800 seconds|read/write|
315317
|2|0xff01|0x00A0|160|t.uint32_t|Timer2|Time, 1 to 10800 seconds|read/write|
318+
|1|0xff01|0x0200|512|t.bitmap32|dev_status|0|read/report|
316319
|1|0xff01|0x02A0|672|t.uint32_t|input_on_delay|seconds, 0=off, 0 to 10800|read/write|
317320
|1|0xff01|0x02A1|673|t.uint32_t|input_off_delay|seconds, 0=off, 0 to 10800|read/write|
318321
|2|0xff01|0x02A0|672|t.uint32_t|input_on_delay|seconds, 0=off, 0 to 10800|read/write|
319322
|2|0xff01|0x02A1|673|t.uint32_t|input_off_delay|seconds, 0=off, 0 to 10800|read/write|
323+
|1|0xff01|0x00B0|175|t,Bool|Unknown|0,1|read/report|
320324
|1|0xff01|0xFFFD|65533|t.uint16_t|cluster_revision| |report/read|
321325
| --- | --- | --- | --- | --- | --- | --- | ---|
322326
|1|0x0006|0x0000|0|t.Bool|OnOff|1=on, 0=off|read/report|
@@ -326,6 +330,13 @@ I'll list here all the custom cluster attribute with explanation about how to us
326330
|2|0x0402|0x0000|0|t.int16s|Measured value, outside temperature|celsius*100|read/report|
327331
| --- | --- | --- | --- | --- | --- | --- | ---|
328332
|1|0x0405|0x0000|0|t.uint16_t|measured value, relative humidity|%|read/report|
333+
| --- | --- | --- | --- | --- | --- | --- | ---|
334+
|1|0x0B05|0x011D|285|t.int8s|rssi|-45|read/report|
335+
| --- | --- | --- | --- | --- | --- | --- | ---|
336+
|1|0x000F|0x0055|85|t.Bool|present_value|true=1, false=0|read/write/report|
337+
|2|0x000F|0x0055|85|t.Bool|present_value|true=1, false=0|read/write/report|
338+
|1|0x000F|0x006F|111|t.bitmap8|status-flag|0x00=false, 0x01=true|read/report|
339+
|2|0x000F|0x006F|111|t.bitmap8|status-flag|0x00=false, 0x01=true|read/report|
329340

330341
- **Valve**: VA4200WZ, VA4201WZ, VA4200ZB VA4201ZB, VA4220ZB, VA4221ZB
331342

@@ -335,7 +346,7 @@ I'll list here all the custom cluster attribute with explanation about how to us
335346
|0x0001|0x0021|33|t.uint8_t|Battery_percentage_remaining|%|read/report|
336347
|0x0001|0x003e|62|t.bitmap32|BatteryAlarmState| 0=no alarm, 1=alarm, 15=no battery|read/report|
337348
| --- | --- | --- | --- | --- | --- | ---|
338-
|0xff01|0x0200|512|t.bitmap32|status/alarm| 0x00000000|read/report|
349+
|0xff01|0x0200|512|t.bitmap32|dev_status/alarm| 0x00000000|read/report|
339350
| --- | --- | --- | --- | --- | --- | ---|
340351
|0x0006|0x0000|0|t.Bool|OnOff|1=on, 0=off|read/report|
341352
| --- | --- | --- | --- | --- | --- | ---|
@@ -360,15 +371,15 @@ I'll list here all the custom cluster attribute with explanation about how to us
360371
|0x0008|0x0011|17|t.uint8_t|On_level|0=off, 1 to 255 valve openning value limit|read/write|
361372
| --- | --- | --- | --- | --- | --- | ---|
362373
|0xff01|0x0101|257|Array|unknown|Array(type=AnonymousLVList, value=[0, 3, 3, 2])|read|
363-
|0xff01|0x0200|512|t.bitmap32|status/alarm| 0x00000000|read/report|
374+
|0xff01|0x0200|512|t.bitmap32|dev_status| 0x00000000|read/report|
364375
|0xff01|0x0230|560|t.enum8|alarm_flow_threshold|0=off,1=on|read/write|
365376
|0xff01|0x0231|561|t.enum8|alarm_options|0=nothing,1=alarm,2=close,3=close and alarm,4=no flowmeter|read|
366377
|0xff01|0x0240|576|Array|flow_meter_config|12 elements (uint8)|read/write|
367378
| | | | | |no flow meter = Array(type=AnonymousLVList, value=[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]) | |
368379
| | | | | |FS4220 = Array(type=AnonymousLVList, value=[194, 17, 0, 0, 136, 119, 0, 0, 1, 0, 0, 0]) | |
369380
| | | | | |FS4221 = Array(type=AnonymousLVList, value=[159, 38, 0, 0, 76, 85, 1, 0, 1, 0, 0, 0]) | |
370381
| | | | | |FS4222 = Array(type=AnonymousLVList, value=[1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]) | |
371-
|0xff01|0x0241|577|t.uint32_t|valve_countdown|seconds|read/write|
382+
|0xff01|0x0241|577|t.uint32_t|alarm_disable_countdown|0 = off, 1 to 86400 seconds (up to 24 hrs)|read/write|
372383
|0xff01|0x0250|592|t.uint32_t|power_source|0x0001d4c0 (120000)= DC power, 0x00000001 (1)=ACUPS, 0x00000000 (0)=Battery|read/write|
373384
|0xff01|0x0251|593|t.uint32_t|emergency_power_source|0x0000003c (60)=battery + ACUPS, 0x00000001=ACUPS, 0x00000000=battery|read/write|
374385
|0xff01|0x0252|594|t.uint32_t|abnormal_flow_duration|seconds ,900 (15 min) to 86400 (24hr)|read/write|
@@ -384,7 +395,7 @@ I'll list here all the custom cluster attribute with explanation about how to us
384395
|0x0404|0x0003|3|t.uint16_t|tolerance|?|read|
385396
| --- | --- | --- | --- | --- | --- | ---|
386397
|0x0500|0x0000|0|t.enum8|zone_state|1=enrolled, 0=not enrolled|read|
387-
|0x0500|0x0002|2|t.bitmap16|zone_status|56=flow?|read|
398+
|0x0500|0x0002|2|t.bitmap16|zone_status|48=ok, 50=flow meter disconnected, 56=low battery, 58=flow and low batt|read|
388399
| --- | --- | --- | --- | --- | --- | ---|
389400
|0x0702|0x0000|0|t.uint48_t|flowVolumeDelivered|L/h|report/read|
390401
|0x0702|0x0200|512|t.bitmap8|status|0=off, 1=off/armed, 2=on|read|
@@ -407,8 +418,8 @@ I'll list here all the custom cluster attribute with explanation about how to us
407418
|0xff01|0x0034|52|t.bitmap8|device_status|0|read/report|
408419
|0xff01|0x0035|53|t.uint16_t|unknown|29, 71, 72, 133|read|
409420
|0xff01|0x0036|54|t.uint16_t|battery_type|7|read/write|
410-
|0xff01|0x0080|128|t.uint32_t|unknown|16973824|read|
411-
|0xff01|0x0200|512|t.bitmap32|status|0x00000000|read/report|
421+
|0xff01|0x0080|128|t.uint32_t|unknown|16973824|read/report|
422+
|0xff01|0x0200|512|t.bitmap32|dev_status|0x00000000|read/report|
412423
|0xff01|0xfffd|65533|t.uint16_t|cluster_revision|1|read|
413424
| --- | --- | --- | --- | --- | --- | ---|
414425
|0x0001|0x0020|32|t.uint8_t|Battery_voltage|voltage * 10|read/report|
@@ -433,7 +444,7 @@ I'll list here all the custom cluster attribute with explanation about how to us
433444
|0xff01|0x0004|4|t.CharacterString|firmware_version| |read|
434445
|0xff01|0x0030|48|t.uint8_t|Unknown|60|report/read/write|
435446
|0xff01|0x0080|128|t.uint32_t|Unknown|0|read/report|
436-
|0xff01|0x0200|512|t.bitmap32|status| 0x00000000| read/report|
447+
|0xff01|0x0200|512|t.bitmap32|dev_status| 0x00000000| read/report|
437448
|0xff01|0xfffd|65533|t.uint16_t|cluster_revision| |report/read|
438449

439450
Propane level is reported as gauge needle angle cluster 0x000c, attribute 0x0055. There is no % value. In neviweb this is calculated depending on gauge type 5-95 or 10-80. If you need to set an alarm at 20% tank capacity then target angle 182 for 5-95 and 10-80 gauge. For 30% value 5-95 = 221 and 10-80 = 216.
@@ -495,7 +506,8 @@ Following are the cluster/attributes set for reproting in Neviweb:
495506
|status|0x0001|0x003e|0x1b|60|43688|1|
496507
|remaining battey percentage|0x0001|0x0021|0x20|0|65535|1|
497508
|battery voltage|0x0001|0x0020|0x20|60|43646|1|
498-
|present value, angle|0x000c|0x0055|0x39|5|3757|1|
509+
|battery alarm|0x003E|0x1B|60|43688|1|
510+
|present value, angle|0x000c|0x0055|0x39|5|3666|1|Value of -2 = probe disconected
499511
|device temperature|0x0402|0x0000|0x29|60|3678|1|(only if temperature goes below 5oC)
500512

501513
- Calypso RM3500ZB:
@@ -528,7 +540,7 @@ Following are the cluster/attributes set for reproting in Neviweb:
528540
| |0xff01|0x013B| |0|65535| |null|
529541

530542
# Setting the flow meter model for your VA422xZB valve 2n gen.
531-
To add your flow meter to your valve, you need to use the service ZHA Toolkit: Write Attribute. The data to set the flow meter is written in an attr_type array. The command is different for each type of flow meter:
543+
To add your flow meter to your valve, you need to use the service ZHA Toolkit: Write Attribute. The data to set the flow meter is written in an attr_type array. The command is different for each type of flow meter: (It is possible that ZHA will throw an error for the read_after_write portion but the attribut will be updated correctly).
532544
- FS4220: (3/4 inch)
533545
```
534546
service: zha_toolkit.attr_write
@@ -540,7 +552,7 @@ data:
540552
attr_type: 0x48
541553
attr_val: [32, 12, 0, 194, 17, 0, 0, 136, 119, 0, 0, 1, 0, 0, 0]
542554
read_before_write: false
543-
read_after_write: false
555+
read_after_write: true
544556
```
545557
- FS4221: (one inch)
546558
```
@@ -553,7 +565,7 @@ data:
553565
attr_type: 0x48
554566
attr_val: [32, 12, 0, 159, 38, 0, 0, 76, 85, 1, 0, 1, 0, 0, 0]
555567
read_before_write: false
556-
read_after_write: false
568+
read_after_write: true
557569
```
558570
- FS4222: (1.5 inch)
559571
```
@@ -566,7 +578,7 @@ data:
566578
attr_type: 0x48
567579
attr_val: [32, 12, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]
568580
read_before_write: false
569-
read_after_write: false
581+
read_after_write: true
570582
```
571583
- No flow meter:
572584
```
@@ -579,7 +591,7 @@ data:
579591
attr_type: 0x48
580592
attr_val: [32, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0]
581593
read_before_write: false
582-
read_after_write: false
594+
read_after_write: true
583595
```
584596

585597
## Light switch and dimmer double tap, long press reporting :

0 commit comments

Comments
 (0)