kitchen-hub¶
Kitchen wall panel: Elecrow CrowPanel Advanced 7" (ESP32-P4 + ESP32-C6, 1024x600, GT911 touch) as the screen; Home Assistant on the Plex server as the brain. Repo: ~/kitchen-hub → github.com/angelEmbeddedEra/kitchen-hub (private). Related: tesla-automation, Garage_Opener.
Ultra low power mode (built 2026-10-29)¶
Done on both panels, see the 2026-10-29 Log line and repo HANDOFF.md. Board side added the same day (CPU 40 MHz, LCD sleep, mic off; Log). Left: owner confirms the picture returns after a tap; real numbers need a meter; auto-on needs a USB-vs-battery signal (5" STC8 regs 0x00.., 7" unknown).
Open¶
- Owner: measure the 7" panel's draw with an inline USB-C meter (battery full or unplugged): awake at 100 % / 50 %, Cameras page open, and Settings → Display → Ultra low power on and left 30 s (screen dark). Claude turns it into hours and decides on the next stages (CPU scaling, wake word off) (plan 2026-10-28, ULP built 2026-10-29).
- Panel polish round 2 (docs/smooth-ui-plan.md 'Still open'): portrait layout + speed, Media cards, hardware JPEG, press transitions, empty states
- Disney+ on the bedroom Roku: Edit Profiles -> the kid's profile -> App Language: Español (Spanish audio for the Kids buttons)
- Tap Cars on the panel Media page by day: does the bedroom Roku start Cars, or only open Disney+ (then the IDs need the Roku format)
- Tap a Spotify mix on the panel Media page by day and confirm every Echo plays it (Everywhere group untested at night)
- Owner: fill the HA helpers Kitchen panel guest Wi-Fi name / password (Settings → Devices → Helpers); store that password in Vaultwarden.
- Owner: store the 4 panel secrets in Vaultwarden (names in repo HANDOFF.md "Hub batch" §1: api_key, ota_password, ap_password, ha_cam_auth).
- Owner: add Google Calendar integration in HA (then Claude adds the panel calendar card; HANDOFF §8).
- Flash day (new LCD), hub batch: walk HANDOFF.md "Hub batch" On-device test lines in landscape AND a portrait orientation; then merge sandbox → main per HANDOFF §1 merge plan.
- Tuya: 8 cloud-OFFLINE (Angel Night Stand, candle 2, Fan, One, Christmas 1-3; feeder skipped); Claude adds them once powered. Owner: reserve Tuya IPs in the eero app.
- Owner: store the Amazon authenticator key (Alexa Media Player re-auth needs it) in Vaultwarden.
- Owner: try the panel's Rooms, Climate and Media pages (WLED, ecobee, TVs).
- Cameras: owner to say which other cameras should pop up (only door cameras now).
- Owner: new batteries in the Blink door cameras (Front Door, Driveway Door, Deck Door); then check their pictures on the panel (New picture).
- Report two ESPHome 2026.10 Wi-Fi bugs upstream (wifi.configure revert race; start() switches the saved-network pref key away from the boot key). Repo HANDOFF.md 2026-10-25 Phase 1 entry has the details.
-
Optional:
ha.lanin Pi-hole/NPM; Uptime Kuma monitor for :8123; BT needs NET_ADMIN/NET_RAW if the garage BLE sensor ever reports to HA. -
Flash day (new LCD):
./panel upload 192.168.4.85from sandbox, then check the Appliances page (values, mode picker, -/+, I emptied it) and that the panel speaks "Washer is done". -
Enclosure r01 coupons: owner prints
~/design/kitchen-panel-enclosure/r01/kitchen-panel-coupons-r01-UNSLICED.3mf(pick PETG + plate, slice) and reports the measurements + answers the 8 questions in repoenclosure/README.md(battery, speakers, orientation, nozzle/laser, photos, screws, USB meter; magnetic tip dropped, wall → fridge). Then r02 full shell + cradle. -
SolidCraft 0.22.1 installed by hand (CLI ~/.local/opt/solidcraft-0.22.1, app /Applications);
craft-setuponly knows the storytold org, so it won't update it. Addtangency-labs/solidcraftthere (edit was blocked this session; owner OK needed). -
Nightstand flash day (5" P4 arrives): USB flash
PANEL=nightstand-panel ./panel(repo docs/nightstand-plan.md §2: C6 Wi-Fi firmware may need the 7"-only update tool adapted), then pick rooms/media/cameras in its Settings, test alarm + Good night/morning. - Owner: nightstand CrowPanel Advanced 5" P4 being ordered (2026-10-25). Tell Claude: which TV shows/apps get buttons (Vizio or 32" Roku), what Good night turns off (any light stays on), which room/lights (repo docs/nightstand-plan.md §5).
- Owner: pick the kids movie: open it on disneyplus.com, copy the ID at the end of the URL into HA helper "Kids movie Disney+ ID" (empty = just opens Disney+). Then run script "Kids movie (Roku, Disney+)" once while nobody is watching the 32" onn Roku and say if it opened the movie or only the app.
- Owner: set a monthly spend limit for the Claude voice assistant in the Anthropic Console (Settings → Limits, e.g. $5/month); the API key can't set it. Then try "Is the laundry done?" on the panel once the LCD is back.
Devices found (LAN scan 2026-10-24, 192.168.4.0/22)¶
- Tuya/Smart Life: 23 (9 product keys; groups of 7, 4, 4 identical), protocol 3.3/3.4, port 6668.
- Amazon: 4 Echo (Spotify Connect: .4.34 .4.52 .4.61 .7.23) + 2 unknown (.4.20, .4.129).
- Night Owl SP recorder .4.130 (web UI, no RTSP on 554). ecobee4 .4.64. WLED (105 LEDs) .4.47. Tesla Wall Connector Gen3 .4.48. eero x2 (Thread border routers) .4.1 .4.60.
- Media: onn. Roku TV .4.37, Vizio "Master Bedroom TV" .4.94, Google TV .4.88. Brother MFC-L3780CDW .4.33, Zebra .5.16, Switch .4.46.
- Not visible to a scan: sleeping battery cams (Ring/Blink), Zigbee/Thread/BLE-only devices.
Decisions¶
- Brain = Home Assistant in
~/torrentvpncompose (servicehomeassistant, host network, :8123), reusing the leftover 2025.12 config (account, iPhone app, HACS, WLED, Vizio, Cast, Met). Upgraded to 2026.10.4. Pre-upgrade copy: /mnt/storage/docker-backups/homeassistant-2025.12.1-pre-upgrade-20261024.tgz. 2026-10-24. - Panel firmware = mainline ESPHome 2026.10.0 (pinned in
./panel); Elecrow example gave only pins + display model (mipi_dsiWAVESHARE-ESP32-P4-WIFI6-TOUCH-LCD-7B,esp32_hostedC6). Elecrow repo has no license → own UI, no copied images. Own secrets (Elecrow's are public). 2026-10-24. -
Cameras on the panel = snapshots/MJPEG only (P4 has HW JPEG, no H.264 decode). 2026-10-24.
-
Panel UI style = modern, clean, Apple-like (iOS/iPadOS Home feel), simple; NOT bound by SOP-031 or the EmbeddedEra brand guide (owner 2026-10-25).
-
Panel outputs that drive a load (speaker amps, backlight, anything new) are switched on only while needed; never ALWAYS_ON (owner 2026-10-25, after the speaker was warm when the panel died).
-
Enclosure (owner 2026-10-25): mount on the fridge with magnets via a cradle stuck to the fridge (option 1: panel drops onto a ledge, alignment magnets hold it; replaces the wall-screwed cradle, same day). No magnetic USB (owner, same day): a normal USB-C cable plugs into the side port by hand; supersedes the magnetic-tip dock below; Magnets: err on more rather than fewer (owner, same day). panel lifts off and is portable. Openings only for both USB-C, SW1 power slide, one speaker grille for both speakers, mic hole; SD slot + camera header covered. Dock = magnetic USB-C breakaway tip left flush in the panel's USB-C, cradle holds the magnetic cable end + alignment magnets; no board mods. Battery = owner's 3.7 V 3000 mAh LiPo 306090 (measure real pack) on J3 PH2.0 (pin 1 VBAT), padded bay, ~0.5 mm swell room, wire channel, owner meters polarity first. Battery bay may be generous; gaps get foam / double-sided tape (owner 2026-10-25). PETG on H2S (0.4 mm nozzle to confirm); laser parts allowed in acrylic/plywood (thickness/cutter to ask). CAD trial = SolidCraft instead of FreeCAD; fall back to FreeCAD with a recorded reason. Coupons before full shells (SOP-024 §4a).
-
Nightstand panel (owner 2026-10-25): cut-down 7", room-specific: clock, Good night / Good morning + TV-show shortcuts, weather today + tomorrow, cameras. Shortcuts = HA scripts with label
nightstand(edit in HA, no reflash). Plan: repo docs/nightstand-plan.md §4.
Log¶
- 2026-11-08: Smart scent live: one 3-min diffuser dose per AC fan cycle instead of 60/60 all day (week of ecobee data: fan on 46% of 08-21; 6 min on / 9 off; about 80% less spray expected). Owner to judge scent strength after 2-3 days. Details in torrentvpn-stack.
- 2026-11-08: Aroma-Link diffuser (Smart.A5.WIFI) in HA via Scent Assistant, cloud mode, chosen because the server has no Bluetooth and Aroma-Link Local needs a DNS override and is only verified on Pro300. Power test passed by state read-back; owner has not yet confirmed physically. No fan over cloud. Details in torrentvpn-stack.
- 2026-10-29: 7" ULP now deletes its DSI link while dark, rebuilds on wake (190 ms, 10 cycles, RAM stable). Estimate 7": 5 min/h on ≈ 14 h, untouched ≈ 25 h on 3000 mAh. Both panels same route.
- 2026-10-29: Owner confirmed: 5" picture normal after a tap with the RGB-rebuild ULP. Both panels done; only a meter would firm up the numbers.
- 2026-10-29: 5" ULP: RGB panel deleted while dark, rebuilt on wake (195 ms), CPU 90 MHz; clean over 4 cycles. Estimate 5" dark ≈ 0.4 W like the 7"; 5 min/h on ≈ 16 h on 3000 mAh (was 9 h).
- 2026-10-29: Owner: 5" looks normal, ULP enabled. Battery estimate (3000 mAh ~9.5 Wh, datasheets + community P4/7" measurement, ±30 %, 5 min on per hour at 100 %): 7" always on 2.5 h, normal dim 5.3 h, ULP 13 h (22 h untouched); 5" always on 4.1 h, ULP 9 h (5" keeps full CPU). Meter would confirm.
- 2026-10-29: 5" ULP board side removed (lower clock starved its PSRAM-fed RGB stream: skipped lines + watchdog reboots every ~4 min); 5" dark = backlight/LVGL/mic/Wi-Fi only. 7" keeps CPU 90 MHz + LCD sleep.
- 2026-10-29: ULP fixes: 5" picture came back shifted (2 MHz RGB clock, dropped); 40 MHz tripped the task watchdog after boot and rolled back 2 OTAs -> CPU 90 MHz asleep, no sleep in the first 2 min. Retested on both: no crash, board wake ~135 ms.
- 2026-10-29: ULP board side (sandbox 1f39d42, owner: try everything, no meter): dark screen = LCD sleep-in, no video DMA (7") / 2 MHz pclk (5"), CPU 40 MHz (logged), mic + wake word off; touch wake board part 134 ms, HA pop-up <0.9 s. Light sleep impossible (IDF LCD drivers hold PM locks). Datasheet estimate 7": awake 100 % ~3.9 W (~2.5 h on 3000 mAh), dark ~0.35-0.5 W (~20-27 h; was ~1.3 W). Owner to confirm the picture returns after a tap.
- 2026-10-29: Ultra low power mode on both panels (sandbox 3c0d716): Settings/HA switch, dark after 30 s idle, LVGL paused + Wi-Fi max modem sleep on any dark idle screen; touch wakes on release (LVGL resumed 85 ms after finger-down, measured), HA pop-up wakes in <0.8 s; voice/HA kept. Current draw not measured (no sensor; owner's USB meter, Open). No deep sleep: drops Wi-Fi/API, ~10 s wake. Panel IPs now 7" .4.144, 5" .4.159.
- 2026-10-27: Kids movies: Roku Disney+ only plays entity UUIDs (web IDs did nothing); script picks 2nd profile (Luke) with left x4/right/select when Who's watching shows. Live in HA, tested from TV off.
- 2026-10-27: Nightstand 5" flashed and in HA (192.168.4.120). C6 reset pin is GPIO20 (Elecrow's ESPHome example's 32 hung every soft reboot). 800x480 layout fixed (check 0), commit 08933d3 on sandbox. Open: owner says the 5" looks grainy.
- 2026-10-27: Panel reboots = internal RAM exhausted (JPEG decoders kept in internal RAM + 150 KB internal draw buffer); fix: SPIRAM_USE_MALLOC so >16 KB mallocs go to PSRAM; [mem] watch logs RAM and keeps assert text across reboots. Bell = HA's old pop-up automation (doorbell_chime.flac), replaced by the repo version (seasonal chime from the panel). Dropdowns 24 px. sandbox b254fd0.
- 2026-10-27: Panel speed/polish pass: self-test tools/ui-test (fake swipes, fps, screenshots, profiler); Lights flick 15 -> 26-36 fps (internal draw buffer, pacing, no sidebar redraw), sheets slide up, 18 px secondary text; Codex review fixes. Open items in kitchen-hub docs/smooth-ui-plan.md.
- 2026-10-27: Kids Random pool = 50 Disney movies for under-5s, IDs checked against live disneyplus.com titles; Spanish comes from the Disney+ profile language, not the link.
- 2026-10-27: Kids movie buttons Cars, Cars 2, Cars 3, Random (of the three) via script.kids_movie movie field; Disney+ web IDs.
- 2026-10-27: Spotify mixes on every Echo: 8 fixed Spotify mix names (API no longer lists recommendations) via HA script.spotify_everywhere on the Alexa Everywhere group; Media page buttons.
- 2026-10-24: plan written in chat (pages: Home, Rooms, Cameras, Climate, Media/Alexa, Security, Settings; kitchen timers, shopping list, leak sensors, doorbell pop-up, night mode as extras). LAN scan done. HA started.
- 2026-10-24: repo created; home page v0 (clock, date, Met.no weather, panel AHT20 in °F); config validates.
- 2026-10-24: firmware v0 compiles (ESPHome 2026.10.0, IDF 5.5.6; 1.13 MB flash 13.9%, RAM 17.1%); factory.bin sent to owner for first USB flash. Not yet run on hardware.
- 2026-10-25: handoff for the MacBook written in the repo (HANDOFF.md, commit 4b057dd): Mac setup (pipx esphome==2026.10.0, scp secrets), first flash, next steps.
./panelnow prefers native esphome (macOS USB). - 2026-10-25: MacBook set up from HANDOFF.md: repo at ~/kitchen-hub, secrets copied (0600), esphome 2026.10.0 via pipx on Python 3.14 (3.15 finds no wheel). Firmware compiles on the Mac and matches the server build. Waiting on the first USB flash.
- 2026-10-25: first USB flash OK (USB 2.0 port, BOOT held). Chip ESP32-P4 rev v1.3 → engineering_sample stays true. Logs/Improv are on the UR0 port. Boot not yet confirmed.
- 2026-10-25: first boot OK (display, touch, PSRAM). Problems: ESP32-C6 Wi-Fi link down (host esp_hosted 2.12.13, C6 slave version unknown), AHT20 missing at 0x38 (bus has 0x2F, 0x5D). UR0 needs WCH CH34x driver on the Mac. Details in repo HANDOFF.md.
- 2026-10-25: panel is PCB V1.1 (C6 reset GPIO54, fixed in YAML). C6 OTA tool (jimullyot/crowpanel-p4-c6-sdio-ota) built and run: C6 is non-factory, streaming mode → streaming build needed; that flash is waiting on the owner. P4 currently runs the OTA tool. Details in HANDOFF.md.
- 2026-10-25: C6 updated to esp_hosted 2.12.13 (verified). ESPHome still cannot use the link: drops SDIO packets, then goes silent. Found ESPHome bug (1-bit bus ignores d1_pin → GPIO15), worked around in YAML. Details + next steps in HANDOFF.md.
- 2026-10-25: panel on Wi-Fi (192.168.4.85, kitchen-panel.local) and added to HA as "Kitchen Panel" with HA actions allowed; time syncs. Root cause of no Wi-Fi was the factory C6 firmware (2.12.3); updated to 2.12.13 with jimullyot/crowpanel-p4-c6-sdio-ota, then Elecrow's own esp32_hosted settings (reset GPIO32, 4-bit) work. AHT20 is an external add-on, removed from YAML. OTA updates work.
- 2026-10-25: 5-day forecast row on the panel Home page (commit 614d079). HA template trigger sensor
sensor.forecast_5day(templates.yaml, every 30 min,weather.get_forecastsdaily on Met.noweather.forecast_home; noteweather.homeis the ecobee entity, not Met.no). Values seen arriving in the panel log; screen not yet confirmed by owner. - 2026-10-25: owner confirmed the forecast row looks OK except dim temperatures (forecast highs, Outside temp): cards inherited LVGL's dark theme text colour. Fixed with text_color on the card and tiles, plus no scrollbar on tiles; flashed OTA.
- 2026-10-25: owner confirmed temperatures are bright. Home page moved up 25 px so top and bottom margins match (~45 px); flashed OTA.
- 2026-10-25: owner confirmed Home page is centred; forecast row done.
- 2026-10-25: full feature plan written to repo ROADMAP.md (phases: menu+Wi-Fi settings, HA control, audio/voice, cameras as snapshots, CSI camera needs an external component, battery = 1S LiPo on PH2.0 J3 ~500 mA charge). WhatsApp/Messenger call answering not possible.
- 2026-10-25: Phase 1 on the panel: pull-down menu (swipe down / tap top strip), placeholder pages, Settings (Wi-Fi change, brightness, dim on idle, About, restart). ESPHome 2026.10
wifi.configureis unsafe (typo stays saved; saves go to a key boot doesn't read); ownwifi_connect+wifi_save_bootin YAML instead, tested wrong network + restart. Owner confirmed menu, pages and all Settings controls. Details in repo HANDOFF.md. - 2026-10-25: Phase 2 no-login part (commit 6676141). HA: Tesla Wall Connector added (REST flow); ecobee, Cast, Vizio, Brother already in. Roku blocked by its ECP 'limited' setting; Android TV needs on-TV PIN; eero has no local integration. HACS: Alexa Media Player installed + HA restarted; Tuya Local is only a custom HACS repo, left to owner. Panel: Rooms (WLED, charger), Climate (ecobee setpoint/mode), Media (2 TVs), Home shows ecobee inside temp; OTA'd, values seen in log.
- 2026-10-25: Tuya Local: 18 devices added and loaded (commit 9864e18). Owner did the HACS custom repo + Smart Life QR; Claude drove the cloud flow by REST and scripted the rest. Old Tuya ids end in the device MAC → IP via
ip neigh; auto-detect mislabels DS01C dimmers as a heater,feit_dimmerused. Panel Rooms page = 20 toggle tiles + charger, states verified in log. - 2026-10-25: owner confirmed the Tuya tiles work; panel "Rooms" renamed "Lights", On/Off text dropped (amber = on, dimmed = offline). Commit in repo log.
- 2026-10-25: Family Room TV paired (Android TV Remote) → power/volume on the panel; Samsung TV UN70TU6985FXZA found and added as a third Media row (off-only power until Wake-on-LAN).
- 2026-10-25: Timers + Shopping pages on the panel (HA timer.kitchen_timer_1/_2 via websocket; template sensor sensor.shopping_list_items in templates.yaml). Flashing "Timer N done" alert tested from HA; list add/remove reaches the panel. Owner to try on screen.
- 2026-10-25: owner confirmed Timers and Shopping (add works). Bug was both LVGL keyboards drawn off-screen (y offset on a BOTTOM_MID-aligned keyboard); Settings Wi-Fi keyboard fixed by the same change.
- 2026-10-25: Roku added to HA (owner opened Control by mobile apps) and to the panel's Media page; volume test accepted.
- 2026-10-25: 4 more Tuya devices added (Kitchen, Dining, Guest, Python Lights; 22 total). Samsung merged into the Family Room media row (Google TV is plugged into it). Alexa sign-in 'There was a problem' = AMP issue #3559; HA restarted, owner retries with authenticator OTP secret.
- 2026-10-25: Insignia Fire TV (192.168.4.87) added via ADB (owner enabled ADB debugging) and on the panel's Media page.
- 2026-10-25: Alexa Media Player signed in by owner (fix for 'There was a problem': HA restart + authenticator key). 5 Echos on the panel's Media page (Echo strip). Phase 2 owner steps all done.
- 2026-10-25: kitchen timers announce on the Living Room Echo (HA automation kitchen_timer_announce); test triggered OK.
- 2026-10-25: owner heard the Echo timer announcement. Phase 2 done. Next: Phase 3 (panel speakers, then voice).
- 2026-10-25: Lamp rename, Fan added (2nd QR scan after HA restart), long-press dimming/fan speed on the Lights page. Owner idea logged in ROADMAP: never dim on USB, low power on battery (needs a USB-vs-battery signal; revisit when a battery is fitted).
- 2026-10-25: owner confirmed long-press dimming and fan speeds.
- 2026-10-25: Phase 3 speakers + voice done: panel media player (owner heard TTS + chime), Talk button + on-device 'Okay Nabu' wake word, local Whisper base-int8 + Piper containers on the server for HA Assist. Owner turned the Lamp on/off by voice. Replies now say the device name (custom_sentences/en/responses.yaml). Wake-word hit rate: owner to report.
- 2026-10-25: voice fixes: wake word restarts after each use (owner: better), screen wakes on listening, Whisper → small-int8 (accent/'hallway' errors; ~2.5 s), fan speeds by voice, light.fan renamed 'Fan Light' in HA.
- 2026-10-25: wake word no longer goes deaf after a tap-cancel (1 s restart check); Hey Jarvis added as 2nd wake word (HA has 2 slots; Hey Mycroft available). No 'Hey Nabu' model exists.
- 2026-10-25: owner skipped Hey Jarvis (never woke on the owner's voice, no near-misses in the debug log); slot 2 off. Phase 3 done.
- 2026-10-25: Phase 4 panel side (commit 6bc7c9d): Cameras page = picker from HA template
sensor.kitchen_panel_cameras+online_imagesnapshot from HA camera proxy (?width=800) every ~1 s,show_cameraAPI action for a 30 s pop-up; chime at HA/local/doorbell_chime.flac(HA restarted once for www/). Night Owl = HA generic camera, digest, ISAPI/channels/<n>01/picture(community: HA forum 'Night Owl Security System'). Waiting on owner logins. - 2026-10-25: Blink signed in (9 cameras) and on the panel; panel HA user 'Kitchen Panel' (non-admin) token in secrets. Pop-up automation
kitchen_panel_camera_popup(Blink motion at the 3 door cams → show 30 s + chime); HA 2026.10 polls Blink every 300 s fixed, so up to 5 min late. Snapshot decode moved to the P4 hardware JPEG engine (owner OK'd custom code): 1.27 s → 22 ms, 1 picture/s, UI no longer freezes (commit e3881dd; override of ESPHome runtime_image, re-copy on upgrade). - 2026-10-25: Phase 4 done (commit in repo log): Night Owl channels 1-4 on the panel as HA generic cameras (ISAPI snapshot, digest; 5-8 empty, disabled), Hikvision integration for local real-time motion. Pop-up on Night Owl Front Door + Blink door motion, 2 min cooldown; first real pop-up 13:26 from Night Owl Front Door motion (trace clean). 13 cameras in the picker.
- 2026-10-25: owner saw the Night Owl camera pop-up on the panel. Phase 4 done. Owner asked for a UI redesign (nav, camera grid); recommendation given in chat.
- 2026-10-25: UI redesign on repo branch
sandbox(flashed for owner to try): sidebar nav + Apple dark look + Lucide icons, 2x2 swipeable camera grid with full screen, Home dashboard with live Front Door. Snapshot fetch moved to a task (was blocking UI ~0.4 s). Boot crash (internal RAM below bootloader on P4) fixed with flash_chip: generic and dropping unused Hey Jarvis/Mycroft models. Merge to main after owner OK. - 2026-10-25: panel died (owner: bad LCD). On sandbox, not flashed yet: amps only while sound plays (were always on), always-on audit, 4 bpp fonts, forecast icons; HA camera list Night Owl first. Plan for all pages + Settings-driven layout agreed in chat; waiting on a new LCD to test.
- 2026-10-25: built on sandbox (not flashed, LCD dead): Lights + Home buttons + Settings editors from HA catalogue sensor.kitchen_panel_entities and a layout saved on the panel (rename, rooms, order, show, Home stars, Home camera, pop-up cameras); pop-up decision + chime moved to the panel (camera_motion). Flash-day checklist in repo HANDOFF.md; HA automation JSON in server/.
- 2026-10-25: sandbox (not flashed): Media page + Settings Media from sensor.kitchen_panel_media; HA Universal players media_player.family_room / master_bedroom / fire_tv (media_players.yaml, HA restarted); Climate dial, timer rings, Shopping checklist. All pages now in the new style; waiting on the LCD.
- 2026-10-25: Blink snapshots on demand: HA script.kitchen_panel_blink_snap (new picture in ~20 s; Blink entry refresh_rate 30 via .storage edit + restart, poll still 300 s). Panel (sandbox): picture age, New picture button, auto snapshot when older than 5 min. Door Blink cameras need batteries (owner).
- 2026-10-25: Spotify linked in HA (media_player.spotify_angel_diaz_oquendo; shows in sensor.kitchen_panel_media). Gotcha: my.home-assistant.io defaulted to homeassistant.local, which does not resolve here; set to http://192.168.5.15:8123 in Chrome on the Mac (per-browser setting: other browsers/phone need the same).
- 2026-10-25: Appliances page (EcoNet water heater + SmartThings washer) on sandbox, compiled, not flashed (LCD dead). HA: input_boolean.washer_needs_emptying, script.washer_announce (panel TTS + 5 Echos, not Baby Room + iPhone push with 'I emptied it'), 6 automations (washer done without a door sensor = machine_state run→stop / job_state→finish|none; 30 min reminder; heater alert → chime + push; person.angel away 24 h → heater away_mode, home → off). All tested by simulated states/manual runs, traces clean; owner to confirm hearing Echos + phone pushes. Files in repo server/.
- 2026-10-25: owner confirmed: heard "Washer is done" on the Echos; washer, water heater and vacation pushes arrived on the iPhone. HA side of Appliances done; panel page waits for the LCD.
- 2026-10-25: Bambu H2S in HA (ha-bambulab LAN mode, printer stays cloud): live status/temps/AMS/HMS; no pause/resume/stop in cloud mode; camera needs LAN Only Liveview. Alerts
script.printer_announce,h2s_print_done,h2s_print_problem(repo server/, 73f0e32), simulated OK. Details in print-farm. - 2026-10-25: owner confirmed both H2S test alerts (Echos + iPhone push with picture).
- 2026-10-25: enclosure + wall cradle work started (owner decisions logged above). Source/exports in ~/design/kitchen-panel-enclosure/.
- 2026-10-25: enclosure r01 (repo enclosure/, commit 912cadc; models on NAS ~/design/kitchen-panel-enclosure/r01). Schematic V1.1 = V1.2 here: both USB-C charge (J1→D11, J16→D008 → VCC5V_IN → TP4059, before SW1). Dock = J1/UR0 (J16 stays free for flashing). Mic is bottom-port → hole in the bezel face. Design change: no clip-on bezel (glass only 2.2 mm inside the wall top/bottom); front = bezel+walls, back cover + battery bay, 4 × M3 screws back boss → PCB hole → front boss, nothing on the glass. 19.6 mm thick. 4 coupons cut from the parts; CAD clearance vs board STEP clean except Elecrow's unfolded flex tails. Waiting on owner prints + measurements.
- 2026-10-25: SolidCraft trial, interim: + STEP import 11 s with named bodies, whole design is a JSON script (text in git, 30 s rebuild), STEP/STL/3MF + sketch DXF export, clearance/interference against the board, headless snapshots, hands meshes to Bambu Studio. − full-board interference 4 min and Elecrow's open shells unchecked;
inspect.clearanceneedsagainst(default compares only the listed bodies). Bambu CLI slice didn't resolve the PETG profile (PLA type, cool plate) → delivered unsliced. Verdict after the physical coupons. - 2026-10-25: battery bay widened to pack + 3 mm a side (owner: be generous, fill with foam/tape); coupon project rebuilt. Rendered view sheets (8 directions per part) in ~/design/kitchen-panel-enclosure/r01/sheet-*.png. Clearance vs board unchanged (battery 1.7 mm to the LCD connector, cover 1.2 mm to HY connectors).
- 2026-10-25: owner: panel mounts on the fridge with magnets, not a wall. Options put to owner: cradle stuck to the fridge (panel drops in, cradle holds the magnetic USB plug) vs no cradle (magnets in the back cover, cable snapped on by hand). Owner to check the fridge spot holds a magnet (many stainless doors don't).
- 2026-10-25: owner chose the fridge cradle (option 1) and dropped the magnetic USB: plain USB-C cable into the side port. Cradle draft in gen.py: 4 mm plate, 6 fridge magnets (10x3 N52, open on the back under a silicone sheet), bottom ledge, 2 alignment magnet pairs (cradle front / back-cover inside bosses). Nothing covers the port edge.
- 2026-10-25: owner: rather more magnets than fewer. Cradle fridge magnets 6 → 10 (5 × 2 grid, 10 × 3 N52); BOM 14 magnets.
- 2026-10-25: portrait cradle option drafted on owner request (cradle-portrait.*): port edge down, ledge split into two feet so USB/SW1 stay open, mic at top; clearance 0.4 mm to the panel. Portrait would also need firmware rotation + a 600x1024 UI (not started). Owner to pick landscape or portrait (or both cradles).
- 2026-10-25: owner wanted the cradle-to-panel magnets symmetric: moved to the panel centre line (X ±62, Z 0), landscape plate now 140x113, portrait 187x100, both centred on them; fridge magnets respaced symmetric. Found + fixed: back-cover screw bosses were tangent to the front wall (would rub); shaved 0.2 mm clear. Coupon project rebuilt (bay corner changed).
- 2026-10-25: multi-panel plan written (repo docs/multi-panel-plan.md, commit 33e414e): every CrowPanel P4 for one codebase (nightstand = Advanced 5" P4 800x480 mipi_rgb, same C6/NS4168 audio; 9"/10.1" need ES8311/ES7210 audio package; S3 boards not planned). ESPHome packages: boards/ audio/ core/ ui/pages/ ha/ tiers/(full, lite); per-device file picks board + tier. Checked on 2026.10.0: lvgl pages merge across packages, Jinja font scaling works with numeric substitutions. Boundaries sent to panel-feature-batch session for its item 9 split.
- 2026-10-25: owner asked for another cradle that screws to a piece of wood: keep the 2 panel alignment magnets, 2 wood screws instead of fridge magnets. Made for landscape and portrait.
- 2026-10-25: kids movie shortcut: HA
input_text.kids_movie_disney_id(websocket) +script.kids_movie(repo server/kids_movie.json, backup scripts.yaml.bak-20261025-kids-movie): Roku 32" onn on, then Disney+ (Roku channel 291097) deep-linked to the movie ID, else just the app. Loaded, not run (TV was in use). Panel button handed to the panel-feature-batch session (compile only). Roku first because its deep links are the most reliable; Fire TV/Samsung later. - 2026-10-25: owner is ordering the CrowPanel Advanced 5" P4 for the nightstand. Bring-up plan in repo docs/nightstand-plan.md: 5" uses mipi_rgb (+3-wire SPI 26/47 for init), C6 SDIO on GPIO49-54, mic DATA GPIO25; backlight, amp enable and battery go through the STC8 at I2C 0x2F (regs 0x20 PWM, 0x1B BL power, 0x1A amp active-low, 0x00 battery). Draft board YAML passes esphome config 2026.10.0. Risk: the jimullyot C6 update tool knows only 7" pins.
- 2026-10-25: hub batch on sandbox, all compiled, not flashed (LCD dead), one commit each (d482553..2067251): HA-offline banner; layout backup = NVS (documented); merge plan + secrets list in HANDOFF; orientation select (PPA rotation) + flex layouts, bottom bar in portrait; notification center (local todo
todo.kitchen_panel_notifications, washer/printer/water-heater alerts post to it, pull-down sheet + bell badge); H2S tile on Home (replaces 5th forecast day while printing); Energy page (utility_meter daily helpers for washer + charger); screen night window + sun-based brightness; guest Wi-Fi QR (HA input_text helpers pushed via panel API action so the password is never logged); Kids movie button; calendar skipped (no calendar entities); firmware split into packages/{hardware,network,ha_glue,ui}.yaml (pure move, config compared). -
2026-10-25: boot-RAM budget is the constraint for new panel features:
_bss_endnow 0x4FF1EDE8, ~1.4 KB under the known-good 0x4FF1F350; each HA subscription costs ~180 B, so new HA data goes in one packed template attribute. -
2026-10-25: package split landed (2067251: packages/hardware, network, ha_glue, ui). Nightstand plan mapped onto it: new packages/hardware-p4-5.yaml, C6 pins as substitutions, ha_glue and ui.yaml (2578 lines) still to split for a lite build.
- 2026-10-25: owner set the nightstand features (clock, good night/morning + TV shortcuts, 2-day weather, cameras); nightstand-plan.md §4-5 rewritten with defaults (silent camera pop-ups only while awake, mic off, USB).
- 2026-10-25: owner asked for 7" and 5" versions of every mount + a nightstand stand tilted a little, all with the battery and side USB. gen.py now builds per board (
gen.py 7|5; 5" = CrowPanel Advanced 5" P4 from Elecrow repo STEP/.brd V1.0, mapped into the 7" frame); outputs r01/ (7") and p5-r01/ (5"): front, back, cradle (fridge), cradle-portrait, cradle-wood, cradle-portrait-wood, nightstand (15 deg, prints on its side). 5" case 137x85x23 mm (3.5 mm deeper than 7": Grove/PH connectors under the battery). View sheets via repo enclosure/render.py. Glass-opening corner radius = gap (square glass corners kept 0.3 mm); front bosses now trimmed at the glass opening. 7" coupon project rebuilt again. - 2026-10-25: seasonal UI themes: server
stairs-season(00:05 cron, same calendar as the stair WLED; commit 931e5f1 in ~/.local/bin) now also sets HAinput_text.house_theme(websocket helper) to the look key (13 keys, todaypumpkin_glow); ran it, HA updated, stairs untouched. Panel theme (accent colours, glyph, holiday greeting, Settings toggle) queued to the multi-panel session for the shared UI package. One calendar for lights and screens. - 2026-10-25: nightstand firmware built before the board (commit 56d5994, compile only): kitchen packages + 5" board +
!remove/!extendtier; kitchen-only pages removed to fit boot RAM (_bss_end 0x4FF1E2A8, 4.2 KB under known-good; with them it was 2.6 KB over). Alarm on the panel, sleep mode, shortcuts = HA scripts labellednightstand(live in HA: sensor.nightstand_shortcuts lists Good morning, Good night, Kids movie). Kitchen build unchanged. - 2026-10-25: seasonal theme on both panels (repo firmware/packages/theme.yaml, commit 67d44cf, compile only): follows HA input_text.house_theme (stairs-season calendar); accent swap + clock tint + date glyph + holiday greeting; Settings switch. Device checklist in repo HANDOFF.md.
- 2026-10-25: Claude voice assistant: HA Anthropic integration (server key), agent on claude-haiku-5-5 with Assist control + house brief (repo server/claude-voice-prompt.txt), new preferred pipeline "Claude (local first)" (whisper → local intents first → Claude → piper); old pipeline kept for rollback. Exposed washer/printer/timers/kids movie to Assist, aliases added. Tested: local 0–0.3 s, Claude 1.6–5.5 s text, 11.8 s full voice; answers correct. Repo d9d68e9. Spend cap left to owner (console only).
- 2026-10-26: photo screensaver built (repo 9f3cd84, both panels compile; kitchen boot RAM now ~600 B under known-good, next feature frees RAM first). Server
panel-photos(Immich album → fitted JPEG → HA local_file cameras camera.{kitchen,nightstand}_panel_photo; camera list template skips them). Waiting on owner: Immich key + cron approval. - 2026-10-26: photo screensaver live. Album is Screen Saver (Angel owner, Yara editor — either adds photos, panel shows them within 2 min);
panel-photoslooks for it first, "Kitchen panel" still accepted. Read-only key (album.read, asset.read, asset.view) in~/.config/immich/env0600 (vault-push picks it up nightly). Both HA camera proxies serve 200 image/jpeg. Cron was already installed. - 2026-10-26: replacement 7" board flashed (sandbox), HA entry migrated to new MAC/IP; panel now learns HA's address from the API connection (no typed IP). Owner's first on-device pass fixed: pages not scrollable, keyboard stuck, missing glyphs, Display pane overlaps (now a column, Screen saver + Start after), slider ranges, smaller camera chips, colour seasonal icons + page tint, bigger scrolling sidebar. New on-device layout check logs overlaps/cut-offs: 37 → 0 (repo fece257). Garage Blink is slow (~2 min) with low battery; H2S camera needs LAN Only Liveview.
- 2026-10-26: Home seasonal scene ported from the embeddedera-site season scene (Halloween moon/fog/bats; snow, leaves, petals, hearts, clovers, confetti, fireflies by theme) + site icons; Home shortcuts (HA scripts/scenes starrable in Settings, Lights & Home); bolder text, dusk floor 50 %. Layout check 0, no slow frames. Kitchen boot RAM now 48 B under known-good (logger buffer cut to 384): next feature frees RAM first. Repo 626a8c3.
- 2026-10-26: owner asked where to print the 7" case. Added print-oriented exports (r01/print/, p5-r01/print/) and r01/print/7in-case-front-back-UNSLICED.3mf (front + back, one plate, ~2 h geometry-only estimate, no supports). Coupons still unprinted; told the owner the coupons are the cheaper first check.
- 2026-10-26: owner printing the full 7" case (r01/print/7in-case-front-back-UNSLICED.3mf) before the coupons; fit report to follow.
- 2026-10-26: panel layout check now also checks contrast (<3:1) and runs on every theme change; LVGL dark default theme fixed hidden/dim text (Wi-Fi line, date). All 13 themes cycled from HA: 0 problems each. Themed chimes (wolf/turkey/ho-ho-ho/party horn, others doorbell) in HA www/chimes for camera pop-ups, notifications (now chime) and heater alerts; sources/licences in repo server/chimes. Repo 6007340.
- 2026-10-26: r01 back-cover standoffs printed loose (head pocket 1 mm past the 2 mm cover left a 0.25 mm ring). r02 adds a Ø12×2 foot per boss, pocket Ø6.0; reprint
r02/print/7in-back.stl(front unchanged). Commit 3acc6ee. - 2026-10-27: kids_movie retries from any TV state (Home first, fresh-playing check, profile keys only in Disney+, iPhone alert after 3 tries); 6 live tests passed. HANDOFF has details.
- 2026-10-27: Nightstand 5": factory screen timing (25 MHz, ~59 Hz, was ~39 Hz = grainy), 8-bit fonts, Media-page remote for the Master Bedroom Vizio (keys, keyboard via vizio.send_text, F1), "F1 Apple TV" shortcut (Vizio additional app config, deep link to the Apple TV F1 channel). Layout check 0; HANDOFF has details. PC remote deferred by owner.
- 2026-10-27: Nightstand 25 MHz screen timing gave wrong colours (owner photo); reverted to 16 MHz same day. Don't raise the clock without eyes on the screen.
- 2026-10-27: Nightstand wrong colours/grainy = byte_order little_endian swapping pixel bytes on the RGB panel; now big_endian (display + LVGL). Screenshots can't show this: need eyes on the panel.
- 2026-10-27: Owner confirmed nightstand colours correct after big_endian fix.
- 2026-10-27: Theme reset to early_fall on every HA restart (helper initial). Removed initial; stairs-season hourly + @reboot. Proven with an HA restart.
- 2026-10-27: owner fit report (7"): back flexes, magnet bosses hit the speakers, magnet pockets too deep, screw-pocket ceiling printed badly. r03 (both sizes): 3.6 mm back (case +1.6 mm deep), magnets flush under the battery (7" ±42 / 5" ±40), bridged screw pockets, wood screws outboard. Reprint front + back from
r03/print/7in-case-front-back-UNSLICED.3mf. More screws need PCB holes that don't exist; stiffer plate first. - 2026-10-27: case screws are M3 socket head DIN 912: ×16 (7"), ×20 (5"); r03 pilot holes sized for them (~4.4 mm thread in the front boss). Plates rebuilt.
- 2026-10-27: Kitchen Energy + Shopping pages deleted (owner). Media: Now playing card for the Alexa Everywhere group (prev/play/next, whole-house volume), owner's Spotify playlists + Search; Kids movie header button removed. Both panels flashed, layout 0.
- 2026-10-27: Kitchen Appliances page deleted. Spotify picks open a speaker picker (Every Echo / Upstairs / each Echo); Now playing follows the playing speaker. 5" cameras 2x2 (per-panel sizes), 5" mic gain 8 + auto gain (STT proven with an Echo phrase). Self-test shots chunked (full-size 7" shot tripped the watchdog).
- 2026-10-27: Nightstand sidebar TV + Music (Alerts hidden), TV app buttons on the Vizio, Home Now/Today/Tomorrow, Clear at night. Good night: all TVs + lights off except Master Bedroom and Craft Room fan switches (outdoor lights included), rain sounds on the bedroom Echo all night. F1 off Home.
- 2026-10-27: Forecast template keeps today's high/low since midnight (Met.no today = remaining hours; Today tile showed now-temp at night).
- 2026-10-27: 5" nightstand moved when pulling the panel. Owner chose sand ballast (free) over steel BB / lead / 304 balls. New stand: hollow base (~430 g sand in a zip bag, ~0.7 kg total), screwed side cap, magnet depth tuned by 0.5 mm spacer discs, ½" × 0.1" rubber feet. Print
p5-r03/print/5in-nightstand-cap-spacers-UNSLICED.3mf. 7" nightstand not regenerated yet. - 2026-10-27: nightstand magnet pockets: crush ribs (0.25 mm squeeze) hold magnet + spacers without glue; Ø3 push-out hole in the floor for a 2.5 mm hex key. 5" plate rebuilt.
- 2026-10-28: H2S camera research (cloud mode): RTSPS 322 is closed now, 6000 is open but is not the JPEG camera stream (8-byte reply). Web reports only confirm 322 in LAN-only mode; 'LAN Only Liveview' alone (cloud kept) is unconfirmed. Next: owner flips LAN Only Liveview, Claude checks 322 + adds the camera to HA (panel shows HA snapshots, no reflash).
- 2026-10-28: owner turned on H2S LAN Only Liveview (LAN Only mode still off): RTSPS 322 opened, ffmpeg frame OK, ha-bambulab camera.h2s_..._camera serves live JPEGs (~50 ms, new frame each request) and is already in sensor.kitchen_panel_cameras. HA ignores ?width for it (sends 1680x1080 ~380 KB); panel HW decode scales to 800x450 (not yet confirmed on-device). Server checkout ~/kitchen-hub is old main without ha_cam_auth, so ./panel logs fails here.
- 2026-10-28: owner: 7" on the fridge door in the magnet cradle holds well (door opening, no sliding); H2S camera on the panel solid and responsive. Battery plan (no firmware yet): 3000 mAh ≈ 9.5 Wh usable → 12 h needs ≤ ~0.8 W average; estimate screen always on ≈ 4-6 h, screen-off-when-idle ≈ 10-14 h. No measured draw exists; owner to measure first. Levers: screen off when idle + dim, stop 1 s Home/camera polling on battery, Wi-Fi power save, wake word off on battery; bigger pack if the bay allows. Needs a USB-vs-battery signal (ROADMAP 'never dim on USB').