[{"data":1,"prerenderedAt":740},["ShallowReactive",2],{"project-arthome-automations":3,"$fn-YXb3SrQ0UHsyjZw7tyGR2zIE_NixLeK3xbfj-HGHg":724},{"id":4,"title":5,"description":6,"extension":7,"favorite":8,"icon":9,"meta":10,"publishedAt":712,"readingTime":713,"shortDescription":714,"slug":715,"status":716,"stem":717,"tags":718,"type":722,"__hash__":723},"projects\u002Fprojects\u002Farthome-automations.md","ArtHome — Home Intelligence Layer","A fully self-hosted Home Assistant instance orchestrating 27+ automations across lighting, security, media, climate, and daily productivity — backed by 1500+ sensors, 12 custom scenes, and 20 dashboard views.","md",true,"i-ph-lightbulb-duotone",{"body":11},{"type":12,"value":13,"toc":689},"minimark",[14,58,61,64,69,80,85,92,223,227,234,260,285,297,299,303,309,313,322,332,342,351,373,394,427,440,444,451,455,462,464,468,472,479,491,497,501,504,515,521,525,532,539,543,550,554,561,565,581,583,587,681,683],[15,16,17,21,22,25,26,33,34,37,38,41,42,45,46,49,50,53,54,57],"p",{},[18,19,20],"strong",{},"ArtHome"," is the brain of my living space — a fully self-hosted ",[18,23,24],{},"Home Assistant"," instance running on my ",[18,27,28],{},[29,30,32],"a",{"href":31},"\u002Fprojects\u002Fartlab","ArtLab"," homelab. It processes data from ",[18,35,36],{},"1500+ entities"," across ",[18,39,40],{},"33 domains",", orchestrates ",[18,43,44],{},"27 automations",", and presents everything through ",[18,47,48],{},"3 dashboards"," spanning ",[18,51,52],{},"20 views"," and ",[18,55,56],{},"300+ cards",".",[59,60],"home-live-art-home-status",{},[62,63],"hr",{},[65,66,68],"h2",{"id":67},"architecture","Architecture",[15,70,71,72,75,76,79],{},"ArtHome runs as a Home Assistant OS instance on the Beelink EQR6, exposed through a ",[18,73,74],{},"Cloudflare Tunnel"," for secure remote access. All local traffic stays inside a ",[18,77,78],{},"Tailscale mesh VPN"," — no open ports, no exposed attack surface.",[81,82,84],"h3",{"id":83},"add-on-ecosystem","Add-on Ecosystem",[15,86,87,88,91],{},"The instance runs ",[18,89,90],{},"11 add-ons"," that extend core capabilities:",[93,94,95,109],"table",{},[96,97,98],"thead",{},[99,100,101,106],"tr",{},[102,103,105],"th",{"align":104},"left","Add-on",[102,107,108],{"align":104},"Role",[110,111,112,123,133,143,153,163,173,183,193,203,213],"tbody",{},[99,113,114,120],{},[115,116,117],"td",{"align":104},[18,118,119],{},"Zigbee2MQTT",[115,121,122],{"align":104},"Universal Zigbee bridge — controls all Hue, IKEA, and Aqara devices locally",[99,124,125,130],{},[115,126,127],{"align":104},[18,128,129],{},"Matter Server",[115,131,132],{"align":104},"WebSocket bridge for Matter-compatible accessories",[99,134,135,140],{},[115,136,137],{"align":104},[18,138,139],{},"Music Assistant",[115,141,142],{"align":104},"Multi-room audio server unifying local files with streaming services",[99,144,145,150],{},[115,146,147],{"align":104},[18,148,149],{},"Tailscale",[115,151,152],{"align":104},"Zero-config VPN for secure remote management",[99,154,155,160],{},[115,156,157],{"align":104},[18,158,159],{},"Cloudflared",[115,161,162],{"align":104},"Cloudflare Tunnel for HTTPS access without port forwarding",[99,164,165,170],{},[115,166,167],{"align":104},[18,168,169],{},"openWakeWord",[115,171,172],{"align":104},"Privacy-preserving wake word detection (local, no cloud)",[99,174,175,180],{},[115,176,177],{"align":104},[18,178,179],{},"Piper",[115,181,182],{"align":104},"Neural text-to-speech engine running on-device",[99,184,185,190],{},[115,186,187],{"align":104},[18,188,189],{},"Speech-to-Phrase",[115,191,192],{"align":104},"Fast local speech-to-text pipeline",[99,194,195,200],{},[115,196,197],{"align":104},[18,198,199],{},"Beszel Agent",[115,201,202],{"align":104},"Lightweight resource monitoring agent",[99,204,205,210],{},[115,206,207],{"align":104},[18,208,209],{},"HA MCP Server",[115,211,212],{"align":104},"AI agent gateway exposing Home Assistant via the Model Context Protocol",[99,214,215,220],{},[115,216,217],{"align":104},[18,218,219],{},"Advanced SSH & Web Terminal",[115,221,222],{"align":104},"Browser-based terminal access for maintenance",[81,224,226],{"id":225},"hacs-custom-integrations","HACS & Custom Integrations",[15,228,229,230,233],{},"Beyond built-in integrations, ",[18,231,232],{},"52 HACS repositories"," extend the platform. Notable ones include:",[15,235,236,239,240,243,244,247,248,251,252,255,256,259],{},[18,237,238],{},"Integrations"," — ",[18,241,242],{},"Alarmo"," (advanced alarm panel with presence-based arming), ",[18,245,246],{},"LLM Vision"," (AI-powered camera analysis with open-weight models), ",[18,249,250],{},"Better Thermostat"," (adaptive TRV control with external temperature sensors), ",[18,253,254],{},"Bubble Card Tools"," (backend for the Bubble Card UI system), ",[18,257,258],{},"Beszel API"," (homelab metric ingestion).",[15,261,262,239,265,268,269,272,273,276,277,280,281,284],{},[18,263,264],{},"User Interface",[18,266,267],{},"Bubble Card"," (minimalist card collection with pop-up touch interactions), ",[18,270,271],{},"button-card"," (swiss-army-knife custom card), ",[18,274,275],{},"auto-entities"," (dynamic entity list auto-population), ",[18,278,279],{},"Big Slider Card"," (expanded light intensity sliders), ",[18,282,283],{},"Alarmo Card"," (security panel frontend).",[15,286,287,239,290,296],{},[18,288,289],{},"Themes",[18,291,292],{},[29,293,295],{"href":294},"\u002Fprojects\u002Fartlab-theme","ArtLab Theme"," (cross-platform theme blending Vitesse clarity with Catppuccin palettes, used across all ArtHome dashboards).",[62,298],{},[65,300,302],{"id":301},"dashboards","Dashboards",[15,304,305,306,308],{},"ArtHome ships with ",[18,307,48],{},", each serving a distinct purpose.",[81,310,312],{"id":311},"home-dashboard","Home Dashboard",[15,314,315,316,53,318,321],{},"The primary control center with ",[18,317,52],{},[18,319,320],{},"300+ Lovelace cards"," organized into three tiers:",[15,323,324,327,328,331],{},[18,325,326],{},"Overview & Monitoring"," — The landing ",[18,329,330],{},"Home"," view aggregates everything on one screen: presence (who is home), weather forecast, next calendar events, active media, alarm state, energy consumption, and quick-access lights toggles. A daylight calendar card shows sunrise\u002Fsunset progression.",[15,333,334,337,338,341],{},[18,335,336],{},"Security"," — The ",[18,339,340],{},"Sécurité"," view centers on the Alarmo card with arm\u002Fdisarm controls, an LLM Vision camera feed with AI analysis timeline, and a logbook of recent events.",[15,343,344,337,347,350],{},[18,345,346],{},"Lighting",[18,348,349],{},"Lumières"," view groups lights by room, with scene selectors (living room: 6 scenes, bedroom: 4 scenes) and individual brightness\u002Fcolor controls via Mushroom and Tile cards.",[15,352,353,356,357,360,361,364,365,368,369,372],{},[18,354,355],{},"Environment"," — Dedicated views for ",[18,358,359],{},"Weather"," (Météo-France forecasts, precipitation radar, wind), ",[18,362,363],{},"Climate"," (thermostat status, indoor temperature trends), ",[18,366,367],{},"Batteries"," (low-battery device monitoring), ",[18,370,371],{},"Energy"," (power consumption tracking).",[15,374,375,239,378,381,382,385,386,389,390,393],{},[18,376,377],{},"Media & Comfort",[18,379,380],{},"Média"," aggregates media players (Apple TV, Sonos, Panasonic TV, PS5) with conditional cards that show controls only for active devices. Separate views for ",[18,383,384],{},"Ventilation"," (fan control), ",[18,387,388],{},"Volets"," (shutter positions), ",[18,391,392],{},"Aspirateur"," (vacuum robot).",[15,395,396,399,400,403,404,403,407,403,410,403,413,403,416,403,419,422,423,426],{},[18,397,398],{},"Room-by-Room"," — Individual views for ",[18,401,402],{},"Salon",", ",[18,405,406],{},"Chambre",[18,408,409],{},"Cuisine",[18,411,412],{},"Couloir",[18,414,415],{},"Salle de Bain",[18,417,418],{},"Jardin",[18,420,421],{},"Garage",", and ",[18,424,425],{},"Entrée"," — each showing the room's lights, sensors, and relevant controls on tile cards.",[15,428,429,337,432,435,436,439],{},[18,430,431],{},"Infrastructure",[18,433,434],{},"Homelab"," view is the largest, with ",[18,437,438],{},"158 cards"," monitoring server health: CPU\u002FRAM\u002FDisk gauges across all nodes (Beelink, NAS, Docker containers), network status, service uptime, and storage pool utilization.",[81,441,443],{"id":442},"map-dashboard","Map Dashboard",[15,445,446,447,450],{},"A full-screen ",[18,448,449],{},"device tracking map"," showing real-time locations of household members and mobile devices. Uses Catppuccin theme.",[81,452,454],{"id":453},"kiosk-dashboard","Kiosk Dashboard",[15,456,457,458,461],{},"An ",[18,459,460],{},"Immich photo frame"," displayed on a wall-mounted tablet. Shows a curated album with the UI hidden, cycling through family photos as a living digital canvas.",[62,463],{},[65,465,467],{"id":466},"automation-layer","Automation Layer",[81,469,471],{"id":470},"lighting-scenes","Lighting & Scenes",[15,473,474,475,478],{},"A ",[18,476,477],{},"Hue Dimmer Switch"," paired via Zigbee2MQTT controls the living room through multi-press actions — short press steps brightness, long press maxes out, down-press fades off with a 2-second transition, and the off-button cycles through 6 scenes (Classique, PSG, Atlético, Football, Cinéma, Deep Coding). The bedroom has 4 scenes (Classique, Red, Blue, Fire).",[15,480,481,482,485,486,490],{},"When the ",[18,483,484],{},"Apple TV"," starts playing, Home Assistant detects the ",[487,488,489],"code",{},"playing"," state and transitions the living room to the Cinema scene with a 5-second fade. Pausing restores Classic; stopping resets both the scene and selector.",[15,492,474,493,496],{},[18,494,495],{},"Sleep Mode"," toggle per room overrides active scenes by forcing all lights to deep red at 10% brightness with a 5-minute crossfade. Any light turned on during sleep mode inherits the constraint automatically.",[81,498,500],{"id":499},"presence-security","Presence & Security",[15,502,503],{},"When both residents leave, all lights dim off over 2 seconds. If nobody is home and the alarm is disarmed, a departure reminder notification is sent. Arriving home while the alarm is armed triggers a security dashboard shortcut.",[15,505,506,507,510,511,514],{},"If nobody has been home for ",[18,508,509],{},"24 hours"," and guest mode is off, ",[18,512,513],{},"vacation mode"," activates automatically — notifying both residents. It disables on first return.",[15,516,517,518,520],{},"The ",[18,519,242],{}," alarm panel triggers a full-house red light strobe (500ms intervals) on intrusion, then restores white lighting when cleared.",[81,522,524],{"id":523},"daily-briefing","Daily Briefing",[15,526,527,528,531],{},"Every morning at ",[18,529,530],{},"8:30 AM",", the system fetches events from calendar sources and pending tasks from todo lists, then pushes a structured notification to the iPhone. A full-formatted email follows with detailed scheduling, due tasks, and a personal sign-off.",[15,533,534,535,538],{},"At ",[18,536,537],{},"8:00 AM",", a weather check runs. If rain is predicted, a motorcycle rain alert notification is pushed with estimated precipitation.",[81,540,542],{"id":541},"work-tracking","Work Tracking",[15,544,545,546,549],{},"The system tracks daily hours at Polytechnique: after ",[18,547,548],{},"8 hours",", Arthur receives a \"time to go home\" notification (workdays only, once per day — flag resets at midnight). When Arthur leaves campus between 15:00 and 22:00, Nerea is notified automatically.",[81,551,553],{"id":552},"media-arrival-context","Media & Arrival Context",[15,555,556,557,560],{},"When Arthur arrives home while music is playing on his iPhone and nobody else is present, an interactive notification offers to ",[18,558,559],{},"transfer playback"," to the Sonos speaker via Music Assistant with a 5-minute timeout. Daily Immich photo memories are pushed as notifications.",[81,562,564],{"id":563},"infrastructure-safeguards","Infrastructure Safeguards",[566,567,568,575],"ul",{},[569,570,571,574],"li",{},[18,572,573],{},"Bandwidth management"," — qBittorrent speed limits toggle automatically based on active media streaming clients",[569,576,577,580],{},[18,578,579],{},"AdGuard auto-recovery"," — filtering and protection re-enable after 2 hours if manually disabled",[62,582],{},[65,584,586],{"id":585},"devices-connectivity","Devices & Connectivity",[93,588,589,601],{},[96,590,591],{},[99,592,593,596,599],{},[102,594,595],{"align":104},"Protocol",[102,597,598],{"align":104},"Hardware",[102,600,108],{"align":104},[110,602,603,617,630,643,656,669],{},[99,604,605,611,614],{},[115,606,607,610],{"align":104},[18,608,609],{},"Zigbee"," (Zigbee2MQTT)",[115,612,613],{"align":104},"SLZB-MR4 coordinator",[115,615,616],{"align":104},"All smart lighting, dimmers, sensors",[99,618,619,624,627],{},[115,620,621],{"align":104},[18,622,623],{},"Matter",[115,625,626],{"align":104},"Matter Server add-on",[115,628,629],{"align":104},"Cross-ecosystem device compatibility",[99,631,632,637,640],{},[115,633,634],{"align":104},[18,635,636],{},"Wi-Fi",[115,638,639],{"align":104},"iPhone\u002FiPad Companion Apps",[115,641,642],{"align":104},"Presence detection, push notifications",[99,644,645,650,653],{},[115,646,647],{"align":104},[18,648,649],{},"LAN",[115,651,652],{"align":104},"Apple TV, Panasonic TV, PS5, Sonos",[115,654,655],{"align":104},"Media playback detection and control",[99,657,658,663,666],{},[115,659,660],{"align":104},[18,661,662],{},"Bluetooth",[115,664,665],{"align":104},"openWakeWord + Piper",[115,667,668],{"align":104},"Voice assistant input\u002Foutput",[99,670,671,676,678],{},[115,672,673],{"align":104},[18,674,675],{},"Cloud",[115,677,74],{"align":104},[115,679,680],{"align":104},"Secure remote access, webhooks",[62,682],{},[15,684,685],{},[686,687,688],"em",{},"ArtHome proves that a completely local, privacy-first smart home can rival any cloud-dependent system in capability. Every trigger is a learned pattern, every action a removal of friction.",{"title":690,"searchDepth":691,"depth":691,"links":692},"",2,[693,698,703,711],{"id":67,"depth":691,"text":68,"children":694},[695,697],{"id":83,"depth":696,"text":84},3,{"id":225,"depth":696,"text":226},{"id":301,"depth":691,"text":302,"children":699},[700,701,702],{"id":311,"depth":696,"text":312},{"id":442,"depth":696,"text":443},{"id":453,"depth":696,"text":454},{"id":466,"depth":691,"text":467,"children":704},[705,706,707,708,709,710],{"id":470,"depth":696,"text":471},{"id":499,"depth":696,"text":500},{"id":523,"depth":696,"text":524},{"id":541,"depth":696,"text":542},{"id":552,"depth":696,"text":553},{"id":563,"depth":696,"text":564},{"id":585,"depth":691,"text":586},"2026-03-15",5,"A comprehensive Home Assistant deployment with 27 automations, 12 scenes, and 20 dashboard views.","arthome-automations","In progress","projects\u002Farthome-automations",[24,119,719,302,720,623,721],"Home Automation","Self-Hosted","Voice Assistant","Personal Project","anMdtQ8nCAVI4IWbqculRqwGkVHrSN2SB7Dr9KGAz0o",{"updatedAt":725,"weather":726,"isHoliday":729,"totalLights":713,"totalDomains":730,"totalAutomations":731,"totalScenes":732,"totalEntities":733,"immichPhotos":734,"immichVideos":735,"lxcContainers":736,"virtualMachines":737,"dnsRequests":738,"dnsBlocked":739,"totalMediaPlayers":736,"activeMediaPlayers":737},"2026-06-15T19:51:44.902Z",{"condition":727,"temperature":728},"rainy",26.6,false,33,27,12,1491,3166,635,8,1,107049,1887,1781553201959]