Matter minor fixes (#18813)

This commit is contained in:
s-hadinger 2023-06-07 19:23:28 +02:00 committed by GitHub
parent 5a8f13d57f
commit f572d93ac6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
32 changed files with 320 additions and 204 deletions

View File

@ -227,6 +227,7 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because
#include "solidify/solidified_Matter_Plugin_Bridge_Sensor_Illuminance.h"
#include "solidify/solidified_Matter_Plugin_Bridge_Sensor_Humidity.h"
#include "solidify/solidified_Matter_Plugin_Bridge_Sensor_Occupancy.h"
#include "solidify/solidified_Matter_Plugin_Sensor_OnOff.h"
/*********************************************************************************************\
* Get a bytes() object of the certificate DAC/PAI_Cert
@ -416,6 +417,7 @@ module matter (scope: global, strings: weak) {
Plugin_Sensor_Illuminance, class(be_class_Matter_Plugin_Sensor_Illuminance) // Illuminance Sensor
Plugin_Sensor_Humidity, class(be_class_Matter_Plugin_Sensor_Humidity) // Humidity Sensor
Plugin_Sensor_Occupancy, class(be_class_Matter_Plugin_Sensor_Occupancy) // Occupancy Sensor
Plugin_Sensor_OnOff, class(be_class_Matter_Plugin_Sensor_OnOff) // Simple OnOff Sensor
Plugin_Bridge_HTTP, class(be_class_Matter_Plugin_Bridge_HTTP) // HTTP bridge superclass
Plugin_Bridge_OnOff, class(be_class_Matter_Plugin_Bridge_OnOff) // HTTP Relay/Light behavior (OnOff)
Plugin_Bridge_Light0, class(be_class_Matter_Plugin_Bridge_Light0) // HTTP OnOff Light

View File

@ -46,7 +46,6 @@ class Matter_Plugin_Bridge_HTTP : Matter_Plugin_Device
# 0x0039: [0x11] # Bridged Device Basic Information 9.13 p.485
}
# static var TYPES = { 0x010A: 2 } # On/Off Light
var http_remote # instance of Matter_HTTP_remote
@ -179,6 +178,8 @@ class Matter_Plugin_Bridge_HTTP : Matter_Plugin_Device
if attribute == 0x0011 # ---------- Reachable / bool ----------
# self.is_reachable_lazy_sync() # Not needed anymore
return TLV.create_TLV(TLV.BOOL, self.http_remote.reachable) # TODO find a way to do a ping
else
return super(self).read_attribute(session, ctx)
end
else

View File

@ -40,7 +40,7 @@ class Matter_Plugin_Bridge_Light0 : Matter_Plugin_Bridge_HTTP
# 0x0005: inherited # Scenes 1.4 p.30 - no writable
0x0006: [0,0xFFFC,0xFFFD], # On/Off 1.5 p.48
}
static var TYPES = { 0x0100: 2, 0x0013: 1 } # OnOff Light, but not actually used because Relay is managed by OnOff
static var TYPES = { 0x0100: 2 } # OnOff Light, but not actually used because Relay is managed by OnOff
var tasmota_relay_index # Relay number in Tasmota (one based)
var shadow_onoff # fake status for now # TODO

View File

@ -39,7 +39,7 @@ class Matter_Plugin_Bridge_Light1 : Matter_Plugin_Bridge_Light0
# 0x0006: inherited # On/Off 1.5 p.48
0x0008: [0,2,3,0x0F,0x11,0xFFFC,0xFFFD], # Level Control 1.6 p.57
}
static var TYPES = { 0x0101: 2, 0x0013: 1 } # Dimmable Light
static var TYPES = { 0x0101: 2 } # Dimmable Light
var shadow_bri
# var tasmota_relay_index # ingerited

View File

@ -40,7 +40,7 @@ class Matter_Plugin_Bridge_Light2 : Matter_Plugin_Bridge_Light1
# 0x0008: inherited # Level Control 1.6 p.57
0x0300: [7,8,0xF,0x400A,0x400B,0x400C,0xFFFC,0xFFFD], # Color Control 3.2 p.111
}
static var TYPES = { 0x010C: 2, 0x0013: 1 } # Dimmable Light
static var TYPES = { 0x010C: 2 } # Dimmable Light
var shadow_ct
var ct_min, ct_max

View File

@ -40,7 +40,7 @@ class Matter_Plugin_Bridge_Light3 : Matter_Plugin_Bridge_Light1
# 0x0008: inherited # Level Control 1.6 p.57
0x0300: [0,1,7,8,0xF,0x4001,0x400A,0xFFFC,0xFFFD],# Color Control 3.2 p.111
}
static var TYPES = { 0x010D: 2, 0x0013: 1 } # Extended Color Light
static var TYPES = { 0x010D: 2 } # Extended Color Light
var shadow_hue, shadow_sat # 0..254
@ -124,13 +124,13 @@ class Matter_Plugin_Bridge_Light3 : Matter_Plugin_Bridge_Light1
return TLV.create_TLV(TLV.U1, 0)
elif attribute == 0x4001 # ---------- EnhancedColorMode / u1 ----------
return TLV.create_TLV(TLV.U1, 0)
elif attribute == 0x400A # ---------- ColorCapabilities / map32 ----------
return TLV.create_TLV(TLV.U4, 0x01) # HS
# Defined Primaries Information Attribute Set
elif attribute == 0x0010 # ---------- NumberOfPrimaries / u1 ----------
return TLV.create_TLV(TLV.U1, 0)
elif attribute == 0x400A # ---------- ColorCapabilities / map32 ----------
return TLV.create_TLV(TLV.U4, 0x01)
elif attribute == 0xFFFC # ---------- FeatureMap / map32 ----------
return TLV.create_TLV(TLV.U4, 0x01) # HS
elif attribute == 0xFFFD # ---------- ClusterRevision / u2 ----------

View File

@ -29,7 +29,7 @@ class Matter_Plugin_Bridge_Light0 end
class Matter_Plugin_Bridge_OnOff : Matter_Plugin_Bridge_Light0
static var TYPE = "http_relay" # name of the plug-in in json
static var NAME = "🔗 Relay" # display name of the plug-in
static var TYPES = { 0x010A: 2, 0x0013: 1 } # On/Off Plug-in Unit
static var TYPES = { 0x010A: 2 } # On/Off Plug-in Unit
#############################################################
# web_values

View File

@ -33,7 +33,7 @@ class Matter_Plugin_Bridge_Sensor_Humidity : Matter_Plugin_Bridge_Sensor
static var CLUSTERS = {
0x0405: [0,1,2,0xFFFC,0xFFFD], # Humidity Measurement p.102 - no writable
}
static var TYPES = { 0x0307: 2, 0x0013: 1 } # Humidity Sensor, rev 2
static var TYPES = { 0x0307: 2 } # Humidity Sensor, rev 2
#############################################################
# Called when the value changed compared to shadow value

View File

@ -33,7 +33,7 @@ class Matter_Plugin_Bridge_Sensor_Illuminance : Matter_Plugin_Bridge_Sensor
static var CLUSTERS = {
0x0400: [0,1,2,0xFFFC,0xFFFD], # Illuminance Measurement p.95 - no writable
}
static var TYPES = { 0x0106: 2, 0x0013: 1 } # Illuminance Sensor, rev 2
static var TYPES = { 0x0106: 2 } # Illuminance Sensor, rev 2
#############################################################
# Called when the value changed compared to shadow value

View File

@ -27,17 +27,17 @@ class Matter_Plugin_Bridge_HTTP end
#@ solidify:Matter_Plugin_Bridge_Sensor_Occupancy,weak
class Matter_Plugin_Bridge_Sensor_Occupancy : Matter_Plugin_Bridge_HTTP
static var TYPE = "http_occupancy" # name of the plug-in in json
static var NAME = "🔗 Occupancy" # display name of the plug-in
static var ARG = "switch" # additional argument name (or empty if none)
static var TYPE = "http_occupancy" # name of the plug-in in json
static var NAME = "🔗 Occupancy" # display name of the plug-in
static var ARG = "switch" # additional argument name (or empty if none)
static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type
static var UPDATE_TIME = 5000 # update every 5s
static var UPDATE_CMD = "Status 8" # command to send for updates
static var UPDATE_CMD = "Status 8" # command to send for updates
static var CLUSTERS = {
0x0406: [0,1,2,0xFFFC,0xFFFD], # Occupancy Sensing p.105 - no writable
}
static var TYPES = { 0x0107: 2, 0x0013: 1 } # Occupancy Sensor, rev 2
static var TYPES = { 0x0107: 2 } # Occupancy Sensor, rev 2
var tasmota_switch_index # Switch number in Tasmota (one based)
var shadow_occupancy

View File

@ -33,7 +33,7 @@ class Matter_Plugin_Bridge_Sensor_Pressure : Matter_Plugin_Bridge_Sensor
static var CLUSTERS = {
0x0403: [0,1,2,0xFFFC,0xFFFD], # Pressure Measurement
}
static var TYPES = { 0x0305: 2, 0x0013: 1 } # Temperature Sensor, rev 2
static var TYPES = { 0x0305: 2 } # Temperature Sensor, rev 2
#############################################################
# Called when the value changed compared to shadow value

View File

@ -33,7 +33,7 @@ class Matter_Plugin_Bridge_Sensor_Temp : Matter_Plugin_Bridge_Sensor
static var CLUSTERS = {
0x0402: [0,1,2,0xFFFC,0xFFFD], # Temperature Measurement p.97 - no writable
}
static var TYPES = { 0x0302: 2, 0x0013: 1 } # Temperature Sensor, rev 2
static var TYPES = { 0x0302: 2 } # Temperature Sensor, rev 2
#############################################################
# Called when the value changed compared to shadow value

View File

@ -27,11 +27,13 @@ class Matter_Plugin end
class Matter_Plugin_Device : Matter_Plugin
static var CLUSTERS = {
# 0x001D: inherited # Descriptor Cluster 9.5 p.453
0x0039: [0x11], # Bridged Device Basic Information 9.13 p.485
0x0003: [0,1,0xFFFC,0xFFFD], # Identify 1.2 p.16
0x0004: [0,0xFFFC,0xFFFD], # Groups 1.3 p.21
0x0005: [0,1,2,3,4,5,0xFFFC,0xFFFD], # Scenes 1.4 p.30 - no writable
}
static var TYPES = { 0x0000: 0 } # fake type
static var TYPES = { 0x0013: 1 } # fake type
static var NON_BRIDGE_VENDOR = [ 0x1217, 0x1381 ] # Fabric VendorID not supporting Bridge mode
#############################################################
# Constructor
@ -78,6 +80,30 @@ class Matter_Plugin_Device : Matter_Plugin
return TLV.create_TLV(TLV.U4, 4) # 0 = no Level Control for Lighting
end
# ====================================================================================================
elif cluster == 0x001D # ========== Descriptor Cluster 9.5 p.453 ==========
if attribute == 0x0000 # ---------- DeviceTypeList / list[DeviceTypeStruct] ----------
# for device sub-classes, automatically add the Bridge Node type `0x0013: 1`
# unless the fabric doesn't support bridge mode (currently Alexa)
var dtl = TLV.Matter_TLV_array()
var types = self.TYPES
for dt: types.keys()
var d1 = dtl.add_struct()
d1.add_TLV(0, TLV.U2, dt) # DeviceType
d1.add_TLV(1, TLV.U2, types[dt]) # Revision
end
# if fabric is not Alexa
if self.NON_BRIDGE_VENDOR.find(session.get_admin_vendor()) == nil
var d1 = dtl.add_struct()
d1.add_TLV(0, TLV.U2, 0x0013) # DeviceType
d1.add_TLV(1, TLV.U2, 1) # Revision
end
return dtl
else
return super(self).read_attribute(session, ctx)
end
else
return super(self).read_attribute(session, ctx)
end

View File

@ -92,7 +92,7 @@ class Matter_Plugin_Light3 : Matter_Plugin_Light1
elif attribute == 0x4001 # ---------- EnhancedColorMode / u1 ----------
return TLV.create_TLV(TLV.U1, 0)
elif attribute == 0x400A # ---------- ColorCapabilities / map2 ----------
return TLV.create_TLV(TLV.U1, 0)
return TLV.create_TLV(TLV.U1, 0x01) # HS
# Defined Primaries Information Attribute Set
elif attribute == 0x0010 # ---------- NumberOfPrimaries / u1 ----------

View File

@ -25,7 +25,7 @@ class Matter_Plugin_Device end
#@ solidify:Matter_Plugin_Sensor_OnOff,weak
class Matter_Plugin_Sensor_OnOff : Matter_Plugin_Device
static var TYPE = "occupancy" # name of the plug-in in json
static var TYPE = "onoff" # name of the plug-in in json
static var NAME = "OnOff" # display name of the plug-in
static var ARG = "switch" # additional argument name (or empty if none)
static var ARG_TYPE = / x -> int(x) # function to convert argument to the right type

View File

@ -921,6 +921,12 @@ test_TLV(bytes("0001"), "1")
test_TLV(bytes("08"), "false")
test_TLV(bytes("09"), "true")
var TLV = matter.TLV
assert(TLV.create_TLV(TLV.BOOL, 1).tlv2raw() == bytes("09"))
assert(TLV.create_TLV(TLV.BOOL, true).tlv2raw() == bytes("09"))
assert(TLV.create_TLV(TLV.BOOL, 0).tlv2raw() == bytes("08"))
assert(TLV.create_TLV(TLV.BOOL, false).tlv2raw() == bytes("08"))
test_TLV(bytes("00FF"), "-1")
test_TLV(bytes("05FFFF"), "65535U")

View File

@ -33,7 +33,7 @@ import matter
#################################################################################
class Matter_UI
static var _CLASSES_TYPES = "|relay|light0|light1|light2|light3|shutter|shutter+tilt"
"|temperature|pressure|illuminance|humidity|occupancy"
"|temperature|pressure|illuminance|humidity|occupancy|onoff"
static var _CLASSES_TYPES2= "-http|http_relay|http_light0|http_light1|http_light2|http_light3"
"|http_temperature|http_pressure|http_illuminance|http_humidity"
"|http_occupancy"

View File

@ -472,17 +472,17 @@ be_local_closure(Matter_Plugin_Bridge_HTTP_read_attribute, /* name */
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
( &(const binstruction[26]) { /* code */
( &(const binstruction[35]) { /* code */
0xB80E0000, // 0000 GETNGBL R3 K0
0x880C0701, // 0001 GETMBR R3 R3 K1
0x88100502, // 0002 GETMBR R4 R2 K2
0x88140503, // 0003 GETMBR R5 R2 K3
0x541A0038, // 0004 LDINT R6 57
0x1C180806, // 0005 EQ R6 R4 R6
0x781A0009, // 0006 JMPF R6 #0011
0x781A0012, // 0006 JMPF R6 #001A
0x541A0010, // 0007 LDINT R6 17
0x1C180A06, // 0008 EQ R6 R5 R6
0x781A0005, // 0009 JMPF R6 #0010
0x781A0006, // 0009 JMPF R6 #0011
0x8C180704, // 000A GETMET R6 R3 K4
0x88200705, // 000B GETMBR R8 R3 K5
0x88240106, // 000C GETMBR R9 R0 K6
@ -498,7 +498,16 @@ be_local_closure(Matter_Plugin_Bridge_HTTP_read_attribute, /* name */
0x5C240400, // 0016 MOVE R9 R2
0x7C180600, // 0017 CALL R6 3
0x80040C00, // 0018 RET 1 R6
0x80000000, // 0019 RET 0
0x70020007, // 0019 JMP #0022
0x60180003, // 001A GETGBL R6 G3
0x5C1C0000, // 001B MOVE R7 R0
0x7C180200, // 001C CALL R6 1
0x8C180D08, // 001D GETMET R6 R6 K8
0x5C200200, // 001E MOVE R8 R1
0x5C240400, // 001F MOVE R9 R2
0x7C180600, // 0020 CALL R6 3
0x80040C00, // 0021 RET 1 R6
0x80000000, // 0022 RET 0
})
)
);

View File

@ -421,10 +421,9 @@ be_local_class(Matter_Plugin_Bridge_Light0,
{ be_const_key_weak(NAME, -1), be_nested_str_weak(_X26_X23x1F517_X3B_X20Light_X200_X20On) },
{ be_const_key_weak(tasmota_relay_index, -1), be_const_var(0) },
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(2,
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(256, -1), be_const_int(2) },
{ be_const_key_int(19, -1), be_const_int(1) },
})) ) } )) },
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,

View File

@ -503,10 +503,9 @@ be_local_class(Matter_Plugin_Bridge_Light1,
{ be_const_key_weak(web_value_dimmer, -1), be_const_closure(Matter_Plugin_Bridge_Light1_web_value_dimmer_closure) },
{ be_const_key_weak(parse_update, -1), be_const_closure(Matter_Plugin_Bridge_Light1_parse_update_closure) },
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(2,
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(257, -1), be_const_int(2) },
{ be_const_key_int(19, 0), be_const_int(1) },
})) ) } )) },
{ be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Bridge_Light1_read_attribute_closure) },
{ be_const_key_weak(TYPE, 2), be_nested_str_weak(http_light1) },

View File

@ -563,10 +563,9 @@ be_local_class(Matter_Plugin_Bridge_Light2,
})) ) } )) },
})) ) } )) },
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(2,
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(268, -1), be_const_int(2) },
{ be_const_key_int(19, -1), be_const_int(1) },
})) ) } )) },
{ be_const_key_weak(web_value_ct, -1), be_const_closure(Matter_Plugin_Bridge_Light2_web_value_ct_closure) },
{ be_const_key_weak(set_ct, -1), be_const_closure(Matter_Plugin_Bridge_Light2_set_ct_closure) },

View File

@ -561,21 +561,21 @@ be_local_closure(Matter_Plugin_Bridge_Light3_read_attribute, /* name */
0x7C1C0600, // 004F CALL R7 3
0x80040E00, // 0050 RET 1 R7
0x70020022, // 0051 JMP #0075
0x541E000F, // 0052 LDINT R7 16
0x541E4009, // 0052 LDINT R7 16394
0x1C1C0C07, // 0053 EQ R7 R6 R7
0x781E0005, // 0054 JMPF R7 #005B
0x8C1C0908, // 0055 GETMET R7 R4 K8
0x88240909, // 0056 GETMBR R9 R4 K9
0x58280006, // 0057 LDCONST R10 K6
0x8824090D, // 0056 GETMBR R9 R4 K13
0x5828000B, // 0057 LDCONST R10 K11
0x7C1C0600, // 0058 CALL R7 3
0x80040E00, // 0059 RET 1 R7
0x70020019, // 005A JMP #0075
0x541E4009, // 005B LDINT R7 16394
0x541E000F, // 005B LDINT R7 16
0x1C1C0C07, // 005C EQ R7 R6 R7
0x781E0005, // 005D JMPF R7 #0064
0x8C1C0908, // 005E GETMET R7 R4 K8
0x8824090D, // 005F GETMBR R9 R4 K13
0x5828000B, // 0060 LDCONST R10 K11
0x88240909, // 005F GETMBR R9 R4 K9
0x58280006, // 0060 LDCONST R10 K6
0x7C1C0600, // 0061 CALL R7 3
0x80040E00, // 0062 RET 1 R7
0x70020010, // 0063 JMP #0075
@ -715,10 +715,9 @@ be_local_class(Matter_Plugin_Bridge_Light3,
{ be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_Bridge_Light3_invoke_request_closure) },
{ be_const_key_weak(NAME, -1), be_nested_str_weak(_X26_X23x1F517_X3B_X20Light_X203_X20RGB) },
{ be_const_key_weak(TYPES, 11), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(2,
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(269, -1), be_const_int(2) },
{ be_const_key_int(19, 0), be_const_int(1) },
})) ) } )) },
{ be_const_key_weak(shadow_hue, 6), be_const_var(0) },
{ be_const_key_weak(set_hue, -1), be_const_closure(Matter_Plugin_Bridge_Light3_set_hue_closure) },

View File

@ -63,10 +63,9 @@ be_local_class(Matter_Plugin_Bridge_OnOff,
{ be_const_key_weak(TYPE, -1), be_nested_str_weak(http_relay) },
{ be_const_key_weak(NAME, 3), be_nested_str_weak(_X26_X23x1F517_X3B_X20Relay) },
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(2,
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(266, -1), be_const_int(2) },
{ be_const_key_int(19, -1), be_const_int(1) },
})) ) } )) },
})),
be_str_weak(Matter_Plugin_Bridge_OnOff)

View File

@ -261,10 +261,9 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Humidity,
{ be_const_key_weak(TYPE, 4), be_nested_str_weak(http_humidity) },
{ be_const_key_weak(NAME, -1), be_nested_str_weak(_X26_X23x1F517_X3B_X20Humidity) },
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(2,
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(775, -1), be_const_int(2) },
{ be_const_key_int(19, 0), be_const_int(1) },
})) ) } )) },
})),
be_str_weak(Matter_Plugin_Bridge_Sensor_Humidity)

View File

@ -263,10 +263,9 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Illuminance,
{ be_const_key_weak(TYPE, 4), be_nested_str_weak(http_illuminance) },
{ be_const_key_weak(NAME, -1), be_nested_str_weak(_X26_X23x1F517_X3B_X20Illuminance) },
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(2,
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(262, -1), be_const_int(2) },
{ be_const_key_int(19, -1), be_const_int(1) },
})) ) } )) },
})),
be_str_weak(Matter_Plugin_Bridge_Sensor_Illuminance)

View File

@ -326,10 +326,9 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Occupancy,
{ be_const_key_weak(NAME, -1), be_nested_str_weak(_X26_X23x1F517_X3B_X20Occupancy) },
{ be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Occupancy_init_closure) },
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(2,
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(263, -1), be_const_int(2) },
{ be_const_key_int(19, 0), be_const_int(1) },
})) ) } )) },
{ be_const_key_weak(ARG_TYPE, 12), be_const_static_closure(Matter_Plugin_Bridge_Sensor_Occupancy__X3Clambda_X3E_closure) },
{ be_const_key_weak(parse_update, -1), be_const_closure(Matter_Plugin_Bridge_Sensor_Occupancy_parse_update_closure) },

View File

@ -252,10 +252,9 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Pressure,
{ be_const_key_weak(TYPE, 4), be_nested_str_weak(http_pressure) },
{ be_const_key_weak(NAME, -1), be_nested_str_weak(_X26_X23x1F517_X3B_X20Pressure) },
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(2,
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(773, -1), be_const_int(2) },
{ be_const_key_int(19, 0), be_const_int(1) },
})) ) } )) },
})),
be_str_weak(Matter_Plugin_Bridge_Sensor_Pressure)

View File

@ -258,10 +258,9 @@ be_local_class(Matter_Plugin_Bridge_Sensor_Temp,
{ be_const_key_weak(TYPE, 4), be_nested_str_weak(http_temperature) },
{ be_const_key_weak(NAME, -1), be_nested_str_weak(_X26_X23x1F517_X3B_X20Temperature) },
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(2,
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(770, -1), be_const_int(2) },
{ be_const_key_int(19, -1), be_const_int(1) },
})) ) } )) },
})),
be_str_weak(Matter_Plugin_Bridge_Sensor_Temp)

View File

@ -6,140 +6,6 @@
extern const bclass be_class_Matter_Plugin_Device;
/********************************************************************
** Solidified function: read_attribute
********************************************************************/
be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
be_nested_proto(
11, /* nstack */
3, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[13]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(matter),
/* K2 */ be_nested_str_weak(TLV),
/* K3 */ be_nested_str_weak(cluster),
/* K4 */ be_nested_str_weak(attribute),
/* K5 */ be_const_int(3),
/* K6 */ be_const_int(0),
/* K7 */ be_nested_str_weak(create_TLV),
/* K8 */ be_nested_str_weak(U2),
/* K9 */ be_const_int(1),
/* K10 */ be_nested_str_weak(U1),
/* K11 */ be_nested_str_weak(U4),
/* K12 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
( &(const binstruction[97]) { /* code */
0xA40E0000, // 0000 IMPORT R3 K0
0xB8120200, // 0001 GETNGBL R4 K1
0x88100902, // 0002 GETMBR R4 R4 K2
0x88140503, // 0003 GETMBR R5 R2 K3
0x88180504, // 0004 GETMBR R6 R2 K4
0x1C1C0B05, // 0005 EQ R7 R5 K5
0x781E0021, // 0006 JMPF R7 #0029
0x1C1C0D06, // 0007 EQ R7 R6 K6
0x781E0005, // 0008 JMPF R7 #000F
0x8C1C0907, // 0009 GETMET R7 R4 K7
0x88240908, // 000A GETMBR R9 R4 K8
0x58280006, // 000B LDCONST R10 K6
0x7C1C0600, // 000C CALL R7 3
0x80040E00, // 000D RET 1 R7
0x70020018, // 000E JMP #0028
0x1C1C0D09, // 000F EQ R7 R6 K9
0x781E0005, // 0010 JMPF R7 #0017
0x8C1C0907, // 0011 GETMET R7 R4 K7
0x8824090A, // 0012 GETMBR R9 R4 K10
0x58280006, // 0013 LDCONST R10 K6
0x7C1C0600, // 0014 CALL R7 3
0x80040E00, // 0015 RET 1 R7
0x70020010, // 0016 JMP #0028
0x541EFFFB, // 0017 LDINT R7 65532
0x1C1C0C07, // 0018 EQ R7 R6 R7
0x781E0005, // 0019 JMPF R7 #0020
0x8C1C0907, // 001A GETMET R7 R4 K7
0x8824090B, // 001B GETMBR R9 R4 K11
0x58280006, // 001C LDCONST R10 K6
0x7C1C0600, // 001D CALL R7 3
0x80040E00, // 001E RET 1 R7
0x70020007, // 001F JMP #0028
0x541EFFFC, // 0020 LDINT R7 65533
0x1C1C0C07, // 0021 EQ R7 R6 R7
0x781E0004, // 0022 JMPF R7 #0028
0x8C1C0907, // 0023 GETMET R7 R4 K7
0x8824090B, // 0024 GETMBR R9 R4 K11
0x542A0003, // 0025 LDINT R10 4
0x7C1C0600, // 0026 CALL R7 3
0x80040E00, // 0027 RET 1 R7
0x70020036, // 0028 JMP #0060
0x541E0003, // 0029 LDINT R7 4
0x1C1C0A07, // 002A EQ R7 R5 R7
0x781E0016, // 002B JMPF R7 #0043
0x1C1C0D06, // 002C EQ R7 R6 K6
0x781E0002, // 002D JMPF R7 #0031
0x4C1C0000, // 002E LDNIL R7
0x80040E00, // 002F RET 1 R7
0x70020010, // 0030 JMP #0042
0x541EFFFB, // 0031 LDINT R7 65532
0x1C1C0C07, // 0032 EQ R7 R6 R7
0x781E0005, // 0033 JMPF R7 #003A
0x8C1C0907, // 0034 GETMET R7 R4 K7
0x8824090B, // 0035 GETMBR R9 R4 K11
0x58280006, // 0036 LDCONST R10 K6
0x7C1C0600, // 0037 CALL R7 3
0x80040E00, // 0038 RET 1 R7
0x70020007, // 0039 JMP #0042
0x541EFFFC, // 003A LDINT R7 65533
0x1C1C0C07, // 003B EQ R7 R6 R7
0x781E0004, // 003C JMPF R7 #0042
0x8C1C0907, // 003D GETMET R7 R4 K7
0x8824090B, // 003E GETMBR R9 R4 K11
0x542A0003, // 003F LDINT R10 4
0x7C1C0600, // 0040 CALL R7 3
0x80040E00, // 0041 RET 1 R7
0x7002001C, // 0042 JMP #0060
0x541E0004, // 0043 LDINT R7 5
0x1C1C0A07, // 0044 EQ R7 R5 R7
0x781E0011, // 0045 JMPF R7 #0058
0x541EFFFB, // 0046 LDINT R7 65532
0x1C1C0C07, // 0047 EQ R7 R6 R7
0x781E0005, // 0048 JMPF R7 #004F
0x8C1C0907, // 0049 GETMET R7 R4 K7
0x8824090B, // 004A GETMBR R9 R4 K11
0x58280006, // 004B LDCONST R10 K6
0x7C1C0600, // 004C CALL R7 3
0x80040E00, // 004D RET 1 R7
0x70020007, // 004E JMP #0057
0x541EFFFC, // 004F LDINT R7 65533
0x1C1C0C07, // 0050 EQ R7 R6 R7
0x781E0004, // 0051 JMPF R7 #0057
0x8C1C0907, // 0052 GETMET R7 R4 K7
0x8824090B, // 0053 GETMBR R9 R4 K11
0x542A0003, // 0054 LDINT R10 4
0x7C1C0600, // 0055 CALL R7 3
0x80040E00, // 0056 RET 1 R7
0x70020007, // 0057 JMP #0060
0x601C0003, // 0058 GETGBL R7 G3
0x5C200000, // 0059 MOVE R8 R0
0x7C1C0200, // 005A CALL R7 1
0x8C1C0F0C, // 005B GETMET R7 R7 K12
0x5C240200, // 005C MOVE R9 R1
0x5C280400, // 005D MOVE R10 R2
0x7C1C0600, // 005E CALL R7 3
0x80040E00, // 005F RET 1 R7
0x80000000, // 0060 RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified function: invoke_request
********************************************************************/
@ -226,6 +92,211 @@ be_local_closure(Matter_Plugin_Device_invoke_request, /* name */
/*******************************************************************/
/********************************************************************
** Solidified function: read_attribute
********************************************************************/
be_local_closure(Matter_Plugin_Device_read_attribute, /* name */
be_nested_proto(
17, /* nstack */
3, /* argc */
2, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[22]) { /* constants */
/* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(matter),
/* K2 */ be_nested_str_weak(TLV),
/* K3 */ be_nested_str_weak(cluster),
/* K4 */ be_nested_str_weak(attribute),
/* K5 */ be_const_int(3),
/* K6 */ be_const_int(0),
/* K7 */ be_nested_str_weak(create_TLV),
/* K8 */ be_nested_str_weak(U2),
/* K9 */ be_const_int(1),
/* K10 */ be_nested_str_weak(U1),
/* K11 */ be_nested_str_weak(U4),
/* K12 */ be_nested_str_weak(Matter_TLV_array),
/* K13 */ be_nested_str_weak(TYPES),
/* K14 */ be_nested_str_weak(keys),
/* K15 */ be_nested_str_weak(add_struct),
/* K16 */ be_nested_str_weak(add_TLV),
/* K17 */ be_nested_str_weak(stop_iteration),
/* K18 */ be_nested_str_weak(NON_BRIDGE_VENDOR),
/* K19 */ be_nested_str_weak(find),
/* K20 */ be_nested_str_weak(get_admin_vendor),
/* K21 */ be_nested_str_weak(read_attribute),
}),
be_str_weak(read_attribute),
&be_const_str_solidified,
( &(const binstruction[159]) { /* code */
0xA40E0000, // 0000 IMPORT R3 K0
0xB8120200, // 0001 GETNGBL R4 K1
0x88100902, // 0002 GETMBR R4 R4 K2
0x88140503, // 0003 GETMBR R5 R2 K3
0x88180504, // 0004 GETMBR R6 R2 K4
0x1C1C0B05, // 0005 EQ R7 R5 K5
0x781E0021, // 0006 JMPF R7 #0029
0x1C1C0D06, // 0007 EQ R7 R6 K6
0x781E0005, // 0008 JMPF R7 #000F
0x8C1C0907, // 0009 GETMET R7 R4 K7
0x88240908, // 000A GETMBR R9 R4 K8
0x58280006, // 000B LDCONST R10 K6
0x7C1C0600, // 000C CALL R7 3
0x80040E00, // 000D RET 1 R7
0x70020018, // 000E JMP #0028
0x1C1C0D09, // 000F EQ R7 R6 K9
0x781E0005, // 0010 JMPF R7 #0017
0x8C1C0907, // 0011 GETMET R7 R4 K7
0x8824090A, // 0012 GETMBR R9 R4 K10
0x58280006, // 0013 LDCONST R10 K6
0x7C1C0600, // 0014 CALL R7 3
0x80040E00, // 0015 RET 1 R7
0x70020010, // 0016 JMP #0028
0x541EFFFB, // 0017 LDINT R7 65532
0x1C1C0C07, // 0018 EQ R7 R6 R7
0x781E0005, // 0019 JMPF R7 #0020
0x8C1C0907, // 001A GETMET R7 R4 K7
0x8824090B, // 001B GETMBR R9 R4 K11
0x58280006, // 001C LDCONST R10 K6
0x7C1C0600, // 001D CALL R7 3
0x80040E00, // 001E RET 1 R7
0x70020007, // 001F JMP #0028
0x541EFFFC, // 0020 LDINT R7 65533
0x1C1C0C07, // 0021 EQ R7 R6 R7
0x781E0004, // 0022 JMPF R7 #0028
0x8C1C0907, // 0023 GETMET R7 R4 K7
0x8824090B, // 0024 GETMBR R9 R4 K11
0x542A0003, // 0025 LDINT R10 4
0x7C1C0600, // 0026 CALL R7 3
0x80040E00, // 0027 RET 1 R7
0x70020074, // 0028 JMP #009E
0x541E0003, // 0029 LDINT R7 4
0x1C1C0A07, // 002A EQ R7 R5 R7
0x781E0016, // 002B JMPF R7 #0043
0x1C1C0D06, // 002C EQ R7 R6 K6
0x781E0002, // 002D JMPF R7 #0031
0x4C1C0000, // 002E LDNIL R7
0x80040E00, // 002F RET 1 R7
0x70020010, // 0030 JMP #0042
0x541EFFFB, // 0031 LDINT R7 65532
0x1C1C0C07, // 0032 EQ R7 R6 R7
0x781E0005, // 0033 JMPF R7 #003A
0x8C1C0907, // 0034 GETMET R7 R4 K7
0x8824090B, // 0035 GETMBR R9 R4 K11
0x58280006, // 0036 LDCONST R10 K6
0x7C1C0600, // 0037 CALL R7 3
0x80040E00, // 0038 RET 1 R7
0x70020007, // 0039 JMP #0042
0x541EFFFC, // 003A LDINT R7 65533
0x1C1C0C07, // 003B EQ R7 R6 R7
0x781E0004, // 003C JMPF R7 #0042
0x8C1C0907, // 003D GETMET R7 R4 K7
0x8824090B, // 003E GETMBR R9 R4 K11
0x542A0003, // 003F LDINT R10 4
0x7C1C0600, // 0040 CALL R7 3
0x80040E00, // 0041 RET 1 R7
0x7002005A, // 0042 JMP #009E
0x541E0004, // 0043 LDINT R7 5
0x1C1C0A07, // 0044 EQ R7 R5 R7
0x781E0011, // 0045 JMPF R7 #0058
0x541EFFFB, // 0046 LDINT R7 65532
0x1C1C0C07, // 0047 EQ R7 R6 R7
0x781E0005, // 0048 JMPF R7 #004F
0x8C1C0907, // 0049 GETMET R7 R4 K7
0x8824090B, // 004A GETMBR R9 R4 K11
0x58280006, // 004B LDCONST R10 K6
0x7C1C0600, // 004C CALL R7 3
0x80040E00, // 004D RET 1 R7
0x70020007, // 004E JMP #0057
0x541EFFFC, // 004F LDINT R7 65533
0x1C1C0C07, // 0050 EQ R7 R6 R7
0x781E0004, // 0051 JMPF R7 #0057
0x8C1C0907, // 0052 GETMET R7 R4 K7
0x8824090B, // 0053 GETMBR R9 R4 K11
0x542A0003, // 0054 LDINT R10 4
0x7C1C0600, // 0055 CALL R7 3
0x80040E00, // 0056 RET 1 R7
0x70020045, // 0057 JMP #009E
0x541E001C, // 0058 LDINT R7 29
0x1C1C0A07, // 0059 EQ R7 R5 R7
0x781E003A, // 005A JMPF R7 #0096
0x1C1C0D06, // 005B EQ R7 R6 K6
0x781E002F, // 005C JMPF R7 #008D
0x8C1C090C, // 005D GETMET R7 R4 K12
0x7C1C0200, // 005E CALL R7 1
0x8820010D, // 005F GETMBR R8 R0 K13
0x60240010, // 0060 GETGBL R9 G16
0x8C28110E, // 0061 GETMET R10 R8 K14
0x7C280200, // 0062 CALL R10 1
0x7C240200, // 0063 CALL R9 1
0xA802000E, // 0064 EXBLK 0 #0074
0x5C281200, // 0065 MOVE R10 R9
0x7C280000, // 0066 CALL R10 0
0x8C2C0F0F, // 0067 GETMET R11 R7 K15
0x7C2C0200, // 0068 CALL R11 1
0x8C301710, // 0069 GETMET R12 R11 K16
0x58380006, // 006A LDCONST R14 K6
0x883C0908, // 006B GETMBR R15 R4 K8
0x5C401400, // 006C MOVE R16 R10
0x7C300800, // 006D CALL R12 4
0x8C301710, // 006E GETMET R12 R11 K16
0x58380009, // 006F LDCONST R14 K9
0x883C0908, // 0070 GETMBR R15 R4 K8
0x9440100A, // 0071 GETIDX R16 R8 R10
0x7C300800, // 0072 CALL R12 4
0x7001FFF0, // 0073 JMP #0065
0x58240011, // 0074 LDCONST R9 K17
0xAC240200, // 0075 CATCH R9 1 0
0xB0080000, // 0076 RAISE 2 R0 R0
0x88240112, // 0077 GETMBR R9 R0 K18
0x8C241313, // 0078 GETMET R9 R9 K19
0x8C2C0314, // 0079 GETMET R11 R1 K20
0x7C2C0200, // 007A CALL R11 1
0x7C240400, // 007B CALL R9 2
0x4C280000, // 007C LDNIL R10
0x1C24120A, // 007D EQ R9 R9 R10
0x7826000B, // 007E JMPF R9 #008B
0x8C240F0F, // 007F GETMET R9 R7 K15
0x7C240200, // 0080 CALL R9 1
0x8C281310, // 0081 GETMET R10 R9 K16
0x58300006, // 0082 LDCONST R12 K6
0x88340908, // 0083 GETMBR R13 R4 K8
0x543A0012, // 0084 LDINT R14 19
0x7C280800, // 0085 CALL R10 4
0x8C281310, // 0086 GETMET R10 R9 K16
0x58300009, // 0087 LDCONST R12 K9
0x88340908, // 0088 GETMBR R13 R4 K8
0x58380009, // 0089 LDCONST R14 K9
0x7C280800, // 008A CALL R10 4
0x80040E00, // 008B RET 1 R7
0x70020007, // 008C JMP #0095
0x601C0003, // 008D GETGBL R7 G3
0x5C200000, // 008E MOVE R8 R0
0x7C1C0200, // 008F CALL R7 1
0x8C1C0F15, // 0090 GETMET R7 R7 K21
0x5C240200, // 0091 MOVE R9 R1
0x5C280400, // 0092 MOVE R10 R2
0x7C1C0600, // 0093 CALL R7 3
0x80040E00, // 0094 RET 1 R7
0x70020007, // 0095 JMP #009E
0x601C0003, // 0096 GETGBL R7 G3
0x5C200000, // 0097 MOVE R8 R0
0x7C1C0200, // 0098 CALL R7 1
0x8C1C0F15, // 0099 GETMET R7 R7 K21
0x5C240200, // 009A MOVE R9 R1
0x5C280400, // 009B MOVE R10 R2
0x7C1C0600, // 009C CALL R7 3
0x80040E00, // 009D RET 1 R7
0x80000000, // 009E RET 0
})
)
);
/*******************************************************************/
/********************************************************************
** Solidified class: Matter_Plugin_Device
********************************************************************/
@ -233,25 +304,35 @@ extern const bclass be_class_Matter_Plugin;
be_local_class(Matter_Plugin_Device,
0,
&be_class_Matter_Plugin,
be_nested_map(4,
be_nested_map(5,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(3,
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(4,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(65532),
be_const_int(65533),
{ be_const_key_int(19, -1), be_const_int(1) },
})) ) } )) },
{ be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Device_read_attribute_closure) },
{ be_const_key_weak(invoke_request, 1), be_const_closure(Matter_Plugin_Device_invoke_request_closure) },
{ be_const_key_weak(NON_BRIDGE_VENDOR, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(2,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(4631),
be_const_int(4993),
})) ) } )) },
{ be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(4,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(3,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(57, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(1,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(17),
})) ) } )) },
{ be_const_key_int(5, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(8,
@ -265,14 +346,15 @@ be_local_class(Matter_Plugin_Device,
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, {
be_const_list( * be_nested_list(4,
( (struct bvalue*) &(const bvalue[]) {
be_const_int(0),
be_const_int(1),
be_const_int(65532),
be_const_int(65533),
})) ) } )) },
{ be_const_key_weak(TYPES, 0), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_int(0, -1), be_const_int(0) },
})) ) } )) },
{ be_const_key_weak(read_attribute, 1), be_const_closure(Matter_Plugin_Device_read_attribute_closure) },
{ be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_Device_invoke_request_closure) },
})),
be_str_weak(Matter_Plugin_Device)
);

View File

@ -206,7 +206,7 @@ be_local_closure(Matter_Plugin_Light3_read_attribute, /* name */
0x781E0005, // 0040 JMPF R7 #0047
0x8C1C0907, // 0041 GETMET R7 R4 K7
0x88240908, // 0042 GETMBR R9 R4 K8
0x58280006, // 0043 LDCONST R10 K6
0x5828000A, // 0043 LDCONST R10 K10
0x7C1C0600, // 0044 CALL R7 3
0x80040E00, // 0045 RET 1 R7
0x70020019, // 0046 JMP #0061

View File

@ -256,7 +256,7 @@ be_local_class(Matter_Plugin_Sensor_OnOff,
be_nested_map(12,
( (struct bmapnode*) &(const bmapnode[]) {
{ be_const_key_weak(UPDATE_TIME, -1), be_const_int(5000) },
{ be_const_key_weak(TYPE, 11), be_nested_str_weak(occupancy) },
{ be_const_key_weak(TYPE, 11), be_nested_str_weak(onoff) },
{ be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, {
be_const_map( * be_nested_map(1,
( (struct bmapnode*) &(const bmapnode[]) {

View File

@ -2010,7 +2010,7 @@ be_local_class(Matter_UI,
{ be_const_key_weak(web_get_arg, -1), be_const_closure(Matter_UI_web_get_arg_closure) },
{ be_const_key_weak(show_qrcode, 4), be_const_closure(Matter_UI_show_qrcode_closure) },
{ be_const_key_weak(show_plugins_configuration, -1), be_const_closure(Matter_UI_show_plugins_configuration_closure) },
{ be_const_key_weak(_CLASSES_TYPES, -1), be_nested_str_weak(_X7Crelay_X7Clight0_X7Clight1_X7Clight2_X7Clight3_X7Cshutter_X7Cshutter_X2Btilt_X7Ctemperature_X7Cpressure_X7Cilluminance_X7Chumidity_X7Coccupancy) },
{ be_const_key_weak(_CLASSES_TYPES, -1), be_nested_str_weak(_X7Crelay_X7Clight0_X7Clight1_X7Clight2_X7Clight3_X7Cshutter_X7Cshutter_X2Btilt_X7Ctemperature_X7Cpressure_X7Cilluminance_X7Chumidity_X7Coccupancy_X7Conoff) },
{ be_const_key_weak(web_sensor, -1), be_const_closure(Matter_UI_web_sensor_closure) },
{ be_const_key_weak(web_add_config_button, -1), be_const_closure(Matter_UI_web_add_config_button_closure) },
{ be_const_key_weak(_CLASSES_TYPES2, 7), be_nested_str_weak(_X2Dhttp_X7Chttp_relay_X7Chttp_light0_X7Chttp_light1_X7Chttp_light2_X7Chttp_light3_X7Chttp_temperature_X7Chttp_pressure_X7Chttp_illuminance_X7Chttp_humidity_X7Chttp_occupancy) },