diff --git a/src/Controller/DeviceImageController.php b/src/Controller/DeviceImageController.php index 6d6c67e..bb659f4 100644 --- a/src/Controller/DeviceImageController.php +++ b/src/Controller/DeviceImageController.php @@ -90,21 +90,23 @@ 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'), - ]); - } + // TEMP: power-monitor — log every poll with the firmware-side + // headers we care about, even when they're absent, so we can + // tell whether the firmware is sending them at all vs. the + // controller filtering them out. Greppable via + // `device.poll.power_telemetry`. Remove alongside the firmware's + // NVS_KEY_PREV_* writes once validated. + $this->logger->info('device.poll.power_telemetry', [ + 'mac' => $mac, + 'prev_awake_ms' => $request->headers->get('X-Prev-Awake-Ms'), + 'prev_panel_init_ms' => $request->headers->get('X-Prev-Panel-Init-Ms'), + 'boot_reason' => $request->headers->get('X-Boot-Reason'), + 'all_x_headers' => array_filter( + $request->headers->all(), + static fn(string $name): bool => str_starts_with(strtolower($name), 'x-'), + ARRAY_FILTER_USE_KEY, + ), + ]); // 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