Technician tool v0.6

Imported from the Google Drive folder 004-technician_tool/v0.6.
This commit is contained in:
kkallas committed 2026-09-28 17:31:03 +02:00
1 parent f5b32e1554
commit 22bd853ecf
30 files changed
+1521 -568

No files matched your search

+3
View File
@@ -280,6 +280,7 @@ class DiagnosticsEngine:
self._panic_tail = 0 # RAW lines after a panic line to keep
self.technician: list[str] = []
self.mac: str | None = None # from "ID: Device MAC address: ..." at boot
self.matter_advert: str | None = None # "Advertise commission parameter vendorID=..." line
@property
def boot(self) -> BootRecord:
@@ -321,6 +322,8 @@ class DiagnosticsEngine:
self.firmware.observe(text)
if m := _MAC_LINE.search(text):
self.mac = m.group(1).upper()
if "Advertise commission parameter" in text:
self.matter_advert = text
matched = False
for rule in self.rules:
m = rule.pattern.search(text)
+6
View File
@@ -26,6 +26,12 @@ KNOWN: dict[str, KnownFirmware] = {
sd_wifi=False,
setup_portal=False,
),
"c94ba0e9b": KnownFirmware(
name="v1.0 source build (Sep 26 2026)",
source="developer build, built by Krzysztof Kallas",
sd_wifi=True,
setup_portal=True,
),
}
_ELF = re.compile(r"app_init: ELF file SHA256:\s+(?P<sha>[0-9a-f]{6,})")
+2 -1
View File
@@ -57,6 +57,7 @@ class Step:
skip_if_finding: str | None = None
skip_unless_feature: str | None = None
skip_to: str | None = None
show_qr: bool = False # show the Matter pairing QR next to the step text
def targets(self) -> list[str]:
t = [o.next for o in self.options] + list(self.route.values()) + list(self.routes.values())
@@ -101,7 +102,7 @@ def load_guides(path: Path = GUIDES_PATH) -> dict[str, Guide]:
timeout_s=float(s.get("timeout_s", 60)), pass_on_timeout=bool(s.get("pass_on_timeout", False)),
on_ok=s.get("on_ok"), on_fail=s.get("on_fail"), on_timeout=s.get("on_timeout"),
skip_if_finding=s.get("skip_if_finding"), skip_unless_feature=s.get("skip_unless_feature"),
skip_to=s.get("skip_to"),
skip_to=s.get("skip_to"), show_qr=bool(s.get("show_qr", False)),
)
ends = {e["id"]: End(e["id"], e["severity"], e["title"], e["text"], tuple(e.get("actions", ())))
for e in g.get("end", [])}
+2 -1
View File
@@ -113,7 +113,8 @@ next = "pair_start"
[[guide.step]]
id = "pair_start"
type = "wait"
text = "In the Matter app choose 'Add device' and scan the QR code on the sticker (or type the 11-digit code printed under it). Keep the phone within 1 m of the box."
text = "In the Matter app choose 'Add device' and scan the QR code shown here (the same as the sticker), or type the 11-digit manual code. Keep the phone within 1 m of the box."
show_qr = true
until = 'MAIN: Commissioning session started'
timeout_s = 300
on_ok = "pair_wifi"