Ce contenu n'est pas encore disponible en français. Affichage de la langue d'origine.
AIMy smart home sends me a brutally honest report card every day
Favok
Full-Stack Developer & Writer
A smart home that only flips lights on and off is half-finished. The useful part is a daily report that tells you what wasted energy, which automations failed, and what to fix next ├ö├ç├ without sending private sensor data to a cloud chatbot.
This guide shows a practical local-LLM setup that generates a brutally honest home report card every morning.
Why a daily report matters
Most dashboards drown you in charts. A short written report forces prioritization: one grade for energy, one for reliability, one for security, plus three concrete actions. That format is easy to skim and easy to improve week over week.
If you treat the report like a coach instead of a vanity metric, you cut idle devices, catch broken routines faster, and stop guessing which automation actually helps.
Core workflow
1. Collect last-24h events from Home Assistant (or similar): device state changes, energy meters, failed automations, open/unlocked alerts.
2. Normalize them into a compact JSON summary (counts, peaks, error strings) ├ö├ç├ not a raw dump of every sensor tick.
3. Ask a local model (Ollama or similar) to grade the day and propose three fixes with clear owners.
4. Deliver the report by notification, email, or a static HTML page on your LAN.
5. Review once, then mark actions done so the next day is measured against a cleaner baseline.
Keep the human step. The model suggests; you approve anything that changes security or heating schedules.
Stack that stays local
Use a stack you can run offline:
- Home Assistant as the event source of truth
- MQTT / recorder for compact history exports
- Ollama (or another local runtime) for the daily write-up
- A small script (Node or Python) that builds the prompt and stores reports by date
Hosted assistants are fine for brainstorming, but the nightly job should stay on your network when the payload includes presence, locks, and cameras. For tool comparisons, see our AI tools guide and hosting options if you later publish a public dashboard.
Prompt structure that stays honest
A soft prompt produces soft grades. Use a rigid format:
- Role: critical home operations analyst
- Context: yesterday JSON summary only
- Output: letter grades AÔÇôF for Energy, Reliability, Security
- Rules: no praise without evidence; every F needs a fix under 30 minutes
- Output schema: markdown with sections Grades, Failures, Wins, Actions
Example instruction to the model:
If energy peak is unexplained, say so. If an automation failed three times, name it. Do not invent devices that are missing from the JSON.
Implementation tips
- Export only aggregated fields: top energy consumers, failed automation IDs, unlock events after midnight, offline device count.
- Cap the prompt context. More tokens rarely mean better advice; they raise cost and hallucination risk.
- Store the raw summary next to the prose report so you can audit what the model saw.
- Prefer local models when privacy matters; reserve cloud APIs for public content drafts.
- Add a weekly rollup: which actions were completed, which grades improved.
Measuring progress
Track four numbers for 30 days:
1. Average energy grade
2. Failed automations per week
3. Minutes to clear the top action
4. Devices offline at report time
If grades stay stuck at C without completed actions, the report is theater. The value is the closed loop: report  action  better report.
Common failure modes
- Too much raw data  model invents patterns. Fix with aggregation.
- Vague actions  "optimize lighting" never gets done. Force device + steps + timebox.
- Cloud leakage  camera or presence fields in prompts. Strip them before export.
- No ownership  actions without a person or day. Assign both.
Next steps
Ship a minimal pipeline this week: one export job, one local model call, one morning notification. Iterate from real metrics, not hype. When the report is stable for seven days, add one security check and one energy check ├ö├ç├ not ten at once.
Keep exploring
Related articles
Written by
Favok
Full-Stack Developer & Writer
Full-stack developer and content creator. I write practical guides on Next.js, TypeScript, and modern web technologies. I started this blog to share what I learn, document experiments, and help readers ship better projects.
About the author