From 8ae4a2fd5aa5a32c597720c677881ad96b37a4d8 Mon Sep 17 00:00:00 2001 From: Matt Edholm Date: Fri, 15 May 2026 14:15:50 -0400 Subject: [PATCH] chore(devices): TEMP log power-monitor telemetry headers from firmware MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Firmware emits X-Prev-Awake-Ms + X-Prev-Panel-Init-Ms on each poll so we can verify the 13.3" PIN_PWR rail-cut change isn't slowing the panel re-init or extending the awake window. Log them with boot-reason context via `device.poll.power_telemetry` — greppable in `docker logs pictureframe-php-1`. Remove this log + the firmware NVS_KEY_PREV_* writes once the change is validated. Co-Authored-By: Claude Opus 4.7 --- src/Controller/DeviceImageController.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/Controller/DeviceImageController.php b/src/Controller/DeviceImageController.php index e622c72..6d6c67e 100644 --- a/src/Controller/DeviceImageController.php +++ b/src/Controller/DeviceImageController.php @@ -90,6 +90,22 @@ class DeviceImageController extends AbstractController $currentImageId = (int) $request->headers->get('X-Current-Image-Id', '-1'); $device->markSeen(); + // TEMP: power-monitor — surface the firmware's previous-cycle + // telemetry (awake duration + panel-init time) so we can see + // whether the PIN_PWR rail cut affects either. Logged on every + // poll; greppable via `device.poll.power_telemetry`. Remove + // alongside the firmware's NVS_KEY_PREV_* writes once validated. + $prevAwakeMs = $request->headers->get('X-Prev-Awake-Ms'); + $prevPanelInitMs = $request->headers->get('X-Prev-Panel-Init-Ms'); + if ($prevAwakeMs !== null || $prevPanelInitMs !== null) { + $this->logger->info('device.poll.power_telemetry', [ + 'mac' => $mac, + 'prev_awake_ms' => $prevAwakeMs, + 'prev_panel_init_ms' => $prevPanelInitMs, + 'boot_reason' => $request->headers->get('X-Boot-Reason'), + ]); + } + // Auto-correct Device.model from the firmware's X-Panel-Id header. New // Devices are created with the default V1 model (see Device entity), so // a freshly-claimed 13.3" unit ends up wrongly flagged until its first