Sno Station
Sno Station은 AI 에이전트를 하나의 팀으로 묶는 오픈소스 워크스테이션으로, 로컬 머신에서 에이전트 협업을 가능하게 함
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Draw your home, see it in 3D and control it right where things are.
Try the demo: one click and it runs right in your browser, always the newest version, no install and no Home Assistant needed. Or download it as one HTML file with an example house, lights and sensors and double-click it.
Your own floor plan in 3D on its plot, live with your real lights, sensors, windows and scenes.
Quick tour (sped up): room control, heat and humidity colours, whole house, 2D / split view, device library. All from the demo file .README 전문 보기 ↗Try the demo: one click and it runs right in your browser, always the newest version, no install and no Home Assistant needed. Or download it as one HTML file with an example house, lights and sensors and double-click it.
Your own floor plan in 3D on its plot, live with your real lights, sensors, windows and scenes, under the sky of the time of day.
Quick tour (sped up): room control, heat colours, power, whole house, night sky, 2D / split view, device library. All from the demo file.
Features · Import by JSON / AI · Installation · Quick start · Phones & tablets · Documentation · Roadmap
Most floor plan cards make you place icons on a picture. 3D Floorplan lets you build your home: walls, rooms, doors, windows, stairs and furniture, then see it as a real 3D model in which every device is bound to a Home Assistant entity. Tap a lamp where it stands, switch a whole room, start a scene, see which window is open, all in one place, on your phone, your desktop or a wall tablet.
It is made with a lot of love for my own smart home, and it is used every day. I hope it makes yours a little nicer, too. 💙
This is an AI-assisted project: the code is written together with an AI (Claude by Anthropic). The idea, the design, every feature request, the decisions and the testing in my own smart home come from me, and a lot of time and care went into it: hundreds of iterations, screenshots, bug reports and fixes, tested on real wall tablets. The AI is my pair programmer, not an autopilot.
What that means for you: the code is automatically tested (backend and browser tests run on every change), everything is open source under the MIT license, and you are welcome to read, question and improve it. If you find a bug, please open an issue, I take it seriously and will fix it.
| 🏗️ Build it | Draw walls, rooms, stairs, doors and windows in a 2D blueprint that is linked live with the 3D view |
| 🤖 Or describe it | Paste a JSON description (written by hand, by an AI, or from GeoJSON) and get the whole house, plot and garden included. Also available as a REST API |
| 💡 Control it | Every device is a Home Assistant entity: lights, scenes, effects, Nanoleaf layouts, TV backlight, windows, heat and humidity |
| 🌅 See it at a glance | Labels over the rooms and room tiles, power as a picture, the sky of the time of day with the weather and the moon, real floors |
| 🗂️ Your only dashboard | Pages at the bottom for every day: ☀ Today, ⚡ Energy, 🌡 Climate, 📷 Cameras, 🎵 Music & TV, 🧺 Household, ▶ Routines, 👨👩👧 Family, arranged like a Home Assistant dashboard |
| 🔥 Heating that thinks | Heating rules (window open → off, nobody home, night, schedule, boost, holidays), a room sensor per thermostat like Better Thermostat, own routines that become real Home Assistant automations |
| 📱 Everywhere | Phone, desktop and wall tablets (kiosk mode, per-user rooms), 8 languages, offline and private |
Tell the add-on what your property looks like and it builds the house: walls from your rooms, doors and windows snapped to the right wall, floors, roof, plot boundary and garden. It always creates a new house, so nothing is overwritten, and a check step shows errors with the exact JSON path before anything is created.
{
"schemaVersion": 1,
"building": {
"footprint": [[0,0],[9,0],[9,7],[0,7]],
"floors": [{
"name": "Flat", "kind": "floor",
"rooms": [
{ "name": "Living", "points": [[0,0],[5,0],[5,7],[0,7]] },
{ "name": "Bed", "points": [[5,0],[9,0],[9,7],[5,7]] }
],
"openings": [
{ "preset": "doorEntry", "at": [2.5, 0] },
{ "preset": "window2", "at": [7, 0] }
],
"devices": [
{ "type": "light", "x": 2.5, "z": 3.5, "entity": "light.living" }
]
}]
}
}
Three ways in: the import dialog (examples, check, file upload, a Copy AI prompt button that gives ChatGPT / Claude / Gemini everything they need), the API, or GeoJSON outlines from a cadastre / OpenStreetMap.
curl -X POST "$BASE/api/import?dryRun=1" -H "Content-Type: application/json" -d @house.json # check only
curl -X POST "$BASE/api/import?name=Cabin" -H "Content-Type: application/json" -d @house.json # create
curl "$BASE/api/export/property?house=main" -o my-house.json # export any house in the same format
Want to see every option at once? docs/examples/showcase.json is a show house with everything in it (every device type, door and window, all five kinds of stairs, dormers, solar roof, roof terrace, garden house, power cables), also in the dialog as Example: show house.
Format reference, screenshots, prompt tips and examples: English · Deutsch
In the live view a tab bar at the bottom turns the add-on into the only dashboard you need (on a wall tablet too). Which pages a user or tablet sees, and which one it starts with, is set per user.
| Page | What is on it |
|---|---|
| ☀ Today | Time and date, the weather of the next days, a week calendar of several calendars with + Event, the pinboard, waste collection, who is home and 🚆 your train (is it on time? delays, platform, also tomorrow's) |
| ⚡ Energy | Today by the hour, a week, month or year: used, from the sun, from the grid, what the house made itself and what it cost; the battery, the biggest users, several houses compared |
| 🌡 Climate | A card per room with its thermostat as a circle like in Home Assistant, humidity and air (air out), open windows while it heats, 📋 heating rules and 📅 the schedule |
| 📷 Cameras | Every camera by room, motion first |
| 🎵 Music & TV | Every player with what plays, its picture and its buttons |
| 🧺 Household | Washing machine, dryer, dishwasher (with 🔔 tell me when it is done), the shopping list, the car (charge, range, charge with the sun only) and the garden (rain, soil, water 10 min) |
| ▶ Routines | Scenes and scripts with one tap, I'm leaving and Good night checks, own routines, the automations and scenes of Home Assistant |
| 👨👩👧 Family | Who is home (Home Assistant, Wi-Fi and router), the pinboard |
Admins arrange every page like a Home Assistant dashboard: drag cards, hide them, sections, twelve kinds of own cards (button, switch, value, history, light, thermostat, cover, camera, calendar …) and own pages.
| Walls, rooms and floors | Draw on a snapping grid in a 2D blueprint editor that is linked live with the 3D view (split view). Several floors, basement and roof, placeholder blocks for floors you do not draw |
| Trace your plan | Load a scan or photo of your floor plan as a template, calibrate its scale and trace over it |
| Stairs | Straight, L-shaped, U-shaped and spiral stairs with real floor openings |
| Doors and windows | 14 presets: front door, glass door, double door, sliding door, single / double / triple window, balcony door, fixed glazing ... they cut real openings into the wall and open when the contact sensor reports open; every window (also in a dormer) can get a roller shutter with its own cover entity, shown in 3D and controllable in live mode |
| Garden and surroundings | Trees, bushes, lawn, terrace, pool, paths, fences and cars around the house, in natural colours; 26 garden things: bench, table and chairs, parasol, grills, fire bowl, raised bed, garden lamps, trampoline, swing, greenhouse, garden shed, garden gnome ... |
| Plot and ground | Draw your plot (Grundstück) in the 2D plan, or set how far the lawn reaches around the house; measure it (size, perimeter, every side), type in its width and depth or lay a rectangle round the house in one tap. Draw areas on it: a yard of cobblestones, a drive, a wooden deck, gravel, beds, a pond ... with their pattern in 3D. The house stands in solid ground, a basement is shown as a section with soil layers |
| Whole-house view | See all floors, basement and roof stacked as one building |
| Plateau and raised rooms | A second house on a raised plateau in the plot (retaining wall of stone, concrete, clinker or gabions, or a bank of lawn) with outdoor steps up to the front door; a room's floor higher or lower than its storey, with steps at the doors |
| Cabinets made to measure | A cabinet editor: columns, rails, shelves, drawers, doors, handles and finishes, also under a sloping roof (fit under the slope reads the roof above it) |
| Clear object list | Everything grouped by room (the room, its doors / windows and furniture), with a search field; the side panel can be dragged wider |
Describe plot, rooms, windows and devices as JSON (write it by hand, let an AI generate it, or convert GeoJSON outlines) and get a new house: walls are derived from the rooms, openings snap to walls, floors, roof, plot boundary and garden are built. Check first, import after a clean check, errors name the exact JSON path.
API: POST /api/import · GET /api/export/property · GET /api/import/schema. Full guide: English · Deutsch
M, in the 2D plan and in 2D + 3D): click two points for their distance (corners and wall faces snap), or click two walls and type their exact distance (face to face or centre to centre) or the angle between them: the wall moves, the walls joined to it and the rooms follow.glb fileperson, device_tracker) and presence / motion sensors appear as a glowing figure while they are home; room pills show a dot when somebody is in the roomaddon_configs), with retention by days and count, a Check the newest test and one-click restoreCtrl+Z for everything you draw, and a short Deleted · ↶ Undo note after every deletion (handy on a tablet); ? shows every key on one card/data folder and survive updatessun.sun has it, at night stars and a faint Milky Way; a chip shows the time and the next sunset or sunrisehttps://github.com/BuRnEd4AiM/HA-Floorplanner (or press the button at the top).Requires Home Assistant OS or Supervised (anything with the Add-on / App store). Details on permissions and tablet setup are in the documentation.
Home Assistant Container (Docker, no add-on store): run 3D Floorplan as a second container next to Home Assistant; you log in with your Home Assistant user. The steps are in container/README.md.
Show the live 3D view on any dashboard with the card custom:floorplan3d-card. A tap on a device controls it, as in the add-on; editing stays in the add-on. The add-on must be installed and running.
Install with HACS: HACS → ⋮ → Custom repositories → https://github.com/BuRnEd4AiM/HA-Floorplanner, type Dashboard → open 3D Floorplan Card → Download, then reload the browser. HACS adds the card as a dashboard resource by itself.
Install by hand: copy dist/floorplan3d-card.js to /config/www/, then Settings → Dashboards → ⋮ → Resources → Add: /local/floorplan3d-card.js, JavaScript module.
Then edit a dashboard → Add card → 3D Floorplan. Every option can be set in the visual editor (floors and rooms are offered from your plan), or in YAML:
type: custom:floorplan3d-card
floor: Erdgeschoss # a floor name, a number (0 = ground floor, 1 = above, -1 = basement) or "house"
height: 450px # or fill: true for the whole screen
theme: auto # follows the dark / light mode of Home Assistant
heatmap: temp # start with the temperature colours (temp, humid, co2)
| Option | Values | Default |
|---|---|---|
title | text above the view | none |
house / floor / room | house name; floor name, number or house; a room name (opens that room like a room tablet) | as in the add-on |
view | with a room: room = only that room in 3D, the card never leaves it; panel = only the room's controls (its room panel), without 3D | 3d |
height / fill | a height (400, 450px, 60vh); fill: true fills the screen. In a sections dashboard the card takes the size of its cell | 400px |
theme | auto, dark, light, holo | as in the add-on |
quality | low (fast), high (beautiful) | automatic |
walls | auto (sink towards the camera), see_through, low, full | as in the add-on |
labels | important, all, none | as in the add-on |
heatmap | temp, humid, co2 | off |
alerts | true / false (warnings) | as in the add-on |
idle_return | minutes without a touch, then back to the card's floor (0 = never) | as in the add-on |
night | off, sun, time (dim at night) | as in the add-on |
room_panel | false: a tap on a room (and the room tablet start) only zooms in, without the room panel over the house |
If a dashboard says Custom element doesn't exist: floorplan3d-card, the browser has not loaded the card: open http://<your Home Assistant>:8123/hacsfiles/HA-Floorplanner/floorplan3d-card.js. A 404 means HACS has not downloaded it: HACS → 3D Floorplan Card → ⋮ → Redownload (3.75.0 had this problem, 3.75.1 fixes it), then reload the browser with Ctrl+F5.
The add-on as the only dashboard of a wall tablet (#479): a dashboard with one view of type Panel and only this card, fill: true, tabs: true, kiosk: true, as the default dashboard of the tablet's own user (without admin rights). The tablet then shows the house with the tab bar at the bottom and nothing of Home Assistant around it; which tabs it gets and which one it starts with is set in the add-on (⚙ → Users & tablets). The add-on's ⚙ → Wall tablet → Set up a tablet has the steps and the card's text to copy.
A room and its controls side by side (#356): two cards with the same room, one with view: room (the room in 3D, it stays in the room) and one with view: panel (only the room panel: lights, heating, shutters, doors and windows). The card with view: panel draws no 3D picture, so it costs almost nothing.
type: custom:floorplan3d-card
room: Wohnzimmer
view: panel # or room
The look of a card applies to that card only and never changes the add-on's settings. Every card is a full 3D view: one or two per dashboard are fine, on weak tablets prefer quality: low.
| Action | How |
|---|---|
| Draw walls / rooms | Tool Wall W / Room R: click point by point, double-click or Esc finishes |
| Add doors and windows | Tool Door/Window O, pick a preset, click a wall |
| Place furniture | Tool Device D, pick a piece from the library, click the floor |
| Link an entity | Select a device, search the entity in the side panel |
| Resize | Drag the two square handles in the 2D plan, or type the size in metres |
| Move / rotate | Drag it, Q / E rotate in 15° steps |
| Measure, set two walls apart | Tool Messen M: click two points, or two walls and type their distance or angle in the side panel |
| Lock an item | Tick the box before its name in the object list |
| Live mode | Tap a device to control it, tap a room for the whole room |
| History of a device | ⓘ Details in its popup opens Home Assistant's own dialog |
| Place a whole HA area | Select the room, then ✨ Place all in its entity list |
| Undo | Ctrl+Z |
| Import a house | Houses → Import house from JSON, or POST /api/import |
| Backup | 🗄️ Backup in the top bar (also automatic backups and the security recording) |
⬇ Download the demo (always the newest build; a GitHub workflow rebuilds it whenever the app changes) and open the file with a double-click: one HTML file, no server, no Home Assistant. Or open the demo directly in the browser (GitHub Pages, same build, nothing to download).
It contains an example house with a basement in the ground, several floors, a roof, a plot with garden, furniture, doors and windows with contact sensors, simulated lights (colour, brightness, effects, scenes), a Nanoleaf layout, a TV backlight, an invisible LED strip that still lights the room, an LED ring with two lights around the bedroom ceiling, temperature / humidity sensors, batteries, the holiday alarm (code 1234), two recorded days to play back in Security and the live mode. Everything works as in the add-on, except that changes are not saved and what needs the add-on itself: building a house from JSON, restoring a backup, uploading pictures and models, sending messages (the demo says so).
To build it yourself: cd demo && npm install && npm run build.
The panel is empty or shows old behaviour after an update. Look at the pill in the top bar (version + short checksum):
| Pill | Meaning | What to do |
|---|---|---|
| 🟢 green | Add-on files and browser files match the manifest | All fine. If something is still wrong, it is a real bug: please open an issue and mention the checksum |
| 🟠 orange | The browser shows older files than the add-on has | Open the pill, press Reload (clear cache) |
| 🔴 red | Files of the add-on differ from the manifest | Reinstall / update the add-on |
Where is my data? Layouts and settings are in the add-on's /data folder and survive updates. Backups (if enabled) are in the add-on config folder: File editor → addon_configs → folder with floorplan3d → backups, or via Samba / SSH at /addon_configs/.
How do I update? Settings → Apps → 3D Floorplan → Update. In the edit mode the pill checks GitHub every 5 minutes and turns blue with ⬆ New version available when there is a newer one (switch it off in ⚙ if you like).
Does it send data anywhere? No. Three.js is bundled; the only outside request is the check for a new version: it downloads the public checksum list (manifest.json) from GitHub, nothing about you or your house is sent. You can switch it off in ⚙.
pip install -r requirements-dev.txt
pytest -q # backend tests
DATA_DIR=./data python floorplan3d/rootfs/app/server.py # http://localhost:8099 (standalone mode)
The browser end-to-end tests are described in tests/e2e/README.md. Every push to main that raises the version in floorplan3d/config.yaml creates a GitHub release automatically.
Bug reports, ideas and pull requests are welcome, see CONTRIBUTING.md and the issue templates. Please follow the Code of Conduct. If you like the project, a ⭐ on GitHub makes my day.
| Detect rooms | Draw the walls, press Räume erkennen: every closed loop of walls becomes a room |
| Cameras | The field of view as a cone on the floor, red with movement; a tap shows the camera live, a second tap opens Home Assistant's live view |
| Room panel | Lights (with all off), covers, heating, media, switches, cameras, sensors, scenes by kind, with slide switches; a bottom sheet on phones |
| More devices in the live card | Music and TV (play / pause, next, volume, mute, source), robot vacuum (clean, pause, back to the dock, suction), fan (speed, swing, presets), thermostats and air conditioners (target, modes, presets, fan modes), alarm panel (arm / disarm with its code, can be locked per user), buttons and choice lists; each device only gets the buttons it can do |
| Message on alarm (WhatsApp) | When the alarm panel goes off or a smoke, gas, CO or water sensor reports, a WhatsApp (free through CallMeBot) or a message through any notify service of Home Assistant, with the place in the plan; also with no screen open |
| Several houses | One floor plan per house (yours, your parents', a holiday home ...), a house selector and ?house= links for kiosks |
?house=Parentstrue |
show_nav / show_bar | false: no bar at the top (floors, rooms) / at the bottom (view, room colours, search) | true |
tabs | true: the tab bar of the add-on at the very bottom (🏠 house, 📷 cameras …, per user as set in the add-on; add-on 4.3.0) | false |
kiosk | true: a wall tablet, Home Assistant's sidebar and the top bar of the dashboard are hidden, never for administrators; ?kiosk=off in the address leaves it for a moment (to try out: Home Assistant changes its inner parts now and then, otherwise use Kiosk Mode from HACS) | false |
addon | the add-on's slug, only if the card does not find it by itself (the message not found lists the names it tried; the slug is in the address of the add-on's page under Settings → Apps) | found by itself |