Skip to content

Create hil-test-suite.yml for HIL tests - #930

Open
tyeth wants to merge 20 commits into
mainfrom
hil-test-additions
Open

Create hil-test-suite.yml for HIL tests#930
tyeth wants to merge 20 commits into
mainfrom
hil-test-additions

Conversation

@tyeth

@tyeth tyeth commented Jun 14, 2026

Copy link
Copy Markdown
Member

Add initial content for HIL test suite configuration. This is a placeholder PR to experiment with in PR feedback and runners etc.

tyeth and others added 2 commits June 14, 2026 16:48
Add initial content for HIL test suite configuration.
Replaces the stub with a HIL workflow that, after the build job, joins Tailscale
to the usbip-hil-controller and compares a release build vs this PR's build on a
real QT Py ESP32-S3: it flashes each, boots against a per-session protomq broker
with secrets, then injects a v1 ws.signal.pixelWrite to an uninitialised strand
(pin D0, colour 200) and asserts the release CRASHES+reboots while the #927 fix
logs and continues. Contract: low=release, high=this PR (else custom run).

- Only board(s) the controller reports available run (GET /v1/targets); the rest
  of the bench is skipped + listed in the PR comment (none go red).
- Firmware delivered via the controller's upload/url endpoints; serial.log /
  protomq.log / flash.log captured and attached as the hil-assets artifact and
  summarised in a PR comment.
- hil-pixelwrite-run.sh holds the A/B driver (upload -> submit -> poll -> assert).

Needs repo secrets TAILSCALE_AUTHKEY_TYETH + HIL_API_TOKEN (+ HIL_IO_*/HIL_WIFI_*)
and optional vars HIL_API_BASE / HIL_LOW_REF / HIL_TARGETS.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@tyeth

tyeth commented Jun 14, 2026

Copy link
Copy Markdown
Member Author

🔌 HIL test suite added (pixelWrite / uninitialised-strand regression)

Replaced the hil-test-suite.yml stub with a hardware-in-the-loop workflow that exercises the #926/#927 fix on a real QT Py ESP32-S3 via our usbip-hil-controller.

What it checks — a v1 ws.signal.pixelWrite to an uninitialised NeoPixel strand (pin D0, colour 200) after MQTT check-in:

  • release 1.0.0-beta.127 → expected to crash + reboot (null-deref: pin 0 collides with the zero-init strands[] sentinel → getStrandIdx false-matches → neoPixelPtr->fill() on nullptr).
  • this PR / fixed build (fix(pixels): initialise all members of strands array #927) → hits the ERROR: Pixel strand not found… guard and continues, no reset.

How it runs

  1. After the build workflow, joins Tailscale and asks the controller GET /v1/targets which boards are available — only qtpy_esp32s3_n4r2 is online today; the rest of the bench is reported offline and skipped + listed (no red CI for unavailable hardware).
  2. Pulls the release fatfs zip and this PR's build artifact, flashes each, boots against a per-session protomq broker (the broker host:port is supplied by the controller — CI never passes it), then injects the v1 pixelWrite and records PIXELWRITE_VERDICT rebooted=true|false.
  3. Captures serial.log / protomq.log / flash.log + the firmware version from the FAT *boot_out.txt, attaches them as the hil-assets artifact, and posts a per-target pass/fail table here. Uploaded firmware is tracked as a job asset (and purged with the job).

Contract: low = a published release, high = this PR's build. Any other combination routes to a custom script run.

Triggeringworkflow_run fires only from the default branch, so it auto-runs once this PR merges; before merge, run it via workflow_dispatch (low_ref, high_ref) once the secrets below are set.

Required — repo secrets TAILSCALE_AUTHKEY_TYETH, HIL_API_KEY_TYETH (+ HIL_IO_USERNAME/HIL_IO_KEY/HIL_WIFI_SSID/HIL_WIFI_PASSWORD); optional vars HIL_API_BASE / HIL_LOW_REF / HIL_TARGETS.

Status: workflow + bench-side capabilities (target availability, firmware upload/URL fetch with asset tracking, the inject_pixelwrite stage, job-asset API) are in place and deployed; pending its first live run (set secrets → workflow_dispatch, or merge).

🤖 Generated with Claude Code

tyeth and others added 4 commits June 14, 2026 19:03
…oller

The controller supplies the broker host:port (write_secrets_msc fills it from the
launched protomq), so CI passes only IO + Wi-Fi creds.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ld_run_id

The HIL job DEPENDS ON the build (workflow_run after 'WipperSnapper Build CI'
succeeds) unless manually triggered (workflow_dispatch). Manual runs take a
build_run_id input for the HIGH artifacts; documented the workflow_run
default-branch caveat (auto on merge, dispatch from the PR branch).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
workflow_run/workflow_dispatch are read only from the default branch, so
neither fires for a workflow file that lives only on a feature branch — the
last PR commit triggered nothing. pull_request is the only event that runs the
branch's own copy of the workflow.

Add on: pull_request and resolve BUILD_RUN_ID per trigger in a new step: for a
PR it waits (≤20 min) for "WipperSnapper Build CI" on the head SHA to succeed
and flashes that run's artifacts as HIGH, preserving the depends-on-build
semantics without needing the file on main. Comment step now posts on PR and
workflow_run paths (skips manual dispatch).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The WipperSnapper build matrix can take 30+ min (up to ~1.5 h). Extend the
PR-path build-wait from 20 min (60x20s) to ~95 min (190x30s) and add a
150-min job timeout so a stuck wait doesn't hold a runner for the 6 h default.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@adafruit adafruit deleted a comment from github-actions Bot Jun 14, 2026
Three fixes found by the first live PR run:

1. HIGH firmware fetch was wrong. The build matrix uploads per-platform
   build-files-<plat>-zip artifacts, then a merge-job combines them into ONE
   'build-files' artifact and deletes the per-platform ones. The old code
   downloaded a non-existent build-files-<target>-zip, so HIGH was always
   missing and every target reported "firmware missing" (nothing flashed).
   Now: download the single build-files once, then dig out
   wippersnapper.<target>.fatfs.<ver>.zip for each target. (LOW release fetch
   unchanged; qtpy_esp32s3_n4r2 is a real matrix entry, so the bin is present.)

2. PR result comment is now sticky: update our marker comment
   (<!-- hil-test-suite -->) in place instead of posting a new comment each run.

3. Cosmetic: the "firmware missing" row printed "ok<path>"; print ok/missing.

Secrets confirmed sufficient: jobreq defaults to bench creds (hil/hil,
free4all/password) when HIL_IO_*/HIL_WIFI_* are unset, and TAILSCALE/HIL_API
keys are already set (Tailscale joined, /v1/targets authorized).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jun 14, 2026

Copy link
Copy Markdown

🔌 HIL test results

Driven by usbip-hil-controller over Tailscale; only bench-available targets run (others skipped + listed with reason). Per-test proof (serial.log / protomq.log / flash.log) attached as the hil-assets artifact. 🤖

✅ Check-in smoke test

Flash this PR's build → write secrets → power-cycle → assert the device checks in to the broker.

target this PR check-in
qtpy_esp32s3_n4r2 flashed ok=unknown ❌

Expected: ok=true (device flashed + configured + checked in).

🧪 pixelWrite uninitialised-strand regression (#926)

v1 ws.signal.pixelWrite to an uninitialised strand (pin D0, colour 200) — release should crash+reboot, the fix should log + continue (#926 / fixed by #927).

target release 1.0.0-beta.127 this PR verdict
qtpy_esp32s3_n4r2 rebooted=unknown rebooted=unknown

Expected: release rebooted=true (crash), PR rebooted=false (graceful).

tyeth and others added 4 commits June 14, 2026 23:29
The PR pixelWrite regression (#926/#927) is validated on the bench but parked as
the default CI gate for now. Add hil-checkin-run.sh — flash THIS PR's build →
write secrets → power-cycle → verify_checkin (CHECKIN_VERDICT ok=true), single
build, no injection — and switch the workflow to run it; the A/B step is left
commented out with a re-enable note.

Also fold in the proven firmware-bench stage order into the (parked) pixelwrite
driver: a power_cycle MUST precede write_secrets_msc (the MSC volume only
enumerates once the app boots), and run_side now treats error/timeout as terminal
states so it doesn't spin.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The run_target/run_side wait loops used a fixed 120-iteration count, but
firmware-bench floods serial-stream events so each /wait returns instantly —
the loop burned out in ~4min, before the ~6-8min flash→secrets→checkin
completes, and reported ok=unknown even though the controller job checked in
fine (CHECKIN_VERDICT ok=true, job finished/pass). Poll on a ~15min wall-clock
deadline instead and break the moment the verdict line appears.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…926)

Both tests now run every PR and report individually. Each driver appends its own
section (+ per-test assets) to a shared hil-out/comment.md; the workflow owns the
sticky-comment marker/header and writes it once (Init PR summary step). Tests run
with if:always() so one failing test still lets the others run and report, while
the job still fails if any test fails.

- check-in smoke test = the default gate (flash → secrets → checkin).
- pixelWrite uninitialised-strand regression named with the issue (#926, fixed by
  #927); A/B LOW(release)=crash vs HIGH(PR)=graceful.
- A/B hold window cut 10→1 min so the LOW job frees the device before HIGH.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Per feedback:
- Post a NEW PR comment each run (drop the sticky in-place update — runs were
  impossible to track). Header carries run number + commit + link to the run and
  its hil-assets artifact.
- Fix missing proof logs: the drivers downloaded assets right after the verdict,
  but firmware-bench registers serial/protomq/flash logs at TEARDOWN (after the
  hold), so only the firmware bin existed yet. Now poll until the job is TERMINAL
  before downloading, and download ONLY kind='log' assets (skip the 3MB bin).
- Inline an excerpt: each test section gets a <details> with the tail of the
  captured serial.log (falling back to flash.log) as in-comment proof.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

🔌 HIL test results — run #8

commit 13b6a93 · 2026-06-15 01:09:47Z · full logs (serial.log / protomq.log / flash.log) in the hil-assets artifact

✅ Check-in smoke test

Flash this PR's build → write secrets → power-cycle → assert the device checks in to the broker.

target this PR check-in
qtpy_esp32s3_n4r2 flashed ok=true ✅
📜 `qtpy_esp32s3_n4r2` checkin — qtpy_esp32s3_n4r2-checkin-serial.log (tail)
2026-06-15T01:12:40.399+00:00  Registering hardware with WipperSnapper...
2026-06-15T01:12:40.400+00:00  Registering hardware with IO...
2026-06-15T01:12:40.410+00:00  Encoding registration request...Encoding registration msg...Published!
2026-06-15T01:12:40.410+00:00  Polling for registration message response...2
2026-06-15T01:12:41.014+00:00  GOT Registration Response Message:
2026-06-15T01:12:41.015+00:00  Hardware Response Msg:
2026-06-15T01:12:41.015+00:00  	GPIO Pins: 30
2026-06-15T01:12:41.016+00:00  	Analog Pins: 4
2026-06-15T01:12:41.018+00:00  	Reference voltage: 2.50v
2026-06-15T01:12:41.018+00:00  cbSignalTopic: New Msg on Signal Topic
2026-06-15T01:12:41.018+00:00  2 bytes.
2026-06-15T01:12:41.018+00:00  decodeSignalMsg
2026-06-15T01:12:41.019+00:00  cbSignalMsg
2026-06-15T01:12:41.019+00:00  Sub-messages found: 1
2026-06-15T01:12:41.019+00:00  Signal Msg Tag: Pin Configuration
2026-06-15T01:12:41.019+00:00  Initial Pin Configuration Complete!
2026-06-15T01:12:41.030+00:00  Completed registration process, configuration next!
2026-06-15T01:12:41.038+00:00  Publishing to pin config complete...
2026-06-15T01:12:41.040+00:00  Published pin config complete message!
2026-06-15T01:12:41.041+00:00  Hardware configured successfully!
2026-06-15T01:12:42.604+00:00  Registration and configuration complete!
2026-06-15T01:12:42.606+00:00  Running application...
2026-06-15T01:12:42.613+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T01:12:42.614+00:00  WiFi RSSI: -29
2026-06-15T01:12:47.942+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T01:12:47.943+00:00  WiFi RSSI: -30
2026-06-15T01:12:53.164+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T01:12:53.165+00:00  WiFi RSSI: -29
2026-06-15T01:12:58.314+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T01:12:58.315+00:00  WiFi RSSI: -29

Expected: ok=true (device flashed + configured + checked in).

🧪 pixelWrite uninitialised-strand regression (#926)

v1 ws.signal.pixelWrite to an uninitialised strand (pin D0, colour 200) — release should crash+reboot, the fix should log + continue (#926 / fixed by #927).

target release 1.0.0-beta.127 this PR verdict
qtpy_esp32s3_n4r2 rebooted=unknown rebooted=unknown

Expected: release rebooted=true (crash), PR rebooted=false (graceful).

Half 2 of the controller's HANDOFF §1. A HIL job runs several firmware-bench
jobs in sequence; a dwc_otg wedge can auto-reboot the DUT host (~3–5 min)
mid-suite. Previously the remaining tests submitted regardless and errored
instantly with an SSH "no route to host" / "device unavailable" signature,
reporting `unknown` (run #8) — a transient outage, not a logic bug.

New shared helper hil-lib.sh:
  * wait_for_target_available <target> — re-polls GET /v1/targets before each
    job; on a temporary outage sleeps until the controller-advertised retry_after
    (+margin), re-polls, bounded by HIL_WAIT_BUDGET_S (~6 min); permanent → skip;
    past budget → fail-with-reason. The controller now sets retry_after =
    now + HIL_HOST_REBOOT_ETA_S on a wedge/auto-reboot.
  * is_host_offline_failure — classifies a job that errored with a host-offline
    signature (vs a real verdict) so the driver re-submits that test ONCE after
    the host returns — even the test that triggered the wedge gets a real verdict.

Both drivers (checkin, pixelWrite A/B) wait before submitting + reactively retry,
and note "host rebooted — retried" in the PR comment. run_target/run_side now set
verdict+state via globals (the verdict was lost to the $(...) subshell otherwise).
hil-lib.test.sh unit-tests the helpers (available / temp-then-available /
permanent / budget-exceeded + the classifier) with stubbed curl/date/sleep; wired
as a fast hardware-free gate before the ~95 min build-wait.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

✅ Check-in smoke test

Flash this PR's build → write secrets → power-cycle → assert the device checks in to the broker.

target this PR check-in
qtpy_esp32s3_n4r2 missing ⚠️ firmware missing

Expected: ok=true (device flashed + configured + checked in).

🧪 pixelWrite uninitialised-strand regression (#926)

v1 ws.signal.pixelWrite to an uninitialised strand (pin D0, colour 200) — release should crash+reboot, the fix should log + continue (#926 / fixed by #927).

target release 1.0.0-beta.127 this PR verdict
qtpy_esp32s3_n4r2 missing missing ⚠️ firmware missing

Expected: release rebooted=true (crash), PR rebooted=false (graceful).

The test cd's into a tmp dir then sourced hil-lib.sh via a path derived from
BASH_SOURCE — but CI invokes it as `bash .github/workflows/hil-lib.test.sh`
(relative), so after the cd the relative source resolved to nothing and every
check failed with 127 ("No such file or directory"). Resolve the script dir to
an absolute path before cd'ing away. (Passed locally only because it was run
with an absolute path.)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

🔌 HIL test results — run #10

commit fc21185 · 2026-06-15 14:57:49Z · full logs (serial.log / protomq.log / flash.log) in the hil-assets artifact

✅ Check-in smoke test

Flash this PR's build → write secrets → power-cycle → assert the device checks in to the broker.

target this PR check-in
qtpy_esp32s3_n4r2 flashed ok=true ✅ (host rebooted — retried)
📜 `qtpy_esp32s3_n4r2` checkin — qtpy_esp32s3_n4r2-checkin-serial.log (tail)
2026-06-15T15:10:26.892+00:00  Encoding registration request...Encoding registration msg...Published!
2026-06-15T15:10:26.892+00:00  Polling for registration message response...2
2026-06-15T15:10:27.497+00:00  GOT Registration Response Message:
2026-06-15T15:10:27.498+00:00  Hardware Response Msg:
2026-06-15T15:10:27.498+00:00  	GPIO Pins: 30
2026-06-15T15:10:27.498+00:00  	Analog Pins: 4
2026-06-15T15:10:27.498+00:00  	Reference voltage: 2.50v
2026-06-15T15:10:27.500+00:00  cbSignalTopic: New Msg on Signal Topic
2026-06-15T15:10:27.500+00:00  2 bytes.
2026-06-15T15:10:27.500+00:00  decodeSignalMsg
2026-06-15T15:10:27.500+00:00  cbSignalMsg
2026-06-15T15:10:27.501+00:00  Sub-messages found: 1
2026-06-15T15:10:27.501+00:00  Signal Msg Tag: Pin Configuration
2026-06-15T15:10:27.501+00:00  Initial Pin Configuration Complete!
2026-06-15T15:10:27.511+00:00  Completed registration process, configuration next!
2026-06-15T15:10:27.521+00:00  Publishing to pin config complete...
2026-06-15T15:10:27.523+00:00  Published pin config complete message!
2026-06-15T15:10:27.524+00:00  Hardware configured successfully!
2026-06-15T15:10:29.086+00:00  Registration and configuration complete!
2026-06-15T15:10:29.087+00:00  Running application...
2026-06-15T15:10:29.093+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T15:10:29.095+00:00  WiFi RSSI: -29
2026-06-15T15:10:34.315+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T15:10:34.316+00:00  WiFi RSSI: -30
2026-06-15T15:10:39.537+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T15:10:39.537+00:00  WiFi RSSI: -30
2026-06-15T15:10:44.762+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T15:10:44.766+00:00  WiFi RSSI: -30
2026-06-15T15:10:49.803+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T15:10:49.803+00:00  WiFi RSSI: -29

Expected: ok=true (device flashed + configured + checked in).

🧪 pixelWrite uninitialised-strand regression (#926)

v1 ws.signal.pixelWrite to an uninitialised strand (pin D0, colour 200) — release should crash+reboot, the fix should log + continue (#926 / fixed by #927).

target release 1.0.0-beta.127 this PR verdict
qtpy_esp32s3_n4r2 rebooted=unknown rebooted=unknown

Expected: release rebooted=true (crash), PR rebooted=false (graceful).

…gnature)

Run #10: the check-in test rode through a wedge and retried to ok=true, but
pixelWrite LOW/HIGH errored and were reported `unknown` with no retry. Two driver
bugs:

* The wait loop broke on the state→terminal event before the error-reason event
  arrived, so the events log kept only the firmware-link line — HIGH's "No route
  to host" reason was lost, LOW's was empty. The old retry classifier
  (is_host_offline_failure) greps that events log, so it matched nothing → no retry.

Fixes:
* Drain trailing events after a terminal state (one more short /wait) so the
  reason lands in the events log + artifact, and a verdict in the final batch is
  caught.
* Replace the events-log signature match with is_infra_error(state): retry once
  whenever a job ends error/timeout/failed (or no state) with no real verdict — a
  real firmware verdict comes out as state=finished, so an infra error is always
  retry-eligible regardless of whether/where a reason was captured. A
  wait_for_target_available still precedes the re-submit (and the controller now
  flags an unreachable host temporary+retry_after, so the wait actually waits).
* Drop the now-unused is_host_offline_failure; hil-lib.test.sh updated (14 checks).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

🔌 HIL test results — run #11

commit 48541c1 · 2026-06-15 16:52:56Z · full logs (serial.log / protomq.log / flash.log) in the hil-assets artifact

✅ Check-in smoke test

Flash this PR's build → write secrets → power-cycle → assert the device checks in to the broker.

target this PR check-in
qtpy_esp32s3_n4r2 flashed ok=true ✅
📜 `qtpy_esp32s3_n4r2` checkin — qtpy_esp32s3_n4r2-checkin-serial.log (tail)
2026-06-15T16:55:58.740+00:00  free4all (10:7C:61:82:50:F1) -90dB (ch1)
2026-06-15T16:55:58.742+00:00  YouFibre-4365 (28:F5:D1:EE:83:32) -93dB (ch11)
2026-06-15T16:55:59.342+00:00  Connecting to WiFi (attempt #0)
2026-06-15T16:56:05.004+00:00  Connected to WiFi!
2026-06-15T16:56:05.005+00:00  Connecting to AIO MQTT (attempt #0)
2026-06-15T16:56:05.005+00:00  WiFi Status: 20
2026-06-15T16:56:06.124+00:00  Registering hardware with WipperSnapper...
2026-06-15T16:56:06.125+00:00  Registering hardware with IO...
2026-06-15T16:56:06.144+00:00  Encoding registration request...Encoding registration msg...Published!
2026-06-15T16:56:06.145+00:00  Polling for registration message response...2
2026-06-15T16:56:06.790+00:00  GOT Registration Response Message:
2026-06-15T16:56:06.791+00:00  Hardware Response Msg:
2026-06-15T16:56:06.791+00:00  	GPIO Pins: 30
2026-06-15T16:56:06.791+00:00  	Analog Pins: 4
2026-06-15T16:56:06.791+00:00  	Reference voltage: 2.50v
2026-06-15T16:56:06.792+00:00  cbSignalTopic: New Msg on Signal Topic
2026-06-15T16:56:06.792+00:00  2 bytes.
2026-06-15T16:56:06.792+00:00  decodeSignalMsg
2026-06-15T16:56:06.792+00:00  cbSignalMsg
2026-06-15T16:56:06.792+00:00  Sub-messages found: 1
2026-06-15T16:56:06.792+00:00  Signal Msg Tag: Pin Configuration
2026-06-15T16:56:06.793+00:00  Initial Pin Configuration Complete!
2026-06-15T16:56:06.808+00:00  Completed registration process, configuration next!
2026-06-15T16:56:06.808+00:00  Publishing to pin config complete...
2026-06-15T16:56:06.808+00:00  Published pin config complete message!
2026-06-15T16:56:06.809+00:00  Hardware configured successfully!
2026-06-15T16:56:08.366+00:00  Registration and configuration complete!
2026-06-15T16:56:08.367+00:00  Running application...
2026-06-15T16:56:08.387+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T16:56:08.389+00:00  WiFi RSSI: -93

Expected: ok=true (device flashed + configured + checked in).

🧪 pixelWrite uninitialised-strand regression (#926)

v1 ws.signal.pixelWrite to an uninitialised strand (pin D0, colour 200) — release should crash+reboot, the fix should log + continue (#926 / fixed by #927).

target release 1.0.0-beta.127 this PR verdict
qtpy_esp32s3_n4r2 rebooted=unknown rebooted=unknown ❌ (low: host rebooted — retried) (high: host rebooted — retried)

Expected: release rebooted=true (crash), PR rebooted=false (graceful).

@github-actions

Copy link
Copy Markdown

🔌 HIL test results — run #11

commit 48541c1 · 2026-06-15 17:55:08Z · full logs (serial.log / protomq.log / flash.log) in the hil-assets artifact

✅ Check-in smoke test

Flash this PR's build → write secrets → power-cycle → assert the device checks in to the broker.

target this PR check-in
qtpy_esp32s3_n4r2 ⏭️ skipped (host unreachable — rpi-displays unreachable, back ~300s)

Expected: ok=true (device flashed + configured + checked in).

🧪 pixelWrite uninitialised-strand regression (#926)

v1 ws.signal.pixelWrite to an uninitialised strand (pin D0, colour 200) — release should crash+reboot, the fix should log + continue (#926 / fixed by #927).

target release 1.0.0-beta.127 this PR verdict
qtpy_esp32s3_n4r2 ⏭️ skipped (host unreachable — rpi-displays unreachable, back ~300s)

Expected: release rebooted=true (crash), PR rebooted=false (graceful).

@github-actions

Copy link
Copy Markdown

🔌 HIL test results — run #11

commit 48541c1 · 2026-06-15 18:14:13Z · full logs (serial.log / protomq.log / flash.log) in the hil-assets artifact

✅ Check-in smoke test

Flash this PR's build → write secrets → power-cycle → assert the device checks in to the broker.

target this PR check-in
qtpy_esp32s3_n4r2 flashed ok=true ✅
📜 `qtpy_esp32s3_n4r2` checkin — qtpy_esp32s3_n4r2-checkin-serial.log (tail)
2026-06-15T18:17:04.394+00:00  Connecting to WiFi (attempt #0)
2026-06-15T18:17:10.110+00:00  Connected to WiFi!
2026-06-15T18:17:10.111+00:00  Connecting to AIO MQTT (attempt #0)
2026-06-15T18:17:10.111+00:00  WiFi Status: 20
2026-06-15T18:17:11.039+00:00  Registering hardware with WipperSnapper...
2026-06-15T18:17:11.040+00:00  Registering hardware with IO...
2026-06-15T18:17:11.049+00:00  Encoding registration request...Encoding registration msg...Published!
2026-06-15T18:17:11.050+00:00  Polling for registration message response...2
2026-06-15T18:17:11.655+00:00  GOT Registration Response Message:
2026-06-15T18:17:11.656+00:00  Hardware Response Msg:
2026-06-15T18:17:11.657+00:00  	GPIO Pins: 30
2026-06-15T18:17:11.657+00:00  	Analog Pins: 4
2026-06-15T18:17:11.657+00:00  	Reference voltage: 2.50v
2026-06-15T18:17:11.660+00:00  cbSignalTopic: New Msg on Signal Topic
2026-06-15T18:17:11.660+00:00  2 bytes.
2026-06-15T18:17:11.661+00:00  decodeSignalMsg
2026-06-15T18:17:11.661+00:00  cbSignalMsg
2026-06-15T18:17:11.661+00:00  Sub-messages found: 1
2026-06-15T18:17:11.662+00:00  Signal Msg Tag: Pin Configuration
2026-06-15T18:17:11.662+00:00  Initial Pin Configuration Complete!
2026-06-15T18:17:11.670+00:00  Completed registration process, configuration next!
2026-06-15T18:17:11.678+00:00  Publishing to pin config complete...
2026-06-15T18:17:11.679+00:00  Published pin config complete message!
2026-06-15T18:17:11.679+00:00  Hardware configured successfully!
2026-06-15T18:17:13.243+00:00  Registration and configuration complete!
2026-06-15T18:17:13.244+00:00  Running application...
2026-06-15T18:17:13.262+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T18:17:13.262+00:00  WiFi RSSI: -29
2026-06-15T18:17:18.476+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T18:17:18.476+00:00  WiFi RSSI: -29

Expected: ok=true (device flashed + configured + checked in).

🧪 pixelWrite uninitialised-strand regression (#926)

v1 ws.signal.pixelWrite to an uninitialised strand (pin D0, colour 200) — release should crash+reboot, the fix should log + continue (#926 / fixed by #927).

target release 1.0.0-beta.127 this PR verdict
qtpy_esp32s3_n4r2 rebooted=unknown rebooted=false ❌ (low: host rebooted — retried)
📜 `qtpy_esp32s3_n4r2` high — qtpy_esp32s3_n4r2-high-serial.log (tail)
2026-06-15T18:31:51.545+00:00  cbSignalTopic: New Msg on Signal Topic
2026-06-15T18:31:51.546+00:00  2 bytes.
2026-06-15T18:31:51.546+00:00  decodeSignalMsg
2026-06-15T18:31:51.546+00:00  cbSignalMsg
2026-06-15T18:31:51.547+00:00  Sub-messages found: 1
2026-06-15T18:31:51.547+00:00  Signal Msg Tag: Pin Configuration
2026-06-15T18:31:51.548+00:00  Initial Pin Configuration Complete!
2026-06-15T18:31:51.558+00:00  Completed registration process, configuration next!
2026-06-15T18:31:51.561+00:00  Publishing to pin config complete...
2026-06-15T18:31:51.565+00:00  Published pin config complete message!
2026-06-15T18:31:51.565+00:00  Hardware configured successfully!
2026-06-15T18:31:53.131+00:00  Registration and configuration complete!
2026-06-15T18:31:53.131+00:00  Running application...
2026-06-15T18:31:53.132+00:00  Sending MQTT PING: * NEW MESSAGE [Topic: Pixels]: 
2026-06-15T18:31:53.132+00:00  11 bytes.
2026-06-15T18:31:53.133+00:00  [Message Type]: wippersnapper_signal_v1_PixelsRequest_req_pixels_write_tag
2026-06-15T18:31:53.133+00:00  Filling strand on D0
2026-06-15T18:31:53.133+00:00  ERROR: Pixel strand not found, can not write a color to the strand!
2026-06-15T18:31:53.139+00:00  SUCCESS!
2026-06-15T18:31:53.139+00:00  WiFi RSSI: -29
2026-06-15T18:31:58.290+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T18:31:58.290+00:00  WiFi RSSI: -30
2026-06-15T18:32:03.421+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T18:32:03.422+00:00  WiFi RSSI: -30
2026-06-15T18:32:08.464+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T18:32:08.465+00:00  WiFi RSSI: -30
2026-06-15T18:32:13.512+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T18:32:13.513+00:00  WiFi RSSI: -30
2026-06-15T18:32:18.554+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T18:32:18.555+00:00  WiFi RSSI: -30

Expected: release rebooted=true (crash), PR rebooted=false (graceful).

Final run showed the single reactive retry isn't enough when the DUT host
reboot-LOOPS faster than a test completes: pixelWrite LOW's one retry waited out
the reboot (312s) but its re-run ALSO overlapped the next reboot → unknown, while
HIGH happened to land in a stable gap and passed. Make the reactive retry a bounded
loop (HIL_TEST_ATTEMPTS, default 4 total) — keep waiting+retrying on an infra error
until a real verdict appears or attempts run out, so a test rides through repeated
host reboots instead of giving up after one. Both drivers (checkin, pixelWrite A/B).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

🔌 HIL test results — run #12

commit 7155ff8 · 2026-06-15 19:14:44Z · full logs (serial.log / protomq.log / flash.log) in the hil-assets artifact

✅ Check-in smoke test

Flash this PR's build → write secrets → power-cycle → assert the device checks in to the broker.

target this PR check-in
qtpy_esp32s3_n4r2 flashed ok=true ✅ (host rebooted — retried x2)
📜 `qtpy_esp32s3_n4r2` checkin — qtpy_esp32s3_n4r2-checkin-serial.log (tail)
2026-06-15T19:36:00.247+00:00  Connecting to WiFi (attempt #0)
2026-06-15T19:36:05.866+00:00  Connected to WiFi!
2026-06-15T19:36:05.867+00:00  Connecting to AIO MQTT (attempt #0)
2026-06-15T19:36:05.868+00:00  WiFi Status: 20
2026-06-15T19:36:06.909+00:00  Registering hardware with WipperSnapper...
2026-06-15T19:36:06.911+00:00  Registering hardware with IO...
2026-06-15T19:36:06.919+00:00  Encoding registration request...Encoding registration msg...Published!
2026-06-15T19:36:06.919+00:00  Polling for registration message response...2
2026-06-15T19:36:07.526+00:00  GOT Registration Response Message:
2026-06-15T19:36:07.526+00:00  Hardware Response Msg:
2026-06-15T19:36:07.527+00:00  	GPIO Pins: 30
2026-06-15T19:36:07.527+00:00  	Analog Pins: 4
2026-06-15T19:36:07.527+00:00  	Reference voltage: 2.50v
2026-06-15T19:36:07.529+00:00  cbSignalTopic: New Msg on Signal Topic
2026-06-15T19:36:07.530+00:00  2 bytes.
2026-06-15T19:36:07.530+00:00  decodeSignalMsg
2026-06-15T19:36:07.530+00:00  cbSignalMsg
2026-06-15T19:36:07.531+00:00  Sub-messages found: 1
2026-06-15T19:36:07.531+00:00  Signal Msg Tag: Pin Configuration
2026-06-15T19:36:07.532+00:00  Initial Pin Configuration Complete!
2026-06-15T19:36:07.538+00:00  Completed registration process, configuration next!
2026-06-15T19:36:07.548+00:00  Publishing to pin config complete...
2026-06-15T19:36:07.549+00:00  Published pin config complete message!
2026-06-15T19:36:07.549+00:00  Hardware configured successfully!
2026-06-15T19:36:09.114+00:00  Registration and configuration complete!
2026-06-15T19:36:09.115+00:00  Running application...
2026-06-15T19:36:09.123+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T19:36:09.124+00:00  WiFi RSSI: -29
2026-06-15T19:36:14.378+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T19:36:14.379+00:00  WiFi RSSI: -29

Expected: ok=true (device flashed + configured + checked in).

🧪 pixelWrite uninitialised-strand regression (#926)

v1 ws.signal.pixelWrite to an uninitialised strand (pin D0, colour 200) — release should crash+reboot, the fix should log + continue (#926 / fixed by #927).

target release 1.0.0-beta.127 this PR verdict
qtpy_esp32s3_n4r2 rebooted=unknown ⏭️ HIGH skipped (host unreachable — rpi-displays unreachable, back ~150s)

Expected: release rebooted=true (crash), PR rebooted=false (graceful).

With a 2nd qtpy_esp32s3_n4r2 DUT now on rpi-hil006, /v1/targets returns two entries
for the build_target. _hil_fetch_target_rec took head -1, so it could grab the
(maintenance-down) rpi-displays one and never try the available rpi-hil006 board.
Select the first AVAILABLE matching device, falling back to the first of any (so a
real outage still reports a skip). Lets either DUT serve the chip — one host can go
down for maintenance while the other takes the job. New multi-dut test.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

🔌 HIL test results — run #13

commit c4d5613 · 2026-06-15 22:29:04Z · full logs (serial.log / protomq.log / flash.log) in the hil-assets artifact

✅ Check-in smoke test

Flash this PR's build → write secrets → power-cycle → assert the device checks in to the broker.

target this PR check-in
qtpy_esp32s3_n4r2 flashed ok=true ✅
📜 `qtpy_esp32s3_n4r2` checkin — qtpy_esp32s3_n4r2-checkin-flash.log (tail)
$ ls -1 /dev/disk/by-path
platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.2.1.1:1.2-scsi-0:0:0:0
platform-fd500000.pcie-pci-0000:01:00.0-usbv2-0:1.2.1.1:1.2-scsi-0:0:0:0
platform-fe340000.mmc
platform-fe340000.mmc-part
platform-fe340000.mmc-part1
platform-fe340000.mmc-part2

===== command 26 [2026-06-15T22:31:16.073+00:00]: exit 0 =====
$ readlink -f /dev/disk/by-path/platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.2.1.1:1.2-scsi-0:0:0:0
/dev/sda

===== command 27 [2026-06-15T22:31:16.713+00:00]: exit 0 =====
$ bash -c 'sudo mkdir -p /tmp/hil-msc-sda'

===== command 28 [2026-06-15T22:31:17.115+00:00]: exit 0 =====
$ bash -c 'sudo mount -t vfat -o ro /dev/sda /tmp/hil-msc-sda'

===== command 29 [2026-06-15T22:31:17.406+00:00]: exit 0 =====
$ bash -c 'shopt -s nullglob; for f in /tmp/hil-msc-sda/*boot_out.txt; do echo "@@@FILE@@@ $f"; cat "$f"; echo; done'
@@@FILE@@@ /tmp/hil-msc-sda/wipper_boot_out.txt
Adafruit.io WipperSnapper
WipperSnapper Firmware Version: 1.0.0-beta.130
Board ID: qtpy-esp32s3-n4r2
MAC Address: F4:12:FA:59:64:84
ESP-IDF Version: v5.5.1-418-gf1a1df9b2e
ESP32 Core Version: 3.3.3

===== command 30 [2026-06-15T22:31:17.709+00:00]: exit 0 =====
$ bash -c 'sudo umount /tmp/hil-msc-sda'

Expected: ok=true (device flashed + configured + checked in).

🧪 pixelWrite uninitialised-strand regression (#926)

v1 ws.signal.pixelWrite to an uninitialised strand (pin D0, colour 200) — release should crash+reboot, the fix should log + continue (#926 / fixed by #927).

target release 1.0.0-beta.127 this PR verdict
qtpy_esp32s3_n4r2 rebooted=true rebooted=false
📜 `qtpy_esp32s3_n4r2` low — qtpy_esp32s3_n4r2-low-flash.log (tail)
platform-fe340000.mmc-part1
platform-fe340000.mmc-part2

===== command 26 [2026-06-15T22:34:33.654+00:00]: exit 0 =====
$ readlink -f /dev/disk/by-path/platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.2.1.1:1.2-scsi-0:0:0:0
/dev/sda

===== command 27 [2026-06-15T22:34:34.138+00:00]: exit 0 =====
$ bash -c 'sudo mkdir -p /tmp/hil-msc-sda'

===== command 28 [2026-06-15T22:34:34.546+00:00]: exit 0 =====
$ bash -c 'sudo mount -t vfat -o ro /dev/sda /tmp/hil-msc-sda'

===== command 29 [2026-06-15T22:34:35.160+00:00]: exit 0 =====
$ bash -c 'shopt -s nullglob; for f in /tmp/hil-msc-sda/*boot_out.txt; do echo "@@@FILE@@@ $f"; cat "$f"; echo; done'
@@@FILE@@@ /tmp/hil-msc-sda/wipper_boot_out.txt
Adafruit.io WipperSnapper
Firmware Version: 1.0.0-beta.127
Board ID: qtpy-esp32s3-n4r2
MAC Address: F4:12:FA:59:64:84
ESP-IDF Version: v5.5.1-418-gf1a1df9b2e
ESP32 Core Version: 3.3.3

===== command 30 [2026-06-15T22:34:35.799+00:00]: exit 0 =====
$ bash -c 'sudo umount /tmp/hil-msc-sda'

===== command 31 [2026-06-15T22:34:41.894+00:00]: exit 0 =====
$ protomq echo → hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel
payload(hex)=1a 09 08 01 12 02 44 30 18 c8 01
response={'status': 'OK'}
📜 `qtpy_esp32s3_n4r2` high — qtpy_esp32s3_n4r2-high-flash.log (tail)
platform-fe340000.mmc-part1
platform-fe340000.mmc-part2

===== command 26 [2026-06-15T22:37:19.037+00:00]: exit 0 =====
$ readlink -f /dev/disk/by-path/platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.2.1.1:1.2-scsi-0:0:0:0
/dev/sda

===== command 27 [2026-06-15T22:37:19.366+00:00]: exit 0 =====
$ bash -c 'sudo mkdir -p /tmp/hil-msc-sda'

===== command 28 [2026-06-15T22:37:19.893+00:00]: exit 0 =====
$ bash -c 'sudo mount -t vfat -o ro /dev/sda /tmp/hil-msc-sda'

===== command 29 [2026-06-15T22:37:20.459+00:00]: exit 0 =====
$ bash -c 'shopt -s nullglob; for f in /tmp/hil-msc-sda/*boot_out.txt; do echo "@@@FILE@@@ $f"; cat "$f"; echo; done'
@@@FILE@@@ /tmp/hil-msc-sda/wipper_boot_out.txt
Adafruit.io WipperSnapper
WipperSnapper Firmware Version: 1.0.0-beta.130
Board ID: qtpy-esp32s3-n4r2
MAC Address: F4:12:FA:59:64:84
ESP-IDF Version: v5.5.1-418-gf1a1df9b2e
ESP32 Core Version: 3.3.3

===== command 30 [2026-06-15T22:37:21.165+00:00]: exit 0 =====
$ bash -c 'sudo umount /tmp/hil-msc-sda'

===== command 31 [2026-06-15T22:37:27.862+00:00]: exit 0 =====
$ protomq echo → hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel
payload(hex)=1a 09 08 01 12 02 44 30 18 c8 01
response={'status': 'OK'}

Expected: release rebooted=true (crash), PR rebooted=false (graceful).

The old proof blind-tailed serial.log (or flash.log) — useless: it didn't show the
data the verdict rests on, never showed protomq, and on rpi-hil006 serial.log was
absent so it tailed esptool's flash.log. Redesign (shared append_proof in
hil-lib.sh):
* SEPARATE collapsible sections for serial.log AND protomq.log per (target,test),
  each WINDOWED around the test phrase via proof_window — the lines up to and just
  after the last match of a per-test evidence regex (check-in: broker connect /
  registration; pixelWrite: reset banner / Pixel-strand / pixel signal). Falls back
  to a tail (clearly labelled) if the phrase isn't found; a log that wasn't captured
  is called out, not silently dropped.
* Per-log artifacts: upload serial/protomq/flash/events each as its own artifact
  (hil-serial-logs etc.) so each is an individual download entry; files named
  <target>-<test>-<type>.log. Full hil-assets bundle kept as a fallback. The comment
  links the run's Artifacts.
hil-lib.test.sh: proof_window matched-window + tail-fallback tests (19 checks).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

🔌 HIL test results — run #14

commit fd98e0a · 2026-06-15 23:14:34Z · full logs (serial.log / protomq.log / flash.log) in the hil-assets artifact

✅ Check-in smoke test

Flash this PR's build → write secrets → power-cycle → assert the device checks in to the broker.

target this PR check-in
qtpy_esp32s3_n4r2 flashed ok=true ✅

⚠️ qtpy_esp32s3_n4r2 checkin — serial.log not captured

📜 `qtpy_esp32s3_n4r2` checkin · protomq.log (✓ around the detected test phrase)
2026-06-15T23:16:25.595+00:00    topic: '$SYS/c6416248-c28f-4a18-ba2d-e56945afb4bf/heartbeat',
2026-06-15T23:16:25.595+00:00    payload_str: 'c6416248-c28f-4a18-ba2d-e56945afb4bf'
2026-06-15T23:16:25.595+00:00  }
2026-06-15T23:16:37.499+00:00  authenticate: undefined undefined aedes_Z0a6YhobTjqoYzXw/9YeBA/1
2026-06-15T23:16:37.500+00:00  connected (aedes_Z0a6YhobTjqoYzXw/9YeBA/1)
2026-06-15T23:16:37.508+00:00  publish (broker): {
2026-06-15T23:16:37.508+00:00    topic: '$SYS/c6416248-c28f-4a18-ba2d-e56945afb4bf/new/clients',
2026-06-15T23:16:37.508+00:00    payload_str: 'aedes_Z0a6YhobTjqoYzXw/9YeBA/1'
2026-06-15T23:16:37.509+00:00  }
2026-06-15T23:16:37.521+00:00  ready (aedes_Z0a6YhobTjqoYzXw/9YeBA/1)
2026-06-15T23:16:37.530+00:00  publish (broker): {
2026-06-15T23:16:37.530+00:00    topic: 'state/clients',
2026-06-15T23:16:37.530+00:00    payload_str: '[{"id":"aedes_Z0a6YhobTjqoYzXw/9YeBA/0","subscriptions":["#"]},{"id":"aedes_Z0a6YhobTjqoYzXw/9YeBA/1","subscriptions":[]}]'
2026-06-15T23:16:37.530+00:00  }
2026-06-15T23:16:37.531+00:00  subscriptions (aedes_Z0a6YhobTjqoYzXw/9YeBA/1) [ 'hil/wprsnpr/#' ]
2026-06-15T23:16:37.534+00:00  publish (broker): {
2026-06-15T23:16:37.534+00:00    topic: '$SYS/c6416248-c28f-4a18-ba2d-e56945afb4bf/new/subscribes',
2026-06-15T23:16:37.534+00:00    payload_str: '{"clientId":"aedes_Z0a6YhobTjqoYzXw/9YeBA/1","subs":[{"topic":"hil/wprsnpr/#","qos":0}]}'
2026-06-15T23:16:37.534+00:00  }
2026-06-15T23:16:37.542+00:00  publish (broker): {
2026-06-15T23:16:37.542+00:00    topic: 'state/clients',
2026-06-15T23:16:37.543+00:00    payload_str: '[{"id":"aedes_Z0a6YhobTjqoYzXw/9YeBA/0","subscriptions":["#"]},{"id":"aedes_Z0a6YhobTjqoYzXw/9YeBA/1","subscriptions":["hil/wprsnpr/#"]}]'
2026-06-15T23:16:37.543+00:00  }
2026-06-15T23:16:42.970+00:00  authenticate: hil hil io-wipper-qtpy-esp32s3-n4r213210089
2026-06-15T23:16:42.974+00:00  connected (io-wipper-qtpy-esp32s3-n4r213210089)
2026-06-15T23:16:42.975+00:00  publish (broker): {
2026-06-15T23:16:42.976+00:00    topic: '$SYS/c6416248-c28f-4a18-ba2d-e56945afb4bf/new/clients',
2026-06-15T23:16:42.976+00:00    payload_str: 'io-wipper-qtpy-esp32s3-n4r213210089'
2026-06-15T23:16:42.976+00:00  }
2026-06-15T23:16:42.983+00:00  ready (io-wipper-qtpy-esp32s3-n4r213210089)
2026-06-15T23:16:42.984+00:00  publish (broker): {

logs for qtpy_esp32s3_n4r2/checkin: serial / protomq / flash — in the per-log Artifacts

Expected: ok=true (device flashed + configured + checked in).

🧪 pixelWrite uninitialised-strand regression (#926)

v1 ws.signal.pixelWrite to an uninitialised strand (pin D0, colour 200) — release should crash+reboot, the fix should log + continue (#926 / fixed by #927).

target release 1.0.0-beta.127 this PR verdict
qtpy_esp32s3_n4r2 rebooted=true rebooted=false

⚠️ qtpy_esp32s3_n4r2 low — serial.log not captured

📜 `qtpy_esp32s3_n4r2` low · protomq.log (✓ around the detected test phrase)
2026-06-15T23:20:07.074+00:00  publish (broker): {
2026-06-15T23:20:07.074+00:00    topic: '$SYS/7709aadc-e4bd-4008-9baf-140ba90ea5ce/new/unsubscribes',
2026-06-15T23:20:07.074+00:00    payload_str: '{"clientId":"aedes_C+RY6PhVROypuwVN9Hoheg/2","subs":["hil/wprsnpr/#"]}'
2026-06-15T23:20:07.075+00:00  }
2026-06-15T23:20:07.077+00:00  publish (broker): {
2026-06-15T23:20:07.078+00:00    topic: 'state/clients',
2026-06-15T23:20:07.078+00:00    payload_str: '[{"id":"aedes_C+RY6PhVROypuwVN9Hoheg/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-15T23:20:07.079+00:00  }
2026-06-15T23:20:07.079+00:00  publish (broker): {
2026-06-15T23:20:07.079+00:00    topic: 'state/clients',
2026-06-15T23:20:07.080+00:00    payload_str: '[{"id":"aedes_C+RY6PhVROypuwVN9Hoheg/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-15T23:20:07.080+00:00  }
2026-06-15T23:20:07.248+00:00  disconnected (aedes_C+RY6PhVROypuwVN9Hoheg/0)
2026-06-15T23:20:07.248+00:00  publish (broker): {
2026-06-15T23:20:07.248+00:00    topic: 'state/clients',
2026-06-15T23:20:07.249+00:00    payload_str: '[{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-15T23:20:07.249+00:00  }
2026-06-15T23:20:07.249+00:00  publish (broker): {
2026-06-15T23:20:07.249+00:00    topic: '$SYS/7709aadc-e4bd-4008-9baf-140ba90ea5ce/disconnect/clients',
2026-06-15T23:20:07.249+00:00    payload_str: 'aedes_C+RY6PhVROypuwVN9Hoheg/0'
2026-06-15T23:20:07.249+00:00  }
2026-06-15T23:20:07.249+00:00  unsubscriptions (aedes_C+RY6PhVROypuwVN9Hoheg/0): [ '#' ]
2026-06-15T23:20:07.249+00:00  publish (broker): {
2026-06-15T23:20:07.249+00:00    topic: 'state/clients',
2026-06-15T23:20:07.249+00:00    payload_str: '[{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-15T23:20:07.249+00:00  }
2026-06-15T23:20:07.249+00:00  publish (broker): {
2026-06-15T23:20:07.249+00:00    topic: '$SYS/7709aadc-e4bd-4008-9baf-140ba90ea5ce/new/unsubscribes',
2026-06-15T23:20:07.250+00:00    payload_str: '{"clientId":"aedes_C+RY6PhVROypuwVN9Hoheg/0","subs":["#"]}'
2026-06-15T23:20:07.250+00:00  }
2026-06-15T23:20:07.256+00:00  [API:/scripts/deactivate]

logs for qtpy_esp32s3_n4r2/low: serial / protomq / flash — in the per-log Artifacts

⚠️ qtpy_esp32s3_n4r2 high — serial.log not captured

📜 `qtpy_esp32s3_n4r2` high · protomq.log (✓ around the detected test phrase)
2026-06-15T23:22:51.575+00:00  publish (broker): {
2026-06-15T23:22:51.575+00:00    topic: '$SYS/b7245f08-6686-46f0-821b-09958547f1d6/new/unsubscribes',
2026-06-15T23:22:51.576+00:00    payload_str: '{"clientId":"aedes_D+x9OOXBTLio8XykWn+0RQ/2","subs":["hil/wprsnpr/#"]}'
2026-06-15T23:22:51.576+00:00  }
2026-06-15T23:22:51.578+00:00  publish (broker): {
2026-06-15T23:22:51.578+00:00    topic: 'state/clients',
2026-06-15T23:22:51.578+00:00    payload_str: '[{"id":"aedes_D+x9OOXBTLio8XykWn+0RQ/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-15T23:22:51.578+00:00  }
2026-06-15T23:22:51.579+00:00  publish (broker): {
2026-06-15T23:22:51.579+00:00    topic: 'state/clients',
2026-06-15T23:22:51.579+00:00    payload_str: '[{"id":"aedes_D+x9OOXBTLio8XykWn+0RQ/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-15T23:22:51.579+00:00  }
2026-06-15T23:22:51.747+00:00  disconnected (aedes_D+x9OOXBTLio8XykWn+0RQ/0)
2026-06-15T23:22:51.747+00:00  publish (broker): {
2026-06-15T23:22:51.747+00:00    topic: 'state/clients',
2026-06-15T23:22:51.747+00:00    payload_str: '[{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-15T23:22:51.747+00:00  }
2026-06-15T23:22:51.747+00:00  publish (broker): {
2026-06-15T23:22:51.747+00:00    topic: '$SYS/b7245f08-6686-46f0-821b-09958547f1d6/disconnect/clients',
2026-06-15T23:22:51.748+00:00    payload_str: 'aedes_D+x9OOXBTLio8XykWn+0RQ/0'
2026-06-15T23:22:51.748+00:00  }
2026-06-15T23:22:51.748+00:00  unsubscriptions (aedes_D+x9OOXBTLio8XykWn+0RQ/0): [ '#' ]
2026-06-15T23:22:51.748+00:00  publish (broker): {
2026-06-15T23:22:51.748+00:00    topic: 'state/clients',
2026-06-15T23:22:51.748+00:00    payload_str: '[{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-15T23:22:51.748+00:00  }
2026-06-15T23:22:51.748+00:00  publish (broker): {
2026-06-15T23:22:51.748+00:00    topic: '$SYS/b7245f08-6686-46f0-821b-09958547f1d6/new/unsubscribes',
2026-06-15T23:22:51.748+00:00    payload_str: '{"clientId":"aedes_D+x9OOXBTLio8XykWn+0RQ/0","subs":["#"]}'
2026-06-15T23:22:51.748+00:00  }
2026-06-15T23:22:51.755+00:00  [API:/scripts/deactivate]

logs for qtpy_esp32s3_n4r2/high: serial / protomq / flash — in the per-log Artifacts

Expected: release rebooted=true (crash), PR rebooted=false (graceful).

@github-actions

Copy link
Copy Markdown

🔌 HIL test results — run #14

commit fd98e0a · 2026-06-15 23:25:28Z · full logs (serial.log / protomq.log / flash.log) in the hil-assets artifact

✅ Check-in smoke test

Flash this PR's build → write secrets → power-cycle → assert the device checks in to the broker.

target this PR check-in
qtpy_esp32s3_n4r2 flashed ok=true ✅
📜 `qtpy_esp32s3_n4r2` checkin · serial.log (✓ around the detected test phrase)
2026-06-15T23:27:47.527+00:00  Signal Msg Tag: Pin Configuration
2026-06-15T23:27:47.528+00:00  Initial Pin Configuration Complete!
2026-06-15T23:27:47.533+00:00  Completed registration process, configuration next!
2026-06-15T23:27:47.543+00:00  Publishing to pin config complete...
2026-06-15T23:27:47.545+00:00  Published pin config complete message!
2026-06-15T23:27:47.545+00:00  Hardware configured successfully!
2026-06-15T23:27:49.110+00:00  Registration and configuration complete!
2026-06-15T23:27:49.111+00:00  Running application...
2026-06-15T23:27:49.127+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T23:27:49.128+00:00  WiFi RSSI: -57
2026-06-15T23:27:54.325+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T23:27:54.331+00:00  WiFi RSSI: -57
2026-06-15T23:27:59.519+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T23:27:59.523+00:00  WiFi RSSI: -56
2026-06-15T23:28:04.596+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T23:28:04.596+00:00  WiFi RSSI: -57
2026-06-15T23:28:09.756+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T23:28:09.757+00:00  WiFi RSSI: -56
2026-06-15T23:28:14.806+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T23:28:14.807+00:00  WiFi RSSI: -57
2026-06-15T23:28:19.994+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T23:28:19.998+00:00  WiFi RSSI: -56
2026-06-15T23:28:25.077+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T23:28:25.078+00:00  WiFi RSSI: -57
2026-06-15T23:28:30.107+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T23:28:30.108+00:00  WiFi RSSI: -57
📜 `qtpy_esp32s3_n4r2` checkin · protomq.log (✓ around the detected test phrase)
2026-06-15T23:27:28.789+00:00    topic: '$SYS/cd3bf04a-074d-4b43-bfba-8d8f6cbbce74/heartbeat',
2026-06-15T23:27:28.789+00:00    payload_str: 'cd3bf04a-074d-4b43-bfba-8d8f6cbbce74'
2026-06-15T23:27:28.789+00:00  }
2026-06-15T23:27:42.336+00:00  authenticate: undefined undefined aedes_ZsU9mruPTkGsDibvd3OMfA/1
2026-06-15T23:27:42.336+00:00  connected (aedes_ZsU9mruPTkGsDibvd3OMfA/1)
2026-06-15T23:27:42.339+00:00  publish (broker): {
2026-06-15T23:27:42.339+00:00    topic: '$SYS/cd3bf04a-074d-4b43-bfba-8d8f6cbbce74/new/clients',
2026-06-15T23:27:42.340+00:00    payload_str: 'aedes_ZsU9mruPTkGsDibvd3OMfA/1'
2026-06-15T23:27:42.340+00:00  }
2026-06-15T23:27:42.349+00:00  ready (aedes_ZsU9mruPTkGsDibvd3OMfA/1)
2026-06-15T23:27:42.354+00:00  publish (broker): {
2026-06-15T23:27:42.355+00:00    topic: 'state/clients',
2026-06-15T23:27:42.355+00:00    payload_str: '[{"id":"aedes_ZsU9mruPTkGsDibvd3OMfA/0","subscriptions":["#"]},{"id":"aedes_ZsU9mruPTkGsDibvd3OMfA/1","subscriptions":[]}]'
2026-06-15T23:27:42.355+00:00  }
2026-06-15T23:27:42.356+00:00  subscriptions (aedes_ZsU9mruPTkGsDibvd3OMfA/1) [ 'hil/wprsnpr/#' ]
2026-06-15T23:27:42.357+00:00  publish (broker): {
2026-06-15T23:27:42.358+00:00    topic: '$SYS/cd3bf04a-074d-4b43-bfba-8d8f6cbbce74/new/subscribes',
2026-06-15T23:27:42.358+00:00    payload_str: '{"clientId":"aedes_ZsU9mruPTkGsDibvd3OMfA/1","subs":[{"topic":"hil/wprsnpr/#","qos":0}]}'
2026-06-15T23:27:42.358+00:00  }
2026-06-15T23:27:42.362+00:00  publish (broker): {
2026-06-15T23:27:42.362+00:00    topic: 'state/clients',
2026-06-15T23:27:42.363+00:00    payload_str: '[{"id":"aedes_ZsU9mruPTkGsDibvd3OMfA/0","subscriptions":["#"]},{"id":"aedes_ZsU9mruPTkGsDibvd3OMfA/1","subscriptions":["hil/wprsnpr/#"]}]'
2026-06-15T23:27:42.363+00:00  }
2026-06-15T23:27:46.662+00:00  authenticate: hil hil io-wipper-qtpy-esp32s3-n4r213210089
2026-06-15T23:27:46.665+00:00  connected (io-wipper-qtpy-esp32s3-n4r213210089)
2026-06-15T23:27:46.665+00:00  publish (broker): {
2026-06-15T23:27:46.666+00:00    topic: '$SYS/cd3bf04a-074d-4b43-bfba-8d8f6cbbce74/new/clients',
2026-06-15T23:27:46.666+00:00    payload_str: 'io-wipper-qtpy-esp32s3-n4r213210089'
2026-06-15T23:27:46.666+00:00  }
2026-06-15T23:27:46.672+00:00  ready (io-wipper-qtpy-esp32s3-n4r213210089)
2026-06-15T23:27:46.673+00:00  publish (broker): {

logs for qtpy_esp32s3_n4r2/checkin: serial / protomq / flash — in the per-log Artifacts

Expected: ok=true (device flashed + configured + checked in).

🧪 pixelWrite uninitialised-strand regression (#926)

v1 ws.signal.pixelWrite to an uninitialised strand (pin D0, colour 200) — release should crash+reboot, the fix should log + continue (#926 / fixed by #927).

target release 1.0.0-beta.127 this PR verdict
qtpy_esp32s3_n4r2 rebooted=true rebooted=false
📜 `qtpy_esp32s3_n4r2` low · serial.log (✓ around the detected test phrase)
2026-06-15T23:30:47.622+00:00  Connecting to WiFi (attempt #0)
2026-06-15T23:30:53.320+00:00  Connected to WiFi!
2026-06-15T23:30:53.321+00:00  Connecting to AIO MQTT (attempt #0)
2026-06-15T23:30:53.321+00:00  WiFi Status: 20
2026-06-15T23:30:54.253+00:00  Registering hardware with WipperSnapper...
2026-06-15T23:30:54.254+00:00  Registering hardware with IO...
2026-06-15T23:30:54.271+00:00  Encoding registration request...Encoding registration msg...Published!
2026-06-15T23:30:54.272+00:00  Polling for registration message response...2
2026-06-15T23:30:54.876+00:00  GOT Registration Response Message:
2026-06-15T23:30:54.884+00:00  Hardware Response Msg:
2026-06-15T23:30:54.885+00:00  	GPIO Pins: 30
2026-06-15T23:30:54.885+00:00  	Analog Pins: 4
2026-06-15T23:30:54.886+00:00  	Reference voltage: 2.50v
2026-06-15T23:30:54.886+00:00  cbSignalTopic: New Msg on Signal Topic
2026-06-15T23:30:54.886+00:00  2 bytes.
2026-06-15T23:30:54.887+00:00  decodeSignalMsg
2026-06-15T23:30:54.887+00:00  cbSignalMsg
2026-06-15T23:30:54.888+00:00  Sub-messages found: 1
2026-06-15T23:30:54.888+00:00  Signal Msg Tag: Pin Configuration
2026-06-15T23:30:54.888+00:00  Initial Pin Configuration Complete!
2026-06-15T23:30:54.893+00:00  Completed registration process, configuration next!
2026-06-15T23:30:54.899+00:00  Publishing to pin config complete...
2026-06-15T23:30:54.901+00:00  Published pin config complete message!
2026-06-15T23:30:54.901+00:00  Hardware configured successfully!
2026-06-15T23:30:56.465+00:00  Registration and configuration complete!
2026-06-15T23:30:56.466+00:00  Running application...
2026-06-15T23:30:56.493+00:00  Sending MQTT PING: * NEW MESSAGE [Topic: Pixels]: 
2026-06-15T23:30:56.493+00:00  11 bytes.
2026-06-15T23:30:56.494+00:00  [Message Type]: wippersnapper_signal_v1_PixelsRequest_req_pixels_write_tag
2026-06-15T23:31:01.935+00:00  ERROR: Unable to perform gamma correctiWipperSnapper found these WiFi networks:
2026-06-15T23:31:01.936+00:00  free4all (EC:FC:2F:83:DC:D8) -56dB (ch1)
📜 `qtpy_esp32s3_n4r2` low · protomq.log (✓ around the detected test phrase)
2026-06-15T23:31:02.116+00:00  publish (broker): {
2026-06-15T23:31:02.117+00:00    topic: '$SYS/e8241e80-cc13-420d-8a06-500edf819a9f/new/unsubscribes',
2026-06-15T23:31:02.117+00:00    payload_str: '{"clientId":"aedes_wRYH4YyvTqOHAZTcWPr57A/2","subs":["hil/wprsnpr/#"]}'
2026-06-15T23:31:02.117+00:00  }
2026-06-15T23:31:02.118+00:00  publish (broker): {
2026-06-15T23:31:02.119+00:00    topic: 'state/clients',
2026-06-15T23:31:02.120+00:00    payload_str: '[{"id":"aedes_wRYH4YyvTqOHAZTcWPr57A/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-15T23:31:02.120+00:00  }
2026-06-15T23:31:02.120+00:00  publish (broker): {
2026-06-15T23:31:02.121+00:00    topic: 'state/clients',
2026-06-15T23:31:02.121+00:00    payload_str: '[{"id":"aedes_wRYH4YyvTqOHAZTcWPr57A/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-15T23:31:02.121+00:00  }
2026-06-15T23:31:02.623+00:00  disconnected (aedes_wRYH4YyvTqOHAZTcWPr57A/0)
2026-06-15T23:31:02.623+00:00  publish (broker): {
2026-06-15T23:31:02.623+00:00    topic: 'state/clients',
2026-06-15T23:31:02.623+00:00    payload_str: '[{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-15T23:31:02.623+00:00  }
2026-06-15T23:31:02.623+00:00  publish (broker): {
2026-06-15T23:31:02.623+00:00    topic: '$SYS/e8241e80-cc13-420d-8a06-500edf819a9f/disconnect/clients',
2026-06-15T23:31:02.623+00:00    payload_str: 'aedes_wRYH4YyvTqOHAZTcWPr57A/0'
2026-06-15T23:31:02.623+00:00  }
2026-06-15T23:31:02.623+00:00  unsubscriptions (aedes_wRYH4YyvTqOHAZTcWPr57A/0): [ '#' ]
2026-06-15T23:31:02.623+00:00  publish (broker): {
2026-06-15T23:31:02.623+00:00    topic: 'state/clients',
2026-06-15T23:31:02.624+00:00    payload_str: '[{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-15T23:31:02.624+00:00  }
2026-06-15T23:31:02.624+00:00  publish (broker): {
2026-06-15T23:31:02.624+00:00    topic: '$SYS/e8241e80-cc13-420d-8a06-500edf819a9f/new/unsubscribes',
2026-06-15T23:31:02.624+00:00    payload_str: '{"clientId":"aedes_wRYH4YyvTqOHAZTcWPr57A/0","subs":["#"]}'
2026-06-15T23:31:02.624+00:00  }
2026-06-15T23:31:02.633+00:00  [API:/scripts/deactivate]

logs for qtpy_esp32s3_n4r2/low: serial / protomq / flash — in the per-log Artifacts

📜 `qtpy_esp32s3_n4r2` high · serial.log (✓ around the detected test phrase)
2026-06-15T23:33:15.963+00:00  Encoding registration request...Encoding registration msg...Published!
2026-06-15T23:33:15.964+00:00  Polling for registration message response...2
2026-06-15T23:33:16.571+00:00  GOT Registration Response Message:
2026-06-15T23:33:16.581+00:00  Hardware Response Msg:
2026-06-15T23:33:16.582+00:00  	GPIO Pins: 30
2026-06-15T23:33:16.582+00:00  	Analog Pins: 4
2026-06-15T23:33:16.583+00:00  	Reference voltage: 2.50v
2026-06-15T23:33:16.583+00:00  cbSignalTopic: New Msg on Signal Topic
2026-06-15T23:33:16.584+00:00  2 bytes.
2026-06-15T23:33:16.584+00:00  decodeSignalMsg
2026-06-15T23:33:16.584+00:00  cbSignalMsg
2026-06-15T23:33:16.584+00:00  Sub-messages found: 1
2026-06-15T23:33:16.584+00:00  Signal Msg Tag: Pin Configuration
2026-06-15T23:33:16.588+00:00  Initial Pin Configuration Complete!
2026-06-15T23:33:16.588+00:00  Completed registration process, configuration next!
2026-06-15T23:33:16.594+00:00  Publishing to pin config complete...
2026-06-15T23:33:16.595+00:00  Published pin config complete message!
2026-06-15T23:33:16.596+00:00  Hardware configured successfully!
2026-06-15T23:33:18.156+00:00  Registration and configuration complete!
2026-06-15T23:33:18.157+00:00  Running application...
2026-06-15T23:33:18.184+00:00  Sending MQTT PING: * NEW MESSAGE [Topic: Pixels]: 
2026-06-15T23:33:18.184+00:00  11 bytes.
2026-06-15T23:33:18.185+00:00  [Message Type]: wippersnapper_signal_v1_PixelsRequest_req_pixels_write_tag
2026-06-15T23:33:18.185+00:00  Filling strand on D0
2026-06-15T23:33:18.204+00:00  ERROR: Pixel strand not found, can not write a color to the strand!
2026-06-15T23:33:18.204+00:00  SUCCESS!
2026-06-15T23:33:18.205+00:00  WiFi RSSI: -57
2026-06-15T23:33:23.267+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T23:33:23.268+00:00  WiFi RSSI: -56
2026-06-15T23:33:28.436+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T23:33:28.437+00:00  WiFi RSSI: -56
📜 `qtpy_esp32s3_n4r2` high · protomq.log (✓ around the detected test phrase)
2026-06-15T23:33:47.780+00:00  publish (broker): {
2026-06-15T23:33:47.780+00:00    topic: '$SYS/7260fcbd-996c-4b4f-9bd2-a5cf7cb39efd/new/unsubscribes',
2026-06-15T23:33:47.781+00:00    payload_str: '{"clientId":"aedes_cELTmwEZTlSx1+VWgX+qLg/2","subs":["hil/wprsnpr/#"]}'
2026-06-15T23:33:47.781+00:00  }
2026-06-15T23:33:47.784+00:00  publish (broker): {
2026-06-15T23:33:47.784+00:00    topic: 'state/clients',
2026-06-15T23:33:47.784+00:00    payload_str: '[{"id":"aedes_cELTmwEZTlSx1+VWgX+qLg/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-15T23:33:47.785+00:00  }
2026-06-15T23:33:47.785+00:00  publish (broker): {
2026-06-15T23:33:47.786+00:00    topic: 'state/clients',
2026-06-15T23:33:47.786+00:00    payload_str: '[{"id":"aedes_cELTmwEZTlSx1+VWgX+qLg/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-15T23:33:47.786+00:00  }
2026-06-15T23:33:49.165+00:00  disconnected (aedes_cELTmwEZTlSx1+VWgX+qLg/0)
2026-06-15T23:33:49.165+00:00  publish (broker): {
2026-06-15T23:33:49.165+00:00    topic: 'state/clients',
2026-06-15T23:33:49.166+00:00    payload_str: '[{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-15T23:33:49.166+00:00  }
2026-06-15T23:33:49.166+00:00  publish (broker): {
2026-06-15T23:33:49.166+00:00    topic: '$SYS/7260fcbd-996c-4b4f-9bd2-a5cf7cb39efd/disconnect/clients',
2026-06-15T23:33:49.166+00:00    payload_str: 'aedes_cELTmwEZTlSx1+VWgX+qLg/0'
2026-06-15T23:33:49.166+00:00  }
2026-06-15T23:33:49.166+00:00  unsubscriptions (aedes_cELTmwEZTlSx1+VWgX+qLg/0): [ '#' ]
2026-06-15T23:33:49.166+00:00  publish (broker): {
2026-06-15T23:33:49.166+00:00    topic: 'state/clients',
2026-06-15T23:33:49.166+00:00    payload_str: '[{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-15T23:33:49.166+00:00  }
2026-06-15T23:33:49.166+00:00  publish (broker): {
2026-06-15T23:33:49.166+00:00    topic: '$SYS/7260fcbd-996c-4b4f-9bd2-a5cf7cb39efd/new/unsubscribes',
2026-06-15T23:33:49.166+00:00    payload_str: '{"clientId":"aedes_cELTmwEZTlSx1+VWgX+qLg/0","subs":["#"]}'
2026-06-15T23:33:49.166+00:00  }
2026-06-15T23:33:49.176+00:00  [API:/scripts/deactivate]

logs for qtpy_esp32s3_n4r2/high: serial / protomq / flash — in the per-log Artifacts

Expected: release rebooted=true (crash), PR rebooted=false (graceful).

… TCP connect

The check-in protomq window quoted the bare `connected (io-…)` — connectivity, not
proof of check-in. Anchor it on the actual registration handshake instead:
RegistrationComplete / CreateDescriptionResponse / "Auto-Responding to checkin" /
totalGpioPins (broker checkinResponse with pin counts + reference voltage), plus the
device-side serial markers. The window now shows version → checkinResponse(pins) →
RegistrationComplete — the real check-in evidence.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

🔌 HIL test results — run #15

commit fc9c7e9 · 2026-06-15 23:48:31Z · full logs (serial.log / protomq.log / flash.log) in the hil-assets artifact

✅ Check-in smoke test

Flash this PR's build → write secrets → power-cycle → assert the device checks in to the broker.

target this PR check-in
qtpy_esp32s3_n4r2 flashed ok=true ✅ (host rebooted — retried x2)
📜 `qtpy_esp32s3_n4r2` checkin · serial.log (✓ around the detected test phrase)
2026-06-15T23:54:06.882+00:00  Connecting to WiFi (attempt #0)
2026-06-15T23:54:12.528+00:00  Connected to WiFi!
2026-06-15T23:54:12.529+00:00  Connecting to AIO MQTT (attempt #0)
2026-06-15T23:54:12.529+00:00  WiFi Status: 20
2026-06-15T23:54:13.403+00:00  Registering hardware with WipperSnapper...
2026-06-15T23:54:13.404+00:00  Registering hardware with IO...
2026-06-15T23:54:13.422+00:00  Encoding registration request...Encoding registration msg...Published!
2026-06-15T23:54:13.423+00:00  Polling for registration message response...2
2026-06-15T23:54:14.042+00:00  GOT Registration Response Message:
2026-06-15T23:54:14.042+00:00  Hardware Response Msg:
2026-06-15T23:54:14.043+00:00  	GPIO Pins: 30
2026-06-15T23:54:14.043+00:00  	Analog Pins: 4
2026-06-15T23:54:14.043+00:00  	Reference voltage: 2.50v
2026-06-15T23:54:14.043+00:00  cbSignalTopic: New Msg on Signal Topic
2026-06-15T23:54:14.044+00:00  2 bytes.
2026-06-15T23:54:14.044+00:00  decodeSignalMsg
2026-06-15T23:54:14.044+00:00  cbSignalMsg
2026-06-15T23:54:14.044+00:00  Sub-messages found: 1
2026-06-15T23:54:14.044+00:00  Signal Msg Tag: Pin Configuration
2026-06-15T23:54:14.048+00:00  Initial Pin Configuration Complete!
2026-06-15T23:54:14.049+00:00  Completed registration process, configuration next!
2026-06-15T23:54:14.051+00:00  Publishing to pin config complete...
2026-06-15T23:54:14.054+00:00  Published pin config complete message!
2026-06-15T23:54:14.055+00:00  Hardware configured successfully!
2026-06-15T23:54:15.615+00:00  Registration and configuration complete!
2026-06-15T23:54:15.616+00:00  Running application...
2026-06-15T23:54:15.624+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T23:54:15.634+00:00  WiFi RSSI: -56
2026-06-15T23:54:20.669+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T23:54:20.670+00:00  WiFi RSSI: -57
2026-06-15T23:54:25.940+00:00  Sending MQTT PING: SUCCESS!
📜 `qtpy_esp32s3_n4r2` checkin · protomq.log (✓ around the detected test phrase)
2026-06-15T23:54:13.447+00:00  [Fallback V1] Auto-Responding to checkin → hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker
2026-06-15T23:54:13.447+00:00    response: {"response":"RESPONSE_OK","totalGpioPins":30,"totalAnalogPins":4,"referenceVoltage":2.5,"totalI2cPorts":1}
2026-06-15T23:54:13.449+00:00  [V1 b2d] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker → wippersnapper.description.v1.CreateDescriptionResponse
2026-06-15T23:54:13.449+00:00    decoded: {
2026-06-15T23:54:13.449+00:00    "response": "RESPONSE_OK",
2026-06-15T23:54:13.449+00:00    "totalGpioPins": 30,
2026-06-15T23:54:13.449+00:00    "totalAnalogPins": 4,
2026-06-15T23:54:13.450+00:00    "referenceVoltage": 2.5,
2026-06-15T23:54:13.450+00:00    "totalI2cPorts": 1
2026-06-15T23:54:13.450+00:00  }
2026-06-15T23:54:13.461+00:00  [Fallback V1] Sending empty pin config → hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker
2026-06-15T23:54:13.461+00:00    payload: {"pinConfigs":{"list":[]}} (3200)
2026-06-15T23:54:13.462+00:00  [V1 b2d] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker → wippersnapper.signal.v1.CreateSignalRequest
2026-06-15T23:54:13.462+00:00    decoded: {
2026-06-15T23:54:13.462+00:00    "pinConfigs": {
2026-06-15T23:54:13.462+00:00      "list": []
2026-06-15T23:54:13.463+00:00    }
2026-06-15T23:54:13.463+00:00  }
2026-06-15T23:54:13.464+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/info/status
2026-06-15T23:54:13.465+00:00    {"machineName":"qtpy-esp32s3-n4r2","macAddr":13210089,"strVersion":"1.0.0-beta.130"}
2026-06-15T23:54:13.465+00:00  publish (broker): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker
2026-06-15T23:54:13.465+00:00    {"response":"RESPONSE_OK","totalGpioPins":30,"totalAnalogPins":4,"referenceVoltage":2.5,"totalI2cPorts":1}
2026-06-15T23:54:13.467+00:00  publish (broker): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker
2026-06-15T23:54:13.468+00:00    {"pinConfigs":{}}
2026-06-15T23:54:14.050+00:00  [V1 d2b] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/device/complete → wippersnapper.description.v1.RegistrationComplete
2026-06-15T23:54:14.050+00:00    decoded: {
2026-06-15T23:54:14.051+00:00    "isComplete": true
2026-06-15T23:54:14.051+00:00  }
2026-06-15T23:54:14.051+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/device/complete
2026-06-15T23:54:14.051+00:00    {"isComplete":true}
2026-06-15T23:54:14.057+00:00  [V1 d2b] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/device/pinConfigComplete → wippersnapper.signal.v1.SignalResponse

logs for qtpy_esp32s3_n4r2/checkin: serial / protomq / flash — in the per-log Artifacts

Expected: ok=true (device flashed + configured + checked in).

🧪 pixelWrite uninitialised-strand regression (#926)

v1 ws.signal.pixelWrite to an uninitialised strand (pin D0, colour 200) — release should crash+reboot, the fix should log + continue (#926 / fixed by #927).

target release 1.0.0-beta.127 this PR verdict
qtpy_esp32s3_n4r2 rebooted=true rebooted=false
📜 `qtpy_esp32s3_n4r2` low · serial.log (✓ around the detected test phrase)
2026-06-15T23:57:16.303+00:00  Connecting to WiFi (attempt #0)
2026-06-15T23:57:21.967+00:00  Connected to WiFi!
2026-06-15T23:57:21.968+00:00  Connecting to AIO MQTT (attempt #0)
2026-06-15T23:57:21.968+00:00  WiFi Status: 20
2026-06-15T23:57:22.831+00:00  Registering hardware with WipperSnapper...
2026-06-15T23:57:22.832+00:00  Registering hardware with IO...
2026-06-15T23:57:22.851+00:00  Encoding registration request...Encoding registration msg...Published!
2026-06-15T23:57:22.851+00:00  Polling for registration message response...2
2026-06-15T23:57:23.457+00:00  GOT Registration Response Message:
2026-06-15T23:57:23.461+00:00  Hardware Response Msg:
2026-06-15T23:57:23.461+00:00  	GPIO Pins: 30
2026-06-15T23:57:23.462+00:00  	Analog Pins: 4
2026-06-15T23:57:23.462+00:00  	Reference voltage: 2.50v
2026-06-15T23:57:23.463+00:00  cbSignalTopic: New Msg on Signal Topic
2026-06-15T23:57:23.463+00:00  2 bytes.
2026-06-15T23:57:23.463+00:00  decodeSignalMsg
2026-06-15T23:57:23.464+00:00  cbSignalMsg
2026-06-15T23:57:23.464+00:00  Sub-messages found: 1
2026-06-15T23:57:23.465+00:00  Signal Msg Tag: Pin Configuration
2026-06-15T23:57:23.465+00:00  Initial Pin Configuration Complete!
2026-06-15T23:57:23.472+00:00  Completed registration process, configuration next!
2026-06-15T23:57:23.479+00:00  Publishing to pin config complete...
2026-06-15T23:57:23.482+00:00  Published pin config complete message!
2026-06-15T23:57:23.483+00:00  Hardware configured successfully!
2026-06-15T23:57:25.047+00:00  Registration and configuration complete!
2026-06-15T23:57:25.048+00:00  Running application...
2026-06-15T23:57:25.048+00:00  Sending MQTT PING: * NEW MESSAGE [Topic: Pixels]: 
2026-06-15T23:57:25.049+00:00  11 bytes.
2026-06-15T23:57:25.049+00:00  [Message Type]: wippersnapper_signal_v1_PixelsRequest_req_pixels_write_tag
2026-06-15T23:57:25.051+00:00  ERROR: Unable to perform gamma correction, unknown strand type!
2026-06-15T23:57:30.377+00:00  Filling color: 200WipperSnapper found these WiFi networks:
📜 `qtpy_esp32s3_n4r2` low · protomq.log (✓ around the detected test phrase)
2026-06-15T23:57:30.682+00:00  publish (broker): {
2026-06-15T23:57:30.683+00:00    topic: '$SYS/636b32a6-82d2-4102-95ec-9fa29345b07f/new/unsubscribes',
2026-06-15T23:57:30.683+00:00    payload_str: '{"clientId":"aedes_7XVNhyhbRxu0Yu6iV9oBXw/2","subs":["hil/wprsnpr/#"]}'
2026-06-15T23:57:30.683+00:00  }
2026-06-15T23:57:30.686+00:00  publish (broker): {
2026-06-15T23:57:30.686+00:00    topic: 'state/clients',
2026-06-15T23:57:30.687+00:00    payload_str: '[{"id":"aedes_7XVNhyhbRxu0Yu6iV9oBXw/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-15T23:57:30.687+00:00  }
2026-06-15T23:57:30.687+00:00  publish (broker): {
2026-06-15T23:57:30.688+00:00    topic: 'state/clients',
2026-06-15T23:57:30.688+00:00    payload_str: '[{"id":"aedes_7XVNhyhbRxu0Yu6iV9oBXw/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-15T23:57:30.688+00:00  }
2026-06-15T23:57:30.978+00:00  disconnected (aedes_7XVNhyhbRxu0Yu6iV9oBXw/0)
2026-06-15T23:57:30.979+00:00  publish (broker): {
2026-06-15T23:57:30.979+00:00    topic: 'state/clients',
2026-06-15T23:57:30.979+00:00    payload_str: '[{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-15T23:57:30.979+00:00  }
2026-06-15T23:57:30.979+00:00  publish (broker): {
2026-06-15T23:57:30.979+00:00    topic: '$SYS/636b32a6-82d2-4102-95ec-9fa29345b07f/disconnect/clients',
2026-06-15T23:57:30.979+00:00    payload_str: 'aedes_7XVNhyhbRxu0Yu6iV9oBXw/0'
2026-06-15T23:57:30.979+00:00  }
2026-06-15T23:57:30.979+00:00  unsubscriptions (aedes_7XVNhyhbRxu0Yu6iV9oBXw/0): [ '#' ]
2026-06-15T23:57:30.979+00:00  publish (broker): {
2026-06-15T23:57:30.979+00:00    topic: 'state/clients',
2026-06-15T23:57:30.979+00:00    payload_str: '[{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-15T23:57:30.979+00:00  }
2026-06-15T23:57:30.979+00:00  publish (broker): {
2026-06-15T23:57:30.980+00:00    topic: '$SYS/636b32a6-82d2-4102-95ec-9fa29345b07f/new/unsubscribes',
2026-06-15T23:57:30.980+00:00    payload_str: '{"clientId":"aedes_7XVNhyhbRxu0Yu6iV9oBXw/0","subs":["#"]}'
2026-06-15T23:57:30.980+00:00  }
2026-06-15T23:57:30.986+00:00  [API:/scripts/deactivate]

logs for qtpy_esp32s3_n4r2/low: serial / protomq / flash — in the per-log Artifacts

📜 `qtpy_esp32s3_n4r2` high · serial.log (✓ around the detected test phrase)
2026-06-15T23:59:44.876+00:00  Encoding registration request...Encoding registration msg...Published!
2026-06-15T23:59:44.877+00:00  Polling for registration message response...2
2026-06-15T23:59:45.482+00:00  GOT Registration Response Message:
2026-06-15T23:59:45.482+00:00  Hardware Response Msg:
2026-06-15T23:59:45.482+00:00  	GPIO Pins: 30
2026-06-15T23:59:45.486+00:00  	Analog Pins: 4
2026-06-15T23:59:45.487+00:00  	Reference voltage: 2.50v
2026-06-15T23:59:45.487+00:00  cbSignalTopic: New Msg on Signal Topic
2026-06-15T23:59:45.488+00:00  2 bytes.
2026-06-15T23:59:45.488+00:00  decodeSignalMsg
2026-06-15T23:59:45.489+00:00  cbSignalMsg
2026-06-15T23:59:45.489+00:00  Sub-messages found: 1
2026-06-15T23:59:45.489+00:00  Signal Msg Tag: Pin Configuration
2026-06-15T23:59:45.490+00:00  Initial Pin Configuration Complete!
2026-06-15T23:59:45.499+00:00  Completed registration process, configuration next!
2026-06-15T23:59:45.505+00:00  Publishing to pin config complete...
2026-06-15T23:59:45.506+00:00  Published pin config complete message!
2026-06-15T23:59:45.507+00:00  Hardware configured successfully!
2026-06-15T23:59:47.070+00:00  Registration and configuration complete!
2026-06-15T23:59:47.073+00:00  Running application...
2026-06-15T23:59:47.097+00:00  Sending MQTT PING: * NEW MESSAGE [Topic: Pixels]: 
2026-06-15T23:59:47.098+00:00  11 bytes.
2026-06-15T23:59:47.098+00:00  [Message Type]: wippersnapper_signal_v1_PixelsRequest_req_pixels_write_tag
2026-06-15T23:59:47.099+00:00  Filling strand on D0
2026-06-15T23:59:47.117+00:00  ERROR: Pixel strand not found, can not write a color to the strand!
2026-06-15T23:59:47.117+00:00  SUCCESS!
2026-06-15T23:59:47.118+00:00  WiFi RSSI: -57
2026-06-15T23:59:52.257+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T23:59:52.257+00:00  WiFi RSSI: -56
2026-06-15T23:59:57.376+00:00  Sending MQTT PING: SUCCESS!
2026-06-15T23:59:57.377+00:00  WiFi RSSI: -56
📜 `qtpy_esp32s3_n4r2` high · protomq.log (✓ around the detected test phrase)
2026-06-16T00:00:16.694+00:00  publish (broker): {
2026-06-16T00:00:16.694+00:00    topic: '$SYS/84b105f7-1649-4bea-9dc3-f2a1798637db/new/unsubscribes',
2026-06-16T00:00:16.695+00:00    payload_str: '{"clientId":"aedes_cREaMvxBTVi1qeUMZHVpwg/2","subs":["hil/wprsnpr/#"]}'
2026-06-16T00:00:16.695+00:00  }
2026-06-16T00:00:16.697+00:00  publish (broker): {
2026-06-16T00:00:16.697+00:00    topic: 'state/clients',
2026-06-16T00:00:16.697+00:00    payload_str: '[{"id":"aedes_cREaMvxBTVi1qeUMZHVpwg/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T00:00:16.698+00:00  }
2026-06-16T00:00:16.698+00:00  publish (broker): {
2026-06-16T00:00:16.698+00:00    topic: 'state/clients',
2026-06-16T00:00:16.698+00:00    payload_str: '[{"id":"aedes_cREaMvxBTVi1qeUMZHVpwg/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T00:00:16.699+00:00  }
2026-06-16T00:00:17.863+00:00  disconnected (aedes_cREaMvxBTVi1qeUMZHVpwg/0)
2026-06-16T00:00:17.863+00:00  publish (broker): {
2026-06-16T00:00:17.864+00:00    topic: 'state/clients',
2026-06-16T00:00:17.864+00:00    payload_str: '[{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T00:00:17.864+00:00  }
2026-06-16T00:00:17.864+00:00  publish (broker): {
2026-06-16T00:00:17.864+00:00    topic: '$SYS/84b105f7-1649-4bea-9dc3-f2a1798637db/disconnect/clients',
2026-06-16T00:00:17.864+00:00    payload_str: 'aedes_cREaMvxBTVi1qeUMZHVpwg/0'
2026-06-16T00:00:17.864+00:00  }
2026-06-16T00:00:17.864+00:00  unsubscriptions (aedes_cREaMvxBTVi1qeUMZHVpwg/0): [ '#' ]
2026-06-16T00:00:17.864+00:00  publish (broker): {
2026-06-16T00:00:17.864+00:00    topic: 'state/clients',
2026-06-16T00:00:17.864+00:00    payload_str: '[{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T00:00:17.864+00:00  }
2026-06-16T00:00:17.864+00:00  publish (broker): {
2026-06-16T00:00:17.864+00:00    topic: '$SYS/84b105f7-1649-4bea-9dc3-f2a1798637db/new/unsubscribes',
2026-06-16T00:00:17.864+00:00    payload_str: '{"clientId":"aedes_cREaMvxBTVi1qeUMZHVpwg/0","subs":["#"]}'
2026-06-16T00:00:17.865+00:00  }
2026-06-16T00:00:17.871+00:00  [API:/scripts/deactivate]

logs for qtpy_esp32s3_n4r2/high: serial / protomq / flash — in the per-log Artifacts

Expected: release rebooted=true (crash), PR rebooted=false (graceful).

@tyeth
tyeth marked this pull request as ready for review June 16, 2026 00:04

@tyeth tyeth left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks relatively good. Should surface all the ENV VARs like Lines Before and After the test phrases / conditions in logs provided in the PR summaries. Either as workflow options (with defaults) and/or at top of file. Possibly a readme. Possibly move script elsewhere (lib subfolder?). Tests could move too. The WS Python HIL tests will alter things a bit and maybe bring more clarity on reusable fixtures (like a dual library set of mqtt protobuf scenarios in pytest and then individual lib / serial expectations)

final step:
we probably want serial since boot in the quotes by default for these specific tests (if the lines-before proof summary env var is -1), and the timestamps of the two quoted log sections for the last test run show different time periods by a minute or so which shows they don't line up and the protomq log quote is therefore useless (missed event) especially for comparison with the serial log

…to serial window

The proof sections were windowed independently by a fixed LINE count, but the
broker (protomq) log is far chattier than the device serial log, so N lines spans
a very different wall-clock duration in each — the two quotes drifted to different
minutes and the protomq quote missed the events corresponding to the serial test
phrase (useless for side-by-side comparison).

- HIL_PROOF_BEFORE now defaults to -1 = 'from boot': the serial quote shows the
  whole boot->check-in story up to just after the test phrase, not a fixed slice.
- proof_window records its window's UTC-ms time span (PW_TS_START/PW_TS_END).
- new time_window() selects protomq lines within the SAME wall-clock span as the
  serial quote (logs share one clock; fixed-width ISO-8601 UTC sorts lexically =
  chronologically), so the broker handshake lines up with the serial events.
- +4 tests (since-boot window, recorded time span, time_window selection).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

🔌 HIL test results — run #16

commit 201662d · 2026-06-16 00:46:24Z · full logs (serial.log / protomq.log / flash.log) in the hil-assets artifact

✅ Check-in smoke test

Flash this PR's build → write secrets → power-cycle → assert the device checks in to the broker.

target this PR check-in
qtpy_esp32s3_n4r2 flashed ok=true ✅

🧪 pixelWrite uninitialised-strand regression (#926)

v1 ws.signal.pixelWrite to an uninitialised strand (pin D0, colour 200) — release should crash+reboot, the fix should log + continue (#926 / fixed by #927).

target release 1.0.0-beta.127 this PR verdict
qtpy_esp32s3_n4r2 rebooted=true rebooted=unknown ❌ (high: host rebooted — retried (x3))

…der set -u)

proof_window runs in a command-substitution subshell (win=$(proof_window ...)), so
the PW_TS_START/PW_TS_END globals it set never reached the caller — referencing them
under 'set -u' crashed the test script AFTER the verdict (check-in showed ok=true but
the step still failed, and no proof sections were emitted). Derive the window's time
span from the CAPTURED window text instead (first/last stamped line). +1 regression
test that runs append_proof under set -u and asserts the protomq quote is time-aligned.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

🔌 HIL test results — run #17

commit dc9a65b · 2026-06-16 01:11:25Z · full logs (serial.log / protomq.log / flash.log) in the hil-assets artifact

✅ Check-in smoke test

Flash this PR's build → write secrets → power-cycle → assert the device checks in to the broker.

target this PR check-in
qtpy_esp32s3_n4r2 flashed ok=true ✅
📜 `qtpy_esp32s3_n4r2` checkin · serial.log (✓ from boot to just after the detected test phrase)
2026-06-16T01:13:19.312+00:00  Fatal Error: Halted execution!
2026-06-16T01:13:19.313+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:13:20.227+00:00  Fatal Error: Halted execution!
2026-06-16T01:13:20.228+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:13:21.237+00:00  Fatal Error: Halted execution!
2026-06-16T01:13:21.238+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:13:22.261+00:00  Fatal Error: Halted execution!
2026-06-16T01:13:22.262+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:13:23.223+00:00  Fatal Error: Halted execution!
2026-06-16T01:13:23.224+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:13:24.330+00:00  Fatal Error: Halted execution!
2026-06-16T01:13:24.330+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:13:25.269+00:00  Fatal Error: Halted execution!
2026-06-16T01:13:25.270+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:13:26.263+00:00  Fatal Error: Halted execution!
2026-06-16T01:13:26.263+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:13:27.223+00:00  Fatal Error: Halted execution!
2026-06-16T01:13:27.223+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:13:28.226+00:00  Fatal Error: Halted execution!
2026-06-16T01:13:28.226+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:13:29.222+00:00  Fatal Error: Halted execution!
2026-06-16T01:13:29.223+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:13:45.218+00:00  WipperSnapper found these WiFi networks:
2026-06-16T01:13:45.219+00:00  free4all (EC:FC:2F:83:DC:D8) -49dB (ch1)
2026-06-16T01:13:45.219+00:00  SmartLife-061B (0:33:7A:9B:6:1B) -87dB (ch6)
2026-06-16T01:13:45.220+00:00  free4all (10:7C:61:82:50:F1) -93dB (ch1)
2026-06-16T01:13:45.220+00:00  YouFibre-4365 (28:F5:D1:EE:83:32) -95dB (ch11)
2026-06-16T01:13:45.731+00:00  Connecting to WiFi (attempt #0)
2026-06-16T01:13:51.365+00:00  Connected to WiFi!
2026-06-16T01:13:51.366+00:00  Connecting to AIO MQTT (attempt #0)
2026-06-16T01:13:51.367+00:00  WiFi Status: 20
2026-06-16T01:13:52.217+00:00  Registering hardware with WipperSnapper...
2026-06-16T01:13:52.218+00:00  Registering hardware with IO...
2026-06-16T01:13:52.226+00:00  Encoding registration request...Encoding registration msg...Published!
2026-06-16T01:13:52.226+00:00  Polling for registration message response...2
2026-06-16T01:13:52.833+00:00  GOT Registration Response Message:
2026-06-16T01:13:52.834+00:00  Hardware Response Msg:
2026-06-16T01:13:52.834+00:00  	GPIO Pins: 30
2026-06-16T01:13:52.835+00:00  	Analog Pins: 4
2026-06-16T01:13:52.835+00:00  	Reference voltage: 2.50v
2026-06-16T01:13:52.843+00:00  cbSignalTopic: New Msg on Signal Topic
2026-06-16T01:13:52.843+00:00  2 bytes.
2026-06-16T01:13:52.843+00:00  decodeSignalMsg
2026-06-16T01:13:52.844+00:00  cbSignalMsg
2026-06-16T01:13:52.844+00:00  Sub-messages found: 1
2026-06-16T01:13:52.844+00:00  Signal Msg Tag: Pin Configuration
2026-06-16T01:13:52.845+00:00  Initial Pin Configuration Complete!
2026-06-16T01:13:52.847+00:00  Completed registration process, configuration next!
2026-06-16T01:13:52.855+00:00  Publishing to pin config complete...
2026-06-16T01:13:52.858+00:00  Published pin config complete message!
2026-06-16T01:13:52.858+00:00  Hardware configured successfully!
2026-06-16T01:13:54.436+00:00  Registration and configuration complete!
2026-06-16T01:13:54.436+00:00  Running application...
2026-06-16T01:13:54.467+00:00  Sending MQTT PING: SUCCESS!
2026-06-16T01:13:54.467+00:00  WiFi RSSI: -49
2026-06-16T01:13:59.493+00:00  Sending MQTT PING: SUCCESS!
2026-06-16T01:13:59.494+00:00  WiFi RSSI: -50
2026-06-16T01:14:04.677+00:00  Sending MQTT PING: SUCCESS!
📜 `qtpy_esp32s3_n4r2` checkin · protomq.log (⏱ aligned to the serial window (2026-06-16T01:13:19.312+00:00 … 2026-06-16T01:14:04.677+00:00))
2026-06-16T01:13:24.668+00:00  publish (broker): {
2026-06-16T01:13:24.669+00:00    topic: '$SYS/14ecc055-b99a-4abe-bb5e-6fc033c40dfc/heartbeat',
2026-06-16T01:13:24.669+00:00    payload_str: '14ecc055-b99a-4abe-bb5e-6fc033c40dfc'
2026-06-16T01:13:24.669+00:00  }
2026-06-16T01:13:49.003+00:00  authenticate: undefined undefined aedes_gTwlNGO6Qz6xfkebi+FrAQ/1
2026-06-16T01:13:49.003+00:00  connected (aedes_gTwlNGO6Qz6xfkebi+FrAQ/1)
2026-06-16T01:13:49.006+00:00  publish (broker): {
2026-06-16T01:13:49.006+00:00    topic: '$SYS/14ecc055-b99a-4abe-bb5e-6fc033c40dfc/new/clients',
2026-06-16T01:13:49.007+00:00    payload_str: 'aedes_gTwlNGO6Qz6xfkebi+FrAQ/1'
2026-06-16T01:13:49.007+00:00  }
2026-06-16T01:13:49.018+00:00  ready (aedes_gTwlNGO6Qz6xfkebi+FrAQ/1)
2026-06-16T01:13:49.026+00:00  publish (broker): {
2026-06-16T01:13:49.027+00:00    topic: 'state/clients',
2026-06-16T01:13:49.027+00:00    payload_str: '[{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/0","subscriptions":["#"]},{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/1","subscriptions":[]}]'
2026-06-16T01:13:49.027+00:00  }
2026-06-16T01:13:49.027+00:00  subscriptions (aedes_gTwlNGO6Qz6xfkebi+FrAQ/1) [ 'hil/wprsnpr/#' ]
2026-06-16T01:13:49.031+00:00  publish (broker): {
2026-06-16T01:13:49.031+00:00    topic: '$SYS/14ecc055-b99a-4abe-bb5e-6fc033c40dfc/new/subscribes',
2026-06-16T01:13:49.031+00:00    payload_str: '{"clientId":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/1","subs":[{"topic":"hil/wprsnpr/#","qos":0}]}'
2026-06-16T01:13:49.032+00:00  }
2026-06-16T01:13:49.037+00:00  publish (broker): {
2026-06-16T01:13:49.043+00:00    topic: 'state/clients',
2026-06-16T01:13:49.044+00:00    payload_str: '[{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/0","subscriptions":["#"]},{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/1","subscriptions":["hil/wprsnpr/#"]}]'
2026-06-16T01:13:49.044+00:00  }
2026-06-16T01:13:51.993+00:00  authenticate: hil hil io-wipper-qtpy-esp32s3-n4r213210089
2026-06-16T01:13:51.995+00:00  connected (io-wipper-qtpy-esp32s3-n4r213210089)
2026-06-16T01:13:51.996+00:00  publish (broker): {
2026-06-16T01:13:51.996+00:00    topic: '$SYS/14ecc055-b99a-4abe-bb5e-6fc033c40dfc/new/clients',
2026-06-16T01:13:51.997+00:00    payload_str: 'io-wipper-qtpy-esp32s3-n4r213210089'
2026-06-16T01:13:51.997+00:00  }
2026-06-16T01:13:52.003+00:00  ready (io-wipper-qtpy-esp32s3-n4r213210089)
2026-06-16T01:13:52.004+00:00  publish (broker): {
2026-06-16T01:13:52.004+00:00    topic: 'state/clients',
2026-06-16T01:13:52.005+00:00    payload_str: '[{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/0","subscriptions":["#"]},{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":[]}]'
2026-06-16T01:13:52.006+00:00  }
2026-06-16T01:13:52.019+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T01:13:52.020+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker'
2026-06-16T01:13:52.020+00:00  ]
2026-06-16T01:13:52.020+00:00  publish (broker): {
2026-06-16T01:13:52.021+00:00    topic: '$SYS/14ecc055-b99a-4abe-bb5e-6fc033c40dfc/new/subscribes',
2026-06-16T01:13:52.021+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","qos":1}]}'
2026-06-16T01:13:52.021+00:00  }
2026-06-16T01:13:52.024+00:00  publish (broker): {
2026-06-16T01:13:52.025+00:00    topic: 'state/clients',
2026-06-16T01:13:52.025+00:00    payload_str: '[{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/0","subscriptions":["#"]},{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker"]}]'
2026-06-16T01:13:52.026+00:00  }
2026-06-16T01:13:52.036+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker' ]
2026-06-16T01:13:52.037+00:00  publish (broker): {
2026-06-16T01:13:52.037+00:00    topic: '$SYS/14ecc055-b99a-4abe-bb5e-6fc033c40dfc/new/subscribes',
2026-06-16T01:13:52.038+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","qos":1}]}'
2026-06-16T01:13:52.038+00:00  }
2026-06-16T01:13:52.041+00:00  publish (broker): {
2026-06-16T01:13:52.041+00:00    topic: 'state/clients',
2026-06-16T01:13:52.042+00:00    payload_str: '[{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/0","subscriptions":["#"]},{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker"]}]'
2026-06-16T01:13:52.042+00:00  }
2026-06-16T01:13:52.064+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T01:13:52.065+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c'
2026-06-16T01:13:52.065+00:00  ]
2026-06-16T01:13:52.067+00:00  publish (broker): {
2026-06-16T01:13:52.067+00:00    topic: '$SYS/14ecc055-b99a-4abe-bb5e-6fc033c40dfc/new/subscribes',
2026-06-16T01:13:52.067+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","qos":1}]}'
2026-06-16T01:13:52.068+00:00  }
2026-06-16T01:13:52.069+00:00  publish (broker): {
2026-06-16T01:13:52.070+00:00    topic: 'state/clients',
2026-06-16T01:13:52.070+00:00    payload_str: '[{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/0","subscriptions":["#"]},{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c"]}]'
2026-06-16T01:13:52.070+00:00  }
2026-06-16T01:13:52.088+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T01:13:52.089+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20'
2026-06-16T01:13:52.089+00:00  ]
2026-06-16T01:13:52.090+00:00  publish (broker): {
2026-06-16T01:13:52.091+00:00    topic: '$SYS/14ecc055-b99a-4abe-bb5e-6fc033c40dfc/new/subscribes',
2026-06-16T01:13:52.091+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","qos":1}]}'
2026-06-16T01:13:52.091+00:00  }
2026-06-16T01:13:52.103+00:00  publish (broker): {
2026-06-16T01:13:52.104+00:00    topic: 'state/clients',
2026-06-16T01:13:52.104+00:00    payload_str: '[{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/0","subscriptions":["#"]},{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20"]}]'
2026-06-16T01:13:52.104+00:00  }
2026-06-16T01:13:52.110+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T01:13:52.110+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo'
2026-06-16T01:13:52.111+00:00  ]
2026-06-16T01:13:52.111+00:00  publish (broker): {
2026-06-16T01:13:52.112+00:00    topic: '$SYS/14ecc055-b99a-4abe-bb5e-6fc033c40dfc/new/subscribes',
2026-06-16T01:13:52.112+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","qos":1}]}'
2026-06-16T01:13:52.113+00:00  }
2026-06-16T01:13:52.120+00:00  publish (broker): {
2026-06-16T01:13:52.121+00:00    topic: 'state/clients',
2026-06-16T01:13:52.121+00:00    payload_str: '[{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/0","subscriptions":["#"]},{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo"]}]'
2026-06-16T01:13:52.122+00:00  }
2026-06-16T01:13:52.128+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T01:13:52.129+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm'
2026-06-16T01:13:52.129+00:00  ]
2026-06-16T01:13:52.129+00:00  publish (broker): {
2026-06-16T01:13:52.130+00:00    topic: '$SYS/14ecc055-b99a-4abe-bb5e-6fc033c40dfc/new/subscribes',
2026-06-16T01:13:52.130+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","qos":1}]}'
2026-06-16T01:13:52.130+00:00  }
2026-06-16T01:13:52.132+00:00  publish (broker): {
2026-06-16T01:13:52.133+00:00    topic: 'state/clients',
2026-06-16T01:13:52.133+00:00    payload_str: '[{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/0","subscriptions":["#"]},{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm"]}]'
2026-06-16T01:13:52.133+00:00  }
2026-06-16T01:13:52.140+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T01:13:52.141+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel'
2026-06-16T01:13:52.141+00:00  ]
2026-06-16T01:13:52.142+00:00  publish (broker): {
2026-06-16T01:13:52.142+00:00    topic: '$SYS/14ecc055-b99a-4abe-bb5e-6fc033c40dfc/new/subscribes',
2026-06-16T01:13:52.142+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","qos":1}]}'
2026-06-16T01:13:52.142+00:00  }
2026-06-16T01:13:52.145+00:00  publish (broker): {
2026-06-16T01:13:52.146+00:00    topic: 'state/clients',
2026-06-16T01:13:52.146+00:00    payload_str: '[{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/0","subscriptions":["#"]},{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel"]}]'
2026-06-16T01:13:52.146+00:00  }
2026-06-16T01:13:52.160+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T01:13:52.161+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart'
2026-06-16T01:13:52.161+00:00  ]
2026-06-16T01:13:52.162+00:00  publish (broker): {
2026-06-16T01:13:52.162+00:00    topic: '$SYS/14ecc055-b99a-4abe-bb5e-6fc033c40dfc/new/subscribes',
2026-06-16T01:13:52.162+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","qos":1}]}'
2026-06-16T01:13:52.162+00:00  }
2026-06-16T01:13:52.163+00:00  publish (broker): {
2026-06-16T01:13:52.163+00:00    topic: 'state/clients',
2026-06-16T01:13:52.164+00:00    payload_str: '[{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/0","subscriptions":["#"]},{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart"]}]'
2026-06-16T01:13:52.164+00:00  }
2026-06-16T01:13:52.177+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T01:13:52.178+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display'
2026-06-16T01:13:52.178+00:00  ]
2026-06-16T01:13:52.178+00:00  publish (broker): {
2026-06-16T01:13:52.179+00:00    topic: '$SYS/14ecc055-b99a-4abe-bb5e-6fc033c40dfc/new/subscribes',
2026-06-16T01:13:52.179+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","qos":1}]}'
2026-06-16T01:13:52.179+00:00  }
2026-06-16T01:13:52.181+00:00  publish (broker): {
2026-06-16T01:13:52.182+00:00    topic: 'state/clients',
2026-06-16T01:13:52.182+00:00    payload_str: '[{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/0","subscriptions":["#"]},{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display"]}]'
2026-06-16T01:13:52.182+00:00  }
2026-06-16T01:13:52.192+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/errors' ]
2026-06-16T01:13:52.193+00:00  publish (broker): {
2026-06-16T01:13:52.193+00:00    topic: '$SYS/14ecc055-b99a-4abe-bb5e-6fc033c40dfc/new/subscribes',
2026-06-16T01:13:52.193+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/errors","qos":0}]}'
2026-06-16T01:13:52.194+00:00  }
2026-06-16T01:13:52.196+00:00  publish (broker): {
2026-06-16T01:13:52.196+00:00    topic: 'state/clients',
2026-06-16T01:13:52.196+00:00    payload_str: '[{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/0","subscriptions":["#"]},{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors"]}]'
2026-06-16T01:13:52.197+00:00  }
2026-06-16T01:13:52.202+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/throttle' ]
2026-06-16T01:13:52.203+00:00  publish (broker): {
2026-06-16T01:13:52.203+00:00    topic: '$SYS/14ecc055-b99a-4abe-bb5e-6fc033c40dfc/new/subscribes',
2026-06-16T01:13:52.203+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/throttle","qos":0}]}'
2026-06-16T01:13:52.204+00:00  }
2026-06-16T01:13:52.206+00:00  publish (broker): {
2026-06-16T01:13:52.207+00:00    topic: 'state/clients',
2026-06-16T01:13:52.207+00:00    payload_str: '[{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/0","subscriptions":["#"]},{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T01:13:52.207+00:00  }
2026-06-16T01:13:52.247+00:00  [V1 d2b] hil/wprsnpr/info/status → wippersnapper.description.v1.CreateDescriptionRequest
2026-06-16T01:13:52.248+00:00    decoded: {
2026-06-16T01:13:52.248+00:00    "machineName": "qtpy-esp32s3-n4r2",
2026-06-16T01:13:52.248+00:00    "macAddr": 13210089,
2026-06-16T01:13:52.248+00:00    "usbVid": 0,
2026-06-16T01:13:52.249+00:00    "usbPid": 0,
2026-06-16T01:13:52.249+00:00    "version": null,
2026-06-16T01:13:52.249+00:00    "verMajor": 0,
2026-06-16T01:13:52.249+00:00    "verMinor": 0,
2026-06-16T01:13:52.249+00:00    "verPatch": 0,
2026-06-16T01:13:52.249+00:00    "verPreRelease": "",
2026-06-16T01:13:52.250+00:00    "verBuild": 0,
2026-06-16T01:13:52.250+00:00    "strVersion": "1.0.0-beta.130"
2026-06-16T01:13:52.250+00:00  }
2026-06-16T01:13:52.259+00:00  [Fallback V1] Auto-Responding to checkin → hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker
2026-06-16T01:13:52.259+00:00    response: {"response":"RESPONSE_OK","totalGpioPins":30,"totalAnalogPins":4,"referenceVoltage":2.5,"totalI2cPorts":1}
2026-06-16T01:13:52.262+00:00  [V1 b2d] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker → wippersnapper.description.v1.CreateDescriptionResponse
2026-06-16T01:13:52.263+00:00    decoded: {
2026-06-16T01:13:52.263+00:00    "response": "RESPONSE_OK",
2026-06-16T01:13:52.263+00:00    "totalGpioPins": 30,
2026-06-16T01:13:52.263+00:00    "totalAnalogPins": 4,
2026-06-16T01:13:52.263+00:00    "referenceVoltage": 2.5,
2026-06-16T01:13:52.264+00:00    "totalI2cPorts": 1
2026-06-16T01:13:52.264+00:00  }
2026-06-16T01:13:52.279+00:00  [Fallback V1] Sending empty pin config → hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker
2026-06-16T01:13:52.279+00:00    payload: {"pinConfigs":{"list":[]}} (3200)
2026-06-16T01:13:52.280+00:00  [V1 b2d] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker → wippersnapper.signal.v1.CreateSignalRequest
2026-06-16T01:13:52.281+00:00    decoded: {
2026-06-16T01:13:52.281+00:00    "pinConfigs": {
2026-06-16T01:13:52.281+00:00      "list": []
2026-06-16T01:13:52.281+00:00    }
2026-06-16T01:13:52.281+00:00  }
2026-06-16T01:13:52.286+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/info/status
2026-06-16T01:13:52.286+00:00    {"machineName":"qtpy-esp32s3-n4r2","macAddr":13210089,"strVersion":"1.0.0-beta.130"}
2026-06-16T01:13:52.287+00:00  publish (broker): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker
2026-06-16T01:13:52.287+00:00    {"response":"RESPONSE_OK","totalGpioPins":30,"totalAnalogPins":4,"referenceVoltage":2.5,"totalI2cPorts":1}
2026-06-16T01:13:52.287+00:00  publish (broker): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker
2026-06-16T01:13:52.287+00:00    {"pinConfigs":{}}
2026-06-16T01:13:52.846+00:00  [V1 d2b] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/device/complete → wippersnapper.description.v1.RegistrationComplete
2026-06-16T01:13:52.846+00:00    decoded: {
2026-06-16T01:13:52.846+00:00    "isComplete": true
2026-06-16T01:13:52.847+00:00  }
2026-06-16T01:13:52.847+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/device/complete
2026-06-16T01:13:52.847+00:00    {"isComplete":true}
2026-06-16T01:13:52.864+00:00  [V1 d2b] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/device/pinConfigComplete → wippersnapper.signal.v1.SignalResponse
2026-06-16T01:13:52.864+00:00    decoded: {
2026-06-16T01:13:52.864+00:00    "configurationComplete": true
2026-06-16T01:13:52.865+00:00  }
2026-06-16T01:13:52.865+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/device/pinConfigComplete
2026-06-16T01:13:52.866+00:00    {"configurationComplete":true}
2026-06-16T01:13:53.875+00:00  disconnected (aedes_gTwlNGO6Qz6xfkebi+FrAQ/1)
2026-06-16T01:13:53.877+00:00  publish (broker): {
2026-06-16T01:13:53.877+00:00    topic: '$SYS/14ecc055-b99a-4abe-bb5e-6fc033c40dfc/disconnect/clients',
2026-06-16T01:13:53.877+00:00    payload_str: 'aedes_gTwlNGO6Qz6xfkebi+FrAQ/1'
2026-06-16T01:13:53.877+00:00  }
2026-06-16T01:13:53.878+00:00  unsubscriptions (aedes_gTwlNGO6Qz6xfkebi+FrAQ/1): [ 'hil/wprsnpr/#' ]
2026-06-16T01:13:53.878+00:00  publish (broker): {
2026-06-16T01:13:53.879+00:00    topic: '$SYS/14ecc055-b99a-4abe-bb5e-6fc033c40dfc/new/unsubscribes',
2026-06-16T01:13:53.879+00:00    payload_str: '{"clientId":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/1","subs":["hil/wprsnpr/#"]}'
2026-06-16T01:13:53.879+00:00  }
2026-06-16T01:13:53.880+00:00  publish (broker): {
2026-06-16T01:13:53.880+00:00    topic: 'state/clients',
2026-06-16T01:13:53.881+00:00    payload_str: '[{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T01:13:53.881+00:00  }
2026-06-16T01:13:53.881+00:00  publish (broker): {
2026-06-16T01:13:53.881+00:00    topic: 'state/clients',
2026-06-16T01:13:53.882+00:00    payload_str: '[{"id":"aedes_gTwlNGO6Qz6xfkebi+FrAQ/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T01:13:53.882+00:00  }

logs for qtpy_esp32s3_n4r2/checkin: serial / protomq / flash — in the per-log Artifacts

Expected: ok=true (device flashed + configured + checked in).

🧪 pixelWrite uninitialised-strand regression (#926)

v1 ws.signal.pixelWrite to an uninitialised strand (pin D0, colour 200) — release should crash+reboot, the fix should log + continue (#926 / fixed by #927).

target release 1.0.0-beta.127 this PR verdict
qtpy_esp32s3_n4r2 rebooted=true rebooted=false
📜 `qtpy_esp32s3_n4r2` low · serial.log (✓ from boot to just after the detected test phrase)
2026-06-16T01:16:47.130+00:00  Fatal Error: Halted execution!
2026-06-16T01:16:47.131+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:16:48.132+00:00  Fatal Error: Halted execution!
2026-06-16T01:16:48.133+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:16:49.142+00:00  Fatal Error: Halted execution!
2026-06-16T01:16:49.143+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:16:50.133+00:00  Fatal Error: Halted execution!
2026-06-16T01:16:50.133+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:16:51.133+00:00  Fatal Error: Halted execution!
2026-06-16T01:16:51.134+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:16:52.131+00:00  Fatal Error: Halted execution!
2026-06-16T01:16:52.132+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:16:53.130+00:00  Fatal Error: Halted execution!
2026-06-16T01:16:53.131+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:16:54.130+00:00  Fatal Error: Halted execution!
2026-06-16T01:16:54.131+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:16:55.130+00:00  Fatal Error: Halted execution!
2026-06-16T01:16:55.130+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:16:56.201+00:00  Fatal Error: Halted execution!
2026-06-16T01:16:56.201+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:17:11.774+00:00  WipperSnapper found these WiFi networks:
2026-06-16T01:17:11.775+00:00  free4all (EC:FC:2F:83:DC:D8) -48dB (ch1)
2026-06-16T01:17:11.776+00:00  SmartLife-061B (0:33:7A:9B:6:1B) -90dB (ch6)
2026-06-16T01:17:11.776+00:00  free4all (10:7C:61:82:50:F1) -93dB (ch1)
2026-06-16T01:17:12.312+00:00  Connecting to WiFi (attempt #0)
2026-06-16T01:17:18.008+00:00  Connected to WiFi!
2026-06-16T01:17:18.009+00:00  Connecting to AIO MQTT (attempt #0)
2026-06-16T01:17:18.009+00:00  WiFi Status: 20
2026-06-16T01:17:18.971+00:00  Registering hardware with WipperSnapper...
2026-06-16T01:17:18.971+00:00  Registering hardware with IO...
2026-06-16T01:17:18.979+00:00  Encoding registration request...Encoding registration msg...Published!
2026-06-16T01:17:18.980+00:00  Polling for registration message response...2
2026-06-16T01:17:19.585+00:00  GOT Registration Response Message:
2026-06-16T01:17:19.587+00:00  Hardware Response Msg:
2026-06-16T01:17:19.588+00:00  	GPIO Pins: 30
2026-06-16T01:17:19.588+00:00  	Analog Pins: 4
2026-06-16T01:17:19.589+00:00  	Reference voltage: 2.50v
2026-06-16T01:17:19.589+00:00  cbSignalTopic: New Msg on Signal Topic
2026-06-16T01:17:19.589+00:00  2 bytes.
2026-06-16T01:17:19.589+00:00  decodeSignalMsg
2026-06-16T01:17:19.589+00:00  cbSignalMsg
2026-06-16T01:17:19.592+00:00  Sub-messages found: 1
2026-06-16T01:17:19.592+00:00  Signal Msg Tag: Pin Configuration
2026-06-16T01:17:19.592+00:00  Initial Pin Configuration Complete!
2026-06-16T01:17:19.599+00:00  Completed registration process, configuration next!
2026-06-16T01:17:19.608+00:00  Publishing to pin config complete...
2026-06-16T01:17:19.610+00:00  Published pin config complete message!
2026-06-16T01:17:19.610+00:00  Hardware configured successfully!
2026-06-16T01:17:21.174+00:00  Registration and configuration complete!
2026-06-16T01:17:21.175+00:00  Running application...
2026-06-16T01:17:21.178+00:00  Sending MQTT PING: * NEW MESSAGE [Topic: Pixels]: 
2026-06-16T01:17:21.178+00:00  11 bytes.
2026-06-16T01:17:21.179+00:00  [Message Type]: wippersnapper_signal_v1_PixelsRequest_req_pixels_write_tag
2026-06-16T01:17:26.420+00:00  WipperSnapper found these WiFi networks:
2026-06-16T01:17:26.421+00:00  free4all (EC:FC:2F:83:DC:D8) -49dB (ch1)
📜 `qtpy_esp32s3_n4r2` low · protomq.log (⏱ aligned to the serial window (2026-06-16T01:16:47.130+00:00 … 2026-06-16T01:17:26.421+00:00))
2026-06-16T01:16:53.408+00:00  publish (broker): {
2026-06-16T01:16:53.409+00:00    topic: '$SYS/ab367d1c-234c-471f-aee6-07d941c39602/heartbeat',
2026-06-16T01:16:53.409+00:00    payload_str: 'ab367d1c-234c-471f-aee6-07d941c39602'
2026-06-16T01:16:53.409+00:00  }
2026-06-16T01:17:15.762+00:00  authenticate: undefined undefined aedes_z/e8bCK/SBSuQxNZl5JLiw/1
2026-06-16T01:17:15.763+00:00  connected (aedes_z/e8bCK/SBSuQxNZl5JLiw/1)
2026-06-16T01:17:15.766+00:00  publish (broker): {
2026-06-16T01:17:15.766+00:00    topic: '$SYS/ab367d1c-234c-471f-aee6-07d941c39602/new/clients',
2026-06-16T01:17:15.766+00:00    payload_str: 'aedes_z/e8bCK/SBSuQxNZl5JLiw/1'
2026-06-16T01:17:15.767+00:00  }
2026-06-16T01:17:15.778+00:00  ready (aedes_z/e8bCK/SBSuQxNZl5JLiw/1)
2026-06-16T01:17:15.784+00:00  publish (broker): {
2026-06-16T01:17:15.784+00:00    topic: 'state/clients',
2026-06-16T01:17:15.785+00:00    payload_str: '[{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/0","subscriptions":["#"]},{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/1","subscriptions":[]}]'
2026-06-16T01:17:15.785+00:00  }
2026-06-16T01:17:15.785+00:00  subscriptions (aedes_z/e8bCK/SBSuQxNZl5JLiw/1) [ 'hil/wprsnpr/#' ]
2026-06-16T01:17:15.787+00:00  publish (broker): {
2026-06-16T01:17:15.788+00:00    topic: '$SYS/ab367d1c-234c-471f-aee6-07d941c39602/new/subscribes',
2026-06-16T01:17:15.788+00:00    payload_str: '{"clientId":"aedes_z/e8bCK/SBSuQxNZl5JLiw/1","subs":[{"topic":"hil/wprsnpr/#","qos":0}]}'
2026-06-16T01:17:15.788+00:00  }
2026-06-16T01:17:15.793+00:00  publish (broker): {
2026-06-16T01:17:15.794+00:00    topic: 'state/clients',
2026-06-16T01:17:15.794+00:00    payload_str: '[{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/0","subscriptions":["#"]},{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/1","subscriptions":["hil/wprsnpr/#"]}]'
2026-06-16T01:17:15.794+00:00  }
2026-06-16T01:17:18.728+00:00  authenticate: hil hil io-wipper-qtpy-esp32s3-n4r213210089
2026-06-16T01:17:18.731+00:00  connected (io-wipper-qtpy-esp32s3-n4r213210089)
2026-06-16T01:17:18.731+00:00  publish (broker): {
2026-06-16T01:17:18.732+00:00    topic: '$SYS/ab367d1c-234c-471f-aee6-07d941c39602/new/clients',
2026-06-16T01:17:18.732+00:00    payload_str: 'io-wipper-qtpy-esp32s3-n4r213210089'
2026-06-16T01:17:18.732+00:00  }
2026-06-16T01:17:18.740+00:00  ready (io-wipper-qtpy-esp32s3-n4r213210089)
2026-06-16T01:17:18.741+00:00  publish (broker): {
2026-06-16T01:17:18.741+00:00    topic: 'state/clients',
2026-06-16T01:17:18.742+00:00    payload_str: '[{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/0","subscriptions":["#"]},{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":[]}]'
2026-06-16T01:17:18.742+00:00  }
2026-06-16T01:17:18.749+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T01:17:18.750+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker'
2026-06-16T01:17:18.750+00:00  ]
2026-06-16T01:17:18.751+00:00  publish (broker): {
2026-06-16T01:17:18.751+00:00    topic: '$SYS/ab367d1c-234c-471f-aee6-07d941c39602/new/subscribes',
2026-06-16T01:17:18.752+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","qos":1}]}'
2026-06-16T01:17:18.752+00:00  }
2026-06-16T01:17:18.755+00:00  publish (broker): {
2026-06-16T01:17:18.756+00:00    topic: 'state/clients',
2026-06-16T01:17:18.756+00:00    payload_str: '[{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/0","subscriptions":["#"]},{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker"]}]'
2026-06-16T01:17:18.757+00:00  }
2026-06-16T01:17:18.772+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker' ]
2026-06-16T01:17:18.773+00:00  publish (broker): {
2026-06-16T01:17:18.774+00:00    topic: '$SYS/ab367d1c-234c-471f-aee6-07d941c39602/new/subscribes',
2026-06-16T01:17:18.774+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","qos":1}]}'
2026-06-16T01:17:18.774+00:00  }
2026-06-16T01:17:18.777+00:00  publish (broker): {
2026-06-16T01:17:18.778+00:00    topic: 'state/clients',
2026-06-16T01:17:18.778+00:00    payload_str: '[{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/0","subscriptions":["#"]},{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker"]}]'
2026-06-16T01:17:18.778+00:00  }
2026-06-16T01:17:18.800+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T01:17:18.801+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c'
2026-06-16T01:17:18.801+00:00  ]
2026-06-16T01:17:18.802+00:00  publish (broker): {
2026-06-16T01:17:18.802+00:00    topic: '$SYS/ab367d1c-234c-471f-aee6-07d941c39602/new/subscribes',
2026-06-16T01:17:18.803+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","qos":1}]}'
2026-06-16T01:17:18.803+00:00  }
2026-06-16T01:17:18.806+00:00  publish (broker): {
2026-06-16T01:17:18.807+00:00    topic: 'state/clients',
2026-06-16T01:17:18.807+00:00    payload_str: '[{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/0","subscriptions":["#"]},{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c"]}]'
2026-06-16T01:17:18.808+00:00  }
2026-06-16T01:17:18.829+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T01:17:18.829+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20'
2026-06-16T01:17:18.830+00:00  ]
2026-06-16T01:17:18.830+00:00  publish (broker): {
2026-06-16T01:17:18.831+00:00    topic: '$SYS/ab367d1c-234c-471f-aee6-07d941c39602/new/subscribes',
2026-06-16T01:17:18.831+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","qos":1}]}'
2026-06-16T01:17:18.831+00:00  }
2026-06-16T01:17:18.845+00:00  publish (broker): {
2026-06-16T01:17:18.845+00:00    topic: 'state/clients',
2026-06-16T01:17:18.846+00:00    payload_str: '[{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/0","subscriptions":["#"]},{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20"]}]'
2026-06-16T01:17:18.846+00:00  }
2026-06-16T01:17:18.853+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T01:17:18.854+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo'
2026-06-16T01:17:18.854+00:00  ]
2026-06-16T01:17:18.855+00:00  publish (broker): {
2026-06-16T01:17:18.855+00:00    topic: '$SYS/ab367d1c-234c-471f-aee6-07d941c39602/new/subscribes',
2026-06-16T01:17:18.856+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","qos":1}]}'
2026-06-16T01:17:18.856+00:00  }
2026-06-16T01:17:18.862+00:00  publish (broker): {
2026-06-16T01:17:18.863+00:00    topic: 'state/clients',
2026-06-16T01:17:18.864+00:00    payload_str: '[{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/0","subscriptions":["#"]},{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo"]}]'
2026-06-16T01:17:18.864+00:00  }
2026-06-16T01:17:18.873+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T01:17:18.873+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm'
2026-06-16T01:17:18.874+00:00  ]
2026-06-16T01:17:18.874+00:00  publish (broker): {
2026-06-16T01:17:18.874+00:00    topic: '$SYS/ab367d1c-234c-471f-aee6-07d941c39602/new/subscribes',
2026-06-16T01:17:18.875+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","qos":1}]}'
2026-06-16T01:17:18.875+00:00  }
2026-06-16T01:17:18.879+00:00  publish (broker): {
2026-06-16T01:17:18.880+00:00    topic: 'state/clients',
2026-06-16T01:17:18.880+00:00    payload_str: '[{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/0","subscriptions":["#"]},{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm"]}]'
2026-06-16T01:17:18.881+00:00  }
2026-06-16T01:17:18.899+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T01:17:18.899+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel'
2026-06-16T01:17:18.900+00:00  ]
2026-06-16T01:17:18.900+00:00  publish (broker): {
2026-06-16T01:17:18.900+00:00    topic: '$SYS/ab367d1c-234c-471f-aee6-07d941c39602/new/subscribes',
2026-06-16T01:17:18.900+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","qos":1}]}'
2026-06-16T01:17:18.901+00:00  }
2026-06-16T01:17:18.904+00:00  publish (broker): {
2026-06-16T01:17:18.904+00:00    topic: 'state/clients',
2026-06-16T01:17:18.904+00:00    payload_str: '[{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/0","subscriptions":["#"]},{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel"]}]'
2026-06-16T01:17:18.905+00:00  }
2026-06-16T01:17:18.914+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T01:17:18.915+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart'
2026-06-16T01:17:18.915+00:00  ]
2026-06-16T01:17:18.915+00:00  publish (broker): {
2026-06-16T01:17:18.915+00:00    topic: '$SYS/ab367d1c-234c-471f-aee6-07d941c39602/new/subscribes',
2026-06-16T01:17:18.916+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","qos":1}]}'
2026-06-16T01:17:18.916+00:00  }
2026-06-16T01:17:18.917+00:00  publish (broker): {
2026-06-16T01:17:18.917+00:00    topic: 'state/clients',
2026-06-16T01:17:18.917+00:00    payload_str: '[{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/0","subscriptions":["#"]},{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart"]}]'
2026-06-16T01:17:18.918+00:00  }
2026-06-16T01:17:18.925+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T01:17:18.926+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display'
2026-06-16T01:17:18.926+00:00  ]
2026-06-16T01:17:18.927+00:00  publish (broker): {
2026-06-16T01:17:18.927+00:00    topic: '$SYS/ab367d1c-234c-471f-aee6-07d941c39602/new/subscribes',
2026-06-16T01:17:18.927+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","qos":1}]}'
2026-06-16T01:17:18.928+00:00  }
2026-06-16T01:17:18.930+00:00  publish (broker): {
2026-06-16T01:17:18.930+00:00    topic: 'state/clients',
2026-06-16T01:17:18.930+00:00    payload_str: '[{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/0","subscriptions":["#"]},{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display"]}]'
2026-06-16T01:17:18.931+00:00  }
2026-06-16T01:17:18.940+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/errors' ]
2026-06-16T01:17:18.941+00:00  publish (broker): {
2026-06-16T01:17:18.942+00:00    topic: '$SYS/ab367d1c-234c-471f-aee6-07d941c39602/new/subscribes',
2026-06-16T01:17:18.942+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/errors","qos":0}]}'
2026-06-16T01:17:18.942+00:00  }
2026-06-16T01:17:18.946+00:00  publish (broker): {
2026-06-16T01:17:18.946+00:00    topic: 'state/clients',
2026-06-16T01:17:18.947+00:00    payload_str: '[{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/0","subscriptions":["#"]},{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors"]}]'
2026-06-16T01:17:18.947+00:00  }
2026-06-16T01:17:18.957+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/throttle' ]
2026-06-16T01:17:18.958+00:00  publish (broker): {
2026-06-16T01:17:18.958+00:00    topic: '$SYS/ab367d1c-234c-471f-aee6-07d941c39602/new/subscribes',
2026-06-16T01:17:18.959+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/throttle","qos":0}]}'
2026-06-16T01:17:18.959+00:00  }
2026-06-16T01:17:18.961+00:00  publish (broker): {
2026-06-16T01:17:18.961+00:00    topic: 'state/clients',
2026-06-16T01:17:18.962+00:00    payload_str: '[{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/0","subscriptions":["#"]},{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T01:17:18.962+00:00  }
2026-06-16T01:17:19.004+00:00  [V1 d2b] hil/wprsnpr/info/status → wippersnapper.description.v1.CreateDescriptionRequest
2026-06-16T01:17:19.005+00:00    decoded: {
2026-06-16T01:17:19.005+00:00    "machineName": "qtpy-esp32s3-n4r2",
2026-06-16T01:17:19.005+00:00    "macAddr": 13210089,
2026-06-16T01:17:19.005+00:00    "usbVid": 0,
2026-06-16T01:17:19.005+00:00    "usbPid": 0,
2026-06-16T01:17:19.006+00:00    "version": null,
2026-06-16T01:17:19.006+00:00    "verMajor": 0,
2026-06-16T01:17:19.006+00:00    "verMinor": 0,
2026-06-16T01:17:19.006+00:00    "verPatch": 0,
2026-06-16T01:17:19.006+00:00    "verPreRelease": "",
2026-06-16T01:17:19.006+00:00    "verBuild": 0,
2026-06-16T01:17:19.006+00:00    "strVersion": "1.0.0-beta.127"
2026-06-16T01:17:19.007+00:00  }
2026-06-16T01:17:19.015+00:00  [Fallback V1] Auto-Responding to checkin → hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker
2026-06-16T01:17:19.016+00:00    response: {"response":"RESPONSE_OK","totalGpioPins":30,"totalAnalogPins":4,"referenceVoltage":2.5,"totalI2cPorts":1}
2026-06-16T01:17:19.018+00:00  [V1 b2d] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker → wippersnapper.description.v1.CreateDescriptionResponse
2026-06-16T01:17:19.018+00:00    decoded: {
2026-06-16T01:17:19.018+00:00    "response": "RESPONSE_OK",
2026-06-16T01:17:19.019+00:00    "totalGpioPins": 30,
2026-06-16T01:17:19.019+00:00    "totalAnalogPins": 4,
2026-06-16T01:17:19.019+00:00    "referenceVoltage": 2.5,
2026-06-16T01:17:19.019+00:00    "totalI2cPorts": 1
2026-06-16T01:17:19.019+00:00  }
2026-06-16T01:17:19.034+00:00  [Fallback V1] Sending empty pin config → hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker
2026-06-16T01:17:19.035+00:00    payload: {"pinConfigs":{"list":[]}} (3200)
2026-06-16T01:17:19.036+00:00  [V1 b2d] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker → wippersnapper.signal.v1.CreateSignalRequest
2026-06-16T01:17:19.037+00:00    decoded: {
2026-06-16T01:17:19.037+00:00    "pinConfigs": {
2026-06-16T01:17:19.037+00:00      "list": []
2026-06-16T01:17:19.037+00:00    }
2026-06-16T01:17:19.037+00:00  }
2026-06-16T01:17:19.043+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/info/status
2026-06-16T01:17:19.043+00:00    {"machineName":"qtpy-esp32s3-n4r2","macAddr":13210089,"strVersion":"1.0.0-beta.127"}
2026-06-16T01:17:19.043+00:00  publish (broker): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker
2026-06-16T01:17:19.043+00:00    {"response":"RESPONSE_OK","totalGpioPins":30,"totalAnalogPins":4,"referenceVoltage":2.5,"totalI2cPorts":1}
2026-06-16T01:17:19.044+00:00  publish (broker): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker
2026-06-16T01:17:19.044+00:00    {"pinConfigs":{}}
2026-06-16T01:17:19.593+00:00  [V1 d2b] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/device/complete → wippersnapper.description.v1.RegistrationComplete
2026-06-16T01:17:19.593+00:00    decoded: {
2026-06-16T01:17:19.593+00:00    "isComplete": true
2026-06-16T01:17:19.593+00:00  }
2026-06-16T01:17:19.593+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/device/complete
2026-06-16T01:17:19.594+00:00    {"isComplete":true}
2026-06-16T01:17:19.615+00:00  [V1 d2b] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/device/pinConfigComplete → wippersnapper.signal.v1.SignalResponse
2026-06-16T01:17:19.615+00:00    decoded: {
2026-06-16T01:17:19.616+00:00    "configurationComplete": true
2026-06-16T01:17:19.616+00:00  }
2026-06-16T01:17:19.619+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/device/pinConfigComplete
2026-06-16T01:17:19.619+00:00    {"configurationComplete":true}
2026-06-16T01:17:20.712+00:00  disconnected (aedes_z/e8bCK/SBSuQxNZl5JLiw/1)
2026-06-16T01:17:20.713+00:00  publish (broker): {
2026-06-16T01:17:20.713+00:00    topic: '$SYS/ab367d1c-234c-471f-aee6-07d941c39602/disconnect/clients',
2026-06-16T01:17:20.713+00:00    payload_str: 'aedes_z/e8bCK/SBSuQxNZl5JLiw/1'
2026-06-16T01:17:20.713+00:00  }
2026-06-16T01:17:20.713+00:00  unsubscriptions (aedes_z/e8bCK/SBSuQxNZl5JLiw/1): [ 'hil/wprsnpr/#' ]
2026-06-16T01:17:20.713+00:00  publish (broker): {
2026-06-16T01:17:20.713+00:00    topic: '$SYS/ab367d1c-234c-471f-aee6-07d941c39602/new/unsubscribes',
2026-06-16T01:17:20.713+00:00    payload_str: '{"clientId":"aedes_z/e8bCK/SBSuQxNZl5JLiw/1","subs":["hil/wprsnpr/#"]}'
2026-06-16T01:17:20.713+00:00  }
2026-06-16T01:17:20.713+00:00  publish (broker): {
2026-06-16T01:17:20.713+00:00    topic: 'state/clients',
2026-06-16T01:17:20.713+00:00    payload_str: '[{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T01:17:20.713+00:00  }
2026-06-16T01:17:20.713+00:00  publish (broker): {
2026-06-16T01:17:20.714+00:00    topic: 'state/clients',
2026-06-16T01:17:20.714+00:00    payload_str: '[{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T01:17:20.714+00:00  }
2026-06-16T01:17:20.775+00:00  [API:/echo]
2026-06-16T01:17:20.787+00:00  [V1 b2d] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel → wippersnapper.signal.v1.PixelsRequest
2026-06-16T01:17:20.787+00:00    decoded: {
2026-06-16T01:17:20.787+00:00    "reqPixelsWrite": {
2026-06-16T01:17:20.788+00:00      "pixelsType": "PIXELS_TYPE_NEOPIXEL",
2026-06-16T01:17:20.788+00:00      "pixelsPinData": "D0",
2026-06-16T01:17:20.788+00:00      "pixelsColor": 200
2026-06-16T01:17:20.788+00:00    }
2026-06-16T01:17:20.788+00:00  }
2026-06-16T01:17:20.807+00:00  publish (broker): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel
2026-06-16T01:17:20.807+00:00    {"reqPixelsWrite":{"pixelsType":"PIXELS_TYPE_NEOPIXEL","pixelsPinData":"D0","pixelsColor":200}}
2026-06-16T01:17:20.919+00:00  authenticate: undefined undefined aedes_z/e8bCK/SBSuQxNZl5JLiw/2
2026-06-16T01:17:20.920+00:00  connected (aedes_z/e8bCK/SBSuQxNZl5JLiw/2)
2026-06-16T01:17:20.921+00:00  publish (broker): {
2026-06-16T01:17:20.921+00:00    topic: '$SYS/ab367d1c-234c-471f-aee6-07d941c39602/new/clients',
2026-06-16T01:17:20.921+00:00    payload_str: 'aedes_z/e8bCK/SBSuQxNZl5JLiw/2'
2026-06-16T01:17:20.921+00:00  }
2026-06-16T01:17:20.922+00:00  ready (aedes_z/e8bCK/SBSuQxNZl5JLiw/2)
2026-06-16T01:17:20.922+00:00  publish (broker): {
2026-06-16T01:17:20.922+00:00    topic: 'state/clients',
2026-06-16T01:17:20.922+00:00    payload_str: '[{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]},{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/2","subscriptions":[]}]'
2026-06-16T01:17:20.923+00:00  }
2026-06-16T01:17:20.923+00:00  subscriptions (aedes_z/e8bCK/SBSuQxNZl5JLiw/2) [ 'hil/wprsnpr/#' ]
2026-06-16T01:17:20.924+00:00  publish (broker): {
2026-06-16T01:17:20.924+00:00    topic: '$SYS/ab367d1c-234c-471f-aee6-07d941c39602/new/subscribes',
2026-06-16T01:17:20.925+00:00    payload_str: '{"clientId":"aedes_z/e8bCK/SBSuQxNZl5JLiw/2","subs":[{"topic":"hil/wprsnpr/#","qos":0}]}'
2026-06-16T01:17:20.925+00:00  }
2026-06-16T01:17:20.927+00:00  publish (broker): {
2026-06-16T01:17:20.927+00:00    topic: 'state/clients',
2026-06-16T01:17:20.927+00:00    payload_str: '[{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]},{"id":"aedes_z/e8bCK/SBSuQxNZl5JLiw/2","subscriptions":["hil/wprsnpr/#"]}]'
2026-06-16T01:17:20.927+00:00  }

logs for qtpy_esp32s3_n4r2/low: serial / protomq / flash — in the per-log Artifacts

📜 `qtpy_esp32s3_n4r2` high · serial.log (✓ from boot to just after the detected test phrase)
2026-06-16T01:19:32.689+00:00  Fatal Error: Halted execution!
2026-06-16T01:19:32.690+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:19:33.693+00:00  Fatal Error: Halted execution!
2026-06-16T01:19:33.694+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:19:34.713+00:00  Fatal Error: Halted execution!
2026-06-16T01:19:34.714+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:19:35.688+00:00  Fatal Error: Halted execution!
2026-06-16T01:19:35.688+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:19:36.693+00:00  Fatal Error: Halted execution!
2026-06-16T01:19:36.693+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:19:37.688+00:00  Fatal Error: Halted execution!
2026-06-16T01:19:37.689+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:19:38.707+00:00  Fatal Error: Halted execution!
2026-06-16T01:19:38.708+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:19:39.692+00:00  Fatal Error: Halted execution!
2026-06-16T01:19:39.693+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:19:40.755+00:00  Fatal Error: Halted execution!
2026-06-16T01:19:40.755+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T01:19:56.750+00:00  WipperSnapper found these WiFi networks:
2026-06-16T01:19:56.751+00:00  free4all (EC:FC:2F:83:DC:D8) -49dB (ch1)
2026-06-16T01:19:56.751+00:00  SmartLife-061B (0:33:7A:9B:6:1B) -86dB (ch6)
2026-06-16T01:19:56.752+00:00  free4all (10:7C:61:82:50:F1) -93dB (ch1)
2026-06-16T01:19:56.752+00:00  YouFibre-4365 (28:F5:D1:EE:83:32) -96dB (ch11)
2026-06-16T01:19:57.349+00:00  Connecting to WiFi (attempt #0)
2026-06-16T01:20:02.851+00:00  Connected to WiFi!
2026-06-16T01:20:02.854+00:00  Connecting to AIO MQTT (attempt #0)
2026-06-16T01:20:02.855+00:00  WiFi Status: 20
2026-06-16T01:20:03.736+00:00  Registering hardware with WipperSnapper...
2026-06-16T01:20:03.736+00:00  Registering hardware with IO...
2026-06-16T01:20:03.744+00:00  Encoding registration request...Encoding registration msg...Published!
2026-06-16T01:20:03.745+00:00  Polling for registration message response...2
2026-06-16T01:20:04.425+00:00  GOT Registration Response Message:
2026-06-16T01:20:04.426+00:00  Hardware Response Msg:
2026-06-16T01:20:04.426+00:00  	GPIO Pins: 30
2026-06-16T01:20:04.426+00:00  	Analog Pins: 4
2026-06-16T01:20:04.426+00:00  	Reference voltage: 2.50v
2026-06-16T01:20:04.426+00:00  cbSignalTopic: New Msg on Signal Topic
2026-06-16T01:20:04.427+00:00  2 bytes.
2026-06-16T01:20:04.427+00:00  decodeSignalMsg
2026-06-16T01:20:04.427+00:00  cbSignalMsg
2026-06-16T01:20:04.427+00:00  Sub-messages found: 1
2026-06-16T01:20:04.427+00:00  Signal Msg Tag: Pin Configuration
2026-06-16T01:20:04.428+00:00  Initial Pin Configuration Complete!
2026-06-16T01:20:04.431+00:00  Completed registration process, configuration next!
2026-06-16T01:20:04.432+00:00  Publishing to pin config complete...
2026-06-16T01:20:04.432+00:00  Published pin config complete message!
2026-06-16T01:20:04.432+00:00  Hardware configured successfully!
2026-06-16T01:20:05.988+00:00  Registration and configuration complete!
2026-06-16T01:20:05.989+00:00  Running application...
2026-06-16T01:20:06.015+00:00  Sending MQTT PING: * NEW MESSAGE [Topic: Pixels]: 
2026-06-16T01:20:06.016+00:00  11 bytes.
2026-06-16T01:20:06.016+00:00  [Message Type]: wippersnapper_signal_v1_PixelsRequest_req_pixels_write_tag
2026-06-16T01:20:06.017+00:00  Filling strand on D0
2026-06-16T01:20:06.035+00:00  ERROR: Pixel strand not found, can not write a color to the strand!
2026-06-16T01:20:06.036+00:00  SUCCESS!
2026-06-16T01:20:06.036+00:00  WiFi RSSI: -50
2026-06-16T01:20:11.176+00:00  Sending MQTT PING: SUCCESS!
2026-06-16T01:20:11.177+00:00  WiFi RSSI: -49
2026-06-16T01:20:16.391+00:00  Sending MQTT PING: SUCCESS!
2026-06-16T01:20:16.395+00:00  WiFi RSSI: -50
📜 `qtpy_esp32s3_n4r2` high · protomq.log (⏱ aligned to the serial window (2026-06-16T01:19:32.689+00:00 … 2026-06-16T01:20:16.395+00:00))
2026-06-16T01:19:37.953+00:00  publish (broker): {
2026-06-16T01:19:37.953+00:00    topic: '$SYS/1e938f15-5f1d-4909-92f7-2049d4158eb1/heartbeat',
2026-06-16T01:19:37.954+00:00    payload_str: '1e938f15-5f1d-4909-92f7-2049d4158eb1'
2026-06-16T01:19:37.954+00:00  }
2026-06-16T01:20:00.668+00:00  authenticate: undefined undefined aedes_cNVpu1IfS3u/JZZPXRUFKw/1
2026-06-16T01:20:00.669+00:00  connected (aedes_cNVpu1IfS3u/JZZPXRUFKw/1)
2026-06-16T01:20:00.675+00:00  publish (broker): {
2026-06-16T01:20:00.676+00:00    topic: '$SYS/1e938f15-5f1d-4909-92f7-2049d4158eb1/new/clients',
2026-06-16T01:20:00.676+00:00    payload_str: 'aedes_cNVpu1IfS3u/JZZPXRUFKw/1'
2026-06-16T01:20:00.677+00:00  }
2026-06-16T01:20:00.690+00:00  ready (aedes_cNVpu1IfS3u/JZZPXRUFKw/1)
2026-06-16T01:20:00.695+00:00  publish (broker): {
2026-06-16T01:20:00.701+00:00    topic: 'state/clients',
2026-06-16T01:20:00.701+00:00    payload_str: '[{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/0","subscriptions":["#"]},{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/1","subscriptions":[]}]'
2026-06-16T01:20:00.702+00:00  }
2026-06-16T01:20:00.704+00:00  subscriptions (aedes_cNVpu1IfS3u/JZZPXRUFKw/1) [ 'hil/wprsnpr/#' ]
2026-06-16T01:20:00.704+00:00  publish (broker): {
2026-06-16T01:20:00.705+00:00    topic: '$SYS/1e938f15-5f1d-4909-92f7-2049d4158eb1/new/subscribes',
2026-06-16T01:20:00.705+00:00    payload_str: '{"clientId":"aedes_cNVpu1IfS3u/JZZPXRUFKw/1","subs":[{"topic":"hil/wprsnpr/#","qos":0}]}'
2026-06-16T01:20:00.705+00:00  }
2026-06-16T01:20:00.706+00:00  publish (broker): {
2026-06-16T01:20:00.706+00:00    topic: 'state/clients',
2026-06-16T01:20:00.706+00:00    payload_str: '[{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/0","subscriptions":["#"]},{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/1","subscriptions":["hil/wprsnpr/#"]}]'
2026-06-16T01:20:00.707+00:00  }
2026-06-16T01:20:03.503+00:00  authenticate: hil hil io-wipper-qtpy-esp32s3-n4r213210089
2026-06-16T01:20:03.505+00:00  connected (io-wipper-qtpy-esp32s3-n4r213210089)
2026-06-16T01:20:03.505+00:00  publish (broker): {
2026-06-16T01:20:03.506+00:00    topic: '$SYS/1e938f15-5f1d-4909-92f7-2049d4158eb1/new/clients',
2026-06-16T01:20:03.506+00:00    payload_str: 'io-wipper-qtpy-esp32s3-n4r213210089'
2026-06-16T01:20:03.506+00:00  }
2026-06-16T01:20:03.513+00:00  ready (io-wipper-qtpy-esp32s3-n4r213210089)
2026-06-16T01:20:03.513+00:00  publish (broker): {
2026-06-16T01:20:03.514+00:00    topic: 'state/clients',
2026-06-16T01:20:03.514+00:00    payload_str: '[{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/0","subscriptions":["#"]},{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":[]}]'
2026-06-16T01:20:03.514+00:00  }
2026-06-16T01:20:03.523+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T01:20:03.523+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker'
2026-06-16T01:20:03.524+00:00  ]
2026-06-16T01:20:03.524+00:00  publish (broker): {
2026-06-16T01:20:03.525+00:00    topic: '$SYS/1e938f15-5f1d-4909-92f7-2049d4158eb1/new/subscribes',
2026-06-16T01:20:03.525+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","qos":1}]}'
2026-06-16T01:20:03.525+00:00  }
2026-06-16T01:20:03.527+00:00  publish (broker): {
2026-06-16T01:20:03.528+00:00    topic: 'state/clients',
2026-06-16T01:20:03.528+00:00    payload_str: '[{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/0","subscriptions":["#"]},{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker"]}]'
2026-06-16T01:20:03.528+00:00  }
2026-06-16T01:20:03.544+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker' ]
2026-06-16T01:20:03.546+00:00  publish (broker): {
2026-06-16T01:20:03.546+00:00    topic: '$SYS/1e938f15-5f1d-4909-92f7-2049d4158eb1/new/subscribes',
2026-06-16T01:20:03.547+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","qos":1}]}'
2026-06-16T01:20:03.547+00:00  }
2026-06-16T01:20:03.550+00:00  publish (broker): {
2026-06-16T01:20:03.551+00:00    topic: 'state/clients',
2026-06-16T01:20:03.551+00:00    payload_str: '[{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/0","subscriptions":["#"]},{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker"]}]'
2026-06-16T01:20:03.552+00:00  }
2026-06-16T01:20:03.569+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T01:20:03.569+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c'
2026-06-16T01:20:03.569+00:00  ]
2026-06-16T01:20:03.570+00:00  publish (broker): {
2026-06-16T01:20:03.570+00:00    topic: '$SYS/1e938f15-5f1d-4909-92f7-2049d4158eb1/new/subscribes',
2026-06-16T01:20:03.570+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","qos":1}]}'
2026-06-16T01:20:03.570+00:00  }
2026-06-16T01:20:03.573+00:00  publish (broker): {
2026-06-16T01:20:03.574+00:00    topic: 'state/clients',
2026-06-16T01:20:03.574+00:00    payload_str: '[{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/0","subscriptions":["#"]},{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c"]}]'
2026-06-16T01:20:03.574+00:00  }
2026-06-16T01:20:03.586+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T01:20:03.586+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20'
2026-06-16T01:20:03.586+00:00  ]
2026-06-16T01:20:03.586+00:00  publish (broker): {
2026-06-16T01:20:03.587+00:00    topic: '$SYS/1e938f15-5f1d-4909-92f7-2049d4158eb1/new/subscribes',
2026-06-16T01:20:03.587+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","qos":1}]}'
2026-06-16T01:20:03.587+00:00  }
2026-06-16T01:20:03.595+00:00  publish (broker): {
2026-06-16T01:20:03.595+00:00    topic: 'state/clients',
2026-06-16T01:20:03.596+00:00    payload_str: '[{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/0","subscriptions":["#"]},{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20"]}]'
2026-06-16T01:20:03.596+00:00  }
2026-06-16T01:20:03.608+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T01:20:03.608+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo'
2026-06-16T01:20:03.608+00:00  ]
2026-06-16T01:20:03.609+00:00  publish (broker): {
2026-06-16T01:20:03.609+00:00    topic: '$SYS/1e938f15-5f1d-4909-92f7-2049d4158eb1/new/subscribes',
2026-06-16T01:20:03.609+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","qos":1}]}'
2026-06-16T01:20:03.609+00:00  }
2026-06-16T01:20:03.614+00:00  publish (broker): {
2026-06-16T01:20:03.614+00:00    topic: 'state/clients',
2026-06-16T01:20:03.615+00:00    payload_str: '[{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/0","subscriptions":["#"]},{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo"]}]'
2026-06-16T01:20:03.615+00:00  }
2026-06-16T01:20:03.627+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T01:20:03.628+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm'
2026-06-16T01:20:03.628+00:00  ]
2026-06-16T01:20:03.629+00:00  publish (broker): {
2026-06-16T01:20:03.629+00:00    topic: '$SYS/1e938f15-5f1d-4909-92f7-2049d4158eb1/new/subscribes',
2026-06-16T01:20:03.629+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","qos":1}]}'
2026-06-16T01:20:03.629+00:00  }
2026-06-16T01:20:03.633+00:00  publish (broker): {
2026-06-16T01:20:03.634+00:00    topic: 'state/clients',
2026-06-16T01:20:03.634+00:00    payload_str: '[{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/0","subscriptions":["#"]},{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm"]}]'
2026-06-16T01:20:03.634+00:00  }
2026-06-16T01:20:03.640+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T01:20:03.641+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel'
2026-06-16T01:20:03.641+00:00  ]
2026-06-16T01:20:03.642+00:00  publish (broker): {
2026-06-16T01:20:03.642+00:00    topic: '$SYS/1e938f15-5f1d-4909-92f7-2049d4158eb1/new/subscribes',
2026-06-16T01:20:03.642+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","qos":1}]}'
2026-06-16T01:20:03.643+00:00  }
2026-06-16T01:20:03.646+00:00  publish (broker): {
2026-06-16T01:20:03.647+00:00    topic: 'state/clients',
2026-06-16T01:20:03.647+00:00    payload_str: '[{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/0","subscriptions":["#"]},{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel"]}]'
2026-06-16T01:20:03.647+00:00  }
2026-06-16T01:20:03.659+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T01:20:03.660+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart'
2026-06-16T01:20:03.660+00:00  ]
2026-06-16T01:20:03.660+00:00  publish (broker): {
2026-06-16T01:20:03.660+00:00    topic: '$SYS/1e938f15-5f1d-4909-92f7-2049d4158eb1/new/subscribes',
2026-06-16T01:20:03.660+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","qos":1}]}'
2026-06-16T01:20:03.661+00:00  }
2026-06-16T01:20:03.663+00:00  publish (broker): {
2026-06-16T01:20:03.663+00:00    topic: 'state/clients',
2026-06-16T01:20:03.663+00:00    payload_str: '[{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/0","subscriptions":["#"]},{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart"]}]'
2026-06-16T01:20:03.663+00:00  }
2026-06-16T01:20:03.681+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T01:20:03.681+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display'
2026-06-16T01:20:03.681+00:00  ]
2026-06-16T01:20:03.682+00:00  publish (broker): {
2026-06-16T01:20:03.682+00:00    topic: '$SYS/1e938f15-5f1d-4909-92f7-2049d4158eb1/new/subscribes',
2026-06-16T01:20:03.682+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","qos":1}]}'
2026-06-16T01:20:03.682+00:00  }
2026-06-16T01:20:03.685+00:00  publish (broker): {
2026-06-16T01:20:03.685+00:00    topic: 'state/clients',
2026-06-16T01:20:03.685+00:00    payload_str: '[{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/0","subscriptions":["#"]},{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display"]}]'
2026-06-16T01:20:03.685+00:00  }
2026-06-16T01:20:03.702+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/errors' ]
2026-06-16T01:20:03.703+00:00  publish (broker): {
2026-06-16T01:20:03.703+00:00    topic: '$SYS/1e938f15-5f1d-4909-92f7-2049d4158eb1/new/subscribes',
2026-06-16T01:20:03.703+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/errors","qos":0}]}'
2026-06-16T01:20:03.703+00:00  }
2026-06-16T01:20:03.706+00:00  publish (broker): {
2026-06-16T01:20:03.706+00:00    topic: 'state/clients',
2026-06-16T01:20:03.706+00:00    payload_str: '[{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/0","subscriptions":["#"]},{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors"]}]'
2026-06-16T01:20:03.707+00:00  }
2026-06-16T01:20:03.723+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/throttle' ]
2026-06-16T01:20:03.723+00:00  publish (broker): {
2026-06-16T01:20:03.723+00:00    topic: '$SYS/1e938f15-5f1d-4909-92f7-2049d4158eb1/new/subscribes',
2026-06-16T01:20:03.724+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/throttle","qos":0}]}'
2026-06-16T01:20:03.724+00:00  }
2026-06-16T01:20:03.726+00:00  publish (broker): {
2026-06-16T01:20:03.726+00:00    topic: 'state/clients',
2026-06-16T01:20:03.726+00:00    payload_str: '[{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/0","subscriptions":["#"]},{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T01:20:03.726+00:00  }
2026-06-16T01:20:03.766+00:00  [V1 d2b] hil/wprsnpr/info/status → wippersnapper.description.v1.CreateDescriptionRequest
2026-06-16T01:20:03.767+00:00    decoded: {
2026-06-16T01:20:03.767+00:00    "machineName": "qtpy-esp32s3-n4r2",
2026-06-16T01:20:03.767+00:00    "macAddr": 13210089,
2026-06-16T01:20:03.767+00:00    "usbVid": 0,
2026-06-16T01:20:03.768+00:00    "usbPid": 0,
2026-06-16T01:20:03.768+00:00    "version": null,
2026-06-16T01:20:03.768+00:00    "verMajor": 0,
2026-06-16T01:20:03.768+00:00    "verMinor": 0,
2026-06-16T01:20:03.768+00:00    "verPatch": 0,
2026-06-16T01:20:03.768+00:00    "verPreRelease": "",
2026-06-16T01:20:03.769+00:00    "verBuild": 0,
2026-06-16T01:20:03.769+00:00    "strVersion": "1.0.0-beta.130"
2026-06-16T01:20:03.769+00:00  }
2026-06-16T01:20:03.777+00:00  [Fallback V1] Auto-Responding to checkin → hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker
2026-06-16T01:20:03.777+00:00    response: {"response":"RESPONSE_OK","totalGpioPins":30,"totalAnalogPins":4,"referenceVoltage":2.5,"totalI2cPorts":1}
2026-06-16T01:20:03.780+00:00  [V1 b2d] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker → wippersnapper.description.v1.CreateDescriptionResponse
2026-06-16T01:20:03.780+00:00    decoded: {
2026-06-16T01:20:03.780+00:00    "response": "RESPONSE_OK",
2026-06-16T01:20:03.780+00:00    "totalGpioPins": 30,
2026-06-16T01:20:03.781+00:00    "totalAnalogPins": 4,
2026-06-16T01:20:03.781+00:00    "referenceVoltage": 2.5,
2026-06-16T01:20:03.781+00:00    "totalI2cPorts": 1
2026-06-16T01:20:03.781+00:00  }
2026-06-16T01:20:03.788+00:00  [Fallback V1] Sending empty pin config → hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker
2026-06-16T01:20:03.789+00:00    payload: {"pinConfigs":{"list":[]}} (3200)
2026-06-16T01:20:03.791+00:00  [V1 b2d] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker → wippersnapper.signal.v1.CreateSignalRequest
2026-06-16T01:20:03.791+00:00    decoded: {
2026-06-16T01:20:03.792+00:00    "pinConfigs": {
2026-06-16T01:20:03.792+00:00      "list": []
2026-06-16T01:20:03.792+00:00    }
2026-06-16T01:20:03.793+00:00  }
2026-06-16T01:20:03.796+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/info/status
2026-06-16T01:20:03.796+00:00    {"machineName":"qtpy-esp32s3-n4r2","macAddr":13210089,"strVersion":"1.0.0-beta.130"}
2026-06-16T01:20:03.797+00:00  publish (broker): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker
2026-06-16T01:20:03.797+00:00    {"response":"RESPONSE_OK","totalGpioPins":30,"totalAnalogPins":4,"referenceVoltage":2.5,"totalI2cPorts":1}
2026-06-16T01:20:03.797+00:00  publish (broker): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker
2026-06-16T01:20:03.797+00:00    {"pinConfigs":{}}
2026-06-16T01:20:04.424+00:00  [V1 d2b] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/device/complete → wippersnapper.description.v1.RegistrationComplete
2026-06-16T01:20:04.424+00:00    decoded: {
2026-06-16T01:20:04.424+00:00    "isComplete": true
2026-06-16T01:20:04.424+00:00  }
2026-06-16T01:20:04.425+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/device/complete
2026-06-16T01:20:04.425+00:00    {"isComplete":true}
2026-06-16T01:20:04.433+00:00  [V1 d2b] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/device/pinConfigComplete → wippersnapper.signal.v1.SignalResponse
2026-06-16T01:20:04.433+00:00    decoded: {
2026-06-16T01:20:04.434+00:00    "configurationComplete": true
2026-06-16T01:20:04.434+00:00  }
2026-06-16T01:20:04.435+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/device/pinConfigComplete
2026-06-16T01:20:04.435+00:00    {"configurationComplete":true}
2026-06-16T01:20:05.526+00:00  disconnected (aedes_cNVpu1IfS3u/JZZPXRUFKw/1)
2026-06-16T01:20:05.526+00:00  publish (broker): {
2026-06-16T01:20:05.527+00:00    topic: '$SYS/1e938f15-5f1d-4909-92f7-2049d4158eb1/disconnect/clients',
2026-06-16T01:20:05.527+00:00    payload_str: 'aedes_cNVpu1IfS3u/JZZPXRUFKw/1'
2026-06-16T01:20:05.527+00:00  }
2026-06-16T01:20:05.527+00:00  unsubscriptions (aedes_cNVpu1IfS3u/JZZPXRUFKw/1): [ 'hil/wprsnpr/#' ]
2026-06-16T01:20:05.527+00:00  publish (broker): {
2026-06-16T01:20:05.527+00:00    topic: '$SYS/1e938f15-5f1d-4909-92f7-2049d4158eb1/new/unsubscribes',
2026-06-16T01:20:05.527+00:00    payload_str: '{"clientId":"aedes_cNVpu1IfS3u/JZZPXRUFKw/1","subs":["hil/wprsnpr/#"]}'
2026-06-16T01:20:05.527+00:00  }
2026-06-16T01:20:05.527+00:00  publish (broker): {
2026-06-16T01:20:05.527+00:00    topic: 'state/clients',
2026-06-16T01:20:05.527+00:00    payload_str: '[{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T01:20:05.527+00:00  }
2026-06-16T01:20:05.527+00:00  publish (broker): {
2026-06-16T01:20:05.527+00:00    topic: 'state/clients',
2026-06-16T01:20:05.528+00:00    payload_str: '[{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T01:20:05.528+00:00  }
2026-06-16T01:20:05.581+00:00  [API:/echo]
2026-06-16T01:20:05.589+00:00  [V1 b2d] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel → wippersnapper.signal.v1.PixelsRequest
2026-06-16T01:20:05.589+00:00    decoded: {
2026-06-16T01:20:05.590+00:00    "reqPixelsWrite": {
2026-06-16T01:20:05.590+00:00      "pixelsType": "PIXELS_TYPE_NEOPIXEL",
2026-06-16T01:20:05.590+00:00      "pixelsPinData": "D0",
2026-06-16T01:20:05.590+00:00      "pixelsColor": 200
2026-06-16T01:20:05.590+00:00    }
2026-06-16T01:20:05.591+00:00  }
2026-06-16T01:20:05.600+00:00  publish (broker): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel
2026-06-16T01:20:05.600+00:00    {"reqPixelsWrite":{"pixelsType":"PIXELS_TYPE_NEOPIXEL","pixelsPinData":"D0","pixelsColor":200}}
2026-06-16T01:20:05.604+00:00  authenticate: undefined undefined aedes_cNVpu1IfS3u/JZZPXRUFKw/2
2026-06-16T01:20:05.606+00:00  connected (aedes_cNVpu1IfS3u/JZZPXRUFKw/2)
2026-06-16T01:20:05.607+00:00  publish (broker): {
2026-06-16T01:20:05.607+00:00    topic: '$SYS/1e938f15-5f1d-4909-92f7-2049d4158eb1/new/clients',
2026-06-16T01:20:05.607+00:00    payload_str: 'aedes_cNVpu1IfS3u/JZZPXRUFKw/2'
2026-06-16T01:20:05.607+00:00  }
2026-06-16T01:20:05.608+00:00  ready (aedes_cNVpu1IfS3u/JZZPXRUFKw/2)
2026-06-16T01:20:05.608+00:00  publish (broker): {
2026-06-16T01:20:05.608+00:00    topic: 'state/clients',
2026-06-16T01:20:05.608+00:00    payload_str: '[{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]},{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/2","subscriptions":[]}]'
2026-06-16T01:20:05.609+00:00  }
2026-06-16T01:20:05.609+00:00  subscriptions (aedes_cNVpu1IfS3u/JZZPXRUFKw/2) [ 'hil/wprsnpr/#' ]
2026-06-16T01:20:05.610+00:00  publish (broker): {
2026-06-16T01:20:05.610+00:00    topic: '$SYS/1e938f15-5f1d-4909-92f7-2049d4158eb1/new/subscribes',
2026-06-16T01:20:05.610+00:00    payload_str: '{"clientId":"aedes_cNVpu1IfS3u/JZZPXRUFKw/2","subs":[{"topic":"hil/wprsnpr/#","qos":0}]}'
2026-06-16T01:20:05.610+00:00  }
2026-06-16T01:20:05.611+00:00  publish (broker): {
2026-06-16T01:20:05.611+00:00    topic: 'state/clients',
2026-06-16T01:20:05.612+00:00    payload_str: '[{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]},{"id":"aedes_cNVpu1IfS3u/JZZPXRUFKw/2","subscriptions":["hil/wprsnpr/#"]}]'
2026-06-16T01:20:05.612+00:00  }

logs for qtpy_esp32s3_n4r2/high: serial / protomq / flash — in the per-log Artifacts

Expected: release rebooted=true (crash), PR rebooted=false (graceful).

@github-actions

Copy link
Copy Markdown

🔌 HIL test results — run #17

commit dc9a65b · 2026-06-16 11:06:41Z · full logs (serial.log / protomq.log / flash.log) in the hil-assets artifact

✅ Check-in smoke test

Flash this PR's build → write secrets → power-cycle → assert the device checks in to the broker.

target this PR check-in
qtpy_esp32s3_n4r2 flashed ok=true ✅
📜 `qtpy_esp32s3_n4r2` checkin · serial.log (✓ from boot to just after the detected test phrase)
2026-06-16T11:08:28.917+00:00  Fatal Error: Halted execution!
2026-06-16T11:08:28.918+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:08:29.840+00:00  Fatal Error: Halted execution!
2026-06-16T11:08:29.841+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:08:30.862+00:00  Fatal Error: Halted execution!
2026-06-16T11:08:30.863+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:08:31.809+00:00  Fatal Error: Halted execution!
2026-06-16T11:08:31.810+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:08:32.813+00:00  Fatal Error: Halted execution!
2026-06-16T11:08:32.814+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:08:33.808+00:00  Fatal Error: Halted execution!
2026-06-16T11:08:33.809+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:08:34.910+00:00  Fatal Error: Halted execution!
2026-06-16T11:08:34.910+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:08:35.907+00:00  Fatal Error: Halted execution!
2026-06-16T11:08:35.907+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:08:36.921+00:00  Fatal Error: Halted execution!
2026-06-16T11:08:36.921+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:08:52.362+00:00  WipperSnapper found these WiFi networks:
2026-06-16T11:08:52.362+00:00  free4all (EC:FC:2F:83:DC:D8) -49dB (ch1)
2026-06-16T11:08:52.961+00:00  Connecting to WiFi (attempt #0)
2026-06-16T11:08:58.581+00:00  Connected to WiFi!
2026-06-16T11:08:58.581+00:00  Connecting to AIO MQTT (attempt #0)
2026-06-16T11:08:58.582+00:00  WiFi Status: 20
2026-06-16T11:08:59.512+00:00  Registering hardware with WipperSnapper...
2026-06-16T11:08:59.512+00:00  Registering hardware with IO...
2026-06-16T11:08:59.553+00:00  Encoding registration request...Encoding registration msg...Published!
2026-06-16T11:08:59.554+00:00  Polling for registration message response...2
2026-06-16T11:09:00.154+00:00  GOT Registration Response Message:
2026-06-16T11:09:00.155+00:00  Hardware Response Msg:
2026-06-16T11:09:00.155+00:00  	GPIO Pins: 30
2026-06-16T11:09:00.155+00:00  	Analog Pins: 4
2026-06-16T11:09:00.156+00:00  	Reference voltage: 2.50v
2026-06-16T11:09:00.158+00:00  cbSignalTopic: New Msg on Signal Topic
2026-06-16T11:09:00.158+00:00  2 bytes.
2026-06-16T11:09:00.158+00:00  decodeSignalMsg
2026-06-16T11:09:00.158+00:00  cbSignalMsg
2026-06-16T11:09:00.159+00:00  Sub-messages found: 1
2026-06-16T11:09:00.159+00:00  Signal Msg Tag: Pin Configuration
2026-06-16T11:09:00.159+00:00  Initial Pin Configuration Complete!
2026-06-16T11:09:00.167+00:00  Completed registration process, configuration next!
2026-06-16T11:09:00.180+00:00  Publishing to pin config complete...
2026-06-16T11:09:00.181+00:00  Published pin config complete message!
2026-06-16T11:09:00.181+00:00  Hardware configured successfully!
2026-06-16T11:09:01.744+00:00  Registration and configuration complete!
2026-06-16T11:09:01.744+00:00  Running application...
2026-06-16T11:09:01.763+00:00  Sending MQTT PING: SUCCESS!
2026-06-16T11:09:01.764+00:00  WiFi RSSI: -47
2026-06-16T11:09:07.013+00:00  Sending MQTT PING: SUCCESS!
2026-06-16T11:09:07.013+00:00  WiFi RSSI: -48
2026-06-16T11:09:12.234+00:00  Sending MQTT PING: SUCCESS!
📜 `qtpy_esp32s3_n4r2` checkin · protomq.log (⏱ aligned to the serial window (2026-06-16T11:08:28.917+00:00 … 2026-06-16T11:09:12.234+00:00))
2026-06-16T11:08:34.088+00:00  publish (broker): {
2026-06-16T11:08:34.088+00:00    topic: '$SYS/f8dcdbaa-f615-4387-9699-c09a96385b92/heartbeat',
2026-06-16T11:08:34.088+00:00    payload_str: 'f8dcdbaa-f615-4387-9699-c09a96385b92'
2026-06-16T11:08:34.089+00:00  }
2026-06-16T11:08:56.877+00:00  authenticate: undefined undefined aedes_ZWqapQUITeWE35kivJ88IQ/1
2026-06-16T11:08:56.878+00:00  connected (aedes_ZWqapQUITeWE35kivJ88IQ/1)
2026-06-16T11:08:56.883+00:00  publish (broker): {
2026-06-16T11:08:56.884+00:00    topic: '$SYS/f8dcdbaa-f615-4387-9699-c09a96385b92/new/clients',
2026-06-16T11:08:56.884+00:00    payload_str: 'aedes_ZWqapQUITeWE35kivJ88IQ/1'
2026-06-16T11:08:56.884+00:00  }
2026-06-16T11:08:56.898+00:00  ready (aedes_ZWqapQUITeWE35kivJ88IQ/1)
2026-06-16T11:08:56.905+00:00  publish (broker): {
2026-06-16T11:08:56.905+00:00    topic: 'state/clients',
2026-06-16T11:08:56.905+00:00    payload_str: '[{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/0","subscriptions":["#"]},{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/1","subscriptions":[]}]'
2026-06-16T11:08:56.906+00:00  }
2026-06-16T11:08:56.906+00:00  subscriptions (aedes_ZWqapQUITeWE35kivJ88IQ/1) [ 'hil/wprsnpr/#' ]
2026-06-16T11:08:56.908+00:00  publish (broker): {
2026-06-16T11:08:56.909+00:00    topic: '$SYS/f8dcdbaa-f615-4387-9699-c09a96385b92/new/subscribes',
2026-06-16T11:08:56.909+00:00    payload_str: '{"clientId":"aedes_ZWqapQUITeWE35kivJ88IQ/1","subs":[{"topic":"hil/wprsnpr/#","qos":0}]}'
2026-06-16T11:08:56.909+00:00  }
2026-06-16T11:08:56.914+00:00  publish (broker): {
2026-06-16T11:08:56.914+00:00    topic: 'state/clients',
2026-06-16T11:08:56.915+00:00    payload_str: '[{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/0","subscriptions":["#"]},{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/1","subscriptions":["hil/wprsnpr/#"]}]'
2026-06-16T11:08:56.916+00:00  }
2026-06-16T11:08:59.247+00:00  authenticate: hil hil io-wipper-qtpy-esp32s3-n4r213210089
2026-06-16T11:08:59.250+00:00  connected (io-wipper-qtpy-esp32s3-n4r213210089)
2026-06-16T11:08:59.251+00:00  publish (broker): {
2026-06-16T11:08:59.251+00:00    topic: '$SYS/f8dcdbaa-f615-4387-9699-c09a96385b92/new/clients',
2026-06-16T11:08:59.252+00:00    payload_str: 'io-wipper-qtpy-esp32s3-n4r213210089'
2026-06-16T11:08:59.252+00:00  }
2026-06-16T11:08:59.257+00:00  ready (io-wipper-qtpy-esp32s3-n4r213210089)
2026-06-16T11:08:59.258+00:00  publish (broker): {
2026-06-16T11:08:59.259+00:00    topic: 'state/clients',
2026-06-16T11:08:59.259+00:00    payload_str: '[{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/0","subscriptions":["#"]},{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":[]}]'
2026-06-16T11:08:59.259+00:00  }
2026-06-16T11:08:59.268+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:08:59.268+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker'
2026-06-16T11:08:59.268+00:00  ]
2026-06-16T11:08:59.269+00:00  publish (broker): {
2026-06-16T11:08:59.269+00:00    topic: '$SYS/f8dcdbaa-f615-4387-9699-c09a96385b92/new/subscribes',
2026-06-16T11:08:59.269+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","qos":1}]}'
2026-06-16T11:08:59.269+00:00  }
2026-06-16T11:08:59.272+00:00  publish (broker): {
2026-06-16T11:08:59.273+00:00    topic: 'state/clients',
2026-06-16T11:08:59.273+00:00    payload_str: '[{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/0","subscriptions":["#"]},{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker"]}]'
2026-06-16T11:08:59.274+00:00  }
2026-06-16T11:08:59.293+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker' ]
2026-06-16T11:08:59.294+00:00  publish (broker): {
2026-06-16T11:08:59.294+00:00    topic: '$SYS/f8dcdbaa-f615-4387-9699-c09a96385b92/new/subscribes',
2026-06-16T11:08:59.295+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","qos":1}]}'
2026-06-16T11:08:59.295+00:00  }
2026-06-16T11:08:59.299+00:00  publish (broker): {
2026-06-16T11:08:59.299+00:00    topic: 'state/clients',
2026-06-16T11:08:59.300+00:00    payload_str: '[{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/0","subscriptions":["#"]},{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker"]}]'
2026-06-16T11:08:59.300+00:00  }
2026-06-16T11:08:59.313+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:08:59.313+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c'
2026-06-16T11:08:59.314+00:00  ]
2026-06-16T11:08:59.314+00:00  publish (broker): {
2026-06-16T11:08:59.314+00:00    topic: '$SYS/f8dcdbaa-f615-4387-9699-c09a96385b92/new/subscribes',
2026-06-16T11:08:59.314+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","qos":1}]}'
2026-06-16T11:08:59.315+00:00  }
2026-06-16T11:08:59.316+00:00  publish (broker): {
2026-06-16T11:08:59.317+00:00    topic: 'state/clients',
2026-06-16T11:08:59.317+00:00    payload_str: '[{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/0","subscriptions":["#"]},{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c"]}]'
2026-06-16T11:08:59.318+00:00  }
2026-06-16T11:08:59.330+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:08:59.330+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20'
2026-06-16T11:08:59.330+00:00  ]
2026-06-16T11:08:59.331+00:00  publish (broker): {
2026-06-16T11:08:59.331+00:00    topic: '$SYS/f8dcdbaa-f615-4387-9699-c09a96385b92/new/subscribes',
2026-06-16T11:08:59.331+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","qos":1}]}'
2026-06-16T11:08:59.331+00:00  }
2026-06-16T11:08:59.341+00:00  publish (broker): {
2026-06-16T11:08:59.342+00:00    topic: 'state/clients',
2026-06-16T11:08:59.342+00:00    payload_str: '[{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/0","subscriptions":["#"]},{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20"]}]'
2026-06-16T11:08:59.342+00:00  }
2026-06-16T11:08:59.353+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:08:59.354+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo'
2026-06-16T11:08:59.354+00:00  ]
2026-06-16T11:08:59.354+00:00  publish (broker): {
2026-06-16T11:08:59.354+00:00    topic: '$SYS/f8dcdbaa-f615-4387-9699-c09a96385b92/new/subscribes',
2026-06-16T11:08:59.355+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","qos":1}]}'
2026-06-16T11:08:59.355+00:00  }
2026-06-16T11:08:59.361+00:00  publish (broker): {
2026-06-16T11:08:59.361+00:00    topic: 'state/clients',
2026-06-16T11:08:59.362+00:00    payload_str: '[{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/0","subscriptions":["#"]},{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo"]}]'
2026-06-16T11:08:59.362+00:00  }
2026-06-16T11:08:59.372+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:08:59.373+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm'
2026-06-16T11:08:59.373+00:00  ]
2026-06-16T11:08:59.373+00:00  publish (broker): {
2026-06-16T11:08:59.373+00:00    topic: '$SYS/f8dcdbaa-f615-4387-9699-c09a96385b92/new/subscribes',
2026-06-16T11:08:59.374+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","qos":1}]}'
2026-06-16T11:08:59.374+00:00  }
2026-06-16T11:08:59.377+00:00  publish (broker): {
2026-06-16T11:08:59.377+00:00    topic: 'state/clients',
2026-06-16T11:08:59.378+00:00    payload_str: '[{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/0","subscriptions":["#"]},{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm"]}]'
2026-06-16T11:08:59.378+00:00  }
2026-06-16T11:08:59.396+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:08:59.397+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel'
2026-06-16T11:08:59.397+00:00  ]
2026-06-16T11:08:59.398+00:00  publish (broker): {
2026-06-16T11:08:59.398+00:00    topic: '$SYS/f8dcdbaa-f615-4387-9699-c09a96385b92/new/subscribes',
2026-06-16T11:08:59.398+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","qos":1}]}'
2026-06-16T11:08:59.399+00:00  }
2026-06-16T11:08:59.401+00:00  publish (broker): {
2026-06-16T11:08:59.401+00:00    topic: 'state/clients',
2026-06-16T11:08:59.402+00:00    payload_str: '[{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/0","subscriptions":["#"]},{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel"]}]'
2026-06-16T11:08:59.402+00:00  }
2026-06-16T11:08:59.415+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:08:59.415+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart'
2026-06-16T11:08:59.415+00:00  ]
2026-06-16T11:08:59.416+00:00  publish (broker): {
2026-06-16T11:08:59.417+00:00    topic: '$SYS/f8dcdbaa-f615-4387-9699-c09a96385b92/new/subscribes',
2026-06-16T11:08:59.417+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","qos":1}]}'
2026-06-16T11:08:59.417+00:00  }
2026-06-16T11:08:59.418+00:00  publish (broker): {
2026-06-16T11:08:59.418+00:00    topic: 'state/clients',
2026-06-16T11:08:59.418+00:00    payload_str: '[{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/0","subscriptions":["#"]},{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart"]}]'
2026-06-16T11:08:59.419+00:00  }
2026-06-16T11:08:59.437+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:08:59.437+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display'
2026-06-16T11:08:59.437+00:00  ]
2026-06-16T11:08:59.438+00:00  publish (broker): {
2026-06-16T11:08:59.439+00:00    topic: '$SYS/f8dcdbaa-f615-4387-9699-c09a96385b92/new/subscribes',
2026-06-16T11:08:59.439+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","qos":1}]}'
2026-06-16T11:08:59.439+00:00  }
2026-06-16T11:08:59.440+00:00  publish (broker): {
2026-06-16T11:08:59.440+00:00    topic: 'state/clients',
2026-06-16T11:08:59.440+00:00    payload_str: '[{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/0","subscriptions":["#"]},{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display"]}]'
2026-06-16T11:08:59.441+00:00  }
2026-06-16T11:08:59.457+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/errors' ]
2026-06-16T11:08:59.458+00:00  publish (broker): {
2026-06-16T11:08:59.458+00:00    topic: '$SYS/f8dcdbaa-f615-4387-9699-c09a96385b92/new/subscribes',
2026-06-16T11:08:59.458+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/errors","qos":0}]}'
2026-06-16T11:08:59.458+00:00  }
2026-06-16T11:08:59.461+00:00  publish (broker): {
2026-06-16T11:08:59.462+00:00    topic: 'state/clients',
2026-06-16T11:08:59.462+00:00    payload_str: '[{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/0","subscriptions":["#"]},{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors"]}]'
2026-06-16T11:08:59.462+00:00  }
2026-06-16T11:08:59.477+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/throttle' ]
2026-06-16T11:08:59.478+00:00  publish (broker): {
2026-06-16T11:08:59.478+00:00    topic: '$SYS/f8dcdbaa-f615-4387-9699-c09a96385b92/new/subscribes',
2026-06-16T11:08:59.478+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/throttle","qos":0}]}'
2026-06-16T11:08:59.479+00:00  }
2026-06-16T11:08:59.480+00:00  publish (broker): {
2026-06-16T11:08:59.480+00:00    topic: 'state/clients',
2026-06-16T11:08:59.480+00:00    payload_str: '[{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/0","subscriptions":["#"]},{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T11:08:59.481+00:00  }
2026-06-16T11:08:59.548+00:00  [V1 d2b] hil/wprsnpr/info/status → wippersnapper.description.v1.CreateDescriptionRequest
2026-06-16T11:08:59.548+00:00    decoded: {
2026-06-16T11:08:59.548+00:00    "machineName": "qtpy-esp32s3-n4r2",
2026-06-16T11:08:59.549+00:00    "macAddr": 13210089,
2026-06-16T11:08:59.549+00:00    "usbVid": 0,
2026-06-16T11:08:59.549+00:00    "usbPid": 0,
2026-06-16T11:08:59.549+00:00    "version": null,
2026-06-16T11:08:59.549+00:00    "verMajor": 0,
2026-06-16T11:08:59.550+00:00    "verMinor": 0,
2026-06-16T11:08:59.550+00:00    "verPatch": 0,
2026-06-16T11:08:59.550+00:00    "verPreRelease": "",
2026-06-16T11:08:59.551+00:00    "verBuild": 0,
2026-06-16T11:08:59.551+00:00    "strVersion": "1.0.0-beta.130"
2026-06-16T11:08:59.551+00:00  }
2026-06-16T11:08:59.561+00:00  [Fallback V1] Auto-Responding to checkin → hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker
2026-06-16T11:08:59.561+00:00    response: {"response":"RESPONSE_OK","totalGpioPins":30,"totalAnalogPins":4,"referenceVoltage":2.5,"totalI2cPorts":1}
2026-06-16T11:08:59.564+00:00  [V1 b2d] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker → wippersnapper.description.v1.CreateDescriptionResponse
2026-06-16T11:08:59.564+00:00    decoded: {
2026-06-16T11:08:59.564+00:00    "response": "RESPONSE_OK",
2026-06-16T11:08:59.564+00:00    "totalGpioPins": 30,
2026-06-16T11:08:59.565+00:00    "totalAnalogPins": 4,
2026-06-16T11:08:59.565+00:00    "referenceVoltage": 2.5,
2026-06-16T11:08:59.565+00:00    "totalI2cPorts": 1
2026-06-16T11:08:59.565+00:00  }
2026-06-16T11:08:59.582+00:00  [Fallback V1] Sending empty pin config → hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker
2026-06-16T11:08:59.583+00:00    payload: {"pinConfigs":{"list":[]}} (3200)
2026-06-16T11:08:59.584+00:00  [V1 b2d] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker → wippersnapper.signal.v1.CreateSignalRequest
2026-06-16T11:08:59.585+00:00    decoded: {
2026-06-16T11:08:59.585+00:00    "pinConfigs": {
2026-06-16T11:08:59.585+00:00      "list": []
2026-06-16T11:08:59.585+00:00    }
2026-06-16T11:08:59.585+00:00  }
2026-06-16T11:08:59.589+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/info/status
2026-06-16T11:08:59.589+00:00    {"machineName":"qtpy-esp32s3-n4r2","macAddr":13210089,"strVersion":"1.0.0-beta.130"}
2026-06-16T11:08:59.589+00:00  publish (broker): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker
2026-06-16T11:08:59.590+00:00    {"response":"RESPONSE_OK","totalGpioPins":30,"totalAnalogPins":4,"referenceVoltage":2.5,"totalI2cPorts":1}
2026-06-16T11:08:59.590+00:00  publish (broker): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker
2026-06-16T11:08:59.590+00:00    {"pinConfigs":{}}
2026-06-16T11:09:00.161+00:00  [V1 d2b] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/device/complete → wippersnapper.description.v1.RegistrationComplete
2026-06-16T11:09:00.161+00:00    decoded: {
2026-06-16T11:09:00.161+00:00    "isComplete": true
2026-06-16T11:09:00.162+00:00  }
2026-06-16T11:09:00.162+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/device/complete
2026-06-16T11:09:00.162+00:00    {"isComplete":true}
2026-06-16T11:09:00.186+00:00  [V1 d2b] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/device/pinConfigComplete → wippersnapper.signal.v1.SignalResponse
2026-06-16T11:09:00.186+00:00    decoded: {
2026-06-16T11:09:00.186+00:00    "configurationComplete": true
2026-06-16T11:09:00.187+00:00  }
2026-06-16T11:09:00.187+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/device/pinConfigComplete
2026-06-16T11:09:00.188+00:00    {"configurationComplete":true}
2026-06-16T11:09:01.196+00:00  disconnected (aedes_ZWqapQUITeWE35kivJ88IQ/1)
2026-06-16T11:09:01.197+00:00  publish (broker): {
2026-06-16T11:09:01.197+00:00    topic: '$SYS/f8dcdbaa-f615-4387-9699-c09a96385b92/disconnect/clients',
2026-06-16T11:09:01.197+00:00    payload_str: 'aedes_ZWqapQUITeWE35kivJ88IQ/1'
2026-06-16T11:09:01.198+00:00  }
2026-06-16T11:09:01.198+00:00  unsubscriptions (aedes_ZWqapQUITeWE35kivJ88IQ/1): [ 'hil/wprsnpr/#' ]
2026-06-16T11:09:01.199+00:00  publish (broker): {
2026-06-16T11:09:01.199+00:00    topic: '$SYS/f8dcdbaa-f615-4387-9699-c09a96385b92/new/unsubscribes',
2026-06-16T11:09:01.199+00:00    payload_str: '{"clientId":"aedes_ZWqapQUITeWE35kivJ88IQ/1","subs":["hil/wprsnpr/#"]}'
2026-06-16T11:09:01.199+00:00  }
2026-06-16T11:09:01.202+00:00  publish (broker): {
2026-06-16T11:09:01.203+00:00    topic: 'state/clients',
2026-06-16T11:09:01.203+00:00    payload_str: '[{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T11:09:01.204+00:00  }
2026-06-16T11:09:01.205+00:00  publish (broker): {
2026-06-16T11:09:01.205+00:00    topic: 'state/clients',
2026-06-16T11:09:01.206+00:00    payload_str: '[{"id":"aedes_ZWqapQUITeWE35kivJ88IQ/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T11:09:01.206+00:00  }

logs for qtpy_esp32s3_n4r2/checkin: serial / protomq / flash — in the per-log Artifacts

Expected: ok=true (device flashed + configured + checked in).

🧪 pixelWrite uninitialised-strand regression (#926)

v1 ws.signal.pixelWrite to an uninitialised strand (pin D0, colour 200) — release should crash+reboot, the fix should log + continue (#926 / fixed by #927).

target release 1.0.0-beta.127 this PR verdict
qtpy_esp32s3_n4r2 rebooted=true rebooted=false
📜 `qtpy_esp32s3_n4r2` low · serial.log (✓ from boot to just after the detected test phrase)
2026-06-16T11:11:50.048+00:00  Fatal Error: Halted execution!
2026-06-16T11:11:50.049+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:11:51.160+00:00  Fatal Error: Halted execution!
2026-06-16T11:11:51.160+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:11:52.079+00:00  Fatal Error: Halted execution!
2026-06-16T11:11:52.080+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:11:53.048+00:00  Fatal Error: Halted execution!
2026-06-16T11:11:53.049+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:11:54.135+00:00  Fatal Error: Halted execution!
2026-06-16T11:11:54.136+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:11:55.050+00:00  Fatal Error: Halted execution!
2026-06-16T11:11:55.051+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:11:56.050+00:00  Fatal Error: Halted execution!
2026-06-16T11:11:56.050+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:11:57.048+00:00  Fatal Error: Halted execution!
2026-06-16T11:11:57.049+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:11:58.142+00:00  Fatal Error: Halted execution!
2026-06-16T11:11:58.142+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:12:13.483+00:00  WipperSnapper found these WiFi networks:
2026-06-16T11:12:13.485+00:00  free4all (EC:FC:2F:83:DC:D8) -49dB (ch1)
2026-06-16T11:12:14.069+00:00  Connecting to WiFi (attempt #0)
2026-06-16T11:12:19.693+00:00  Connected to WiFi!
2026-06-16T11:12:19.694+00:00  Connecting to AIO MQTT (attempt #0)
2026-06-16T11:12:19.694+00:00  WiFi Status: 20
2026-06-16T11:12:20.516+00:00  Registering hardware with WipperSnapper...
2026-06-16T11:12:20.516+00:00  Registering hardware with IO...
2026-06-16T11:12:20.535+00:00  Encoding registration request...Encoding registration msg...Published!
2026-06-16T11:12:20.536+00:00  Polling for registration message response...2
2026-06-16T11:12:21.144+00:00  GOT Registration Response Message:
2026-06-16T11:12:21.145+00:00  Hardware Response Msg:
2026-06-16T11:12:21.145+00:00  	GPIO Pins: 30
2026-06-16T11:12:21.145+00:00  	Analog Pins: 4
2026-06-16T11:12:21.146+00:00  	Reference voltage: 2.50v
2026-06-16T11:12:21.151+00:00  cbSignalTopic: New Msg on Signal Topic
2026-06-16T11:12:21.152+00:00  2 bytes.
2026-06-16T11:12:21.152+00:00  decodeSignalMsg
2026-06-16T11:12:21.152+00:00  cbSignalMsg
2026-06-16T11:12:21.153+00:00  Sub-messages found: 1
2026-06-16T11:12:21.153+00:00  Signal Msg Tag: Pin Configuration
2026-06-16T11:12:21.154+00:00  Initial Pin Configuration Complete!
2026-06-16T11:12:21.157+00:00  Completed registration process, configuration next!
2026-06-16T11:12:21.165+00:00  Publishing to pin config complete...
2026-06-16T11:12:21.167+00:00  Published pin config complete message!
2026-06-16T11:12:21.168+00:00  Hardware configured successfully!
2026-06-16T11:12:22.731+00:00  Registration and configuration complete!
2026-06-16T11:12:22.731+00:00  Running application...
2026-06-16T11:12:22.731+00:00  Sending MQTT PING: * NEW MESSAGE [Topic: Pixels]: 
2026-06-16T11:12:22.731+00:00  11 bytes.
2026-06-16T11:12:22.734+00:00  [Message Type]: wippersnapper_signal_v1_PixelsRequest_req_pixels_write_tag
2026-06-16T11:12:22.735+00:00  ERROR: Unable to perform gamma correction, unknown strand type!
2026-06-16T11:12:22.735+00:00  Filling color: 200
📜 `qtpy_esp32s3_n4r2` low · protomq.log (⏱ aligned to the serial window (2026-06-16T11:11:50.048+00:00 … 2026-06-16T11:12:22.735+00:00))
2026-06-16T11:11:56.272+00:00  publish (broker): {
2026-06-16T11:11:56.273+00:00    topic: '$SYS/42eb26b5-35a1-4e04-aef8-24011b720239/heartbeat',
2026-06-16T11:11:56.274+00:00    payload_str: '42eb26b5-35a1-4e04-aef8-24011b720239'
2026-06-16T11:11:56.274+00:00  }
2026-06-16T11:12:17.733+00:00  authenticate: undefined undefined aedes_p50dTYTgRkiZKO1MCN7imQ/1
2026-06-16T11:12:17.735+00:00  connected (aedes_p50dTYTgRkiZKO1MCN7imQ/1)
2026-06-16T11:12:17.738+00:00  publish (broker): {
2026-06-16T11:12:17.739+00:00    topic: '$SYS/42eb26b5-35a1-4e04-aef8-24011b720239/new/clients',
2026-06-16T11:12:17.740+00:00    payload_str: 'aedes_p50dTYTgRkiZKO1MCN7imQ/1'
2026-06-16T11:12:17.740+00:00  }
2026-06-16T11:12:17.754+00:00  ready (aedes_p50dTYTgRkiZKO1MCN7imQ/1)
2026-06-16T11:12:17.761+00:00  publish (broker): {
2026-06-16T11:12:17.762+00:00    topic: 'state/clients',
2026-06-16T11:12:17.763+00:00    payload_str: '[{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/0","subscriptions":["#"]},{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/1","subscriptions":[]}]'
2026-06-16T11:12:17.763+00:00  }
2026-06-16T11:12:17.763+00:00  subscriptions (aedes_p50dTYTgRkiZKO1MCN7imQ/1) [ 'hil/wprsnpr/#' ]
2026-06-16T11:12:17.765+00:00  publish (broker): {
2026-06-16T11:12:17.766+00:00    topic: '$SYS/42eb26b5-35a1-4e04-aef8-24011b720239/new/subscribes',
2026-06-16T11:12:17.766+00:00    payload_str: '{"clientId":"aedes_p50dTYTgRkiZKO1MCN7imQ/1","subs":[{"topic":"hil/wprsnpr/#","qos":0}]}'
2026-06-16T11:12:17.766+00:00  }
2026-06-16T11:12:17.771+00:00  publish (broker): {
2026-06-16T11:12:17.772+00:00    topic: 'state/clients',
2026-06-16T11:12:17.772+00:00    payload_str: '[{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/0","subscriptions":["#"]},{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/1","subscriptions":["hil/wprsnpr/#"]}]'
2026-06-16T11:12:17.773+00:00  }
2026-06-16T11:12:20.312+00:00  authenticate: hil hil io-wipper-qtpy-esp32s3-n4r213210089
2026-06-16T11:12:20.315+00:00  connected (io-wipper-qtpy-esp32s3-n4r213210089)
2026-06-16T11:12:20.316+00:00  publish (broker): {
2026-06-16T11:12:20.316+00:00    topic: '$SYS/42eb26b5-35a1-4e04-aef8-24011b720239/new/clients',
2026-06-16T11:12:20.317+00:00    payload_str: 'io-wipper-qtpy-esp32s3-n4r213210089'
2026-06-16T11:12:20.317+00:00  }
2026-06-16T11:12:20.320+00:00  ready (io-wipper-qtpy-esp32s3-n4r213210089)
2026-06-16T11:12:20.321+00:00  publish (broker): {
2026-06-16T11:12:20.322+00:00    topic: 'state/clients',
2026-06-16T11:12:20.322+00:00    payload_str: '[{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/0","subscriptions":["#"]},{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":[]}]'
2026-06-16T11:12:20.322+00:00  }
2026-06-16T11:12:20.334+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:12:20.334+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker'
2026-06-16T11:12:20.335+00:00  ]
2026-06-16T11:12:20.335+00:00  publish (broker): {
2026-06-16T11:12:20.336+00:00    topic: '$SYS/42eb26b5-35a1-4e04-aef8-24011b720239/new/subscribes',
2026-06-16T11:12:20.336+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","qos":1}]}'
2026-06-16T11:12:20.336+00:00  }
2026-06-16T11:12:20.339+00:00  publish (broker): {
2026-06-16T11:12:20.339+00:00    topic: 'state/clients',
2026-06-16T11:12:20.340+00:00    payload_str: '[{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/0","subscriptions":["#"]},{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker"]}]'
2026-06-16T11:12:20.340+00:00  }
2026-06-16T11:12:20.356+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker' ]
2026-06-16T11:12:20.358+00:00  publish (broker): {
2026-06-16T11:12:20.359+00:00    topic: '$SYS/42eb26b5-35a1-4e04-aef8-24011b720239/new/subscribes',
2026-06-16T11:12:20.359+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","qos":1}]}'
2026-06-16T11:12:20.359+00:00  }
2026-06-16T11:12:20.360+00:00  publish (broker): {
2026-06-16T11:12:20.360+00:00    topic: 'state/clients',
2026-06-16T11:12:20.361+00:00    payload_str: '[{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/0","subscriptions":["#"]},{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker"]}]'
2026-06-16T11:12:20.361+00:00  }
2026-06-16T11:12:20.383+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:12:20.384+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c'
2026-06-16T11:12:20.384+00:00  ]
2026-06-16T11:12:20.385+00:00  publish (broker): {
2026-06-16T11:12:20.385+00:00    topic: '$SYS/42eb26b5-35a1-4e04-aef8-24011b720239/new/subscribes',
2026-06-16T11:12:20.385+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","qos":1}]}'
2026-06-16T11:12:20.385+00:00  }
2026-06-16T11:12:20.388+00:00  publish (broker): {
2026-06-16T11:12:20.388+00:00    topic: 'state/clients',
2026-06-16T11:12:20.389+00:00    payload_str: '[{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/0","subscriptions":["#"]},{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c"]}]'
2026-06-16T11:12:20.389+00:00  }
2026-06-16T11:12:20.396+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:12:20.397+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20'
2026-06-16T11:12:20.397+00:00  ]
2026-06-16T11:12:20.397+00:00  publish (broker): {
2026-06-16T11:12:20.397+00:00    topic: '$SYS/42eb26b5-35a1-4e04-aef8-24011b720239/new/subscribes',
2026-06-16T11:12:20.397+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","qos":1}]}'
2026-06-16T11:12:20.398+00:00  }
2026-06-16T11:12:20.405+00:00  publish (broker): {
2026-06-16T11:12:20.406+00:00    topic: 'state/clients',
2026-06-16T11:12:20.406+00:00    payload_str: '[{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/0","subscriptions":["#"]},{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20"]}]'
2026-06-16T11:12:20.407+00:00  }
2026-06-16T11:12:20.418+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:12:20.419+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo'
2026-06-16T11:12:20.419+00:00  ]
2026-06-16T11:12:20.419+00:00  publish (broker): {
2026-06-16T11:12:20.420+00:00    topic: '$SYS/42eb26b5-35a1-4e04-aef8-24011b720239/new/subscribes',
2026-06-16T11:12:20.420+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","qos":1}]}'
2026-06-16T11:12:20.420+00:00  }
2026-06-16T11:12:20.426+00:00  publish (broker): {
2026-06-16T11:12:20.427+00:00    topic: 'state/clients',
2026-06-16T11:12:20.427+00:00    payload_str: '[{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/0","subscriptions":["#"]},{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo"]}]'
2026-06-16T11:12:20.427+00:00  }
2026-06-16T11:12:20.438+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:12:20.439+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm'
2026-06-16T11:12:20.439+00:00  ]
2026-06-16T11:12:20.439+00:00  publish (broker): {
2026-06-16T11:12:20.439+00:00    topic: '$SYS/42eb26b5-35a1-4e04-aef8-24011b720239/new/subscribes',
2026-06-16T11:12:20.440+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","qos":1}]}'
2026-06-16T11:12:20.440+00:00  }
2026-06-16T11:12:20.442+00:00  publish (broker): {
2026-06-16T11:12:20.442+00:00    topic: 'state/clients',
2026-06-16T11:12:20.443+00:00    payload_str: '[{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/0","subscriptions":["#"]},{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm"]}]'
2026-06-16T11:12:20.443+00:00  }
2026-06-16T11:12:20.452+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:12:20.452+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel'
2026-06-16T11:12:20.453+00:00  ]
2026-06-16T11:12:20.453+00:00  publish (broker): {
2026-06-16T11:12:20.453+00:00    topic: '$SYS/42eb26b5-35a1-4e04-aef8-24011b720239/new/subscribes',
2026-06-16T11:12:20.453+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","qos":1}]}'
2026-06-16T11:12:20.454+00:00  }
2026-06-16T11:12:20.457+00:00  publish (broker): {
2026-06-16T11:12:20.458+00:00    topic: 'state/clients',
2026-06-16T11:12:20.458+00:00    payload_str: '[{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/0","subscriptions":["#"]},{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel"]}]'
2026-06-16T11:12:20.458+00:00  }
2026-06-16T11:12:20.470+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:12:20.470+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart'
2026-06-16T11:12:20.470+00:00  ]
2026-06-16T11:12:20.470+00:00  publish (broker): {
2026-06-16T11:12:20.471+00:00    topic: '$SYS/42eb26b5-35a1-4e04-aef8-24011b720239/new/subscribes',
2026-06-16T11:12:20.471+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","qos":1}]}'
2026-06-16T11:12:20.471+00:00  }
2026-06-16T11:12:20.473+00:00  publish (broker): {
2026-06-16T11:12:20.473+00:00    topic: 'state/clients',
2026-06-16T11:12:20.473+00:00    payload_str: '[{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/0","subscriptions":["#"]},{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart"]}]'
2026-06-16T11:12:20.474+00:00  }
2026-06-16T11:12:20.480+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:12:20.480+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display'
2026-06-16T11:12:20.480+00:00  ]
2026-06-16T11:12:20.481+00:00  publish (broker): {
2026-06-16T11:12:20.481+00:00    topic: '$SYS/42eb26b5-35a1-4e04-aef8-24011b720239/new/subscribes',
2026-06-16T11:12:20.481+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","qos":1}]}'
2026-06-16T11:12:20.481+00:00  }
2026-06-16T11:12:20.483+00:00  publish (broker): {
2026-06-16T11:12:20.483+00:00    topic: 'state/clients',
2026-06-16T11:12:20.483+00:00    payload_str: '[{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/0","subscriptions":["#"]},{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display"]}]'
2026-06-16T11:12:20.483+00:00  }
2026-06-16T11:12:20.492+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/errors' ]
2026-06-16T11:12:20.493+00:00  publish (broker): {
2026-06-16T11:12:20.493+00:00    topic: '$SYS/42eb26b5-35a1-4e04-aef8-24011b720239/new/subscribes',
2026-06-16T11:12:20.493+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/errors","qos":0}]}'
2026-06-16T11:12:20.493+00:00  }
2026-06-16T11:12:20.495+00:00  publish (broker): {
2026-06-16T11:12:20.496+00:00    topic: 'state/clients',
2026-06-16T11:12:20.496+00:00    payload_str: '[{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/0","subscriptions":["#"]},{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors"]}]'
2026-06-16T11:12:20.496+00:00  }
2026-06-16T11:12:20.502+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/throttle' ]
2026-06-16T11:12:20.503+00:00  publish (broker): {
2026-06-16T11:12:20.504+00:00    topic: '$SYS/42eb26b5-35a1-4e04-aef8-24011b720239/new/subscribes',
2026-06-16T11:12:20.504+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/throttle","qos":0}]}'
2026-06-16T11:12:20.504+00:00  }
2026-06-16T11:12:20.506+00:00  publish (broker): {
2026-06-16T11:12:20.506+00:00    topic: 'state/clients',
2026-06-16T11:12:20.507+00:00    payload_str: '[{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/0","subscriptions":["#"]},{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T11:12:20.507+00:00  }
2026-06-16T11:12:20.541+00:00  [V1 d2b] hil/wprsnpr/info/status → wippersnapper.description.v1.CreateDescriptionRequest
2026-06-16T11:12:20.541+00:00    decoded: {
2026-06-16T11:12:20.542+00:00    "machineName": "qtpy-esp32s3-n4r2",
2026-06-16T11:12:20.542+00:00    "macAddr": 13210089,
2026-06-16T11:12:20.542+00:00    "usbVid": 0,
2026-06-16T11:12:20.542+00:00    "usbPid": 0,
2026-06-16T11:12:20.542+00:00    "version": null,
2026-06-16T11:12:20.542+00:00    "verMajor": 0,
2026-06-16T11:12:20.542+00:00    "verMinor": 0,
2026-06-16T11:12:20.543+00:00    "verPatch": 0,
2026-06-16T11:12:20.543+00:00    "verPreRelease": "",
2026-06-16T11:12:20.543+00:00    "verBuild": 0,
2026-06-16T11:12:20.543+00:00    "strVersion": "1.0.0-beta.127"
2026-06-16T11:12:20.543+00:00  }
2026-06-16T11:12:20.548+00:00  [Fallback V1] Auto-Responding to checkin → hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker
2026-06-16T11:12:20.549+00:00    response: {"response":"RESPONSE_OK","totalGpioPins":30,"totalAnalogPins":4,"referenceVoltage":2.5,"totalI2cPorts":1}
2026-06-16T11:12:20.550+00:00  [V1 b2d] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker → wippersnapper.description.v1.CreateDescriptionResponse
2026-06-16T11:12:20.550+00:00    decoded: {
2026-06-16T11:12:20.550+00:00    "response": "RESPONSE_OK",
2026-06-16T11:12:20.550+00:00    "totalGpioPins": 30,
2026-06-16T11:12:20.551+00:00    "totalAnalogPins": 4,
2026-06-16T11:12:20.551+00:00    "referenceVoltage": 2.5,
2026-06-16T11:12:20.551+00:00    "totalI2cPorts": 1
2026-06-16T11:12:20.551+00:00  }
2026-06-16T11:12:20.556+00:00  [Fallback V1] Sending empty pin config → hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker
2026-06-16T11:12:20.557+00:00    payload: {"pinConfigs":{"list":[]}} (3200)
2026-06-16T11:12:20.558+00:00  [V1 b2d] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker → wippersnapper.signal.v1.CreateSignalRequest
2026-06-16T11:12:20.558+00:00    decoded: {
2026-06-16T11:12:20.558+00:00    "pinConfigs": {
2026-06-16T11:12:20.559+00:00      "list": []
2026-06-16T11:12:20.559+00:00    }
2026-06-16T11:12:20.559+00:00  }
2026-06-16T11:12:20.562+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/info/status
2026-06-16T11:12:20.562+00:00    {"machineName":"qtpy-esp32s3-n4r2","macAddr":13210089,"strVersion":"1.0.0-beta.127"}
2026-06-16T11:12:20.562+00:00  publish (broker): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker
2026-06-16T11:12:20.563+00:00    {"response":"RESPONSE_OK","totalGpioPins":30,"totalAnalogPins":4,"referenceVoltage":2.5,"totalI2cPorts":1}
2026-06-16T11:12:20.563+00:00  publish (broker): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker
2026-06-16T11:12:20.563+00:00    {"pinConfigs":{}}
2026-06-16T11:12:21.155+00:00  [V1 d2b] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/device/complete → wippersnapper.description.v1.RegistrationComplete
2026-06-16T11:12:21.156+00:00    decoded: {
2026-06-16T11:12:21.156+00:00    "isComplete": true
2026-06-16T11:12:21.156+00:00  }
2026-06-16T11:12:21.156+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/device/complete
2026-06-16T11:12:21.156+00:00    {"isComplete":true}
2026-06-16T11:12:21.177+00:00  [V1 d2b] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/device/pinConfigComplete → wippersnapper.signal.v1.SignalResponse
2026-06-16T11:12:21.178+00:00    decoded: {
2026-06-16T11:12:21.178+00:00    "configurationComplete": true
2026-06-16T11:12:21.179+00:00  }
2026-06-16T11:12:21.179+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/device/pinConfigComplete
2026-06-16T11:12:21.180+00:00    {"configurationComplete":true}
2026-06-16T11:12:22.277+00:00  disconnected (aedes_p50dTYTgRkiZKO1MCN7imQ/1)
2026-06-16T11:12:22.278+00:00  publish (broker): {
2026-06-16T11:12:22.278+00:00    topic: '$SYS/42eb26b5-35a1-4e04-aef8-24011b720239/disconnect/clients',
2026-06-16T11:12:22.278+00:00    payload_str: 'aedes_p50dTYTgRkiZKO1MCN7imQ/1'
2026-06-16T11:12:22.278+00:00  }
2026-06-16T11:12:22.278+00:00  unsubscriptions (aedes_p50dTYTgRkiZKO1MCN7imQ/1): [ 'hil/wprsnpr/#' ]
2026-06-16T11:12:22.278+00:00  publish (broker): {
2026-06-16T11:12:22.278+00:00    topic: '$SYS/42eb26b5-35a1-4e04-aef8-24011b720239/new/unsubscribes',
2026-06-16T11:12:22.278+00:00    payload_str: '{"clientId":"aedes_p50dTYTgRkiZKO1MCN7imQ/1","subs":["hil/wprsnpr/#"]}'
2026-06-16T11:12:22.278+00:00  }
2026-06-16T11:12:22.278+00:00  publish (broker): {
2026-06-16T11:12:22.278+00:00    topic: 'state/clients',
2026-06-16T11:12:22.278+00:00    payload_str: '[{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T11:12:22.278+00:00  }
2026-06-16T11:12:22.279+00:00  publish (broker): {
2026-06-16T11:12:22.279+00:00    topic: 'state/clients',
2026-06-16T11:12:22.279+00:00    payload_str: '[{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T11:12:22.279+00:00  }
2026-06-16T11:12:22.331+00:00  [API:/echo]
2026-06-16T11:12:22.339+00:00  [V1 b2d] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel → wippersnapper.signal.v1.PixelsRequest
2026-06-16T11:12:22.340+00:00    decoded: {
2026-06-16T11:12:22.340+00:00    "reqPixelsWrite": {
2026-06-16T11:12:22.340+00:00      "pixelsType": "PIXELS_TYPE_NEOPIXEL",
2026-06-16T11:12:22.341+00:00      "pixelsPinData": "D0",
2026-06-16T11:12:22.341+00:00      "pixelsColor": 200
2026-06-16T11:12:22.341+00:00    }
2026-06-16T11:12:22.341+00:00  }
2026-06-16T11:12:22.353+00:00  publish (broker): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel
2026-06-16T11:12:22.354+00:00    {"reqPixelsWrite":{"pixelsType":"PIXELS_TYPE_NEOPIXEL","pixelsPinData":"D0","pixelsColor":200}}
2026-06-16T11:12:22.359+00:00  authenticate: undefined undefined aedes_p50dTYTgRkiZKO1MCN7imQ/2
2026-06-16T11:12:22.360+00:00  connected (aedes_p50dTYTgRkiZKO1MCN7imQ/2)
2026-06-16T11:12:22.362+00:00  publish (broker): {
2026-06-16T11:12:22.362+00:00    topic: '$SYS/42eb26b5-35a1-4e04-aef8-24011b720239/new/clients',
2026-06-16T11:12:22.362+00:00    payload_str: 'aedes_p50dTYTgRkiZKO1MCN7imQ/2'
2026-06-16T11:12:22.362+00:00  }
2026-06-16T11:12:22.363+00:00  ready (aedes_p50dTYTgRkiZKO1MCN7imQ/2)
2026-06-16T11:12:22.363+00:00  publish (broker): {
2026-06-16T11:12:22.364+00:00    topic: 'state/clients',
2026-06-16T11:12:22.364+00:00    payload_str: '[{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]},{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/2","subscriptions":[]}]'
2026-06-16T11:12:22.364+00:00  }
2026-06-16T11:12:22.366+00:00  subscriptions (aedes_p50dTYTgRkiZKO1MCN7imQ/2) [ 'hil/wprsnpr/#' ]
2026-06-16T11:12:22.366+00:00  publish (broker): {
2026-06-16T11:12:22.366+00:00    topic: '$SYS/42eb26b5-35a1-4e04-aef8-24011b720239/new/subscribes',
2026-06-16T11:12:22.366+00:00    payload_str: '{"clientId":"aedes_p50dTYTgRkiZKO1MCN7imQ/2","subs":[{"topic":"hil/wprsnpr/#","qos":0}]}'
2026-06-16T11:12:22.367+00:00  }
2026-06-16T11:12:22.367+00:00  publish (broker): {
2026-06-16T11:12:22.367+00:00    topic: 'state/clients',
2026-06-16T11:12:22.367+00:00    payload_str: '[{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]},{"id":"aedes_p50dTYTgRkiZKO1MCN7imQ/2","subscriptions":["hil/wprsnpr/#"]}]'
2026-06-16T11:12:22.368+00:00  }

logs for qtpy_esp32s3_n4r2/low: serial / protomq / flash — in the per-log Artifacts

📜 `qtpy_esp32s3_n4r2` high · serial.log (✓ from boot to just after the detected test phrase)
2026-06-16T11:14:32.719+00:00  Fatal Error: Halted execution!
2026-06-16T11:14:32.720+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:14:33.757+00:00  Fatal Error: Halted execution!
2026-06-16T11:14:33.758+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:14:34.721+00:00  Fatal Error: Halted execution!
2026-06-16T11:14:34.722+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:14:35.716+00:00  Fatal Error: Halted execution!
2026-06-16T11:14:35.717+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:14:36.722+00:00  Fatal Error: Halted execution!
2026-06-16T11:14:36.722+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:14:37.716+00:00  Fatal Error: Halted execution!
2026-06-16T11:14:37.717+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:14:38.716+00:00  Fatal Error: Halted execution!
2026-06-16T11:14:38.717+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:14:39.719+00:00  Fatal Error: Halted execution!
2026-06-16T11:14:39.720+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:14:40.794+00:00  Fatal Error: Halted execution!
2026-06-16T11:14:40.795+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:14:56.403+00:00  WipperSnapper found these WiFi networks:
2026-06-16T11:14:56.404+00:00  free4all (EC:FC:2F:83:DC:D8) -50dB (ch1)
2026-06-16T11:14:56.962+00:00  Connecting to WiFi (attempt #0)
2026-06-16T11:15:02.648+00:00  Connected to WiFi!
2026-06-16T11:15:02.649+00:00  Connecting to AIO MQTT (attempt #0)
2026-06-16T11:15:02.650+00:00  WiFi Status: 20
2026-06-16T11:15:03.611+00:00  Registering hardware with WipperSnapper...
2026-06-16T11:15:03.611+00:00  Registering hardware with IO...
2026-06-16T11:15:03.621+00:00  Encoding registration request...Encoding registration msg...Published!
2026-06-16T11:15:03.621+00:00  Polling for registration message response...2
2026-06-16T11:15:04.225+00:00  GOT Registration Response Message:
2026-06-16T11:15:04.230+00:00  Hardware Response Msg:
2026-06-16T11:15:04.230+00:00  	GPIO Pins: 30
2026-06-16T11:15:04.231+00:00  	Analog Pins: 4
2026-06-16T11:15:04.231+00:00  	Reference voltage: 2.50v
2026-06-16T11:15:04.232+00:00  cbSignalTopic: New Msg on Signal Topic
2026-06-16T11:15:04.232+00:00  2 bytes.
2026-06-16T11:15:04.233+00:00  decodeSignalMsg
2026-06-16T11:15:04.233+00:00  cbSignalMsg
2026-06-16T11:15:04.233+00:00  Sub-messages found: 1
2026-06-16T11:15:04.234+00:00  Signal Msg Tag: Pin Configuration
2026-06-16T11:15:04.234+00:00  Initial Pin Configuration Complete!
2026-06-16T11:15:04.239+00:00  Completed registration process, configuration next!
2026-06-16T11:15:04.248+00:00  Publishing to pin config complete...
2026-06-16T11:15:04.250+00:00  Published pin config complete message!
2026-06-16T11:15:04.250+00:00  Hardware configured successfully!
2026-06-16T11:15:05.821+00:00  Registration and configuration complete!
2026-06-16T11:15:05.822+00:00  Running application...
2026-06-16T11:15:05.822+00:00  Sending MQTT PING: * NEW MESSAGE [Topic: Pixels]: 
2026-06-16T11:15:05.823+00:00  11 bytes.
2026-06-16T11:15:05.823+00:00  [Message Type]: wippersnapper_signal_v1_PixelsRequest_req_pixels_write_tag
2026-06-16T11:15:05.824+00:00  Filling strand on D0
2026-06-16T11:15:05.824+00:00  ERROR: Pixel strand not found, can not write a color to the strand!
2026-06-16T11:15:05.836+00:00  SUCCESS!
2026-06-16T11:15:05.836+00:00  WiFi RSSI: -48
2026-06-16T11:15:11.146+00:00  Sending MQTT PING: SUCCESS!
2026-06-16T11:15:11.147+00:00  WiFi RSSI: -49
2026-06-16T11:15:16.373+00:00  Sending MQTT PING: SUCCESS!
2026-06-16T11:15:16.374+00:00  WiFi RSSI: -48
📜 `qtpy_esp32s3_n4r2` high · protomq.log (⏱ aligned to the serial window (2026-06-16T11:14:32.719+00:00 … 2026-06-16T11:15:16.374+00:00))
2026-06-16T11:14:38.969+00:00  publish (broker): {
2026-06-16T11:14:38.969+00:00    topic: '$SYS/b96fcb76-0296-4284-b823-ef1d0598899c/heartbeat',
2026-06-16T11:14:38.970+00:00    payload_str: 'b96fcb76-0296-4284-b823-ef1d0598899c'
2026-06-16T11:14:38.970+00:00  }
2026-06-16T11:15:00.330+00:00  authenticate: undefined undefined aedes_WaBdam9TRy+pHoH9XL62CA/1
2026-06-16T11:15:00.331+00:00  connected (aedes_WaBdam9TRy+pHoH9XL62CA/1)
2026-06-16T11:15:00.336+00:00  publish (broker): {
2026-06-16T11:15:00.336+00:00    topic: '$SYS/b96fcb76-0296-4284-b823-ef1d0598899c/new/clients',
2026-06-16T11:15:00.336+00:00    payload_str: 'aedes_WaBdam9TRy+pHoH9XL62CA/1'
2026-06-16T11:15:00.337+00:00  }
2026-06-16T11:15:00.352+00:00  ready (aedes_WaBdam9TRy+pHoH9XL62CA/1)
2026-06-16T11:15:00.359+00:00  publish (broker): {
2026-06-16T11:15:00.360+00:00    topic: 'state/clients',
2026-06-16T11:15:00.360+00:00    payload_str: '[{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/0","subscriptions":["#"]},{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/1","subscriptions":[]}]'
2026-06-16T11:15:00.360+00:00  }
2026-06-16T11:15:00.361+00:00  subscriptions (aedes_WaBdam9TRy+pHoH9XL62CA/1) [ 'hil/wprsnpr/#' ]
2026-06-16T11:15:00.363+00:00  publish (broker): {
2026-06-16T11:15:00.363+00:00    topic: '$SYS/b96fcb76-0296-4284-b823-ef1d0598899c/new/subscribes',
2026-06-16T11:15:00.364+00:00    payload_str: '{"clientId":"aedes_WaBdam9TRy+pHoH9XL62CA/1","subs":[{"topic":"hil/wprsnpr/#","qos":0}]}'
2026-06-16T11:15:00.364+00:00  }
2026-06-16T11:15:00.368+00:00  publish (broker): {
2026-06-16T11:15:00.368+00:00    topic: 'state/clients',
2026-06-16T11:15:00.369+00:00    payload_str: '[{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/0","subscriptions":["#"]},{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/1","subscriptions":["hil/wprsnpr/#"]}]'
2026-06-16T11:15:00.369+00:00  }
2026-06-16T11:15:03.388+00:00  authenticate: hil hil io-wipper-qtpy-esp32s3-n4r213210089
2026-06-16T11:15:03.392+00:00  connected (io-wipper-qtpy-esp32s3-n4r213210089)
2026-06-16T11:15:03.393+00:00  publish (broker): {
2026-06-16T11:15:03.394+00:00    topic: '$SYS/b96fcb76-0296-4284-b823-ef1d0598899c/new/clients',
2026-06-16T11:15:03.394+00:00    payload_str: 'io-wipper-qtpy-esp32s3-n4r213210089'
2026-06-16T11:15:03.394+00:00  }
2026-06-16T11:15:03.398+00:00  ready (io-wipper-qtpy-esp32s3-n4r213210089)
2026-06-16T11:15:03.399+00:00  publish (broker): {
2026-06-16T11:15:03.399+00:00    topic: 'state/clients',
2026-06-16T11:15:03.399+00:00    payload_str: '[{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/0","subscriptions":["#"]},{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":[]}]'
2026-06-16T11:15:03.399+00:00  }
2026-06-16T11:15:03.409+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:15:03.409+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker'
2026-06-16T11:15:03.410+00:00  ]
2026-06-16T11:15:03.410+00:00  publish (broker): {
2026-06-16T11:15:03.410+00:00    topic: '$SYS/b96fcb76-0296-4284-b823-ef1d0598899c/new/subscribes',
2026-06-16T11:15:03.410+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","qos":1}]}'
2026-06-16T11:15:03.411+00:00  }
2026-06-16T11:15:03.414+00:00  publish (broker): {
2026-06-16T11:15:03.414+00:00    topic: 'state/clients',
2026-06-16T11:15:03.415+00:00    payload_str: '[{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/0","subscriptions":["#"]},{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker"]}]'
2026-06-16T11:15:03.415+00:00  }
2026-06-16T11:15:03.429+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker' ]
2026-06-16T11:15:03.430+00:00  publish (broker): {
2026-06-16T11:15:03.430+00:00    topic: '$SYS/b96fcb76-0296-4284-b823-ef1d0598899c/new/subscribes',
2026-06-16T11:15:03.430+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","qos":1}]}'
2026-06-16T11:15:03.430+00:00  }
2026-06-16T11:15:03.434+00:00  publish (broker): {
2026-06-16T11:15:03.435+00:00    topic: 'state/clients',
2026-06-16T11:15:03.435+00:00    payload_str: '[{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/0","subscriptions":["#"]},{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker"]}]'
2026-06-16T11:15:03.436+00:00  }
2026-06-16T11:15:03.453+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:15:03.454+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c'
2026-06-16T11:15:03.454+00:00  ]
2026-06-16T11:15:03.454+00:00  publish (broker): {
2026-06-16T11:15:03.454+00:00    topic: '$SYS/b96fcb76-0296-4284-b823-ef1d0598899c/new/subscribes',
2026-06-16T11:15:03.455+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","qos":1}]}'
2026-06-16T11:15:03.455+00:00  }
2026-06-16T11:15:03.458+00:00  publish (broker): {
2026-06-16T11:15:03.458+00:00    topic: 'state/clients',
2026-06-16T11:15:03.458+00:00    payload_str: '[{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/0","subscriptions":["#"]},{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c"]}]'
2026-06-16T11:15:03.458+00:00  }
2026-06-16T11:15:03.472+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:15:03.473+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20'
2026-06-16T11:15:03.473+00:00  ]
2026-06-16T11:15:03.474+00:00  publish (broker): {
2026-06-16T11:15:03.475+00:00    topic: '$SYS/b96fcb76-0296-4284-b823-ef1d0598899c/new/subscribes',
2026-06-16T11:15:03.475+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","qos":1}]}'
2026-06-16T11:15:03.476+00:00  }
2026-06-16T11:15:03.487+00:00  publish (broker): {
2026-06-16T11:15:03.487+00:00    topic: 'state/clients',
2026-06-16T11:15:03.488+00:00    payload_str: '[{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/0","subscriptions":["#"]},{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20"]}]'
2026-06-16T11:15:03.488+00:00  }
2026-06-16T11:15:03.493+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:15:03.499+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo'
2026-06-16T11:15:03.499+00:00  ]
2026-06-16T11:15:03.500+00:00  publish (broker): {
2026-06-16T11:15:03.501+00:00    topic: '$SYS/b96fcb76-0296-4284-b823-ef1d0598899c/new/subscribes',
2026-06-16T11:15:03.501+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","qos":1}]}'
2026-06-16T11:15:03.501+00:00  }
2026-06-16T11:15:03.502+00:00  publish (broker): {
2026-06-16T11:15:03.502+00:00    topic: 'state/clients',
2026-06-16T11:15:03.502+00:00    payload_str: '[{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/0","subscriptions":["#"]},{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo"]}]'
2026-06-16T11:15:03.502+00:00  }
2026-06-16T11:15:03.513+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:15:03.513+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm'
2026-06-16T11:15:03.514+00:00  ]
2026-06-16T11:15:03.514+00:00  publish (broker): {
2026-06-16T11:15:03.514+00:00    topic: '$SYS/b96fcb76-0296-4284-b823-ef1d0598899c/new/subscribes',
2026-06-16T11:15:03.515+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","qos":1}]}'
2026-06-16T11:15:03.515+00:00  }
2026-06-16T11:15:03.517+00:00  publish (broker): {
2026-06-16T11:15:03.517+00:00    topic: 'state/clients',
2026-06-16T11:15:03.517+00:00    payload_str: '[{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/0","subscriptions":["#"]},{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm"]}]'
2026-06-16T11:15:03.518+00:00  }
2026-06-16T11:15:03.537+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:15:03.538+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel'
2026-06-16T11:15:03.538+00:00  ]
2026-06-16T11:15:03.538+00:00  publish (broker): {
2026-06-16T11:15:03.539+00:00    topic: '$SYS/b96fcb76-0296-4284-b823-ef1d0598899c/new/subscribes',
2026-06-16T11:15:03.539+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","qos":1}]}'
2026-06-16T11:15:03.539+00:00  }
2026-06-16T11:15:03.545+00:00  publish (broker): {
2026-06-16T11:15:03.546+00:00    topic: 'state/clients',
2026-06-16T11:15:03.546+00:00    payload_str: '[{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/0","subscriptions":["#"]},{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel"]}]'
2026-06-16T11:15:03.546+00:00  }
2026-06-16T11:15:03.554+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:15:03.554+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart'
2026-06-16T11:15:03.555+00:00  ]
2026-06-16T11:15:03.555+00:00  publish (broker): {
2026-06-16T11:15:03.555+00:00    topic: '$SYS/b96fcb76-0296-4284-b823-ef1d0598899c/new/subscribes',
2026-06-16T11:15:03.555+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","qos":1}]}'
2026-06-16T11:15:03.556+00:00  }
2026-06-16T11:15:03.558+00:00  publish (broker): {
2026-06-16T11:15:03.558+00:00    topic: 'state/clients',
2026-06-16T11:15:03.559+00:00    payload_str: '[{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/0","subscriptions":["#"]},{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart"]}]'
2026-06-16T11:15:03.559+00:00  }
2026-06-16T11:15:03.565+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:15:03.565+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display'
2026-06-16T11:15:03.566+00:00  ]
2026-06-16T11:15:03.566+00:00  publish (broker): {
2026-06-16T11:15:03.566+00:00    topic: '$SYS/b96fcb76-0296-4284-b823-ef1d0598899c/new/subscribes',
2026-06-16T11:15:03.566+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","qos":1}]}'
2026-06-16T11:15:03.567+00:00  }
2026-06-16T11:15:03.569+00:00  publish (broker): {
2026-06-16T11:15:03.569+00:00    topic: 'state/clients',
2026-06-16T11:15:03.570+00:00    payload_str: '[{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/0","subscriptions":["#"]},{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display"]}]'
2026-06-16T11:15:03.570+00:00  }
2026-06-16T11:15:03.577+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/errors' ]
2026-06-16T11:15:03.578+00:00  publish (broker): {
2026-06-16T11:15:03.578+00:00    topic: '$SYS/b96fcb76-0296-4284-b823-ef1d0598899c/new/subscribes',
2026-06-16T11:15:03.578+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/errors","qos":0}]}'
2026-06-16T11:15:03.579+00:00  }
2026-06-16T11:15:03.580+00:00  publish (broker): {
2026-06-16T11:15:03.580+00:00    topic: 'state/clients',
2026-06-16T11:15:03.581+00:00    payload_str: '[{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/0","subscriptions":["#"]},{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors"]}]'
2026-06-16T11:15:03.581+00:00  }
2026-06-16T11:15:03.588+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/throttle' ]
2026-06-16T11:15:03.590+00:00  publish (broker): {
2026-06-16T11:15:03.591+00:00    topic: '$SYS/b96fcb76-0296-4284-b823-ef1d0598899c/new/subscribes',
2026-06-16T11:15:03.591+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/throttle","qos":0}]}'
2026-06-16T11:15:03.591+00:00  }
2026-06-16T11:15:03.595+00:00  publish (broker): {
2026-06-16T11:15:03.596+00:00    topic: 'state/clients',
2026-06-16T11:15:03.596+00:00    payload_str: '[{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/0","subscriptions":["#"]},{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T11:15:03.597+00:00  }
2026-06-16T11:15:03.639+00:00  [V1 d2b] hil/wprsnpr/info/status → wippersnapper.description.v1.CreateDescriptionRequest
2026-06-16T11:15:03.640+00:00    decoded: {
2026-06-16T11:15:03.640+00:00    "machineName": "qtpy-esp32s3-n4r2",
2026-06-16T11:15:03.640+00:00    "macAddr": 13210089,
2026-06-16T11:15:03.640+00:00    "usbVid": 0,
2026-06-16T11:15:03.640+00:00    "usbPid": 0,
2026-06-16T11:15:03.640+00:00    "version": null,
2026-06-16T11:15:03.641+00:00    "verMajor": 0,
2026-06-16T11:15:03.641+00:00    "verMinor": 0,
2026-06-16T11:15:03.641+00:00    "verPatch": 0,
2026-06-16T11:15:03.641+00:00    "verPreRelease": "",
2026-06-16T11:15:03.641+00:00    "verBuild": 0,
2026-06-16T11:15:03.641+00:00    "strVersion": "1.0.0-beta.130"
2026-06-16T11:15:03.642+00:00  }
2026-06-16T11:15:03.648+00:00  [Fallback V1] Auto-Responding to checkin → hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker
2026-06-16T11:15:03.649+00:00    response: {"response":"RESPONSE_OK","totalGpioPins":30,"totalAnalogPins":4,"referenceVoltage":2.5,"totalI2cPorts":1}
2026-06-16T11:15:03.650+00:00  [V1 b2d] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker → wippersnapper.description.v1.CreateDescriptionResponse
2026-06-16T11:15:03.651+00:00    decoded: {
2026-06-16T11:15:03.651+00:00    "response": "RESPONSE_OK",
2026-06-16T11:15:03.651+00:00    "totalGpioPins": 30,
2026-06-16T11:15:03.651+00:00    "totalAnalogPins": 4,
2026-06-16T11:15:03.652+00:00    "referenceVoltage": 2.5,
2026-06-16T11:15:03.652+00:00    "totalI2cPorts": 1
2026-06-16T11:15:03.652+00:00  }
2026-06-16T11:15:03.662+00:00  [Fallback V1] Sending empty pin config → hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker
2026-06-16T11:15:03.662+00:00    payload: {"pinConfigs":{"list":[]}} (3200)
2026-06-16T11:15:03.663+00:00  [V1 b2d] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker → wippersnapper.signal.v1.CreateSignalRequest
2026-06-16T11:15:03.663+00:00    decoded: {
2026-06-16T11:15:03.664+00:00    "pinConfigs": {
2026-06-16T11:15:03.664+00:00      "list": []
2026-06-16T11:15:03.664+00:00    }
2026-06-16T11:15:03.664+00:00  }
2026-06-16T11:15:03.667+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/info/status
2026-06-16T11:15:03.667+00:00    {"machineName":"qtpy-esp32s3-n4r2","macAddr":13210089,"strVersion":"1.0.0-beta.130"}
2026-06-16T11:15:03.668+00:00  publish (broker): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker
2026-06-16T11:15:03.668+00:00    {"response":"RESPONSE_OK","totalGpioPins":30,"totalAnalogPins":4,"referenceVoltage":2.5,"totalI2cPorts":1}
2026-06-16T11:15:03.668+00:00  publish (broker): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker
2026-06-16T11:15:03.668+00:00    {"pinConfigs":{}}
2026-06-16T11:15:04.236+00:00  [V1 d2b] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/device/complete → wippersnapper.description.v1.RegistrationComplete
2026-06-16T11:15:04.236+00:00    decoded: {
2026-06-16T11:15:04.236+00:00    "isComplete": true
2026-06-16T11:15:04.237+00:00  }
2026-06-16T11:15:04.237+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/device/complete
2026-06-16T11:15:04.237+00:00    {"isComplete":true}
2026-06-16T11:15:04.255+00:00  [V1 d2b] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/device/pinConfigComplete → wippersnapper.signal.v1.SignalResponse
2026-06-16T11:15:04.256+00:00    decoded: {
2026-06-16T11:15:04.256+00:00    "configurationComplete": true
2026-06-16T11:15:04.256+00:00  }
2026-06-16T11:15:04.258+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/device/pinConfigComplete
2026-06-16T11:15:04.258+00:00    {"configurationComplete":true}
2026-06-16T11:15:05.352+00:00  disconnected (aedes_WaBdam9TRy+pHoH9XL62CA/1)
2026-06-16T11:15:05.352+00:00  publish (broker): {
2026-06-16T11:15:05.353+00:00    topic: '$SYS/b96fcb76-0296-4284-b823-ef1d0598899c/disconnect/clients',
2026-06-16T11:15:05.353+00:00    payload_str: 'aedes_WaBdam9TRy+pHoH9XL62CA/1'
2026-06-16T11:15:05.353+00:00  }
2026-06-16T11:15:05.353+00:00  unsubscriptions (aedes_WaBdam9TRy+pHoH9XL62CA/1): [ 'hil/wprsnpr/#' ]
2026-06-16T11:15:05.353+00:00  publish (broker): {
2026-06-16T11:15:05.353+00:00    topic: '$SYS/b96fcb76-0296-4284-b823-ef1d0598899c/new/unsubscribes',
2026-06-16T11:15:05.353+00:00    payload_str: '{"clientId":"aedes_WaBdam9TRy+pHoH9XL62CA/1","subs":["hil/wprsnpr/#"]}'
2026-06-16T11:15:05.353+00:00  }
2026-06-16T11:15:05.353+00:00  publish (broker): {
2026-06-16T11:15:05.353+00:00    topic: 'state/clients',
2026-06-16T11:15:05.353+00:00    payload_str: '[{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T11:15:05.353+00:00  }
2026-06-16T11:15:05.353+00:00  publish (broker): {
2026-06-16T11:15:05.353+00:00    topic: 'state/clients',
2026-06-16T11:15:05.353+00:00    payload_str: '[{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T11:15:05.353+00:00  }
2026-06-16T11:15:05.406+00:00  [API:/echo]
2026-06-16T11:15:05.418+00:00  [V1 b2d] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel → wippersnapper.signal.v1.PixelsRequest
2026-06-16T11:15:05.418+00:00    decoded: {
2026-06-16T11:15:05.418+00:00    "reqPixelsWrite": {
2026-06-16T11:15:05.418+00:00      "pixelsType": "PIXELS_TYPE_NEOPIXEL",
2026-06-16T11:15:05.419+00:00      "pixelsPinData": "D0",
2026-06-16T11:15:05.419+00:00      "pixelsColor": 200
2026-06-16T11:15:05.419+00:00    }
2026-06-16T11:15:05.420+00:00  }
2026-06-16T11:15:05.438+00:00  publish (broker): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel
2026-06-16T11:15:05.438+00:00    {"reqPixelsWrite":{"pixelsType":"PIXELS_TYPE_NEOPIXEL","pixelsPinData":"D0","pixelsColor":200}}
2026-06-16T11:15:05.442+00:00  authenticate: undefined undefined aedes_WaBdam9TRy+pHoH9XL62CA/2
2026-06-16T11:15:05.442+00:00  connected (aedes_WaBdam9TRy+pHoH9XL62CA/2)
2026-06-16T11:15:05.443+00:00  publish (broker): {
2026-06-16T11:15:05.443+00:00    topic: '$SYS/b96fcb76-0296-4284-b823-ef1d0598899c/new/clients',
2026-06-16T11:15:05.443+00:00    payload_str: 'aedes_WaBdam9TRy+pHoH9XL62CA/2'
2026-06-16T11:15:05.443+00:00  }
2026-06-16T11:15:05.447+00:00  ready (aedes_WaBdam9TRy+pHoH9XL62CA/2)
2026-06-16T11:15:05.447+00:00  publish (broker): {
2026-06-16T11:15:05.447+00:00    topic: 'state/clients',
2026-06-16T11:15:05.448+00:00    payload_str: '[{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]},{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/2","subscriptions":[]}]'
2026-06-16T11:15:05.448+00:00  }
2026-06-16T11:15:05.448+00:00  subscriptions (aedes_WaBdam9TRy+pHoH9XL62CA/2) [ 'hil/wprsnpr/#' ]
2026-06-16T11:15:05.448+00:00  publish (broker): {
2026-06-16T11:15:05.448+00:00    topic: '$SYS/b96fcb76-0296-4284-b823-ef1d0598899c/new/subscribes',
2026-06-16T11:15:05.449+00:00    payload_str: '{"clientId":"aedes_WaBdam9TRy+pHoH9XL62CA/2","subs":[{"topic":"hil/wprsnpr/#","qos":0}]}'
2026-06-16T11:15:05.449+00:00  }
2026-06-16T11:15:05.450+00:00  publish (broker): {
2026-06-16T11:15:05.451+00:00    topic: 'state/clients',
2026-06-16T11:15:05.451+00:00    payload_str: '[{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]},{"id":"aedes_WaBdam9TRy+pHoH9XL62CA/2","subscriptions":["hil/wprsnpr/#"]}]'
2026-06-16T11:15:05.451+00:00  }

logs for qtpy_esp32s3_n4r2/high: serial / protomq / flash — in the per-log Artifacts

Expected: release rebooted=true (crash), PR rebooted=false (graceful).

@github-actions

Copy link
Copy Markdown

🔌 HIL test results — run #17

commit dc9a65b · 2026-06-16 11:19:50Z · full logs (serial.log / protomq.log / flash.log) in the hil-assets artifact

✅ Check-in smoke test

Flash this PR's build → write secrets → power-cycle → assert the device checks in to the broker.

target this PR check-in
qtpy_esp32s3_n4r2 flashed ok=true ✅
📜 `qtpy_esp32s3_n4r2` checkin · serial.log (✓ from boot to just after the detected test phrase)
2026-06-16T11:21:50.423+00:00  Fatal Error: Halted execution!
2026-06-16T11:21:50.424+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:21:51.534+00:00  Fatal Error: Halted execution!
2026-06-16T11:21:51.535+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:21:52.456+00:00  Fatal Error: Halted execution!
2026-06-16T11:21:52.457+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:21:53.419+00:00  Fatal Error: Halted execution!
2026-06-16T11:21:53.420+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:21:54.510+00:00  Fatal Error: Halted execution!
2026-06-16T11:21:54.511+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:21:55.533+00:00  Fatal Error: Halted execution!
2026-06-16T11:21:55.533+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:21:56.449+00:00  Fatal Error: Halted execution!
2026-06-16T11:21:56.450+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:21:57.438+00:00  Fatal Error: Halted execution!
2026-06-16T11:21:57.439+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:22:12.836+00:00  WipperSnapper found these WiFi networks:
2026-06-16T11:22:12.837+00:00  free4all (EC:FC:2F:83:DC:D8) -51dB (ch1)
2026-06-16T11:22:13.322+00:00  Connecting to WiFi (attempt #0)
2026-06-16T11:22:18.977+00:00  Connected to WiFi!
2026-06-16T11:22:18.978+00:00  Connecting to AIO MQTT (attempt #0)
2026-06-16T11:22:18.979+00:00  WiFi Status: 20
2026-06-16T11:22:20.466+00:00  Registering hardware with WipperSnapper...
2026-06-16T11:22:20.467+00:00  Registering hardware with IO...
2026-06-16T11:22:20.476+00:00  Encoding registration request...Encoding registration msg...Published!
2026-06-16T11:22:20.476+00:00  Polling for registration message response...2
2026-06-16T11:22:21.086+00:00  GOT Registration Response Message:
2026-06-16T11:22:21.086+00:00  Hardware Response Msg:
2026-06-16T11:22:21.086+00:00  	GPIO Pins: 30
2026-06-16T11:22:21.087+00:00  	Analog Pins: 4
2026-06-16T11:22:21.087+00:00  	Reference voltage: 2.50v
2026-06-16T11:22:21.093+00:00  cbSignalTopic: New Msg on Signal Topic
2026-06-16T11:22:21.094+00:00  2 bytes.
2026-06-16T11:22:21.094+00:00  decodeSignalMsg
2026-06-16T11:22:21.095+00:00  cbSignalMsg
2026-06-16T11:22:21.095+00:00  Sub-messages found: 1
2026-06-16T11:22:21.096+00:00  Signal Msg Tag: Pin Configuration
2026-06-16T11:22:21.096+00:00  Initial Pin Configuration Complete!
2026-06-16T11:22:21.098+00:00  Completed registration process, configuration next!
2026-06-16T11:22:21.105+00:00  Publishing to pin config complete...
2026-06-16T11:22:21.107+00:00  Published pin config complete message!
2026-06-16T11:22:21.108+00:00  Hardware configured successfully!
2026-06-16T11:22:22.672+00:00  Registration and configuration complete!
2026-06-16T11:22:22.672+00:00  Running application...
2026-06-16T11:22:22.682+00:00  Sending MQTT PING: SUCCESS!
2026-06-16T11:22:22.700+00:00  WiFi RSSI: -48
2026-06-16T11:22:27.914+00:00  Sending MQTT PING: SUCCESS!
2026-06-16T11:22:27.915+00:00  WiFi RSSI: -50
2026-06-16T11:22:33.037+00:00  Sending MQTT PING: SUCCESS!
📜 `qtpy_esp32s3_n4r2` checkin · protomq.log (⏱ aligned to the serial window (2026-06-16T11:21:50.423+00:00 … 2026-06-16T11:22:33.037+00:00))
2026-06-16T11:21:56.654+00:00  publish (broker): {
2026-06-16T11:21:56.655+00:00    topic: '$SYS/d1b605dd-c1bc-4ba9-8af6-9e57be08f817/heartbeat',
2026-06-16T11:21:56.655+00:00    payload_str: 'd1b605dd-c1bc-4ba9-8af6-9e57be08f817'
2026-06-16T11:21:56.655+00:00  }
2026-06-16T11:22:16.706+00:00  authenticate: undefined undefined aedes_rdiPYTVeQAyPLoLi70ZMHg/1
2026-06-16T11:22:16.706+00:00  connected (aedes_rdiPYTVeQAyPLoLi70ZMHg/1)
2026-06-16T11:22:16.708+00:00  publish (broker): {
2026-06-16T11:22:16.708+00:00    topic: '$SYS/d1b605dd-c1bc-4ba9-8af6-9e57be08f817/new/clients',
2026-06-16T11:22:16.709+00:00    payload_str: 'aedes_rdiPYTVeQAyPLoLi70ZMHg/1'
2026-06-16T11:22:16.709+00:00  }
2026-06-16T11:22:16.718+00:00  ready (aedes_rdiPYTVeQAyPLoLi70ZMHg/1)
2026-06-16T11:22:16.725+00:00  publish (broker): {
2026-06-16T11:22:16.726+00:00    topic: 'state/clients',
2026-06-16T11:22:16.726+00:00    payload_str: '[{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/0","subscriptions":["#"]},{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/1","subscriptions":[]}]'
2026-06-16T11:22:16.726+00:00  }
2026-06-16T11:22:16.728+00:00  subscriptions (aedes_rdiPYTVeQAyPLoLi70ZMHg/1) [ 'hil/wprsnpr/#' ]
2026-06-16T11:22:16.729+00:00  publish (broker): {
2026-06-16T11:22:16.729+00:00    topic: '$SYS/d1b605dd-c1bc-4ba9-8af6-9e57be08f817/new/subscribes',
2026-06-16T11:22:16.729+00:00    payload_str: '{"clientId":"aedes_rdiPYTVeQAyPLoLi70ZMHg/1","subs":[{"topic":"hil/wprsnpr/#","qos":0}]}'
2026-06-16T11:22:16.730+00:00  }
2026-06-16T11:22:16.736+00:00  publish (broker): {
2026-06-16T11:22:16.737+00:00    topic: 'state/clients',
2026-06-16T11:22:16.737+00:00    payload_str: '[{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/0","subscriptions":["#"]},{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/1","subscriptions":["hil/wprsnpr/#"]}]'
2026-06-16T11:22:16.738+00:00  }
2026-06-16T11:22:20.226+00:00  authenticate: hil hil io-wipper-qtpy-esp32s3-n4r213210089
2026-06-16T11:22:20.229+00:00  connected (io-wipper-qtpy-esp32s3-n4r213210089)
2026-06-16T11:22:20.230+00:00  publish (broker): {
2026-06-16T11:22:20.230+00:00    topic: '$SYS/d1b605dd-c1bc-4ba9-8af6-9e57be08f817/new/clients',
2026-06-16T11:22:20.231+00:00    payload_str: 'io-wipper-qtpy-esp32s3-n4r213210089'
2026-06-16T11:22:20.231+00:00  }
2026-06-16T11:22:20.238+00:00  ready (io-wipper-qtpy-esp32s3-n4r213210089)
2026-06-16T11:22:20.238+00:00  publish (broker): {
2026-06-16T11:22:20.239+00:00    topic: 'state/clients',
2026-06-16T11:22:20.239+00:00    payload_str: '[{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/0","subscriptions":["#"]},{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":[]}]'
2026-06-16T11:22:20.240+00:00  }
2026-06-16T11:22:20.247+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:22:20.248+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker'
2026-06-16T11:22:20.248+00:00  ]
2026-06-16T11:22:20.248+00:00  publish (broker): {
2026-06-16T11:22:20.249+00:00    topic: '$SYS/d1b605dd-c1bc-4ba9-8af6-9e57be08f817/new/subscribes',
2026-06-16T11:22:20.249+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","qos":1}]}'
2026-06-16T11:22:20.249+00:00  }
2026-06-16T11:22:20.256+00:00  publish (broker): {
2026-06-16T11:22:20.256+00:00    topic: 'state/clients',
2026-06-16T11:22:20.257+00:00    payload_str: '[{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/0","subscriptions":["#"]},{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker"]}]'
2026-06-16T11:22:20.257+00:00  }
2026-06-16T11:22:20.267+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker' ]
2026-06-16T11:22:20.268+00:00  publish (broker): {
2026-06-16T11:22:20.268+00:00    topic: '$SYS/d1b605dd-c1bc-4ba9-8af6-9e57be08f817/new/subscribes',
2026-06-16T11:22:20.268+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","qos":1}]}'
2026-06-16T11:22:20.268+00:00  }
2026-06-16T11:22:20.269+00:00  publish (broker): {
2026-06-16T11:22:20.270+00:00    topic: 'state/clients',
2026-06-16T11:22:20.270+00:00    payload_str: '[{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/0","subscriptions":["#"]},{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker"]}]'
2026-06-16T11:22:20.270+00:00  }
2026-06-16T11:22:20.280+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:22:20.280+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c'
2026-06-16T11:22:20.280+00:00  ]
2026-06-16T11:22:20.281+00:00  publish (broker): {
2026-06-16T11:22:20.281+00:00    topic: '$SYS/d1b605dd-c1bc-4ba9-8af6-9e57be08f817/new/subscribes',
2026-06-16T11:22:20.281+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","qos":1}]}'
2026-06-16T11:22:20.281+00:00  }
2026-06-16T11:22:20.283+00:00  publish (broker): {
2026-06-16T11:22:20.283+00:00    topic: 'state/clients',
2026-06-16T11:22:20.284+00:00    payload_str: '[{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/0","subscriptions":["#"]},{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c"]}]'
2026-06-16T11:22:20.284+00:00  }
2026-06-16T11:22:20.297+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:22:20.298+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20'
2026-06-16T11:22:20.298+00:00  ]
2026-06-16T11:22:20.298+00:00  publish (broker): {
2026-06-16T11:22:20.298+00:00    topic: '$SYS/d1b605dd-c1bc-4ba9-8af6-9e57be08f817/new/subscribes',
2026-06-16T11:22:20.299+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","qos":1}]}'
2026-06-16T11:22:20.299+00:00  }
2026-06-16T11:22:20.304+00:00  publish (broker): {
2026-06-16T11:22:20.305+00:00    topic: 'state/clients',
2026-06-16T11:22:20.305+00:00    payload_str: '[{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/0","subscriptions":["#"]},{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20"]}]'
2026-06-16T11:22:20.305+00:00  }
2026-06-16T11:22:20.320+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:22:20.320+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo'
2026-06-16T11:22:20.320+00:00  ]
2026-06-16T11:22:20.321+00:00  publish (broker): {
2026-06-16T11:22:20.321+00:00    topic: '$SYS/d1b605dd-c1bc-4ba9-8af6-9e57be08f817/new/subscribes',
2026-06-16T11:22:20.321+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","qos":1}]}'
2026-06-16T11:22:20.322+00:00  }
2026-06-16T11:22:20.328+00:00  publish (broker): {
2026-06-16T11:22:20.328+00:00    topic: 'state/clients',
2026-06-16T11:22:20.329+00:00    payload_str: '[{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/0","subscriptions":["#"]},{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo"]}]'
2026-06-16T11:22:20.329+00:00  }
2026-06-16T11:22:20.340+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:22:20.341+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm'
2026-06-16T11:22:20.341+00:00  ]
2026-06-16T11:22:20.341+00:00  publish (broker): {
2026-06-16T11:22:20.342+00:00    topic: '$SYS/d1b605dd-c1bc-4ba9-8af6-9e57be08f817/new/subscribes',
2026-06-16T11:22:20.342+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","qos":1}]}'
2026-06-16T11:22:20.342+00:00  }
2026-06-16T11:22:20.344+00:00  publish (broker): {
2026-06-16T11:22:20.344+00:00    topic: 'state/clients',
2026-06-16T11:22:20.344+00:00    payload_str: '[{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/0","subscriptions":["#"]},{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm"]}]'
2026-06-16T11:22:20.344+00:00  }
2026-06-16T11:22:20.353+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:22:20.354+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel'
2026-06-16T11:22:20.354+00:00  ]
2026-06-16T11:22:20.355+00:00  publish (broker): {
2026-06-16T11:22:20.355+00:00    topic: '$SYS/d1b605dd-c1bc-4ba9-8af6-9e57be08f817/new/subscribes',
2026-06-16T11:22:20.355+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","qos":1}]}'
2026-06-16T11:22:20.355+00:00  }
2026-06-16T11:22:20.357+00:00  publish (broker): {
2026-06-16T11:22:20.358+00:00    topic: 'state/clients',
2026-06-16T11:22:20.358+00:00    payload_str: '[{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/0","subscriptions":["#"]},{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel"]}]'
2026-06-16T11:22:20.358+00:00  }
2026-06-16T11:22:20.392+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:22:20.393+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart'
2026-06-16T11:22:20.393+00:00  ]
2026-06-16T11:22:20.394+00:00  publish (broker): {
2026-06-16T11:22:20.394+00:00    topic: '$SYS/d1b605dd-c1bc-4ba9-8af6-9e57be08f817/new/subscribes',
2026-06-16T11:22:20.394+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","qos":1}]}'
2026-06-16T11:22:20.394+00:00  }
2026-06-16T11:22:20.397+00:00  publish (broker): {
2026-06-16T11:22:20.398+00:00    topic: 'state/clients',
2026-06-16T11:22:20.398+00:00    payload_str: '[{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/0","subscriptions":["#"]},{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart"]}]'
2026-06-16T11:22:20.398+00:00  }
2026-06-16T11:22:20.403+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:22:20.404+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display'
2026-06-16T11:22:20.404+00:00  ]
2026-06-16T11:22:20.404+00:00  publish (broker): {
2026-06-16T11:22:20.404+00:00    topic: '$SYS/d1b605dd-c1bc-4ba9-8af6-9e57be08f817/new/subscribes',
2026-06-16T11:22:20.405+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","qos":1}]}'
2026-06-16T11:22:20.405+00:00  }
2026-06-16T11:22:20.406+00:00  publish (broker): {
2026-06-16T11:22:20.406+00:00    topic: 'state/clients',
2026-06-16T11:22:20.406+00:00    payload_str: '[{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/0","subscriptions":["#"]},{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display"]}]'
2026-06-16T11:22:20.407+00:00  }
2026-06-16T11:22:20.425+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/errors' ]
2026-06-16T11:22:20.426+00:00  publish (broker): {
2026-06-16T11:22:20.426+00:00    topic: '$SYS/d1b605dd-c1bc-4ba9-8af6-9e57be08f817/new/subscribes',
2026-06-16T11:22:20.426+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/errors","qos":0}]}'
2026-06-16T11:22:20.427+00:00  }
2026-06-16T11:22:20.430+00:00  publish (broker): {
2026-06-16T11:22:20.430+00:00    topic: 'state/clients',
2026-06-16T11:22:20.431+00:00    payload_str: '[{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/0","subscriptions":["#"]},{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors"]}]'
2026-06-16T11:22:20.431+00:00  }
2026-06-16T11:22:20.446+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/throttle' ]
2026-06-16T11:22:20.447+00:00  publish (broker): {
2026-06-16T11:22:20.447+00:00    topic: '$SYS/d1b605dd-c1bc-4ba9-8af6-9e57be08f817/new/subscribes',
2026-06-16T11:22:20.447+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/throttle","qos":0}]}'
2026-06-16T11:22:20.447+00:00  }
2026-06-16T11:22:20.450+00:00  publish (broker): {
2026-06-16T11:22:20.451+00:00    topic: 'state/clients',
2026-06-16T11:22:20.451+00:00    payload_str: '[{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/0","subscriptions":["#"]},{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T11:22:20.452+00:00  }
2026-06-16T11:22:20.493+00:00  [V1 d2b] hil/wprsnpr/info/status → wippersnapper.description.v1.CreateDescriptionRequest
2026-06-16T11:22:20.493+00:00    decoded: {
2026-06-16T11:22:20.493+00:00    "machineName": "qtpy-esp32s3-n4r2",
2026-06-16T11:22:20.493+00:00    "macAddr": 13210089,
2026-06-16T11:22:20.493+00:00    "usbVid": 0,
2026-06-16T11:22:20.493+00:00    "usbPid": 0,
2026-06-16T11:22:20.493+00:00    "version": null,
2026-06-16T11:22:20.493+00:00    "verMajor": 0,
2026-06-16T11:22:20.493+00:00    "verMinor": 0,
2026-06-16T11:22:20.493+00:00    "verPatch": 0,
2026-06-16T11:22:20.493+00:00    "verPreRelease": "",
2026-06-16T11:22:20.493+00:00    "verBuild": 0,
2026-06-16T11:22:20.493+00:00    "strVersion": "1.0.0-beta.130"
2026-06-16T11:22:20.494+00:00  }
2026-06-16T11:22:20.503+00:00  [Fallback V1] Auto-Responding to checkin → hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker
2026-06-16T11:22:20.503+00:00    response: {"response":"RESPONSE_OK","totalGpioPins":30,"totalAnalogPins":4,"referenceVoltage":2.5,"totalI2cPorts":1}
2026-06-16T11:22:20.505+00:00  [V1 b2d] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker → wippersnapper.description.v1.CreateDescriptionResponse
2026-06-16T11:22:20.505+00:00    decoded: {
2026-06-16T11:22:20.505+00:00    "response": "RESPONSE_OK",
2026-06-16T11:22:20.505+00:00    "totalGpioPins": 30,
2026-06-16T11:22:20.505+00:00    "totalAnalogPins": 4,
2026-06-16T11:22:20.505+00:00    "referenceVoltage": 2.5,
2026-06-16T11:22:20.505+00:00    "totalI2cPorts": 1
2026-06-16T11:22:20.505+00:00  }
2026-06-16T11:22:20.510+00:00  [Fallback V1] Sending empty pin config → hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker
2026-06-16T11:22:20.511+00:00    payload: {"pinConfigs":{"list":[]}} (3200)
2026-06-16T11:22:20.513+00:00  [V1 b2d] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker → wippersnapper.signal.v1.CreateSignalRequest
2026-06-16T11:22:20.513+00:00    decoded: {
2026-06-16T11:22:20.514+00:00    "pinConfigs": {
2026-06-16T11:22:20.514+00:00      "list": []
2026-06-16T11:22:20.514+00:00    }
2026-06-16T11:22:20.514+00:00  }
2026-06-16T11:22:20.516+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/info/status
2026-06-16T11:22:20.516+00:00    {"machineName":"qtpy-esp32s3-n4r2","macAddr":13210089,"strVersion":"1.0.0-beta.130"}
2026-06-16T11:22:20.517+00:00  publish (broker): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker
2026-06-16T11:22:20.517+00:00    {"response":"RESPONSE_OK","totalGpioPins":30,"totalAnalogPins":4,"referenceVoltage":2.5,"totalI2cPorts":1}
2026-06-16T11:22:20.517+00:00  publish (broker): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker
2026-06-16T11:22:20.517+00:00    {"pinConfigs":{}}
2026-06-16T11:22:21.097+00:00  [V1 d2b] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/device/complete → wippersnapper.description.v1.RegistrationComplete
2026-06-16T11:22:21.097+00:00    decoded: {
2026-06-16T11:22:21.097+00:00    "isComplete": true
2026-06-16T11:22:21.097+00:00  }
2026-06-16T11:22:21.098+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/device/complete
2026-06-16T11:22:21.098+00:00    {"isComplete":true}
2026-06-16T11:22:21.110+00:00  [V1 d2b] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/device/pinConfigComplete → wippersnapper.signal.v1.SignalResponse
2026-06-16T11:22:21.110+00:00    decoded: {
2026-06-16T11:22:21.111+00:00    "configurationComplete": true
2026-06-16T11:22:21.111+00:00  }
2026-06-16T11:22:21.113+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/device/pinConfigComplete
2026-06-16T11:22:21.114+00:00    {"configurationComplete":true}
2026-06-16T11:22:22.123+00:00  disconnected (aedes_rdiPYTVeQAyPLoLi70ZMHg/1)
2026-06-16T11:22:22.123+00:00  publish (broker): {
2026-06-16T11:22:22.124+00:00    topic: '$SYS/d1b605dd-c1bc-4ba9-8af6-9e57be08f817/disconnect/clients',
2026-06-16T11:22:22.124+00:00    payload_str: 'aedes_rdiPYTVeQAyPLoLi70ZMHg/1'
2026-06-16T11:22:22.124+00:00  }
2026-06-16T11:22:22.125+00:00  unsubscriptions (aedes_rdiPYTVeQAyPLoLi70ZMHg/1): [ 'hil/wprsnpr/#' ]
2026-06-16T11:22:22.125+00:00  publish (broker): {
2026-06-16T11:22:22.125+00:00    topic: '$SYS/d1b605dd-c1bc-4ba9-8af6-9e57be08f817/new/unsubscribes',
2026-06-16T11:22:22.125+00:00    payload_str: '{"clientId":"aedes_rdiPYTVeQAyPLoLi70ZMHg/1","subs":["hil/wprsnpr/#"]}'
2026-06-16T11:22:22.126+00:00  }
2026-06-16T11:22:22.128+00:00  publish (broker): {
2026-06-16T11:22:22.129+00:00    topic: 'state/clients',
2026-06-16T11:22:22.129+00:00    payload_str: '[{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T11:22:22.130+00:00  }
2026-06-16T11:22:22.130+00:00  publish (broker): {
2026-06-16T11:22:22.130+00:00    topic: 'state/clients',
2026-06-16T11:22:22.131+00:00    payload_str: '[{"id":"aedes_rdiPYTVeQAyPLoLi70ZMHg/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T11:22:22.131+00:00  }

logs for qtpy_esp32s3_n4r2/checkin: serial / protomq / flash — in the per-log Artifacts

Expected: ok=true (device flashed + configured + checked in).

🧪 pixelWrite uninitialised-strand regression (#926)

v1 ws.signal.pixelWrite to an uninitialised strand (pin D0, colour 200) — release should crash+reboot, the fix should log + continue (#926 / fixed by #927).

target release 1.0.0-beta.127 this PR verdict
qtpy_esp32s3_n4r2 rebooted=true rebooted=false
📜 `qtpy_esp32s3_n4r2` low · serial.log (✓ from boot to just after the detected test phrase)
2026-06-16T11:25:11.305+00:00  Fatal Error: Halted execution!
2026-06-16T11:25:11.306+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:25:12.341+00:00  Fatal Error: Halted execution!
2026-06-16T11:25:12.341+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:25:13.366+00:00  Fatal Error: Halted execution!
2026-06-16T11:25:13.367+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:25:14.302+00:00  Fatal Error: Halted execution!
2026-06-16T11:25:14.303+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:25:15.316+00:00  Fatal Error: Halted execution!
2026-06-16T11:25:15.316+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:25:16.341+00:00  Fatal Error: Halted execution!
2026-06-16T11:25:16.341+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:25:17.310+00:00  Fatal Error: Halted execution!
2026-06-16T11:25:17.310+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:25:18.316+00:00  Fatal Error: Halted execution!
2026-06-16T11:25:18.317+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:25:27.472+00:00  Found single wifi network in secrets.json
2026-06-16T11:25:27.473+00:00  Adafruit.io WipperSnapper
2026-06-16T11:25:27.474+00:00  -------Device Information-------
2026-06-16T11:25:27.474+00:00  Firmware Version: 1.0.0-beta.127
2026-06-16T11:25:27.474+00:00  Board ID: qtpy-esp32s3-n4r2
2026-06-16T11:25:27.475+00:00  Adafruit.io User: hil
2026-06-16T11:25:27.475+00:00  Adafruit.io URL: 192.168.1.169
2026-06-16T11:25:27.476+00:00  Adafruit.io Port: 1884
2026-06-16T11:25:27.476+00:00  WiFi Network: free4all
2026-06-16T11:25:27.477+00:00  MAC Address: F4:12:FA:59:64:84
2026-06-16T11:25:27.484+00:00  -------------------------------
2026-06-16T11:25:27.484+00:00  ESP32 CPU0 RESET REASON: NO_MEAN
2026-06-16T11:25:27.485+00:00  ESP32 CPU1 RESET REASON: POWERON_RESET
2026-06-16T11:25:27.485+00:00  Generating device's MQTT topics...
2026-06-16T11:25:27.485+00:00  Subscribing to DISPLAY topic: 
2026-06-16T11:25:27.486+00:00  hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display
2026-06-16T11:25:27.486+00:00  Subscribed to DISPLAY topic!
2026-06-16T11:25:27.486+00:00  Running Network FSM...
2026-06-16T11:25:27.486+00:00  Establishing network connection...
2026-06-16T11:25:30.019+00:00  Performing a WiFi scan for SSID...WipperSnapper found these WiFi networks:
2026-06-16T11:25:30.020+00:00  free4all (EC:FC:2F:83:DC:D8) -49dB (ch1)
2026-06-16T11:25:30.614+00:00  Connecting to WiFi (attempt #0)
2026-06-16T11:25:36.236+00:00  Connected to WiFi!
2026-06-16T11:25:36.236+00:00  Connecting to AIO MQTT (attempt #0)
2026-06-16T11:25:36.237+00:00  WiFi Status: 20
2026-06-16T11:25:37.772+00:00  Registering hardware with WipperSnapper...
2026-06-16T11:25:37.772+00:00  Registering hardware with IO...
2026-06-16T11:25:37.825+00:00  Encoding registration request...Encoding registration msg...Published!
2026-06-16T11:25:37.826+00:00  Polling for registration message response...2
2026-06-16T11:25:38.420+00:00  GOT Registration Response Message:
2026-06-16T11:25:38.421+00:00  Hardware Response Msg:
2026-06-16T11:25:38.421+00:00  	GPIO Pins: 30
2026-06-16T11:25:38.426+00:00  	Analog Pins: 4
2026-06-16T11:25:38.426+00:00  	Reference voltage: 2.50v
2026-06-16T11:25:38.427+00:00  cbSignalTopic: New Msg on Signal Topic
2026-06-16T11:25:38.427+00:00  2 bytes.
2026-06-16T11:25:38.428+00:00  decodeSignalMsg
2026-06-16T11:25:38.428+00:00  cbSignalMsg
2026-06-16T11:25:38.428+00:00  Sub-messages found: 1
2026-06-16T11:25:38.429+00:00  Signal Msg Tag: Pin Configuration
2026-06-16T11:25:38.429+00:00  Initial Pin Configuration Complete!
2026-06-16T11:25:38.432+00:00  Completed registration process, configuration next!
2026-06-16T11:25:38.432+00:00  Publishing to pin config complete...
2026-06-16T11:25:38.450+00:00  Published pin config complete message!
2026-06-16T11:25:38.450+00:00  Hardware configured successfully!
2026-06-16T11:25:39.996+00:00  Registration and configuration complete!
2026-06-16T11:25:39.996+00:00  Running application...
2026-06-16T11:25:40.023+00:00  Sending MQTT PING: * NEW MESSAGE [Topic: Pixels]: 
2026-06-16T11:25:40.023+00:00  11 bytes.
2026-06-16T11:25:40.024+00:00  [Message Type]: wippersnapper_signal_v1_PixelsRequest_req_pixels_write_tag
2026-06-16T11:25:45.148+00:00  ERROR: UWipperSnapper found these WiFi networks:
2026-06-16T11:25:45.149+00:00  free4all (EC:FC:2F:83:DC:D8) -50dB (ch1)
📜 `qtpy_esp32s3_n4r2` low · protomq.log (⏱ aligned to the serial window (2026-06-16T11:25:11.305+00:00 … 2026-06-16T11:25:45.149+00:00))
2026-06-16T11:25:17.484+00:00  publish (broker): {
2026-06-16T11:25:17.484+00:00    topic: '$SYS/ff8c6ca2-d0bd-4846-8a33-492d60e5ce5c/heartbeat',
2026-06-16T11:25:17.484+00:00    payload_str: 'ff8c6ca2-d0bd-4846-8a33-492d60e5ce5c'
2026-06-16T11:25:17.484+00:00  }
2026-06-16T11:25:34.424+00:00  authenticate: undefined undefined aedes_aiud9C1mRfqbO5NNDsWxdg/1
2026-06-16T11:25:34.425+00:00  connected (aedes_aiud9C1mRfqbO5NNDsWxdg/1)
2026-06-16T11:25:34.429+00:00  publish (broker): {
2026-06-16T11:25:34.429+00:00    topic: '$SYS/ff8c6ca2-d0bd-4846-8a33-492d60e5ce5c/new/clients',
2026-06-16T11:25:34.429+00:00    payload_str: 'aedes_aiud9C1mRfqbO5NNDsWxdg/1'
2026-06-16T11:25:34.430+00:00  }
2026-06-16T11:25:34.444+00:00  ready (aedes_aiud9C1mRfqbO5NNDsWxdg/1)
2026-06-16T11:25:34.452+00:00  publish (broker): {
2026-06-16T11:25:34.453+00:00    topic: 'state/clients',
2026-06-16T11:25:34.453+00:00    payload_str: '[{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/0","subscriptions":["#"]},{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/1","subscriptions":[]}]'
2026-06-16T11:25:34.454+00:00  }
2026-06-16T11:25:34.454+00:00  subscriptions (aedes_aiud9C1mRfqbO5NNDsWxdg/1) [ 'hil/wprsnpr/#' ]
2026-06-16T11:25:34.458+00:00  publish (broker): {
2026-06-16T11:25:34.458+00:00    topic: '$SYS/ff8c6ca2-d0bd-4846-8a33-492d60e5ce5c/new/subscribes',
2026-06-16T11:25:34.458+00:00    payload_str: '{"clientId":"aedes_aiud9C1mRfqbO5NNDsWxdg/1","subs":[{"topic":"hil/wprsnpr/#","qos":0}]}'
2026-06-16T11:25:34.459+00:00  }
2026-06-16T11:25:34.465+00:00  publish (broker): {
2026-06-16T11:25:34.465+00:00    topic: 'state/clients',
2026-06-16T11:25:34.466+00:00    payload_str: '[{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/0","subscriptions":["#"]},{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/1","subscriptions":["hil/wprsnpr/#"]}]'
2026-06-16T11:25:34.466+00:00  }
2026-06-16T11:25:37.180+00:00  authenticate: hil hil io-wipper-qtpy-esp32s3-n4r213210089
2026-06-16T11:25:37.183+00:00  connected (io-wipper-qtpy-esp32s3-n4r213210089)
2026-06-16T11:25:37.187+00:00  publish (broker): {
2026-06-16T11:25:37.187+00:00    topic: '$SYS/ff8c6ca2-d0bd-4846-8a33-492d60e5ce5c/new/clients',
2026-06-16T11:25:37.188+00:00    payload_str: 'io-wipper-qtpy-esp32s3-n4r213210089'
2026-06-16T11:25:37.188+00:00  }
2026-06-16T11:25:37.194+00:00  ready (io-wipper-qtpy-esp32s3-n4r213210089)
2026-06-16T11:25:37.194+00:00  publish (broker): {
2026-06-16T11:25:37.194+00:00    topic: 'state/clients',
2026-06-16T11:25:37.195+00:00    payload_str: '[{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/0","subscriptions":["#"]},{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":[]}]'
2026-06-16T11:25:37.195+00:00  }
2026-06-16T11:25:37.281+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:25:37.282+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker'
2026-06-16T11:25:37.282+00:00  ]
2026-06-16T11:25:37.283+00:00  publish (broker): {
2026-06-16T11:25:37.283+00:00    topic: '$SYS/ff8c6ca2-d0bd-4846-8a33-492d60e5ce5c/new/subscribes',
2026-06-16T11:25:37.283+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","qos":1}]}'
2026-06-16T11:25:37.284+00:00  }
2026-06-16T11:25:37.289+00:00  publish (broker): {
2026-06-16T11:25:37.289+00:00    topic: 'state/clients',
2026-06-16T11:25:37.290+00:00    payload_str: '[{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/0","subscriptions":["#"]},{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker"]}]'
2026-06-16T11:25:37.290+00:00  }
2026-06-16T11:25:37.385+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker' ]
2026-06-16T11:25:37.387+00:00  publish (broker): {
2026-06-16T11:25:37.388+00:00    topic: '$SYS/ff8c6ca2-d0bd-4846-8a33-492d60e5ce5c/new/subscribes',
2026-06-16T11:25:37.388+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","qos":1}]}'
2026-06-16T11:25:37.389+00:00  }
2026-06-16T11:25:37.391+00:00  publish (broker): {
2026-06-16T11:25:37.392+00:00    topic: 'state/clients',
2026-06-16T11:25:37.392+00:00    payload_str: '[{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/0","subscriptions":["#"]},{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker"]}]'
2026-06-16T11:25:37.393+00:00  }
2026-06-16T11:25:37.461+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:25:37.461+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c'
2026-06-16T11:25:37.462+00:00  ]
2026-06-16T11:25:37.462+00:00  publish (broker): {
2026-06-16T11:25:37.463+00:00    topic: '$SYS/ff8c6ca2-d0bd-4846-8a33-492d60e5ce5c/new/subscribes',
2026-06-16T11:25:37.463+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","qos":1}]}'
2026-06-16T11:25:37.463+00:00  }
2026-06-16T11:25:37.467+00:00  publish (broker): {
2026-06-16T11:25:37.468+00:00    topic: 'state/clients',
2026-06-16T11:25:37.468+00:00    payload_str: '[{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/0","subscriptions":["#"]},{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c"]}]'
2026-06-16T11:25:37.469+00:00  }
2026-06-16T11:25:37.474+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:25:37.474+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20'
2026-06-16T11:25:37.475+00:00  ]
2026-06-16T11:25:37.475+00:00  publish (broker): {
2026-06-16T11:25:37.476+00:00    topic: '$SYS/ff8c6ca2-d0bd-4846-8a33-492d60e5ce5c/new/subscribes',
2026-06-16T11:25:37.476+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","qos":1}]}'
2026-06-16T11:25:37.476+00:00  }
2026-06-16T11:25:37.489+00:00  publish (broker): {
2026-06-16T11:25:37.490+00:00    topic: 'state/clients',
2026-06-16T11:25:37.490+00:00    payload_str: '[{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/0","subscriptions":["#"]},{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20"]}]'
2026-06-16T11:25:37.490+00:00  }
2026-06-16T11:25:37.533+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:25:37.534+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo'
2026-06-16T11:25:37.534+00:00  ]
2026-06-16T11:25:37.535+00:00  publish (broker): {
2026-06-16T11:25:37.535+00:00    topic: '$SYS/ff8c6ca2-d0bd-4846-8a33-492d60e5ce5c/new/subscribes',
2026-06-16T11:25:37.536+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","qos":1}]}'
2026-06-16T11:25:37.536+00:00  }
2026-06-16T11:25:37.544+00:00  publish (broker): {
2026-06-16T11:25:37.545+00:00    topic: 'state/clients',
2026-06-16T11:25:37.545+00:00    payload_str: '[{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/0","subscriptions":["#"]},{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo"]}]'
2026-06-16T11:25:37.545+00:00  }
2026-06-16T11:25:37.554+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:25:37.555+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm'
2026-06-16T11:25:37.555+00:00  ]
2026-06-16T11:25:37.556+00:00  publish (broker): {
2026-06-16T11:25:37.556+00:00    topic: '$SYS/ff8c6ca2-d0bd-4846-8a33-492d60e5ce5c/new/subscribes',
2026-06-16T11:25:37.557+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","qos":1}]}'
2026-06-16T11:25:37.557+00:00  }
2026-06-16T11:25:37.559+00:00  publish (broker): {
2026-06-16T11:25:37.560+00:00    topic: 'state/clients',
2026-06-16T11:25:37.560+00:00    payload_str: '[{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/0","subscriptions":["#"]},{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm"]}]'
2026-06-16T11:25:37.560+00:00  }
2026-06-16T11:25:37.608+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:25:37.609+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel'
2026-06-16T11:25:37.609+00:00  ]
2026-06-16T11:25:37.609+00:00  publish (broker): {
2026-06-16T11:25:37.609+00:00    topic: '$SYS/ff8c6ca2-d0bd-4846-8a33-492d60e5ce5c/new/subscribes',
2026-06-16T11:25:37.610+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","qos":1}]}'
2026-06-16T11:25:37.610+00:00  }
2026-06-16T11:25:37.612+00:00  publish (broker): {
2026-06-16T11:25:37.612+00:00    topic: 'state/clients',
2026-06-16T11:25:37.613+00:00    payload_str: '[{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/0","subscriptions":["#"]},{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel"]}]'
2026-06-16T11:25:37.613+00:00  }
2026-06-16T11:25:37.683+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:25:37.683+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart'
2026-06-16T11:25:37.684+00:00  ]
2026-06-16T11:25:37.684+00:00  publish (broker): {
2026-06-16T11:25:37.684+00:00    topic: '$SYS/ff8c6ca2-d0bd-4846-8a33-492d60e5ce5c/new/subscribes',
2026-06-16T11:25:37.684+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","qos":1}]}'
2026-06-16T11:25:37.685+00:00  }
2026-06-16T11:25:37.687+00:00  publish (broker): {
2026-06-16T11:25:37.688+00:00    topic: 'state/clients',
2026-06-16T11:25:37.688+00:00    payload_str: '[{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/0","subscriptions":["#"]},{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart"]}]'
2026-06-16T11:25:37.688+00:00  }
2026-06-16T11:25:37.697+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:25:37.697+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display'
2026-06-16T11:25:37.697+00:00  ]
2026-06-16T11:25:37.698+00:00  publish (broker): {
2026-06-16T11:25:37.699+00:00    topic: '$SYS/ff8c6ca2-d0bd-4846-8a33-492d60e5ce5c/new/subscribes',
2026-06-16T11:25:37.699+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","qos":1}]}'
2026-06-16T11:25:37.699+00:00  }
2026-06-16T11:25:37.703+00:00  publish (broker): {
2026-06-16T11:25:37.704+00:00    topic: 'state/clients',
2026-06-16T11:25:37.705+00:00    payload_str: '[{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/0","subscriptions":["#"]},{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display"]}]'
2026-06-16T11:25:37.705+00:00  }
2026-06-16T11:25:37.709+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/errors' ]
2026-06-16T11:25:37.710+00:00  publish (broker): {
2026-06-16T11:25:37.710+00:00    topic: '$SYS/ff8c6ca2-d0bd-4846-8a33-492d60e5ce5c/new/subscribes',
2026-06-16T11:25:37.710+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/errors","qos":0}]}'
2026-06-16T11:25:37.711+00:00  }
2026-06-16T11:25:37.713+00:00  publish (broker): {
2026-06-16T11:25:37.713+00:00    topic: 'state/clients',
2026-06-16T11:25:37.713+00:00    payload_str: '[{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/0","subscriptions":["#"]},{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors"]}]'
2026-06-16T11:25:37.713+00:00  }
2026-06-16T11:25:37.759+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/throttle' ]
2026-06-16T11:25:37.761+00:00  publish (broker): {
2026-06-16T11:25:37.761+00:00    topic: '$SYS/ff8c6ca2-d0bd-4846-8a33-492d60e5ce5c/new/subscribes',
2026-06-16T11:25:37.762+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/throttle","qos":0}]}'
2026-06-16T11:25:37.762+00:00  }
2026-06-16T11:25:37.765+00:00  publish (broker): {
2026-06-16T11:25:37.766+00:00    topic: 'state/clients',
2026-06-16T11:25:37.766+00:00    payload_str: '[{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/0","subscriptions":["#"]},{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T11:25:37.766+00:00  }
2026-06-16T11:25:37.815+00:00  [V1 d2b] hil/wprsnpr/info/status → wippersnapper.description.v1.CreateDescriptionRequest
2026-06-16T11:25:37.816+00:00    decoded: {
2026-06-16T11:25:37.816+00:00    "machineName": "qtpy-esp32s3-n4r2",
2026-06-16T11:25:37.816+00:00    "macAddr": 13210089,
2026-06-16T11:25:37.816+00:00    "usbVid": 0,
2026-06-16T11:25:37.816+00:00    "usbPid": 0,
2026-06-16T11:25:37.817+00:00    "version": null,
2026-06-16T11:25:37.817+00:00    "verMajor": 0,
2026-06-16T11:25:37.817+00:00    "verMinor": 0,
2026-06-16T11:25:37.817+00:00    "verPatch": 0,
2026-06-16T11:25:37.817+00:00    "verPreRelease": "",
2026-06-16T11:25:37.817+00:00    "verBuild": 0,
2026-06-16T11:25:37.818+00:00    "strVersion": "1.0.0-beta.127"
2026-06-16T11:25:37.818+00:00  }
2026-06-16T11:25:37.828+00:00  [Fallback V1] Auto-Responding to checkin → hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker
2026-06-16T11:25:37.828+00:00    response: {"response":"RESPONSE_OK","totalGpioPins":30,"totalAnalogPins":4,"referenceVoltage":2.5,"totalI2cPorts":1}
2026-06-16T11:25:37.831+00:00  [V1 b2d] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker → wippersnapper.description.v1.CreateDescriptionResponse
2026-06-16T11:25:37.831+00:00    decoded: {
2026-06-16T11:25:37.832+00:00    "response": "RESPONSE_OK",
2026-06-16T11:25:37.832+00:00    "totalGpioPins": 30,
2026-06-16T11:25:37.832+00:00    "totalAnalogPins": 4,
2026-06-16T11:25:37.832+00:00    "referenceVoltage": 2.5,
2026-06-16T11:25:37.832+00:00    "totalI2cPorts": 1
2026-06-16T11:25:37.832+00:00  }
2026-06-16T11:25:37.844+00:00  [Fallback V1] Sending empty pin config → hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker
2026-06-16T11:25:37.845+00:00    payload: {"pinConfigs":{"list":[]}} (3200)
2026-06-16T11:25:37.845+00:00  [V1 b2d] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker → wippersnapper.signal.v1.CreateSignalRequest
2026-06-16T11:25:37.846+00:00    decoded: {
2026-06-16T11:25:37.846+00:00    "pinConfigs": {
2026-06-16T11:25:37.846+00:00      "list": []
2026-06-16T11:25:37.847+00:00    }
2026-06-16T11:25:37.847+00:00  }
2026-06-16T11:25:37.851+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/info/status
2026-06-16T11:25:37.851+00:00    {"machineName":"qtpy-esp32s3-n4r2","macAddr":13210089,"strVersion":"1.0.0-beta.127"}
2026-06-16T11:25:37.851+00:00  publish (broker): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker
2026-06-16T11:25:37.852+00:00    {"response":"RESPONSE_OK","totalGpioPins":30,"totalAnalogPins":4,"referenceVoltage":2.5,"totalI2cPorts":1}
2026-06-16T11:25:37.852+00:00  publish (broker): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker
2026-06-16T11:25:37.852+00:00    {"pinConfigs":{}}
2026-06-16T11:25:38.431+00:00  [V1 d2b] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/device/complete → wippersnapper.description.v1.RegistrationComplete
2026-06-16T11:25:38.431+00:00    decoded: {
2026-06-16T11:25:38.431+00:00    "isComplete": true
2026-06-16T11:25:38.432+00:00  }
2026-06-16T11:25:38.432+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/device/complete
2026-06-16T11:25:38.432+00:00    {"isComplete":true}
2026-06-16T11:25:38.435+00:00  [V1 d2b] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/device/pinConfigComplete → wippersnapper.signal.v1.SignalResponse
2026-06-16T11:25:38.436+00:00    decoded: {
2026-06-16T11:25:38.436+00:00    "configurationComplete": true
2026-06-16T11:25:38.436+00:00  }
2026-06-16T11:25:38.437+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/device/pinConfigComplete
2026-06-16T11:25:38.437+00:00    {"configurationComplete":true}
2026-06-16T11:25:39.539+00:00  disconnected (aedes_aiud9C1mRfqbO5NNDsWxdg/1)
2026-06-16T11:25:39.539+00:00  publish (broker): {
2026-06-16T11:25:39.539+00:00    topic: '$SYS/ff8c6ca2-d0bd-4846-8a33-492d60e5ce5c/disconnect/clients',
2026-06-16T11:25:39.539+00:00    payload_str: 'aedes_aiud9C1mRfqbO5NNDsWxdg/1'
2026-06-16T11:25:39.539+00:00  }
2026-06-16T11:25:39.539+00:00  unsubscriptions (aedes_aiud9C1mRfqbO5NNDsWxdg/1): [ 'hil/wprsnpr/#' ]
2026-06-16T11:25:39.539+00:00  publish (broker): {
2026-06-16T11:25:39.539+00:00    topic: '$SYS/ff8c6ca2-d0bd-4846-8a33-492d60e5ce5c/new/unsubscribes',
2026-06-16T11:25:39.539+00:00    payload_str: '{"clientId":"aedes_aiud9C1mRfqbO5NNDsWxdg/1","subs":["hil/wprsnpr/#"]}'
2026-06-16T11:25:39.540+00:00  }
2026-06-16T11:25:39.540+00:00  publish (broker): {
2026-06-16T11:25:39.540+00:00    topic: 'state/clients',
2026-06-16T11:25:39.540+00:00    payload_str: '[{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T11:25:39.540+00:00  }
2026-06-16T11:25:39.540+00:00  publish (broker): {
2026-06-16T11:25:39.540+00:00    topic: 'state/clients',
2026-06-16T11:25:39.540+00:00    payload_str: '[{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T11:25:39.540+00:00  }
2026-06-16T11:25:39.596+00:00  [API:/echo]
2026-06-16T11:25:39.604+00:00  [V1 b2d] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel → wippersnapper.signal.v1.PixelsRequest
2026-06-16T11:25:39.605+00:00    decoded: {
2026-06-16T11:25:39.605+00:00    "reqPixelsWrite": {
2026-06-16T11:25:39.605+00:00      "pixelsType": "PIXELS_TYPE_NEOPIXEL",
2026-06-16T11:25:39.605+00:00      "pixelsPinData": "D0",
2026-06-16T11:25:39.606+00:00      "pixelsColor": 200
2026-06-16T11:25:39.606+00:00    }
2026-06-16T11:25:39.606+00:00  }
2026-06-16T11:25:39.615+00:00  publish (broker): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel
2026-06-16T11:25:39.615+00:00    {"reqPixelsWrite":{"pixelsType":"PIXELS_TYPE_NEOPIXEL","pixelsPinData":"D0","pixelsColor":200}}
2026-06-16T11:25:39.619+00:00  authenticate: undefined undefined aedes_aiud9C1mRfqbO5NNDsWxdg/2
2026-06-16T11:25:39.620+00:00  connected (aedes_aiud9C1mRfqbO5NNDsWxdg/2)
2026-06-16T11:25:39.620+00:00  publish (broker): {
2026-06-16T11:25:39.620+00:00    topic: '$SYS/ff8c6ca2-d0bd-4846-8a33-492d60e5ce5c/new/clients',
2026-06-16T11:25:39.620+00:00    payload_str: 'aedes_aiud9C1mRfqbO5NNDsWxdg/2'
2026-06-16T11:25:39.621+00:00  }
2026-06-16T11:25:39.622+00:00  ready (aedes_aiud9C1mRfqbO5NNDsWxdg/2)
2026-06-16T11:25:39.623+00:00  publish (broker): {
2026-06-16T11:25:39.624+00:00    topic: 'state/clients',
2026-06-16T11:25:39.624+00:00    payload_str: '[{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]},{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/2","subscriptions":[]}]'
2026-06-16T11:25:39.624+00:00  }
2026-06-16T11:25:39.625+00:00  subscriptions (aedes_aiud9C1mRfqbO5NNDsWxdg/2) [ 'hil/wprsnpr/#' ]
2026-06-16T11:25:39.625+00:00  publish (broker): {
2026-06-16T11:25:39.626+00:00    topic: '$SYS/ff8c6ca2-d0bd-4846-8a33-492d60e5ce5c/new/subscribes',
2026-06-16T11:25:39.626+00:00    payload_str: '{"clientId":"aedes_aiud9C1mRfqbO5NNDsWxdg/2","subs":[{"topic":"hil/wprsnpr/#","qos":0}]}'
2026-06-16T11:25:39.626+00:00  }
2026-06-16T11:25:39.626+00:00  publish (broker): {
2026-06-16T11:25:39.626+00:00    topic: 'state/clients',
2026-06-16T11:25:39.626+00:00    payload_str: '[{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]},{"id":"aedes_aiud9C1mRfqbO5NNDsWxdg/2","subscriptions":["hil/wprsnpr/#"]}]'
2026-06-16T11:25:39.627+00:00  }

logs for qtpy_esp32s3_n4r2/low: serial / protomq / flash — in the per-log Artifacts

📜 `qtpy_esp32s3_n4r2` high · serial.log (✓ from boot to just after the detected test phrase)
2026-06-16T11:27:43.375+00:00  Fatal Error: Halted execution!
2026-06-16T11:27:43.376+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:27:44.408+00:00  Fatal Error: Halted execution!
2026-06-16T11:27:44.409+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:27:45.429+00:00  Fatal Error: Halted execution!
2026-06-16T11:27:45.430+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:27:46.372+00:00  Fatal Error: Halted execution!
2026-06-16T11:27:46.373+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:27:47.479+00:00  Fatal Error: Halted execution!
2026-06-16T11:27:47.479+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:27:48.405+00:00  Fatal Error: Halted execution!
2026-06-16T11:27:48.406+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:27:49.481+00:00  Fatal Error: Halted execution!
2026-06-16T11:27:49.482+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:27:50.481+00:00  Fatal Error: Halted execution!
2026-06-16T11:27:50.482+00:00  ERROR: Please edit the secrets.json file. Then, reset your board.
2026-06-16T11:28:06.109+00:00  WipperSnapper found these WiFi networks:
2026-06-16T11:28:06.110+00:00  free4all (EC:FC:2F:83:DC:D8) -49dB (ch1)
2026-06-16T11:28:06.704+00:00  Connecting to WiFi (attempt #0)
2026-06-16T11:28:12.327+00:00  Connected to WiFi!
2026-06-16T11:28:12.328+00:00  Connecting to AIO MQTT (attempt #0)
2026-06-16T11:28:12.328+00:00  WiFi Status: 20
2026-06-16T11:28:13.259+00:00  Registering hardware with WipperSnapper...
2026-06-16T11:28:13.259+00:00  Registering hardware with IO...
2026-06-16T11:28:13.289+00:00  Encoding registration request...Encoding registration msg...Published!
2026-06-16T11:28:13.289+00:00  Polling for registration message response...2
2026-06-16T11:28:13.898+00:00  GOT Registration Response Message:
2026-06-16T11:28:13.899+00:00  Hardware Response Msg:
2026-06-16T11:28:13.899+00:00  	GPIO Pins: 30
2026-06-16T11:28:13.900+00:00  	Analog Pins: 4
2026-06-16T11:28:13.900+00:00  	Reference voltage: 2.50v
2026-06-16T11:28:13.907+00:00  cbSignalTopic: New Msg on Signal Topic
2026-06-16T11:28:13.907+00:00  2 bytes.
2026-06-16T11:28:13.908+00:00  decodeSignalMsg
2026-06-16T11:28:13.908+00:00  cbSignalMsg
2026-06-16T11:28:13.909+00:00  Sub-messages found: 1
2026-06-16T11:28:13.909+00:00  Signal Msg Tag: Pin Configuration
2026-06-16T11:28:13.909+00:00  Initial Pin Configuration Complete!
2026-06-16T11:28:13.912+00:00  Completed registration process, configuration next!
2026-06-16T11:28:13.918+00:00  Publishing to pin config complete...
2026-06-16T11:28:13.920+00:00  Published pin config complete message!
2026-06-16T11:28:13.920+00:00  Hardware configured successfully!
2026-06-16T11:28:15.488+00:00  Registration and configuration complete!
2026-06-16T11:28:15.488+00:00  Running application...
2026-06-16T11:28:15.489+00:00  Sending MQTT PING: * NEW MESSAGE [Topic: Pixels]: 
2026-06-16T11:28:15.489+00:00  11 bytes.
2026-06-16T11:28:15.490+00:00  [Message Type]: wippersnapper_signal_v1_PixelsRequest_req_pixels_write_tag
2026-06-16T11:28:15.490+00:00  Filling strand on D0
2026-06-16T11:28:15.515+00:00  ERROR: Pixel strand not found, can not write a color to the strand!
2026-06-16T11:28:15.516+00:00  SUCCESS!
2026-06-16T11:28:15.516+00:00  WiFi RSSI: -48
2026-06-16T11:28:20.584+00:00  Sending MQTT PING: SUCCESS!
2026-06-16T11:28:20.585+00:00  WiFi RSSI: -50
2026-06-16T11:28:25.881+00:00  Sending MQTT PING: SUCCESS!
2026-06-16T11:28:25.882+00:00  WiFi RSSI: -49
📜 `qtpy_esp32s3_n4r2` high · protomq.log (⏱ aligned to the serial window (2026-06-16T11:27:43.375+00:00 … 2026-06-16T11:28:25.882+00:00))
2026-06-16T11:27:49.459+00:00  publish (broker): {
2026-06-16T11:27:49.459+00:00    topic: '$SYS/f35bd8cc-71ce-4925-9989-50751507e7a4/heartbeat',
2026-06-16T11:27:49.460+00:00    payload_str: 'f35bd8cc-71ce-4925-9989-50751507e7a4'
2026-06-16T11:27:49.460+00:00  }
2026-06-16T11:28:10.532+00:00  authenticate: undefined undefined aedes_uoKEVDgdQm2LUwbDeJ0fmw/1
2026-06-16T11:28:10.533+00:00  connected (aedes_uoKEVDgdQm2LUwbDeJ0fmw/1)
2026-06-16T11:28:10.534+00:00  publish (broker): {
2026-06-16T11:28:10.534+00:00    topic: '$SYS/f35bd8cc-71ce-4925-9989-50751507e7a4/new/clients',
2026-06-16T11:28:10.535+00:00    payload_str: 'aedes_uoKEVDgdQm2LUwbDeJ0fmw/1'
2026-06-16T11:28:10.535+00:00  }
2026-06-16T11:28:10.539+00:00  ready (aedes_uoKEVDgdQm2LUwbDeJ0fmw/1)
2026-06-16T11:28:10.539+00:00  publish (broker): {
2026-06-16T11:28:10.540+00:00    topic: 'state/clients',
2026-06-16T11:28:10.540+00:00    payload_str: '[{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/0","subscriptions":["#"]},{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/1","subscriptions":[]}]'
2026-06-16T11:28:10.540+00:00  }
2026-06-16T11:28:10.543+00:00  subscriptions (aedes_uoKEVDgdQm2LUwbDeJ0fmw/1) [ 'hil/wprsnpr/#' ]
2026-06-16T11:28:10.545+00:00  publish (broker): {
2026-06-16T11:28:10.545+00:00    topic: '$SYS/f35bd8cc-71ce-4925-9989-50751507e7a4/new/subscribes',
2026-06-16T11:28:10.545+00:00    payload_str: '{"clientId":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/1","subs":[{"topic":"hil/wprsnpr/#","qos":0}]}'
2026-06-16T11:28:10.545+00:00  }
2026-06-16T11:28:10.546+00:00  publish (broker): {
2026-06-16T11:28:10.546+00:00    topic: 'state/clients',
2026-06-16T11:28:10.547+00:00    payload_str: '[{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/0","subscriptions":["#"]},{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/1","subscriptions":["hil/wprsnpr/#"]}]'
2026-06-16T11:28:10.547+00:00  }
2026-06-16T11:28:12.990+00:00  authenticate: hil hil io-wipper-qtpy-esp32s3-n4r213210089
2026-06-16T11:28:12.993+00:00  connected (io-wipper-qtpy-esp32s3-n4r213210089)
2026-06-16T11:28:12.994+00:00  publish (broker): {
2026-06-16T11:28:12.995+00:00    topic: '$SYS/f35bd8cc-71ce-4925-9989-50751507e7a4/new/clients',
2026-06-16T11:28:12.995+00:00    payload_str: 'io-wipper-qtpy-esp32s3-n4r213210089'
2026-06-16T11:28:12.995+00:00  }
2026-06-16T11:28:13.010+00:00  ready (io-wipper-qtpy-esp32s3-n4r213210089)
2026-06-16T11:28:13.013+00:00  publish (broker): {
2026-06-16T11:28:13.014+00:00    topic: 'state/clients',
2026-06-16T11:28:13.014+00:00    payload_str: '[{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/0","subscriptions":["#"]},{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":[]}]'
2026-06-16T11:28:13.014+00:00  }
2026-06-16T11:28:13.015+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:28:13.016+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker'
2026-06-16T11:28:13.016+00:00  ]
2026-06-16T11:28:13.016+00:00  publish (broker): {
2026-06-16T11:28:13.017+00:00    topic: '$SYS/f35bd8cc-71ce-4925-9989-50751507e7a4/new/subscribes',
2026-06-16T11:28:13.017+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","qos":1}]}'
2026-06-16T11:28:13.017+00:00  }
2026-06-16T11:28:13.020+00:00  publish (broker): {
2026-06-16T11:28:13.020+00:00    topic: 'state/clients',
2026-06-16T11:28:13.020+00:00    payload_str: '[{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/0","subscriptions":["#"]},{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker"]}]'
2026-06-16T11:28:13.020+00:00  }
2026-06-16T11:28:13.038+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker' ]
2026-06-16T11:28:13.040+00:00  publish (broker): {
2026-06-16T11:28:13.040+00:00    topic: '$SYS/f35bd8cc-71ce-4925-9989-50751507e7a4/new/subscribes',
2026-06-16T11:28:13.040+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","qos":1}]}'
2026-06-16T11:28:13.041+00:00  }
2026-06-16T11:28:13.045+00:00  publish (broker): {
2026-06-16T11:28:13.045+00:00    topic: 'state/clients',
2026-06-16T11:28:13.045+00:00    payload_str: '[{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/0","subscriptions":["#"]},{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker"]}]'
2026-06-16T11:28:13.045+00:00  }
2026-06-16T11:28:13.068+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:28:13.069+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c'
2026-06-16T11:28:13.069+00:00  ]
2026-06-16T11:28:13.070+00:00  publish (broker): {
2026-06-16T11:28:13.070+00:00    topic: '$SYS/f35bd8cc-71ce-4925-9989-50751507e7a4/new/subscribes',
2026-06-16T11:28:13.071+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","qos":1}]}'
2026-06-16T11:28:13.071+00:00  }
2026-06-16T11:28:13.073+00:00  publish (broker): {
2026-06-16T11:28:13.073+00:00    topic: 'state/clients',
2026-06-16T11:28:13.073+00:00    payload_str: '[{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/0","subscriptions":["#"]},{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c"]}]'
2026-06-16T11:28:13.074+00:00  }
2026-06-16T11:28:13.090+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:28:13.090+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20'
2026-06-16T11:28:13.090+00:00  ]
2026-06-16T11:28:13.091+00:00  publish (broker): {
2026-06-16T11:28:13.091+00:00    topic: '$SYS/f35bd8cc-71ce-4925-9989-50751507e7a4/new/subscribes',
2026-06-16T11:28:13.091+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","qos":1}]}'
2026-06-16T11:28:13.091+00:00  }
2026-06-16T11:28:13.100+00:00  publish (broker): {
2026-06-16T11:28:13.101+00:00    topic: 'state/clients',
2026-06-16T11:28:13.101+00:00    payload_str: '[{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/0","subscriptions":["#"]},{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20"]}]'
2026-06-16T11:28:13.101+00:00  }
2026-06-16T11:28:13.113+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:28:13.113+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo'
2026-06-16T11:28:13.113+00:00  ]
2026-06-16T11:28:13.114+00:00  publish (broker): {
2026-06-16T11:28:13.115+00:00    topic: '$SYS/f35bd8cc-71ce-4925-9989-50751507e7a4/new/subscribes',
2026-06-16T11:28:13.115+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","qos":1}]}'
2026-06-16T11:28:13.115+00:00  }
2026-06-16T11:28:13.122+00:00  publish (broker): {
2026-06-16T11:28:13.123+00:00    topic: 'state/clients',
2026-06-16T11:28:13.123+00:00    payload_str: '[{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/0","subscriptions":["#"]},{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo"]}]'
2026-06-16T11:28:13.124+00:00  }
2026-06-16T11:28:13.133+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:28:13.133+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm'
2026-06-16T11:28:13.133+00:00  ]
2026-06-16T11:28:13.134+00:00  publish (broker): {
2026-06-16T11:28:13.134+00:00    topic: '$SYS/f35bd8cc-71ce-4925-9989-50751507e7a4/new/subscribes',
2026-06-16T11:28:13.134+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","qos":1}]}'
2026-06-16T11:28:13.135+00:00  }
2026-06-16T11:28:13.138+00:00  publish (broker): {
2026-06-16T11:28:13.139+00:00    topic: 'state/clients',
2026-06-16T11:28:13.139+00:00    payload_str: '[{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/0","subscriptions":["#"]},{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm"]}]'
2026-06-16T11:28:13.139+00:00  }
2026-06-16T11:28:13.156+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:28:13.156+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel'
2026-06-16T11:28:13.157+00:00  ]
2026-06-16T11:28:13.157+00:00  publish (broker): {
2026-06-16T11:28:13.157+00:00    topic: '$SYS/f35bd8cc-71ce-4925-9989-50751507e7a4/new/subscribes',
2026-06-16T11:28:13.158+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","qos":1}]}'
2026-06-16T11:28:13.158+00:00  }
2026-06-16T11:28:13.163+00:00  publish (broker): {
2026-06-16T11:28:13.164+00:00    topic: 'state/clients',
2026-06-16T11:28:13.164+00:00    payload_str: '[{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/0","subscriptions":["#"]},{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel"]}]'
2026-06-16T11:28:13.165+00:00  }
2026-06-16T11:28:13.176+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:28:13.177+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart'
2026-06-16T11:28:13.177+00:00  ]
2026-06-16T11:28:13.177+00:00  publish (broker): {
2026-06-16T11:28:13.178+00:00    topic: '$SYS/f35bd8cc-71ce-4925-9989-50751507e7a4/new/subscribes',
2026-06-16T11:28:13.178+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","qos":1}]}'
2026-06-16T11:28:13.178+00:00  }
2026-06-16T11:28:13.181+00:00  publish (broker): {
2026-06-16T11:28:13.181+00:00    topic: 'state/clients',
2026-06-16T11:28:13.182+00:00    payload_str: '[{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/0","subscriptions":["#"]},{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart"]}]'
2026-06-16T11:28:13.182+00:00  }
2026-06-16T11:28:13.194+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [
2026-06-16T11:28:13.194+00:00    'hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display'
2026-06-16T11:28:13.195+00:00  ]
2026-06-16T11:28:13.195+00:00  publish (broker): {
2026-06-16T11:28:13.195+00:00    topic: '$SYS/f35bd8cc-71ce-4925-9989-50751507e7a4/new/subscribes',
2026-06-16T11:28:13.195+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","qos":1}]}'
2026-06-16T11:28:13.196+00:00  }
2026-06-16T11:28:13.198+00:00  publish (broker): {
2026-06-16T11:28:13.198+00:00    topic: 'state/clients',
2026-06-16T11:28:13.198+00:00    payload_str: '[{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/0","subscriptions":["#"]},{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display"]}]'
2026-06-16T11:28:13.198+00:00  }
2026-06-16T11:28:13.207+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/errors' ]
2026-06-16T11:28:13.208+00:00  publish (broker): {
2026-06-16T11:28:13.208+00:00    topic: '$SYS/f35bd8cc-71ce-4925-9989-50751507e7a4/new/subscribes',
2026-06-16T11:28:13.209+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/errors","qos":0}]}'
2026-06-16T11:28:13.209+00:00  }
2026-06-16T11:28:13.210+00:00  publish (broker): {
2026-06-16T11:28:13.211+00:00    topic: 'state/clients',
2026-06-16T11:28:13.211+00:00    payload_str: '[{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/0","subscriptions":["#"]},{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors"]}]'
2026-06-16T11:28:13.211+00:00  }
2026-06-16T11:28:13.240+00:00  subscriptions (io-wipper-qtpy-esp32s3-n4r213210089) [ 'hil/throttle' ]
2026-06-16T11:28:13.241+00:00  publish (broker): {
2026-06-16T11:28:13.241+00:00    topic: '$SYS/f35bd8cc-71ce-4925-9989-50751507e7a4/new/subscribes',
2026-06-16T11:28:13.241+00:00    payload_str: '{"clientId":"io-wipper-qtpy-esp32s3-n4r213210089","subs":[{"topic":"hil/throttle","qos":0}]}'
2026-06-16T11:28:13.241+00:00  }
2026-06-16T11:28:13.242+00:00  publish (broker): {
2026-06-16T11:28:13.243+00:00    topic: 'state/clients',
2026-06-16T11:28:13.243+00:00    payload_str: '[{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/0","subscriptions":["#"]},{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/1","subscriptions":["hil/wprsnpr/#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T11:28:13.243+00:00  }
2026-06-16T11:28:13.292+00:00  [V1 d2b] hil/wprsnpr/info/status → wippersnapper.description.v1.CreateDescriptionRequest
2026-06-16T11:28:13.292+00:00    decoded: {
2026-06-16T11:28:13.293+00:00    "machineName": "qtpy-esp32s3-n4r2",
2026-06-16T11:28:13.293+00:00    "macAddr": 13210089,
2026-06-16T11:28:13.293+00:00    "usbVid": 0,
2026-06-16T11:28:13.293+00:00    "usbPid": 0,
2026-06-16T11:28:13.293+00:00    "version": null,
2026-06-16T11:28:13.293+00:00    "verMajor": 0,
2026-06-16T11:28:13.294+00:00    "verMinor": 0,
2026-06-16T11:28:13.294+00:00    "verPatch": 0,
2026-06-16T11:28:13.294+00:00    "verPreRelease": "",
2026-06-16T11:28:13.294+00:00    "verBuild": 0,
2026-06-16T11:28:13.294+00:00    "strVersion": "1.0.0-beta.130"
2026-06-16T11:28:13.294+00:00  }
2026-06-16T11:28:13.304+00:00  [Fallback V1] Auto-Responding to checkin → hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker
2026-06-16T11:28:13.304+00:00    response: {"response":"RESPONSE_OK","totalGpioPins":30,"totalAnalogPins":4,"referenceVoltage":2.5,"totalI2cPorts":1}
2026-06-16T11:28:13.306+00:00  [V1 b2d] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker → wippersnapper.description.v1.CreateDescriptionResponse
2026-06-16T11:28:13.307+00:00    decoded: {
2026-06-16T11:28:13.307+00:00    "response": "RESPONSE_OK",
2026-06-16T11:28:13.307+00:00    "totalGpioPins": 30,
2026-06-16T11:28:13.307+00:00    "totalAnalogPins": 4,
2026-06-16T11:28:13.307+00:00    "referenceVoltage": 2.5,
2026-06-16T11:28:13.307+00:00    "totalI2cPorts": 1
2026-06-16T11:28:13.307+00:00  }
2026-06-16T11:28:13.316+00:00  [Fallback V1] Sending empty pin config → hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker
2026-06-16T11:28:13.317+00:00    payload: {"pinConfigs":{"list":[]}} (3200)
2026-06-16T11:28:13.317+00:00  [V1 b2d] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker → wippersnapper.signal.v1.CreateSignalRequest
2026-06-16T11:28:13.317+00:00    decoded: {
2026-06-16T11:28:13.318+00:00    "pinConfigs": {
2026-06-16T11:28:13.318+00:00      "list": []
2026-06-16T11:28:13.318+00:00    }
2026-06-16T11:28:13.318+00:00  }
2026-06-16T11:28:13.321+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/info/status
2026-06-16T11:28:13.322+00:00    {"machineName":"qtpy-esp32s3-n4r2","macAddr":13210089,"strVersion":"1.0.0-beta.130"}
2026-06-16T11:28:13.322+00:00  publish (broker): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker
2026-06-16T11:28:13.322+00:00    {"response":"RESPONSE_OK","totalGpioPins":30,"totalAnalogPins":4,"referenceVoltage":2.5,"totalI2cPorts":1}
2026-06-16T11:28:13.323+00:00  publish (broker): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker
2026-06-16T11:28:13.323+00:00    {"pinConfigs":{}}
2026-06-16T11:28:13.910+00:00  [V1 d2b] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/device/complete → wippersnapper.description.v1.RegistrationComplete
2026-06-16T11:28:13.910+00:00    decoded: {
2026-06-16T11:28:13.911+00:00    "isComplete": true
2026-06-16T11:28:13.911+00:00  }
2026-06-16T11:28:13.911+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/device/complete
2026-06-16T11:28:13.911+00:00    {"isComplete":true}
2026-06-16T11:28:13.924+00:00  [V1 d2b] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/device/pinConfigComplete → wippersnapper.signal.v1.SignalResponse
2026-06-16T11:28:13.924+00:00    decoded: {
2026-06-16T11:28:13.925+00:00    "configurationComplete": true
2026-06-16T11:28:13.925+00:00  }
2026-06-16T11:28:13.926+00:00  publish (io-wipper-qtpy-esp32s3-n4r213210089): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/device/pinConfigComplete
2026-06-16T11:28:13.926+00:00    {"configurationComplete":true}
2026-06-16T11:28:15.015+00:00  disconnected (aedes_uoKEVDgdQm2LUwbDeJ0fmw/1)
2026-06-16T11:28:15.015+00:00  publish (broker): {
2026-06-16T11:28:15.015+00:00    topic: '$SYS/f35bd8cc-71ce-4925-9989-50751507e7a4/disconnect/clients',
2026-06-16T11:28:15.016+00:00    payload_str: 'aedes_uoKEVDgdQm2LUwbDeJ0fmw/1'
2026-06-16T11:28:15.016+00:00  }
2026-06-16T11:28:15.016+00:00  unsubscriptions (aedes_uoKEVDgdQm2LUwbDeJ0fmw/1): [ 'hil/wprsnpr/#' ]
2026-06-16T11:28:15.016+00:00  publish (broker): {
2026-06-16T11:28:15.016+00:00    topic: '$SYS/f35bd8cc-71ce-4925-9989-50751507e7a4/new/unsubscribes',
2026-06-16T11:28:15.016+00:00    payload_str: '{"clientId":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/1","subs":["hil/wprsnpr/#"]}'
2026-06-16T11:28:15.016+00:00  }
2026-06-16T11:28:15.016+00:00  publish (broker): {
2026-06-16T11:28:15.016+00:00    topic: 'state/clients',
2026-06-16T11:28:15.016+00:00    payload_str: '[{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T11:28:15.016+00:00  }
2026-06-16T11:28:15.016+00:00  publish (broker): {
2026-06-16T11:28:15.016+00:00    topic: 'state/clients',
2026-06-16T11:28:15.016+00:00    payload_str: '[{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]}]'
2026-06-16T11:28:15.016+00:00  }
2026-06-16T11:28:15.067+00:00  [API:/echo]
2026-06-16T11:28:15.078+00:00  [V1 b2d] hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel → wippersnapper.signal.v1.PixelsRequest
2026-06-16T11:28:15.079+00:00    decoded: {
2026-06-16T11:28:15.079+00:00    "reqPixelsWrite": {
2026-06-16T11:28:15.079+00:00      "pixelsType": "PIXELS_TYPE_NEOPIXEL",
2026-06-16T11:28:15.079+00:00      "pixelsPinData": "D0",
2026-06-16T11:28:15.080+00:00      "pixelsColor": 200
2026-06-16T11:28:15.080+00:00    }
2026-06-16T11:28:15.080+00:00  }
2026-06-16T11:28:15.089+00:00  publish (broker): hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel
2026-06-16T11:28:15.089+00:00    {"reqPixelsWrite":{"pixelsType":"PIXELS_TYPE_NEOPIXEL","pixelsPinData":"D0","pixelsColor":200}}
2026-06-16T11:28:15.093+00:00  authenticate: undefined undefined aedes_uoKEVDgdQm2LUwbDeJ0fmw/2
2026-06-16T11:28:15.095+00:00  connected (aedes_uoKEVDgdQm2LUwbDeJ0fmw/2)
2026-06-16T11:28:15.096+00:00  publish (broker): {
2026-06-16T11:28:15.096+00:00    topic: '$SYS/f35bd8cc-71ce-4925-9989-50751507e7a4/new/clients',
2026-06-16T11:28:15.096+00:00    payload_str: 'aedes_uoKEVDgdQm2LUwbDeJ0fmw/2'
2026-06-16T11:28:15.096+00:00  }
2026-06-16T11:28:15.097+00:00  ready (aedes_uoKEVDgdQm2LUwbDeJ0fmw/2)
2026-06-16T11:28:15.097+00:00  publish (broker): {
2026-06-16T11:28:15.097+00:00    topic: 'state/clients',
2026-06-16T11:28:15.097+00:00    payload_str: '[{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]},{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/2","subscriptions":[]}]'
2026-06-16T11:28:15.098+00:00  }
2026-06-16T11:28:15.098+00:00  subscriptions (aedes_uoKEVDgdQm2LUwbDeJ0fmw/2) [ 'hil/wprsnpr/#' ]
2026-06-16T11:28:15.098+00:00  publish (broker): {
2026-06-16T11:28:15.098+00:00    topic: '$SYS/f35bd8cc-71ce-4925-9989-50751507e7a4/new/subscribes',
2026-06-16T11:28:15.099+00:00    payload_str: '{"clientId":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/2","subs":[{"topic":"hil/wprsnpr/#","qos":0}]}'
2026-06-16T11:28:15.099+00:00  }
2026-06-16T11:28:15.101+00:00  publish (broker): {
2026-06-16T11:28:15.101+00:00    topic: 'state/clients',
2026-06-16T11:28:15.101+00:00    payload_str: '[{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/0","subscriptions":["#"]},{"id":"io-wipper-qtpy-esp32s3-n4r213210089","subscriptions":["hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/info/status/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/i2c","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/ds18x20","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/servo","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pwm","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/pixel","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/uart","hil/wprsnpr/io-wipper-qtpy-esp32s3-n4r213210089/signals/broker/display","hil/errors","hil/throttle"]},{"id":"aedes_uoKEVDgdQm2LUwbDeJ0fmw/2","subscriptions":["hil/wprsnpr/#"]}]'
2026-06-16T11:28:15.101+00:00  }

logs for qtpy_esp32s3_n4r2/high: serial / protomq / flash — in the per-log Artifacts

Expected: release rebooted=true (crash), PR rebooted=false (graceful).

@tyeth

tyeth commented Jun 19, 2026

Copy link
Copy Markdown
Member Author

Note supposedly when testing bossa/bossac on SAMD51, that pyportal titano didn't like v128, but did like v78, so bisect/investigate using HIL suite (it's on rpi-displays host).

Think it was on an alpha debug copy of airlift so probably hated semver or saw unexpected serial msgs at boot etc. v78 + 128 + 130 fine after airlift firmware change to latest.

@tyeth
tyeth changed the base branch from main to migrate-api-v2 June 22, 2026 18:25
@tyeth
tyeth changed the base branch from migrate-api-v2 to main June 22, 2026 18:25
tyeth-ai-assisted pushed a commit to tyeth-ai-assisted/adafruit-Adafruit_Wippersnapper_Arduino that referenced this pull request Jun 25, 2026
…proof

Replace the single-purpose hil_lilygo_display.py with hil_display_test.py: a
generic, spec-driven firmware-bench driver. The test sequence is data (see
.github/scripts/specs/lilygo_t_display_s3.json) — display_add / display_write /
component_add|inject / capture steps map to controller stages, so future test
writers can drive any board/display or a non-display flow (e.g. add an I2C
sensor between display writes) by writing a spec, not editing the driver.

Logging conforms to the hil-test-suite.yml convention (PR adafruit#930 hil-lib.sh): poll
to terminal so firmware-bench's auto-registered serial/protomq/flash logs and the
capture harvest, download them as <target>-<label>-<type>.log, and assemble
hil-out/comment.md with a result row, the visual proof, a serial proof window
(boot→matched phrase) and a protomq window time-aligned to it (shared UTC-ms
clock, ported from append_proof), plus an invocation/stages block. The workflow
uploads per-type log artifacts and posts comment.md per run. Adds a firmware-repo
skill (.claude/skills/hil-display-arduino) documenting the path.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant