@@ -11,12 +11,12 @@ const ea = exposes.access;
1111const manufacturerSpecificSwitchTypeClusterCode = 0x1224 ;
1212const manufacturerSpecificRotaryRemoteControlClusterCode = 0xff03 ;
1313const switchTypeAttribute = 0x8803 ;
14- const dataType = 0x20 ;
15- const valueMap : { [ key : number ] : string } = {
14+ const switchTypeDataType = 0x20 ;
15+ const switchTypeValueMap : { [ key : number ] : string } = {
1616 0 : "momentary" ,
1717 1 : "toggle" ,
1818} ;
19- const valueLookup : { [ key : string ] : number } = {
19+ const switchTypeValueLookup : { [ key : string ] : number } = {
2020 momentary : 0 ,
2121 toggle : 1 ,
2222} ;
@@ -45,7 +45,7 @@ const fzLocal = {
4545 if ( Object . hasOwn ( msg . data , switchTypeAttribute ) ) {
4646 const value = msg . data [ switchTypeAttribute ] ;
4747 return {
48- external_switch_type : valueMap [ value ] || "unknown" ,
48+ external_switch_type : switchTypeValueMap [ value ] || "unknown" ,
4949 external_switch_type_numeric : value ,
5050 } ;
5151 }
@@ -147,10 +147,10 @@ const tzLocal = {
147147 key : [ "external_switch_type" ] ,
148148 convertSet : async ( entity , key , value , meta ) => {
149149 utils . assertString ( value ) ;
150- const numericValue = valueLookup [ value ] ?? Number . parseInt ( value , 10 ) ;
150+ const numericValue = switchTypeValueLookup [ value ] ?? Number . parseInt ( value , 10 ) ;
151151 await entity . write (
152152 "genBasic" ,
153- { [ switchTypeAttribute ] : { value : numericValue , type : dataType } } ,
153+ { [ switchTypeAttribute ] : { value : numericValue , type : switchTypeDataType } } ,
154154 { manufacturerCode : manufacturerSpecificSwitchTypeClusterCode } ,
155155 ) ;
156156 return { state : { external_switch_type : value } } ;
@@ -175,6 +175,11 @@ export const definitions: DefinitionWithExtend[] = [
175175 const endpoint1 = device . getEndpoint ( 1 ) ;
176176 await endpoint1 . write ( "genOnOff" , { 16387 : { value : 0xff , type : 0x30 } } ) ;
177177 await endpoint1 . read ( "genOnOff" , [ "startUpOnOff" ] ) ;
178+ await endpoint1 . write (
179+ "genBasic" ,
180+ { [ switchTypeAttribute ] : { value : switchTypeValueLookup [ "toggle" ] , type : switchTypeDataType } } ,
181+ { manufacturerCode : manufacturerSpecificSwitchTypeClusterCode } ,
182+ ) ;
178183 await endpoint1 . read ( "genBasic" , [ switchTypeAttribute ] , { manufacturerCode : manufacturerSpecificSwitchTypeClusterCode } ) ;
179184 } ,
180185 } ,
@@ -202,8 +207,17 @@ export const definitions: DefinitionWithExtend[] = [
202207 vendor : "Candeo" ,
203208 description : "Zigbee micro smart dimmer" ,
204209 extend : [
205- m . light ( { configureReporting : true , levelConfig : { features : [ "on_off_transition_time" , "on_level" , "current_level_startup" ] } } ) ,
206- m . electricityMeter ( ) ,
210+ m . light ( {
211+ configureReporting : true ,
212+ levelReportingConfig : { min : 1 , max : 3600 , change : 1 } ,
213+ levelConfig : { features : [ "on_off_transition_time" , "on_level" , "current_level_startup" ] } ,
214+ } ) ,
215+ m . electricityMeter ( {
216+ power : { min : 10 , max : 600 , change : 50 } ,
217+ voltage : { min : 10 , max : 600 , change : 500 } ,
218+ current : { min : 10 , max : 600 , change : 500 } ,
219+ energy : { min : 10 , max : 1800 , change : 360000 } ,
220+ } ) ,
207221 ] ,
208222 fromZigbee : [ fzLocal . switch_type , fz . ignore_genOta ] ,
209223 toZigbee : [ tzLocal . switch_type ] ,
@@ -218,6 +232,11 @@ export const definitions: DefinitionWithExtend[] = [
218232 await endpoint1 . read ( "genLevelCtrl" , [ "onOffTransitionTime" ] ) ;
219233 await endpoint1 . write ( "genLevelCtrl" , { 16384 : { value : 0xff , type : 0x20 } } ) ;
220234 await endpoint1 . read ( "genLevelCtrl" , [ "startUpCurrentLevel" ] ) ;
235+ await endpoint1 . write (
236+ "genBasic" ,
237+ { [ switchTypeAttribute ] : { value : switchTypeValueLookup [ "momentary" ] , type : switchTypeDataType } } ,
238+ { manufacturerCode : manufacturerSpecificSwitchTypeClusterCode } ,
239+ ) ;
221240 await endpoint1 . read ( "genBasic" , [ switchTypeAttribute ] , { manufacturerCode : manufacturerSpecificSwitchTypeClusterCode } ) ;
222241 } ,
223242 } ,
@@ -227,8 +246,17 @@ export const definitions: DefinitionWithExtend[] = [
227246 vendor : "Candeo" ,
228247 description : "Zigbee micro smart dimmer" ,
229248 extend : [
230- m . light ( { configureReporting : true , levelConfig : { features : [ "on_off_transition_time" , "on_level" , "current_level_startup" ] } } ) ,
231- m . electricityMeter ( ) ,
249+ m . light ( {
250+ configureReporting : true ,
251+ levelReportingConfig : { min : 1 , max : 3600 , change : 1 } ,
252+ levelConfig : { features : [ "on_off_transition_time" , "on_level" , "current_level_startup" ] } ,
253+ } ) ,
254+ m . electricityMeter ( {
255+ power : { min : 10 , max : 600 , change : 50 } ,
256+ voltage : { min : 10 , max : 600 , change : 500 } ,
257+ current : { min : 10 , max : 600 , change : 500 } ,
258+ energy : { min : 10 , max : 1800 , change : 360000 } ,
259+ } ) ,
232260 ] ,
233261 fromZigbee : [ fzLocal . switch_type , fz . ignore_genOta ] ,
234262 toZigbee : [ tzLocal . switch_type ] ,
@@ -243,6 +271,11 @@ export const definitions: DefinitionWithExtend[] = [
243271 await endpoint1 . read ( "genLevelCtrl" , [ "onOffTransitionTime" ] ) ;
244272 await endpoint1 . write ( "genLevelCtrl" , { 16384 : { value : 0xff , type : 0x20 } } ) ;
245273 await endpoint1 . read ( "genLevelCtrl" , [ "startUpCurrentLevel" ] ) ;
274+ await endpoint1 . write (
275+ "genBasic" ,
276+ { [ switchTypeAttribute ] : { value : switchTypeValueLookup [ "momentary" ] , type : switchTypeDataType } } ,
277+ { manufacturerCode : manufacturerSpecificSwitchTypeClusterCode } ,
278+ ) ;
246279 await endpoint1 . read ( "genBasic" , [ switchTypeAttribute ] , { manufacturerCode : manufacturerSpecificSwitchTypeClusterCode } ) ;
247280 } ,
248281 } ,
@@ -258,6 +291,7 @@ export const definitions: DefinitionWithExtend[] = [
258291 extend : [
259292 m . light ( {
260293 configureReporting : true ,
294+ levelReportingConfig : { min : 1 , max : 3600 , change : 1 } ,
261295 levelConfig : { features : [ "on_level" , "current_level_startup" ] } ,
262296 powerOnBehavior : true ,
263297 } ) ,
@@ -373,7 +407,12 @@ export const definitions: DefinitionWithExtend[] = [
373407 multiEndpointSkip : [ "power" , "current" , "voltage" , "energy" ] ,
374408 } ) ,
375409 m . onOff ( { endpointNames : [ "l1" , "l2" ] } ) ,
376- m . electricityMeter ( ) ,
410+ m . electricityMeter ( {
411+ power : { min : 10 , max : 600 , change : 50 } ,
412+ voltage : { min : 10 , max : 600 , change : 500 } ,
413+ current : { min : 10 , max : 600 , change : 500 } ,
414+ energy : { min : 10 , max : 1800 , change : 360000 } ,
415+ } ) ,
377416 ] ,
378417 fromZigbee : [ fzLocal . switch_type , fz . ignore_genOta ] ,
379418 toZigbee : [ tzLocal . switch_type ] ,
@@ -387,6 +426,11 @@ export const definitions: DefinitionWithExtend[] = [
387426 await endpoint2 . write ( "genOnOff" , { 16387 : { value : 0xff , type : 0x30 } } ) ;
388427 await endpoint2 . read ( "genOnOff" , [ 16387 ] ) ;
389428 const endpoint11 = device . getEndpoint ( 11 ) ;
429+ await endpoint1 . write (
430+ "genBasic" ,
431+ { [ switchTypeAttribute ] : { value : switchTypeValueLookup [ "toggle" ] , type : switchTypeDataType } } ,
432+ { manufacturerCode : manufacturerSpecificSwitchTypeClusterCode } ,
433+ ) ;
390434 await endpoint11 . read ( "genBasic" , [ switchTypeAttribute ] , { manufacturerCode : manufacturerSpecificSwitchTypeClusterCode } ) ;
391435 } ,
392436 } ,
@@ -405,7 +449,13 @@ export const definitions: DefinitionWithExtend[] = [
405449 model : "C203" ,
406450 vendor : "Candeo" ,
407451 description : "Zigbee micro smart dimmer" ,
408- extend : [ m . light ( { configureReporting : true , levelConfig : { features : [ "on_off_transition_time" , "on_level" , "current_level_startup" ] } } ) ] ,
452+ extend : [
453+ m . light ( {
454+ configureReporting : true ,
455+ levelReportingConfig : { min : 1 , max : 3600 , change : 1 } ,
456+ levelConfig : { features : [ "on_off_transition_time" , "on_level" , "current_level_startup" ] } ,
457+ } ) ,
458+ ] ,
409459 fromZigbee : [ fzLocal . switch_type , fz . ignore_genOta ] ,
410460 toZigbee : [ tzLocal . switch_type ] ,
411461 exposes : [ e . enum ( "external_switch_type" , ea . ALL , [ "momentary" , "toggle" ] ) . withLabel ( "External switch type" ) ] ,
@@ -419,6 +469,11 @@ export const definitions: DefinitionWithExtend[] = [
419469 await endpoint1 . read ( "genLevelCtrl" , [ "onOffTransitionTime" ] ) ;
420470 await endpoint1 . write ( "genLevelCtrl" , { 16384 : { value : 0xff , type : 0x20 } } ) ;
421471 await endpoint1 . read ( "genLevelCtrl" , [ "startUpCurrentLevel" ] ) ;
472+ await endpoint1 . write (
473+ "genBasic" ,
474+ { [ switchTypeAttribute ] : { value : switchTypeValueLookup [ "momentary" ] , type : switchTypeDataType } } ,
475+ { manufacturerCode : manufacturerSpecificSwitchTypeClusterCode } ,
476+ ) ;
422477 await endpoint1 . read ( "genBasic" , [ switchTypeAttribute ] , { manufacturerCode : manufacturerSpecificSwitchTypeClusterCode } ) ;
423478 } ,
424479 } ,
0 commit comments