Repository navigation
Recipes
Concrete setups, each with the YAML the editor writes and the editor path. Entity ids are examples: replace them with yours. Every snippet is a fragment of the card configuration (merge it with your own lists).
- Door, shutter and contact
- Bay window with two leaves
- Water leak detector
- CO2 in every room
- Smart lock on the front door
- Electric car charging plug
- Underfloor heating
- Gate and garage door with confirmation
- Electrical panel, power and tariff
- Fridge that must never be switched off
- Camera that blinks on motion
- Terrace with the weather
- Room buttons: movie mode and all off
- Wall tablet
A French window with its roller shutter and a contact sensor; a tap opens a card with the shutter control and the sensor's battery.
openings:
- type: door
seg: [600, 0, 740, 0]
name: Bedroom French window
contact: binary_sensor.bedroom_french_window
shutter: cover.bedroom_shutter
outside: [0, -1]
leaves: 2
swing: left
card:
widgets:
- {type: cover, title: Shutter, entity: cover.bedroom_shutter}
- type: entities
title: Sensor
entities: [binary_sensor.bedroom_french_window, sensor.bedroom_french_window_battery]Editor: Add › Openings › French window + shutter + contact, click both ends on the wall: the free contact and shutter of the room are linked (or proposed in a short list). Select the opening › Card › Fill from device.
Two openings with the same bay name: one card, one line in the room view, counted once in the open-openings chip.
openings:
- {type: window, seg: [90, 0, 250, 0], bay: Living room bay, contact: binary_sensor.bay_left, shutter: cover.bay_shutter, outside: [0, -1]}
- {type: window, seg: [250, 0, 410, 0], bay: Living room bay, contact: binary_sensor.bay_right, outside: [0, -1]}A badge that blinks when wet, a full-plan alert, and a list of all leak sensors in a side panel.
badges:
- entity: binary_sensor.kitchen_leak
pos: [120, 60]
icon: mdi:water-alert
color: "#d93025"
alert: true # blinks while wet
alerts:
- name: Water leak
entities: [binary_sensor.kitchen_leak, binary_sensor.bathroom_leak]
level: critical
icon: mdi:water-alert
panels:
right:
- {type: entities, title: Water leaks, icon: mdi:water-alert, entities: [binary_sensor.kitchen_leak, binary_sensor.bathroom_leak]}Editor: Add › Devices › Sensor; Ambience and animations › Full-plan alerts › Alert on entities; Add widget ›
Water › Water leaks (all your moisture sensors are filled in). A leak sensor that is on shows in red in the list.
A gauge in each room's own panel, coloured by thresholds, and a chip that turns red above 1200 ppm.
rooms:
- name: Bedroom
poly: [[500, 0], [900, 0], [900, 350], [500, 350]]
label: [700, 175]
area: bedroom
panels:
right:
- type: gauge
title: CO₂
icon: mdi:molecule-co2
entity: sensor.bedroom_co2
min: 400
max: 2000
unit: ppm
decimals: 0
severity: {green: 0, yellow: 800, red: 1200}
summary:
- type: openings
- type: temperature
- {type: entity, entity: sensor.bedroom_co2, name: ppm bedroom, decimals: 0, alert_above: 1200}Editor: select the room › Right panel › Add widget › Air › CO₂: the CO₂ sensor of the room's area is taken.

The front door opens a card with the lock; unlocking and opening are confirmed in a dialog. A chip shows when the door is unlocked.
openings:
- type: door
seg: [320, 700, 410, 700]
name: Front door
contact: binary_sensor.front_door
outside: [0, 1]
card:
widgets:
- {type: lock, title: Lock, entity: lock.front_door}
summary:
- type: openings
- {type: entity, entity: lock.front_door, name: front door, hide_if: locked, alert_state: unlocked, icon: mdi:lock-open-variant}The lock widget never sends a code: a lock that needs one is operated from its more-info.
A smart plug or a wallbox drawn as an EV charger: green when charging, its power on the plan, a card with the car.
furniture:
- type: ev_charger
pos: [470, -150]
name: Charger
entity: switch.charger
value: sensor.charger_power
active: sensor.charger_power
threshold: 50 # charging above 50 W
card:
title: EV charging
widgets:
- type: ev
title: Car
battery: sensor.ev_battery
range: sensor.ev_range
power: sensor.charger_power
plugged: binary_sensor.ev_plugged
session_kwh: sensor.charger_session
- {type: tile, title: Charging power, entity: sensor.charger_power, unit: W, decimals: 0, history: 24}
- {type: car, pos: [250, -90], rotation: 90}
summary:
- {type: entity, entity: sensor.ev_battery, name: car, unit: "%", decimals: 0}
ambience:
energy: {} # beads from the electrical panel to the charger while it draws powerEditor: Add › Furniture › Utilities › EV charger, Connected › Entity, then Fill from device. Without
protected, the card has an on / off switch for the plug; add protected: true if it must never be cut from the plan.

Floor heating is slow: what matters is the set point, whether a zone is calling for heat, and the trend of each room.
badges:
- entity: climate.living_room_floor
pos: [60, 380]
icon: mdi:heating-coil
color: "#e8710a"
attribute: temperature # set point shown in the badge
unit: " °C"
active_attribute: hvac_action # orange while the zone is heating
rooms:
- name: Living room
poly: [[0, 0], [500, 0], [500, 420], [0, 420]]
label: [250, 210]
temperature: sensor.living_room_temperature
panels:
right:
- {type: thermostat, entity: climate.living_room_floor}
panels:
left:
- {type: climate, title: Room climate, duration: 120, average: true, stable_t: 0.2, alert_t: 1}
- {type: tile, title: Flow temperature, icon: mdi:water-boiler, entity: sensor.boiler_flow_temperature, unit: "°C", history: 24}A longer duration (120 min) suits the inertia of a heated floor. The thermostat widget changes the set point only
(climate.set_temperature); modes stay in Home Assistant.
openings:
- type: gate
seg: [150, -170, 350, -170]
name: Gate
entity: cover.gate
outside: [0, -1]
card:
widgets:
- {type: cover, title: Gate, entity: cover.gate, confirm: true}
panels:
right:
- {type: cover, title: Garage, entity: cover.garage_door} # opening confirmed for device class garage
alerts:
- {name: Gate left open, entity: cover.gate, state: open, level: warning, when_away: true}The electrical panel as connected furniture: the source of the energy flows, a power gauge up to your subscribed power, the live tariff.
furniture:
- type: electrical_panel
pos: [492, 560]
rotation: 90
name: Electrical panel
entity: sensor.meter_power
value: sensor.meter_power
card:
widgets:
- {type: gauge, title: Power, entity: sensor.meter_power, min: 0, max: 9000, unit: W, decimals: 0}
- {type: tariff, title: Live rate, price: sensor.kwh_price, period: sensor.tariff_period, color_today: sensor.tempo_today, color_tomorrow: sensor.tempo_tomorrow}
- type: periods
title: Consumption
columns:
- {name: Energy, unit: kWh, stat: sensor.meter_energy_total, decimals: 1}
ambience:
energy: {threshold: 20}Editor: Fill from device (Card tab of the panel's edit dialog) builds this card from the meter's entities.
furniture:
- type: fridge
pos: [38, 150]
rotation: 90
name: Fridge
entity: switch.fridge_plug
value: sensor.fridge_power
active: sensor.fridge_power
threshold: 5
protected: true # no "off" switch; "Turn back on" if it is off
alerts:
- {name: Freezer too warm, entity: sensor.freezer_temperature, above: -12, level: warning}badges:
- entity: camera.entrance
pos: [460, 670]
icon: mdi:cctv
color: "#d93025"
active: binary_sensor.entrance_motion
alert: trueA tap opens the camera's more-info (live view in Home Assistant). Add › Devices › Camera writes this badge.
rooms:
- name: Terrace
poly: [[0, -170], [500, -170], [500, 0], [0, 0]]
label: [250, -85]
outside: true
zoom: false
temperature: weather.home
temperature_attribute: temperature
ambience:
north: 45
weather: {entity: weather.home, direction: wind}The terrace is not tinted, not counted indoors, receives the rain, snow and clouds of weather.home, and its label
shows the outdoor temperature.
rooms:
- name: Living room
poly: [[0, 0], [500, 0], [500, 420], [0, 420]]
area: living_room
actions:
- {name: Movie mode, icon: mdi:movie-open-outline, action: scene.turn_on, target: scene.movie}
- {name: Shutters half, icon: mdi:window-shutter, action: cover.set_cover_position, target: room, data: {position: 50}}
- {name: All off, icon: mdi:power, action: homeassistant.turn_off, target: room, confirm: true}target: room uses the room's area (all its entities of the service's domain without an area). These buttons call
exactly what is written: add confirm: true to anything that should not happen by mistake.
type: custom:maquette-card
title: ""
tablet: true # chips and panels hidden, plan full page and centred, burn-in protection
interaction:
lock_view: true
reset_after: 60 # back to the whole plan after one minute
animation_level: reduced # optional: fewer loops on an always-on screenStart
Plan
- Drawing the plan
- Furniture
- Floors (0.2.0)
Home Assistant
Using the card
- Using the card
- Summary chips and alerts
- Ambience
- Light (0.2.0)
- Replay and showcase
- Themes and languages
Practical
🇫🇷 Français
- Installation · Premiers pas
- Guide de l'éditeur · Nettoyer le plan
- Dessiner le plan · Meubles · Étages
- Entités · Widgets
- Utiliser la carte · Puces et alertes
- Ambiance · Lumière · Revoir la journée · Thèmes et langues
- Recettes · Dépannage et FAQ
- Sécurité · Vie privée et performances
- Référence · Historique des versions