16 β Making Your Own Maps¶
The card can show your floor plan as an interactive map: each room is a coloured shape you can tap to add to a clean β tap again to remove it, and the rooms you haven't picked dim so you can see exactly what's queued β and your vacuum's mascot wanders across it. This guide walks you through getting that map set up β from a first screenshot to hand-drawn themed layouts.
You have a few ways to put rooms on the map, and you can use more than one on the same vacuum:
- Auto (CV) β upload a screenshot of your Eufy app's map and let the integration detect the rooms for you. Best when your app map has clean, solid room colours.
- Custom layouts β draw the rooms yourself from rectangles and circles on top of any background picture. Best when auto-detection struggles, or when you want a themed map (a blueprint, a solar system, a tree) with rooms exactly where you put them.
- Live map (Roborock and other live-map brands β and Eufy on eufy-clean v1.11.1+) β skip the upload entirely and draw rooms straight over the map image your vacuum streams. See Roborock and other live-map brands below, and Eufy live map for the Eufy route. On a live map you can also trace a to-scale render of your real home over it so the robot drives across your actual furniture β see Furnished render.
Not sure which? Start with Auto (CV) β it's the least work. If the detected rooms come out wrong and won't nudge into shape, switch to a custom layout. Trying a custom layout never destroys your Auto (CV) result; they live side by side.
Opening the map¶
- Go to the Rooms tab.
- Use the toggle in the top-left of the room grid to switch from the list to map view (see The rooms panel).
- To set the map up, click Configure map inside the map view. This opens Map Configuration, where you upload images and define rooms. A Rooms back-arrow in the top-left returns you.
The map view shows "No map image available" until a map is set up β that's expected on a fresh install. The rest of this guide fills it in.
Picking a good image: size, resolution & format¶
Before you upload anything, it helps to know what makes a good image β the same rules apply whether it's an Auto (CV) screenshot or a custom backdrop.
| Aim for | Why |
|---|---|
| Long side β€ 2,048 px | Big enough to look sharp, small enough to upload quickly. |
| File β€ ~2.5 MB | Home Assistant sends images over a connection with a size limit; staying under this uploads at full quality. |
| PNG (or WebP) | Lossless and β for custom backdrops β keeps transparency. |
A few specifics:
- Auto (CV) screenshots: use PNG. The detector reads flat room colours, and PNG keeps them crisp (JPEG smudges the colour edges). Keep these small β an app screenshot is usually already well under the limit. If you ever see a "too large" message on a CV upload, crop tighter or export smaller; the card will not shrink a CV image for you, because resizing it would throw off room detection.
- Custom backdrops: bring any picture. If it's bigger than the limit, the card automatically resizes and compresses it for you (down to β€ 2,048 px), so even a large photo uploads β it just looks a little softer the larger it started. For the sharpest result, pre-size it yourself to the targets above.
- Transparency is kept. A cut-out picture with a transparent background β a tree, a planet, a logo β keeps its see-through areas, so your dashboard background shows behind it. Don't save such an image as JPEG first; JPEG fills the transparent area with a solid colour.
For the full story on why these limits exist, see Map configuration β Image size, resolution & format.
Option A: Auto (CV) β detect rooms from a screenshot¶
Capturing a good map image¶
The quality of segment detection depends heavily on the map image you provide. Follow these steps to capture the cleanest possible input for each variant. Repeat the full sequence for both your dark and light captures, keeping orientation and crop consistent between them.
Preparation¶
-
Start and immediately cancel a vacuum only job to clear all trace lines on map.
-
Clear all floor types β In the Eufy app, open Map Editor and remove all floor type assignments. This strips out texture and pattern overlays, leaving each room as a flat, solid colour for the segmentor to work with.
-
Switch to 2D mode β Ensure the map display is set to 2D. 3D mode skews the geometry and perspective, which distorts the polygon shapes the segmentor produces.
-
Hide all UI overlays β In the map display settings, turn off room names, furniture, virtual furniture, and obstacles. The capture should show nothing but raw room colour regions.
Framing¶
-
Set your orientation β Choose whichever map rotation fits cleanly within the app's viewable area. There is no required direction, but pick one and keep it consistent across all variants. Mismatched orientations between dark and light images will cause polygon misalignment.
-
Collapse all UI chrome β Minimise panels, drawers, and toolbars as much as possible. The map should fill the visible area cleanly with no UI elements overlapping its edges or corners.
Capture¶
-
Take the screenshot.
-
Crop tightly β Crop the screenshot as close to the map boundary as possible, eliminating any remaining UI chrome. Do not clip any part of the map itself. Use the same crop boundary for both variants so their polygons align when overlaid.
Second variant¶
- Switch colour mode and repeat β Toggle the app to the opposite mode (light if you captured in dark, dark if you captured in light) and repeat steps 4β7 without changing orientation or crop boundary. This gives you your matched dark and light pair.
Assigning the Default variant¶
The Default variant does not require a separate capture. Upload whichever of your two images you prefer to see rendered in the card UI day-to-day. It acts as a fallback when no dark variant is present, but can also simply be your preferred display image.
Upload and analyse¶
In Map Configuration, with Auto (CV) selected, find the Image Variants section and:
- Click Upload next to Dark and pick your dark screenshot. The card uploads it, then automatically analyses it to find rooms (this takes a few seconds).
- Do the same for Light if you captured one.
- Optionally upload a Default image β this is just the picture shown in the card day-to-day; either of your two captures works.
When analysis finishes, the detected rooms appear as coloured shapes on the map, and the segment count shows next to the Analyse button.
Link each room¶
The shapes the detector found are just regions β they don't know which room is which yet. Tap a shape to select it, and in the side panel use the Link to room chips to pick the matching room. Each shape links to one room, and each room to one shape.
Fine-tune (optional)¶
If a shape's edge spills into the next room or sits slightly off, select it and use the Translation, Edges, and Vertices controls in the side panel to nudge it into place. Adjustments save as you go. If detection just can't get it right, that's the cue to try a custom layout instead.
Option B: Custom layouts β draw your rooms by hand¶
A custom layout lets you trace rooms onto any background image. You can keep several named layouts on one vacuum β say a realistic floor plan and a fun themed one β and switch between them whenever you like.
1. Create a layout and add its backdrop¶
- In Map Configuration, open the Segmentation picker (bottom panel). Click οΌ New, type a name (e.g. "Tree" or "Blueprint"), and click Create. This makes the layout active and switches the map into custom mode.
- In the Custom backdrop section, click Upload and pick your background picture. Every layout has its own backdrop β uploading here always applies to the layout you're on.
Each layout needs its own backdrop. With no live map to fall back on (plain Eufy, or any layout with no live image), the map shows "No map image" until you upload one, and you can't save rooms β so do this first. On a live-map brand β or Eufy on eufy-clean v1.11.1+ β you can skip this step and draw over the live map instead; see Roborock and other live-map brands.
2. Draw your rooms¶
In the Compose rooms toolbar:
- οΌ Rectangle / οΌ Circle adds a shape β each new shape is one room.
- Tap a shape to select it and reveal its controls.
- Move with the arrow pad, or tap an empty spot to drop the shape's centre there.
- οΌ / οΌ Scale resizes it about its centre; W / H buttons resize a rectangle's width or height; βΊ / β» Rotate turns it.
- Fine / Med / Coarse sets how far each nudge moves.
Everything is tap- and button-driven, so it works on a phone β no precise dragging required.
3. Combine or carve shapes (optional)¶
A room can be more than one shape:
- β Merge β tap Merge, then tap another shape to fold it into the same room (an L-shaped room from two rectangles, for example).
- Make cutout β mark a shape to carve out of its room instead of adding to it (e.g. notch a corner). Cutouts work along a room's edge; a hole fully inside a room can't be represented, so model interior obstacles separately.
- Split out β pull a shape back out into its own room.
- Move: Room / Piece β for a merged room, choose whether the move pad shifts the whole room or just the one piece.
4. Link each room and save¶
- With a shape (or merged room) selected, use Link to room to pick which room it is β same 1:1 rule as Auto (CV).
- Click Save rooms. Your shapes are saved as this layout's rooms and re-appear (editable) next time you open it.
If you click Save with no backdrop and no live map, the card tells you so and saves nothing β upload the backdrop, then save again. On a live-map brand, rooms save straight over the live map once it has loaded; the guard only fires while the live image is still loading, or when there's genuinely no backdrop and no live image. The on-screen message offers to wait for the live map to appear, then save again (or upload a backdrop).
5. Keep several layouts¶
Each chip in the Segmentation picker is one layout; Auto (CV) is always there too, and a Live map chip leads the row when a live map is available. Click a chip to switch β the backdrop, rooms, and mascot spot all swap together. Use Rename / Delete layout for the active one. Switching never loses any layout.
Roborock and other live-map brands¶
If your vacuum streams a live map (Roborock S6, for example), there's nothing to upload β the vacuum's live map image is your backdrop. You draw rooms straight over it.
- In Map Configuration, open the Segmentation picker, click οΌ New, name the layout, and Create it (as in Option B). This switches the map into custom mode.
- Skip the Custom backdrop upload. Leave it empty β the live map shows through underneath instead of a "No map image" placeholder.
- Draw your rooms over the live map with the Compose rooms tools (same rectangles, circles, merge, and cutout controls as Option B).
- Link each room and click Save rooms. The save captures the live image's pixel size at that moment, so your shapes line up with the live map exactly as it looked when you saved.
Tip: Let the live map finish loading before you save β the save reads its current pixel dimensions. If you save while it's still blank, the card waits and asks you to try again (see Link each room and save).
Don't want to draw rooms? A live-map layout with no drawn rooms uses the vacuum's own rooms directly β their names (your configured names), the mascot, and tap-to-select all work from the device's built-in rooms, and zone cleaning works over them. Draw your own only when you want a different split or shapes the device doesn't expose.
Rotating the live map¶
If the live map comes in sideways relative to how you picture your home, use the Rotate control on the map-view toolbar to turn it in 90Β° steps until it matches. The rotation is stored in the backend, so it follows you across devices β set it once and every dashboard and phone sees the same orientation. The whole layer turns together: the image, your room polygons, the labels, and the mascot all rotate as one, so your drawn rooms stay aligned no matter which way you face the map.
Furnished render: trace your real rooms¶
Once you have a live map, you can go further than coloured room shapes: overlay a to-scale render of your actual home so the live robot, dock, and cleaning path drive across your real furniture. Save the live map image, trace your furniture over it, upload it, then blend and align it once. See Furnished render for the full walkthrough.
Hide map noise¶
A live map sometimes shows clutter that isn't a room β a porch, a reflective strip, a sliver of the next floor. Tap Hide areaβ¦ in the map toolbar, then drag a box over the clutter to mask it from view (add as many boxes as you need); tap Done when finished. Hidden regions are display only β they don't change cleaning, they just tidy the map β and they're saved with the map so they follow you across devices.
Eufy live map¶
Stock Eufy doesn't stream a live map, so the steps above use Auto (CV) or a custom layout. But Eufy can join the live-map club too: eufy-clean v1.11.1 or later renders the robot's live map and exposes it as a camera.<device>_map entity that refreshes about every two seconds. (The live map shipped in jeppesens mainline as of v1.11.0; older releases β and the long-retired community smcneece fork β predate it.) The live map is optional: an older or plain Eufy setup is unaffected and keeps using Auto (CV) or custom layouts. The camera's map fills in after the first cleaning run (or after you edit the map in the Eufy app).
Once that camera exists, Vacuum Agent uses its live image as the map backdrop and lets you draw rooms over it β exactly like the Roborock flow above.
Point Vacuum Agent at the camera¶
On the Setup tab there's a Live map camera dropdown listing your camera/image entities (it only appears once at least one such entity exists). Pick the live-map entity to use it as this vacuum's backdrop. Leaving it blank means Auto (adapter default) β and for a default-named install the adapter already guesses camera.<device>_map on its own, so you usually don't need to pick anything. Use the picker when the vacuum entity was renamed and the auto-guess can't find the camera. See Setup for the rest of that tab.
Compose rooms over the live map¶
- In Map Configuration, open the Segmentation picker. When a live map is available, a Live map chip leads the row (before Auto (CV) and your layouts). Click it.
- This creates (or selects) a layout pinned to the live backdrop β no upload. The live image shows through underneath instead of a "No map image" placeholder, and a live-pinned layout always shows the live image even if a backdrop was uploaded.
- Draw your rooms over the live map with the Compose rooms tools (the same rectangles, circles, merge, and cutout controls as Option B), then Link each room and click Save rooms. Your rooms become tap-selectable, just like any custom layout.
Hide Vacuum Agent's own room labels¶
The live map already bakes its own room names into the image, so Vacuum Agent's labels would stack on top into a muddle. Use the room-label toggle on the map toolbar to hide Vacuum Agent's labels β it's per-vacuum (remembered in your browser) and defaults to on, so just flip it off on the live map. Leave it on for plain CV or custom maps, which carry no labels of their own.
Align against a stable map. Drawn rooms are stored as percentages of the image, so compose them against a fully-mapped map. If the map's footprint is still growing β as it can during a first mapping run, changing the image's aspect ratio β rooms drawn earlier can drift out of place. Let the map settle, then draw.
The mascot and floor textures¶
The map view's small toolbar also controls the cosmetic layers:
- Companion animal β pick the sprite (cat, dog, raccoon, parrot, snake) and its size. It homes to the room your vacuum is in, and parks at a dock spot when docked β drag it once while docked to set where it parks (great for sitting it on the sun of a space map). The mascot and dock spot are remembered per layout.
- Mascot toggle (paw) β hide or show the sprite.
- Map textures toggle (hatched square) β hide or show the floor textures on the map polygons.
- Room-card textures toggle (hatched card) β hide or show the floor textures on the room cards, independently of the map. (This one stays in the toggle row even in list view, so you can flip the cards' textures while you're looking at them.)
- Room-label toggle β hide or show Vacuum Agent's own room-name labels. Defaults to on; it's per-vacuum (remembered in your browser). Flip it off on an Eufy live map, where the live map's image already carries its own labels and yours would stack on top.
- Rotate (live-map brands only) β not a cosmetic toggle: this turns the live map in 90Β° steps to match your home. The rotation is stored in the backend, so it follows you across devices, and the whole layer β image, room polygons, labels, and mascot β turns together. See Rotating the live map.
You can recolour the map's labels and overlays in the Theme editor β Map group.
Tuning the floor materials¶
With Map textures on (β¨), each room is painted with its floor type's material β wood planks, tile with grout, marble veining, concrete, granite, or low-/high-pile carpet β read as one continuous floor across rooms of the same type. Which room is which material comes from the floor types you set in the Eufy app's Map Editor; Vacuum Agent just paints them.
You can make each material match your real floors in Theme editor β Floor Textures:
- Colours β every material has a base colour plus a detail layer (wood grain & seams, carpet weave, granite aggregate, tile grout, marble veins). Set both to match your floor β e.g. a warm greige base with a slightly darker weave for a grey carpet. Keeping the two close gives a soft, uniform look; a bigger gap makes the pattern pop.
- Layer opacities β dial each layer's strength up or down (soften the wood grain, or turn the carpet weave into a gentle mottle instead of bold specks).
- Map Texture Rotation β in the Floor Textures master group, this turns the whole texture grid so directional materials (wood planks, tile grout) run the way they actually do in your home.
0Β°is as-authored; drag it until the planks line up.
Everything previews live on the map. The room cards show the same materials as a small per-card swatch (a texture hint, tuned by the same colours) β so map and cards read consistently, even though the map is a to-scale floor and a card is one stretched swatch.
Recolour a single room¶
Open the room editor (tap a room, or its settings) and use the Room Color swatch to pick a custom map fill for just that room. A custom pick overrides both the shared room palette and any theme room-fill token (--evcc-room-fill-<N>); it applies to both the map polygon and the room card. Click Reset to clear it and return to Default (palette).
Troubleshooting¶
| You see⦠| Do this |
|---|---|
| "No map image available" in the room map | Set the map up: upload Auto (CV) images and analyse, or create a custom layout and upload its backdrop. On a custom layout it means that layout has no backdrop yet. |
| "Image too largeβ¦" on upload | A custom backdrop is auto-fitted, so this is usually a CV image β crop or export it smaller (β€ ~2.5 MB). |
| Rooms detected wrong (merged/split) and won't nudge right | Switch to a custom layout and draw them by hand β your Auto (CV) result is kept. |
| A second custom layout won't show its rooms | It needs its own backdrop uploaded, then its rooms drawn and saved β backdrops and rooms are per-layout. |
Going deeper¶
This is the everyday workflow. For the technical reference β the exact services, the segment data model, how custom shapes rasterise, the CV vs custom storage model, and the image-size limits in detail β see Map configuration.