The starting point: Home Assistant and a NAS
Everything starts with Home Assistant running on my NAS. I chose a self-hosted hub because the devices come from several manufacturers, each with its own app. They need one place where they can work together.
The setup spans several rooms: lights, two Dyson air purifiers, two projectors in different rooms, climate control, and several smart speakers. Home Assistant gives them one state model and API.
Direct local control for Dyson: bypassing the cloud
Dyson's default control path goes from phone to Dyson's cloud and then back to the device. The delay is noticeable, and an unreliable cloud service can make a purifier on the same local network completely unreachable.
Dyson's reverse-engineered MQTT protocol allows local control. The machine's label contains its serial number and credential data; a specific algorithm derives the MQTT login from them. Home Assistant can then talk to the purifier over the LAN.
The path is shorter, faster, and independent of an external cloud. Commands stay inside the house, so a vendor outage no longer decides whether a nearby purifier will respond. The cost is maintenance: a firmware update may change the protocol, so I have to follow the community's reverse-engineering work and be ready to repair the integration.
Voice control with iOS Shortcuts: from Siri to Home Assistant
This is the most interesting part of the system. The control path is:
iPhone / Apple Watch → Siri → Shortcut → Webhook → AI assistant → Home Assistant API
Siri turns my request into text. The Shortcut sends it to the assistant through a webhook, and the assistant interprets the intent and calls the Home Assistant API.
What works well
Natural-language understanding. "It's getting a little dark" lets the assistant use the current time and room to choose a light and brightness. "I'm going to bed" can turn off the lights, switch the purifier to night mode, and shut down the projector.
No device names to memorize. Native HomeKit expects each accessory's exact name. The AI layer can resolve a fuzzy phrase against the room, device type, and current state.
Compound commands. One sentence can operate several devices in order.
What broke
Shortcut names matter. A generic name such as "help" can collide with Siri's built-in functions and trigger something unexpected, such as music. The phrase must be distinctive but easy to remember.
Latency is higher than native HomeKit. Speech recognition, the webhook, AI interpretation, and the API call make the path roughly 2-3 seconds slower. The delay is noticeable but acceptable. In return, it handles complex, contextual scenes that native HomeKit cannot express through an ad hoc sentence.
Connecting the projectors: XGIMI and Xiaomi Miot Auto
There are two projectors in the house, and one XGIMI unit took a surprising amount of work to connect.
The projector has no native HomeKit support, and Home Assistant's official integrations don't cover it. Xiaomi Miot Auto finally worked because XGIMI uses Xiaomi's IoT ecosystem. I wrapped that third-party integration with Universal Media Player to get one consistent control interface.
The Siri-to-assistant path can now control power, volume, and input selection.
Why AI context helps
Traditional smart-home control uses exact commands: "turn on the living-room light" or "set the air conditioner to 24 degrees." With the assistant, I can describe a condition or activity.
"It's getting dark" means different things at different times. In the evening, the assistant may turn on the main living-room light. Late at night, it can choose a single small lamp at low brightness.
"It's too hot" prompts the assistant to check the climate sensors, then adjust the air conditioner or the purifier's fan speed based on the readings instead of blindly toggling a device.
"Let's watch a movie" can dim or turn off the lights, start the projector, and set the speakers to an appropriate volume. The request names the experience, while the assistant supplies the device-level sequence.
I describe a need in ordinary language; the assistant translates it into precise device commands. The commands change with the room, time, and sensor state instead of relying on one fixed scene.
The pleasure and cost of tinkering
Honestly, this system took far more time to build than simply installing every vendor's native app. Researching Dyson's local protocol alone consumed several evenings. The compatibility edges around iOS Shortcuts took repeated rounds of debugging before the voice path became dependable.
The reward is integration and customization the native products cannot match: one place for every device, natural-language control across vendors, and contextual automation.
For a developer, the tinkering is part of the appeal. Protocol research and debugging produce immediate physical feedback: the light changes, the purifier responds, or the projector finally selects the right input.
If you're considering the same path, start with Home Assistant and add one device at a time. The ecosystem is mature, and common hardware often has an integration already. Add AI voice control after the device layer is stable.