U1 Companion: the U1 on a Home Assistant wall panel, plus a simulator so you can try it without touching your printer

I wanted the four slots on a panel next to the machine: what is loaded, what colour, which spools are official, which heads this job is using. The U1 already publishes all of it. print_task_config carries the slots, the colours and the 32 to 4 logical colour map, filament_detect carries what the NFC reader got off each spool. Moonraker hands both to any client that asks. No firmware change, no config change. The existing Home Assistant Moonraker integration is written for a generic Klipper printer, so none of that reaches it.

The repo is GitHub - zkasuran/u1-companion: Home Assistant integration for the Snapmaker U1, plus a Klippy simulator that runs Snapmaker's own Moonraker fork with no printer attached. · GitHub (MIT). 82 entities on a four slot machine, four preference switches, the entangle sensitivity select, pause, resume, cancel, emergency stop, plus services for the colour map and the filament identity.

The part I would like you to try first does not involve your printer at all. u1sim is a fake Klippy that speaks the real socket protocol, so Snapmaker’s own unmodified U1-Moonraker starts on top of it:

git clone https://github.com/zkasuran/u1-companion
cd u1-companion
git clone https://github.com/Snapmaker/U1-Moonraker vendor/u1-moonraker
docker compose --profile ha up -d

That gives you Moonraker on :7125 and Home Assistant on :8123 with the integration mounted. curl 'localhost:7125/printer/objects/query?print_task_config' shows the four slot arrays.

Being straight about it: I do not own a U1 yet, so everything is verified against the simulator with your real Moonraker on top. The README says exactly that. Every field name is cited to a line in U1-Klipper or U1-Moonraker. What I cannot check is the real machine’s timing, its error paths and any value a simulator never produced. If you have a U1, the one thing that would help most is a paste of curl 'http://YOUR-U1:7125/printer/objects/query?print_task_config&filament_detect' with a couple of spools loaded, so I can compare it field by field.

Stars and issues welcome. Happy to add anything a U1 owner actually wants on the panel.

For transparency: this is also my Phase 1 entry in the U1 Innovation Fund. AI assistance (Claude) was used building it. The design, the review and the verification are mine.

Thank you for sharing this with us. I noticed you also submitted a project for the Innovation Fund. good luck!:grinning_face:

1 Like

appreciated mate. let’s build something meaningful. happy to collaborate anytime.

1 Like