Layer 1
Direct Device Control
Native Alexa voice control for lights, switches, AC, geyser, sprinklers and scripts. No code required. 15-minute setup.
Nabu Casa Smart Home Skill
Layer 2
Natural Language Queries
Free-form voice queries routed to local AI. "Alexa, ask house will the battery last tonight?" Answered from live sensor data.
Custom Alexa Skill β AWS Lambda β Ollama
Layer 3
Proactive TTS
Home Assistant speaks through the Echo Dot proactively β morning briefs, charge complete alerts, automation announcements.
alexa_media v5.15.0 (HACS)
You speak β Echo Dot β Alexa Cloud β AWS Lambda (Python 3.12, eu-west-1)
β
βΌ sets input_text.alexa_query = "query|timestamp"
Home Assistant (Pi 5)
β
βΌ automation β rest_command β Node-RED webhook
Node-RED "Alexa AI" tab
β
βΌ POST /api/chat (local)
Ollama qwen2.5:1.5b
β
βΌ {"service":"script.alexa_will_battery_last","data":{}}
HA Script runs β reads live sensors
β
βΌ alexa_devices.send_text_command
Echo Dot speaks β
π€ Alexa, ask house battery status
π€ Alexa, ask house will the battery last
π€ Alexa, ask house charge overnight
π€ Alexa, ask house solar status
π€ Alexa, ask house good night
π€ Alexa, ask house good morning
π€ Alexa, ask house is there loadshedding
π€ Alexa, ask house boost the geyser
π€ Alexa, ask house run zone 2 for 8 minutes
π€ Alexa, ask house stop sprinklers
π€ Alexa, ask house set aircon to 22 degrees
π€ Alexa, ask house aircon boost
π€ Alexa, ask house biltong status
π€ Alexa, ask house how long has Eskom been out
π€ Alexa, ask house start Eskom import
π€ Alexa, ask house import to 75 percent
π€ Alexa, turn on the geyser
π€ Alexa, set aircon to 22 degrees
π€ Alexa, turn off the stoep light
π€ Alexa, discover devices
AWS Region must be eu-west-1 (Ireland) β Stockholm silently fails. Lambda is created but Alexa never reaches it. No error message.
rest_command needs a full HA restart β reload_core_config does NOT load it. Settings β System β Restart.
KV cache mismatch = 22-second responses β warmup and process nodes must have byte-identical SYSTEM prompts. One space difference = full retokenization on every query.
"Alexa-hosted" shows Amazon's ARN β if endpoint shows arn:aws:lambda:us-east-1:797176512873, you chose the wrong hosting option. Start over with "Provision your own".
Alexa hears "my bottom status" β Alexa STT mishears "biltong status". Fix: add the misheard version as an example in the Ollama SYSTEM prompt.
Silent NR JS syntax error β literal \n inside a JS string causes Node-RED to silently fail. Alexa says "Checking" but nothing ever happens.