Door Sign - XIAO 1.47" Touch Display (ESP32-S3) - limengdu - CodeCraft Hub
Scene: Smart Home. Edge AI application on CodeCraft Hub for Smart Home use cases.
Devices / BOM: XIAO 1.47" Touch Display (ESP32-S3)
Smart Home application on CodeCraft Hub. A Muse-controlled study-door sign for families and makers. Show your availability on the XIAO Touch Display and receive visitors' tap replies or voice notes in your Muse chat.
Documentation
Door Sign puts an owner's availability and up to three visitor replies on a small display outside a study. Muse updates the sign from chat; family members can tap a reply or hold USR1 to leave a voice note for the owner.
Explore the public project source , Muse skill and verification record . The project is licensed under Apache-2.0; hardware checks currently cover one XIAO 1.47-inch unit.
Deploy steps
- Prepare your device and accounts
One XIAO 1.47-inch Touch Display with ESP32-S3. This firmware targets the ESP32-S3 variant; the nRF52840 variant is unsupported.
A phone with the Muse app, a Muse account and Bluetooth available for nearby-device pairing.
Your own Muse SDK token from gadgets.muse.ai , under Account > SDK tokens. Keep it private and enter it in the flash page's token prompt.
A USB data cable and a desktop computer running Chrome or Edge for the browser's USB flash tool.
A 2.4 GHz Wi-Fi network with internet access and USB power for the sign during use.
For a first installation, save the existing firmware using the backup instructions in the project README . Position the display where its screen, USR1 and USR2 remain reachable.
- Flash Door Sign
Connect the XIAO 1.47" Touch Display to your computer with a USB data cable and use the firmware tool below to install Door Sign; select the device when the browser asks. When the write finishes and the page releases the port, press the board's reset button so it starts Door Sign. Then enter your own Muse SDK token when the page asks; the device stores it and restarts. Continue to pairing after the token step. The screen shows the Muse setup state and the nearby-device name.
Flash firmware to your device (in-app tool on CodeCraft Hub).
- Pair the display with Muse
In the Muse app, enable Settings > Devices > Developer mode and choose Add Device. Select the nearby MuseGadget-… matching the name or suffix on the display, press USR1 to confirm and complete setup on your 2.4 GHz Wi-Fi network. Keep the display powered and connected while using the sign.
After pairing, the setup name disappears and the normal Muse screen becomes available. The first sign request below checks that chat can reach this gadget. Settings remain accessible by swiping left on the display.
- Install the Muse skill once
Open SKILL.md , copy its full contents into your Muse chat and ask: "Remember this Door Sign skill and use it with my paired door-sign gadget." Install it once, and send the full file again whenever the skill changes.
Tell Muse whose door this is and your local time zone. For timed signs, the skill uses the current time and local offset before setting the deadline; Wi-Fi also starts network time synchronization. Continue once Muse confirms the skill and knows the owner and time zone.
- Set your first sign
Say: "I'm in a meeting for two minutes. Put Dad on the door and offer Dinner, Need you and Parcel." Expect a red Meeting sign with Dad's name, an end time and three reply buttons. At the deadline it changes to green Free and sends an expiry notice to Muse.
Say: "I'm focusing for an hour. Offer Need you and Parcel." Expect an amber Focus sign with those two replies.
Say: "I'm free now. Show Free." Expect the active green Free sign.
Say: "Show Recording with a purple background until 4 PM." Expect a custom sign with the short title Recording and the requested local end time.
Say: "Clear the door sign." Expect the ordinary Muse face to return.
Ask Muse to check the saved sign if an update is uncertain. Each new sign replaces the previous sign and its reply choices. Use short English labels: a title of at most 10 characters and replies of at most 12 characters fit this small screen best.
Optional routines include "Set Focus every weekday from 9 to 11" or "Follow my work calendar during office hours." These depend on scheduling or calendar services available to your Muse account; Muse must confirm a routine was created. The device holds one current sign and one deadline. Calendar following a…
- Send a message from the door
Tap one reply button and look for a checkmark with Sent inside that button for three seconds. This means the message entered the device's event queue; delivery to the owner's Muse chat depends on the network. Wait ten seconds before another tap. A delivered reply is attributed to someone at the owner's door.
Hold USR1 while speaking, then release it to send a visitor voice note. Muse's answer appears as text on the display. Press USR2 to sleep or wake the screen; waking returns to the active sign.
- Check the operating limits
An accurate clock is required for deadlines. Local HH:MM means its next occurrence; a time at or before the current time means tomorrow. Ask Muse to keep the time-zone offset current for travel and daylight saving. Use an untimed sign while accurate time is unavailable.
The sign is designed to save its state and deadline across reboot; physical power-cycle recovery remains pending. Pending message delivery and the tap cooldown live in memory, and the event queue is bounded. Treat messages during power loss or a long outage as potentially missed. Wi-Fi reconnect, outage recovery and midnight-deadline checks also remain pending on hardware.
One physical XIAO 1.47-inch unit was checked on 2026-11-04 for Muse setting the sign, a tap reaching Muse and a reply reaching the owner, expiry returning to Free, sharp text and complete labels, a USR1 voice note and USR2 sleep/wake. The final release image's Hub-page flash-and-pair journey still awaits verification. See the full validation record for the tested revision and remaining checks.
Use general availability that is suitable for a publicly visible door. A tap identifies the selected message while the visitor's identity stays unknown. Voice…