Matter automatically exposes all detected Temperature sensors (#18430)

* Matter automatically exposes all detected Temperature sensors

* Read sensors every 30 seconds

* Fix sensor numbering
This commit is contained in:
s-hadinger 2023-04-16 22:09:09 +02:00 committed by GitHub
parent de45a7af26
commit 82e94108d4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 2477 additions and 2281 deletions

View File

@ -12,6 +12,7 @@ All notable changes to this project will be documented in this file.
- Matter support in now stabilized for Apple and Google (not tested with Alexa) - Matter support in now stabilized for Apple and Google (not tested with Alexa)
- Berry `instrospect.name()` to get names of functions, modules and classes (#18422) - Berry `instrospect.name()` to get names of functions, modules and classes (#18422)
- Berry add `searchall()` and `matchall()` to `re` module and pre-compiled patterns - Berry add `searchall()` and `matchall()` to `re` module and pre-compiled patterns
- Matter automatically exposes all detected Temperature sensors
### Breaking Changed ### Breaking Changed

View File

@ -114,7 +114,7 @@ class Matter_Commisioning_Context
if msg.opcode != 0x20 || msg.local_session_id != 0 || msg.protocol_id != 0 if msg.opcode != 0x20 || msg.local_session_id != 0 || msg.protocol_id != 0
tasmota.log("MTR: invalid PBKDFParamRequest message", 2) tasmota.log("MTR: invalid PBKDFParamRequest message", 2)
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2) tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false) self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
return false return false
end end
var pbkdfparamreq = matter.PBKDFParamRequest().parse(msg.raw, msg.app_payload_idx) var pbkdfparamreq = matter.PBKDFParamRequest().parse(msg.raw, msg.app_payload_idx)
@ -126,7 +126,7 @@ class Matter_Commisioning_Context
if pbkdfparamreq.passcodeId != 0 if pbkdfparamreq.passcodeId != 0
tasmota.log("MTR: non-zero passcode id", 2) tasmota.log("MTR: non-zero passcode id", 2)
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2) tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false) self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
return false return false
end end
@ -164,7 +164,7 @@ class Matter_Commisioning_Context
if msg.opcode != 0x22 || msg.local_session_id != 0 || msg.protocol_id != 0 if msg.opcode != 0x22 || msg.local_session_id != 0 || msg.protocol_id != 0
tasmota.log("MTR: invalid Pake1 message", 2) tasmota.log("MTR: invalid Pake1 message", 2)
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2) tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false) self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
return false return false
end end
var pake1 = matter.Pake1().parse(msg.raw, msg.app_payload_idx) var pake1 = matter.Pake1().parse(msg.raw, msg.app_payload_idx)
@ -247,7 +247,7 @@ class Matter_Commisioning_Context
if msg.opcode != 0x24 || msg.local_session_id != 0 || msg.protocol_id != 0 if msg.opcode != 0x24 || msg.local_session_id != 0 || msg.protocol_id != 0
tasmota.log("MTR: invalid Pake3 message", 2) tasmota.log("MTR: invalid Pake3 message", 2)
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2) tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false) self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
return false return false
end end
var pake3 = matter.Pake3().parse(msg.raw, msg.app_payload_idx) var pake3 = matter.Pake3().parse(msg.raw, msg.app_payload_idx)
@ -259,7 +259,7 @@ class Matter_Commisioning_Context
if cA != session.__spake_cA if cA != session.__spake_cA
tasmota.log("MTR: invalid cA received", 2) tasmota.log("MTR: invalid cA received", 2)
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2) tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false) self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
return false return false
end end
@ -278,7 +278,7 @@ class Matter_Commisioning_Context
# tasmota.log("MTR: ******************************", 4) # tasmota.log("MTR: ******************************", 4)
# StatusReport(GeneralCode: SUCCESS, ProtocolId: SECURE_CHANNEL, ProtocolCode: SESSION_ESTABLISHMENT_SUCCESS) # StatusReport(GeneralCode: SUCCESS, ProtocolId: SECURE_CHANNEL, ProtocolCode: SESSION_ESTABLISHMENT_SUCCESS)
var raw = self.send_status_report(msg, 0x00, 0x0000, 0x0000, false) self.send_status_report(msg, 0x00, 0x0000, 0x0000, false)
self.add_session(session.__future_local_session_id, session.__future_initiator_session_id, I2RKey, R2IKey, AttestationChallenge, created) self.add_session(session.__future_local_session_id, session.__future_initiator_session_id, I2RKey, R2IKey, AttestationChallenge, created)
return true return true
@ -315,7 +315,7 @@ class Matter_Commisioning_Context
if msg.opcode != 0x30 || msg.local_session_id != 0 || msg.protocol_id != 0 if msg.opcode != 0x30 || msg.local_session_id != 0 || msg.protocol_id != 0
# tasmota.log("MTR: invalid Sigma1 message", 2) # tasmota.log("MTR: invalid Sigma1 message", 2)
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2) tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false) self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
return false return false
end end
var sigma1 = matter.Sigma1().parse(msg.raw, msg.app_payload_idx) var sigma1 = matter.Sigma1().parse(msg.raw, msg.app_payload_idx)
@ -445,7 +445,7 @@ class Matter_Commisioning_Context
if session == nil || session._fabric == nil if session == nil || session._fabric == nil
tasmota.log("MTR: StatusReport(GeneralCode: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: NO_SHARED_TRUST_ROOTS)", 2) tasmota.log("MTR: StatusReport(GeneralCode: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: NO_SHARED_TRUST_ROOTS)", 2)
var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0001, false) self.send_status_report(msg, 0x01, 0x0000, 0x0001, false)
return false return false
end end
session._source_node_id = msg.source_node_id session._source_node_id = msg.source_node_id
@ -539,7 +539,7 @@ class Matter_Commisioning_Context
# sanity checks # sanity checks
if msg.opcode != 0x32 || msg.local_session_id != 0 || msg.protocol_id != 0 if msg.opcode != 0x32 || msg.local_session_id != 0 || msg.protocol_id != 0
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2) tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false) self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
return false return false
end end
var session = msg.session var session = msg.session
@ -576,7 +576,7 @@ class Matter_Commisioning_Context
if TBETag3 != tag if TBETag3 != tag
tasmota.log("MTR: Tag don't match", 2) tasmota.log("MTR: Tag don't match", 2)
tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2) tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false) self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
return false return false
end end
@ -618,7 +618,7 @@ class Matter_Commisioning_Context
tasmota.log("MTR: sigma3_tbs does not have a valid signature", 2) tasmota.log("MTR: sigma3_tbs does not have a valid signature", 2)
tasmota.log("MTR: ******************* Invalid signature, trying anyways", 2) tasmota.log("MTR: ******************* Invalid signature, trying anyways", 2)
# tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2) # tasmota.log("MTR: StatusReport(General Code: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: INVALID_PARAMETER)", 2)
# var raw = self.send_status_report(msg, 0x01, 0x0000, 0x0002, false) # self.send_status_report(msg, 0x01, 0x0000, 0x0002, false)
# return false # return false
else else
# All good, compute new keys # All good, compute new keys
@ -654,7 +654,7 @@ class Matter_Commisioning_Context
tasmota.log("MTR: ******************************", 4) tasmota.log("MTR: ******************************", 4)
# StatusReport(GeneralCode: SUCCESS, ProtocolId: SECURE_CHANNEL, ProtocolCode: SESSION_ESTABLISHMENT_SUCCESS) # StatusReport(GeneralCode: SUCCESS, ProtocolId: SECURE_CHANNEL, ProtocolCode: SESSION_ESTABLISHMENT_SUCCESS)
var raw = self.send_status_report(msg, 0x00, 0x0000, 0x0000, true) self.send_status_report(msg, 0x00, 0x0000, 0x0000, true)
session.close() session.close()
session.set_keys(i2r, r2i, ac, created) session.set_keys(i2r, r2i, ac, created)

View File

@ -116,8 +116,8 @@ class Matter_Device
# autoconfigure other plugins # autoconfigure other plugins
self.autoconf_device() self.autoconf_device()
# for now read sensors every 5 seconds # for now read sensors every 30 seconds
tasmota.add_cron("*/5 * * * * *", def () self._trigger_read_sensors() end, "matter_sensors_5s") tasmota.add_cron("*/30 * * * * *", def () self._trigger_read_sensors() end, "matter_sensors_30s")
self._start_udp(self.UDP_PORT) self._start_udp(self.UDP_PORT)
@ -908,6 +908,7 @@ class Matter_Device
# #
def autoconf_device() def autoconf_device()
import string import string
import json
# check if we have a light # check if we have a light
var endpoint = 1 var endpoint = 1
var light_present = false var light_present = false
@ -944,7 +945,33 @@ class Matter_Device
endpoint += 1 endpoint += 1
end end
# auto-detect sensors
var sensors = json.load(tasmota.read_sensors())
# temperature sensors
# they are starting at endpoint `32..39` (8 max)
endpoint = 0x20
for k1:self.k2l(sensors)
var sensor_2 = sensors[k1]
if isinstance(sensor_2, map) && sensor_2.contains("Temperature")
var temp_rule = k1 + "#Temperature"
self.plugins.push(matter.Plugin_Temp_Sensor(self, endpoint, temp_rule))
tasmota.log(string.format("MTR: Endpoint:%i Temperature (%s)", endpoint, temp_rule), 2)
endpoint += 1
end end
if endpoint > 0x28 break end
end
end
# get keys of a map in sorted order
static def k2l(m) var l=[] if m==nil return l end for k:m.keys() l.push(k) end
for i:1..size(l)-1 var k = l[i] var j = i while (j > 0) && (l[j-1] > k) l[j] = l[j-1] j -= 1 end l[j] = k end return l
end
# keys to llist
end end
matter.Device = Matter_Device matter.Device = Matter_Device

View File

@ -445,10 +445,10 @@ class Matter_IM_SubscribeResponse : Matter_IM_ReportData
# Status ok received # Status ok received
def status_ok_received(msg) def status_ok_received(msg)
# import string import string
# tasmota.log(string.format("MTR: IM_SubscribeResponse status_ok_received sub=%i exch=%i ack=%i last_counter=%i", self.sub.subscription_id, self.resp.exchange_id, msg.ack_message_counter ? msg.ack_message_counter : 0 , self.last_counter), 3) # tasmota.log(string.format("MTR: IM_SubscribeResponse status_ok_received sub=%i exch=%i ack=%i last_counter=%i", self.sub.subscription_id, self.resp.exchange_id, msg.ack_message_counter ? msg.ack_message_counter : 0 , self.last_counter), 3)
# once we receive ack, open flow for subscriptions # once we receive ack, open flow for subscriptions
# tasmota.log(string.format("MTR: >Sub_OK (%6i) sub=%i", msg.session.local_session_id, self.sub.subscription_id), 2) tasmota.log(string.format("MTR: >Sub_OK (%6i) sub=%i", msg.session.local_session_id, self.sub.subscription_id), 2)
return super(self).status_ok_received(msg) return super(self).status_ok_received(msg)
end end

View File

@ -352,8 +352,8 @@ be_local_closure(Matter_Commisioning_Context_parse_PBKDFParamRequest, /* name
0x5828000A, // 001B LDCONST R10 K10 0x5828000A, // 001B LDCONST R10 K10
0x502C0000, // 001C LDBOOL R11 0 0 0x502C0000, // 001C LDBOOL R11 0 0
0x7C140C00, // 001D CALL R5 6 0x7C140C00, // 001D CALL R5 6
0x50180000, // 001E LDBOOL R6 0 0 0x50140000, // 001E LDBOOL R5 0 0
0x80040C00, // 001F RET 1 R6 0x80040A00, // 001F RET 1 R5
0xB8161C00, // 0020 GETNGBL R5 K14 0xB8161C00, // 0020 GETNGBL R5 K14
0x8C140B0F, // 0021 GETMET R5 R5 K15 0x8C140B0F, // 0021 GETMET R5 R5 K15
0x7C140200, // 0022 CALL R5 1 0x7C140200, // 0022 CALL R5 1
@ -389,8 +389,8 @@ be_local_closure(Matter_Commisioning_Context_parse_PBKDFParamRequest, /* name
0x582C000A, // 0040 LDCONST R11 K10 0x582C000A, // 0040 LDCONST R11 K10
0x50300000, // 0041 LDBOOL R12 0 0 0x50300000, // 0041 LDBOOL R12 0 0
0x7C180C00, // 0042 CALL R6 6 0x7C180C00, // 0042 CALL R6 6
0x501C0000, // 0043 LDBOOL R7 0 0 0x50180000, // 0043 LDBOOL R6 0 0
0x80040E00, // 0044 RET 1 R7 0x80040C00, // 0044 RET 1 R6
0x88180B19, // 0045 GETMBR R6 R5 K25 0x88180B19, // 0045 GETMBR R6 R5 K25
0x90123006, // 0046 SETMBR R4 K24 R6 0x90123006, // 0046 SETMBR R4 K24 R6
0x8818011B, // 0047 GETMBR R6 R0 K27 0x8818011B, // 0047 GETMBR R6 R0 K27
@ -597,8 +597,8 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake1, /* name */
0x58240009, // 001A LDCONST R9 K9 0x58240009, // 001A LDCONST R9 K9
0x50280000, // 001B LDBOOL R10 0 0 0x50280000, // 001B LDBOOL R10 0 0
0x7C100C00, // 001C CALL R4 6 0x7C100C00, // 001C CALL R4 6
0x50140000, // 001D LDBOOL R5 0 0 0x50100000, // 001D LDBOOL R4 0 0
0x80040A00, // 001E RET 1 R5 0x80040800, // 001E RET 1 R4
0xB8121A00, // 001F GETNGBL R4 K13 0xB8121A00, // 001F GETNGBL R4 K13
0x8C10090E, // 0020 GETMET R4 R4 K14 0x8C10090E, // 0020 GETMET R4 R4 K14
0x7C100200, // 0021 CALL R4 1 0x7C100200, // 0021 CALL R4 1
@ -716,7 +716,7 @@ be_local_closure(Matter_Commisioning_Context_init, /* name */
********************************************************************/ ********************************************************************/
be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* name */ be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* name */
be_nested_proto( be_nested_proto(
20, /* nstack */ 19, /* nstack */
2, /* argc */ 2, /* argc */
2, /* varg */ 2, /* varg */
0, /* has upvals */ 0, /* has upvals */
@ -789,8 +789,8 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* name */
0x58240009, // 001A LDCONST R9 K9 0x58240009, // 001A LDCONST R9 K9
0x50280000, // 001B LDBOOL R10 0 0 0x50280000, // 001B LDBOOL R10 0 0
0x7C100C00, // 001C CALL R4 6 0x7C100C00, // 001C CALL R4 6
0x50140000, // 001D LDBOOL R5 0 0 0x50100000, // 001D LDBOOL R4 0 0
0x80040A00, // 001E RET 1 R5 0x80040800, // 001E RET 1 R4
0xB8121A00, // 001F GETNGBL R4 K13 0xB8121A00, // 001F GETNGBL R4 K13
0x8C10090E, // 0020 GETMET R4 R4 K14 0x8C10090E, // 0020 GETMET R4 R4 K14
0x7C100200, // 0021 CALL R4 1 0x7C100200, // 0021 CALL R4 1
@ -819,8 +819,8 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* name */
0x582C0009, // 0038 LDCONST R11 K9 0x582C0009, // 0038 LDCONST R11 K9
0x50300000, // 0039 LDBOOL R12 0 0 0x50300000, // 0039 LDBOOL R12 0 0
0x7C180C00, // 003A CALL R6 6 0x7C180C00, // 003A CALL R6 6
0x501C0000, // 003B LDBOOL R7 0 0 0x50180000, // 003B LDBOOL R6 0 0
0x80040E00, // 003C RET 1 R7 0x80040C00, // 003C RET 1 R6
0xB81A0C00, // 003D GETNGBL R6 K6 0xB81A0C00, // 003D GETNGBL R6 K6
0x8C180D15, // 003E GETMET R6 R6 K21 0x8C180D15, // 003E GETMET R6 R6 K21
0x7C180200, // 003F CALL R6 1 0x7C180200, // 003F CALL R6 1
@ -856,16 +856,16 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* name */
0x58400004, // 005D LDCONST R16 K4 0x58400004, // 005D LDCONST R16 K4
0x50440000, // 005E LDBOOL R17 0 0 0x50440000, // 005E LDBOOL R17 0 0
0x7C2C0C00, // 005F CALL R11 6 0x7C2C0C00, // 005F CALL R11 6
0x8C30011C, // 0060 GETMET R12 R0 K28 0x8C2C011C, // 0060 GETMET R11 R0 K28
0x8838071D, // 0061 GETMBR R14 R3 K29 0x8834071D, // 0061 GETMBR R13 R3 K29
0x883C071E, // 0062 GETMBR R15 R3 K30 0x8838071E, // 0062 GETMBR R14 R3 K30
0x5C401000, // 0063 MOVE R16 R8 0x5C3C1000, // 0063 MOVE R15 R8
0x5C441200, // 0064 MOVE R17 R9 0x5C401200, // 0064 MOVE R16 R9
0x5C481400, // 0065 MOVE R18 R10 0x5C441400, // 0065 MOVE R17 R10
0x5C4C0C00, // 0066 MOVE R19 R6 0x5C480C00, // 0066 MOVE R18 R6
0x7C300E00, // 0067 CALL R12 7 0x7C2C0E00, // 0067 CALL R11 7
0x50300200, // 0068 LDBOOL R12 1 0 0x502C0200, // 0068 LDBOOL R11 1 0
0x80041800, // 0069 RET 1 R12 0x80041600, // 0069 RET 1 R11
}) })
) )
); );
@ -1014,8 +1014,8 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma3, /* name */
0x58200008, // 0014 LDCONST R8 K8 0x58200008, // 0014 LDCONST R8 K8
0x50240000, // 0015 LDBOOL R9 0 0 0x50240000, // 0015 LDBOOL R9 0 0
0x7C0C0C00, // 0016 CALL R3 6 0x7C0C0C00, // 0016 CALL R3 6
0x50100000, // 0017 LDBOOL R4 0 0 0x500C0000, // 0017 LDBOOL R3 0 0
0x80040800, // 0018 RET 1 R4 0x80040600, // 0018 RET 1 R3
0x880C030B, // 0019 GETMBR R3 R1 K11 0x880C030B, // 0019 GETMBR R3 R1 K11
0xB8121800, // 001A GETNGBL R4 K12 0xB8121800, // 001A GETNGBL R4 K12
0x8C10090D, // 001B GETMET R4 R4 K13 0x8C10090D, // 001B GETMET R4 R4 K13
@ -1197,8 +1197,8 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma3, /* name */
0x58480008, // 00CB LDCONST R18 K8 0x58480008, // 00CB LDCONST R18 K8
0x504C0000, // 00CC LDBOOL R19 0 0 0x504C0000, // 00CC LDBOOL R19 0 0
0x7C340C00, // 00CD CALL R13 6 0x7C340C00, // 00CD CALL R13 6
0x50380000, // 00CE LDBOOL R14 0 0 0x50340000, // 00CE LDBOOL R13 0 0
0x80041C00, // 00CF RET 1 R14 0x80041A00, // 00CF RET 1 R13
0xB8361800, // 00D0 GETNGBL R13 K12 0xB8361800, // 00D0 GETNGBL R13 K12
0x88341B31, // 00D1 GETMBR R13 R13 K49 0x88341B31, // 00D1 GETMBR R13 R13 K49
0x8C341B0E, // 00D2 GETMET R13 R13 K14 0x8C341B0E, // 00D2 GETMET R13 R13 K14
@ -1523,28 +1523,28 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma3, /* name */
0x58880003, // 0211 LDCONST R34 K3 0x58880003, // 0211 LDCONST R34 K3
0x508C0200, // 0212 LDBOOL R35 1 0 0x508C0200, // 0212 LDBOOL R35 1 0
0x7C740C00, // 0213 CALL R29 6 0x7C740C00, // 0213 CALL R29 6
0x8C78075D, // 0214 GETMET R30 R3 K93 0x8C74075D, // 0214 GETMET R29 R3 K93
0x7C780200, // 0215 CALL R30 1 0x7C740200, // 0215 CALL R29 1
0x8C78075E, // 0216 GETMET R30 R3 K94 0x8C74075E, // 0216 GETMET R29 R3 K94
0x5C803200, // 0217 MOVE R32 R25 0x5C7C3200, // 0217 MOVE R31 R25
0x5C843400, // 0218 MOVE R33 R26 0x5C803400, // 0218 MOVE R32 R26
0x5C883600, // 0219 MOVE R34 R27 0x5C843600, // 0219 MOVE R33 R27
0x5C8C3800, // 021A MOVE R35 R28 0x5C883800, // 021A MOVE R34 R28
0x7C780A00, // 021B CALL R30 5 0x7C740A00, // 021B CALL R29 5
0x900EBF03, // 021C SETMBR R3 K95 K3 0x900EBF03, // 021C SETMBR R3 K95 K3
0x8C780760, // 021D GETMET R30 R3 K96 0x8C740760, // 021D GETMET R29 R3 K96
0x7C780200, // 021E CALL R30 1 0x7C740200, // 021E CALL R29 1
0x8C780761, // 021F GETMET R30 R3 K97 0x8C740761, // 021F GETMET R29 R3 K97
0x50800200, // 0220 LDBOOL R32 1 0 0x507C0200, // 0220 LDBOOL R31 1 0
0x7C780400, // 0221 CALL R30 2 0x7C740400, // 0221 CALL R29 2
0x8C780762, // 0222 GETMET R30 R3 K98 0x8C740762, // 0222 GETMET R29 R3 K98
0x7C780200, // 0223 CALL R30 1 0x7C740200, // 0223 CALL R29 1
0x8C780763, // 0224 GETMET R30 R3 K99 0x8C740763, // 0224 GETMET R29 R3 K99
0x7C780200, // 0225 CALL R30 1 0x7C740200, // 0225 CALL R29 1
0x8C780764, // 0226 GETMET R30 R3 K100 0x8C740764, // 0226 GETMET R29 R3 K100
0x7C780200, // 0227 CALL R30 1 0x7C740200, // 0227 CALL R29 1
0x50780200, // 0228 LDBOOL R30 1 0 0x50740200, // 0228 LDBOOL R29 1 0
0x80043C00, // 0229 RET 1 R30 0x80043A00, // 0229 RET 1 R29
}) })
) )
); );
@ -1882,8 +1882,8 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma1, /* name */
0x5828000A, // 0016 LDCONST R10 K10 0x5828000A, // 0016 LDCONST R10 K10
0x502C0000, // 0017 LDBOOL R11 0 0 0x502C0000, // 0017 LDBOOL R11 0 0
0x7C140C00, // 0018 CALL R5 6 0x7C140C00, // 0018 CALL R5 6
0x50180000, // 0019 LDBOOL R6 0 0 0x50140000, // 0019 LDBOOL R5 0 0
0x80040C00, // 001A RET 1 R6 0x80040A00, // 001A RET 1 R5
0xB8161A00, // 001B GETNGBL R5 K13 0xB8161A00, // 001B GETNGBL R5 K13
0x8C140B0E, // 001C GETMET R5 R5 K14 0x8C140B0E, // 001C GETMET R5 R5 K14
0x7C140200, // 001D CALL R5 1 0x7C140200, // 001D CALL R5 1
@ -2299,8 +2299,8 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma1, /* name */
0x5838000C, // 01B7 LDCONST R14 K12 0x5838000C, // 01B7 LDCONST R14 K12
0x503C0000, // 01B8 LDBOOL R15 0 0 0x503C0000, // 01B8 LDBOOL R15 0 0
0x7C240C00, // 01B9 CALL R9 6 0x7C240C00, // 01B9 CALL R9 6
0x50280000, // 01BA LDBOOL R10 0 0 0x50240000, // 01BA LDBOOL R9 0 0
0x80041400, // 01BB RET 1 R10 0x80041200, // 01BB RET 1 R9
0x88240331, // 01BC GETMBR R9 R1 K49 0x88240331, // 01BC GETMBR R9 R1 K49
0x90126009, // 01BD SETMBR R4 K48 R9 0x90126009, // 01BD SETMBR R4 K48 R9
0x8C240932, // 01BE GETMET R9 R4 K50 0x8C240932, // 01BE GETMET R9 R4 K50

View File

@ -1440,7 +1440,7 @@ be_local_closure(Matter_IM_SubscribeResponse_init, /* name */
********************************************************************/ ********************************************************************/
be_local_closure(Matter_IM_SubscribeResponse_status_ok_received, /* name */ be_local_closure(Matter_IM_SubscribeResponse_status_ok_received, /* name */
be_nested_proto( be_nested_proto(
5, /* nstack */ 10, /* nstack */
2, /* argc */ 2, /* argc */
2, /* varg */ 2, /* varg */
0, /* has upvals */ 0, /* has upvals */
@ -1448,19 +1448,41 @@ be_local_closure(Matter_IM_SubscribeResponse_status_ok_received, /* name */
0, /* has sup protos */ 0, /* has sup protos */
NULL, /* no sub protos */ NULL, /* no sub protos */
1, /* has constants */ 1, /* has constants */
( &(const bvalue[ 1]) { /* constants */ ( &(const bvalue[11]) { /* constants */
/* K0 */ be_nested_str_weak(status_ok_received), /* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(tasmota),
/* K2 */ be_nested_str_weak(log),
/* K3 */ be_nested_str_weak(format),
/* K4 */ be_nested_str_weak(MTR_X3A_X20_X3ESub_OK_X20_X20_X20_X20_X28_X256i_X29_X20sub_X3D_X25i),
/* K5 */ be_nested_str_weak(session),
/* K6 */ be_nested_str_weak(local_session_id),
/* K7 */ be_nested_str_weak(sub),
/* K8 */ be_nested_str_weak(subscription_id),
/* K9 */ be_const_int(2),
/* K10 */ be_nested_str_weak(status_ok_received),
}), }),
be_str_weak(status_ok_received), be_str_weak(status_ok_received),
&be_const_str_solidified, &be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */ ( &(const binstruction[19]) { /* code */
0x60080003, // 0000 GETGBL R2 G3 0xA40A0000, // 0000 IMPORT R2 K0
0x5C0C0000, // 0001 MOVE R3 R0 0xB80E0200, // 0001 GETNGBL R3 K1
0x7C080200, // 0002 CALL R2 1 0x8C0C0702, // 0002 GETMET R3 R3 K2
0x8C080500, // 0003 GETMET R2 R2 K0 0x8C140503, // 0003 GETMET R5 R2 K3
0x5C100200, // 0004 MOVE R4 R1 0x581C0004, // 0004 LDCONST R7 K4
0x7C080400, // 0005 CALL R2 2 0x88200305, // 0005 GETMBR R8 R1 K5
0x80040400, // 0006 RET 1 R2 0x88201106, // 0006 GETMBR R8 R8 K6
0x88240107, // 0007 GETMBR R9 R0 K7
0x88241308, // 0008 GETMBR R9 R9 K8
0x7C140800, // 0009 CALL R5 4
0x58180009, // 000A LDCONST R6 K9
0x7C0C0600, // 000B CALL R3 3
0x600C0003, // 000C GETGBL R3 G3
0x5C100000, // 000D MOVE R4 R0
0x7C0C0200, // 000E CALL R3 1
0x8C0C070A, // 000F GETMET R3 R3 K10
0x5C140200, // 0010 MOVE R5 R1
0x7C0C0400, // 0011 CALL R3 2
0x80040600, // 0012 RET 1 R3
}) })
) )
); );