Zum Inhalt springen

Map Spark ​

Der Map Spark erweitert Home-Assistant-Karten mit Kartenfunktionen wie Zoom-Speicher, automatischem Einpassen, Tour-Modus, Verlaufsslider und Entity-Filter.

Hinweis zu UIX 8.3.1: Das Release behebt einen Fehler, durch den der Map Spark nach Änderungen an der Home-Assistant-Karte in Version 2026.9.0 nicht mehr funktionierte.

Grundnutzung ​

yaml
type: custom:uix-forge
forge:
  mold: card
  sparks:
    - type: map
      memory: true
      fit_map: true
element:
  type: map
  entities:
    - person.max
    - device_tracker.phone

Konfiguration ​

SchlüsselTypStandardBeschreibung
typestring-Muss map sein.
memorybooleanfalseSpeichert Zoom und Kartenmitte vor Updates und stellt sie danach wieder her.
fit_mapbooleanfalsePasst die Karte einmal an alle Entities an, sobald sie sichtbar ist. Nützlich für beim Laden versteckte Karten.
tourboolean oder objectfalseAktiviert Tour-Modus. true nutzt Standards, ein Objekt passt die Tour an.
hours_to_showboolean oder objectfalseAktiviert einen Slider für hours_to_show. true nutzt Standards.
entity_filterboolean oder objectfalseAktiviert ein Dropdown zum Ein- und Ausblenden von Entities. true nutzt Standards.

tour ​

SchlüsselTypStandardBeschreibung
periodstring oder number10sAufenthaltsdauer an jedem Punkt. Zahlen sind Millisekunden, Strings z. B. 30s oder 2m.
zoomnumber14Standard-Zoom für Tourpunkte.
icon_pausestringmdi:pauseIcon, wenn die Tour läuft.
icon_playstringmdi:playIcon, wenn die Tour pausiert ist.
icon_positionobject{bottom: 40px, right: 10px}CSS-Position des Buttons. top, bottom, left und right sind möglich; Zahlen werden als Pixel behandelt.
poilistnicht gesetztListe der Punkte. Ohne Liste werden die Entities der ha-map genutzt.

Punkte in poi:

SchlüsselTypBeschreibung
entitystringEntity-ID. Muss in der entities-Liste der Karte vorhanden sein. Latitude und Longitude kommen aus den State-Attributen.
latitudenumberBreitengrad, erforderlich wenn keine entity gesetzt ist.
longitudenumberLängengrad, erforderlich wenn keine entity gesetzt ist.
zoomnumberZoom nur für diesen Punkt.

hours_to_show ​

SchlüsselTypStandardBeschreibung
minnumber0Minimaler Stundenwert.
maxnumber24Maximaler Stundenwert.
stepnumber1Schrittweite.
positionobject{bottom: 40px, right: 10px}CSS-Position der Slider-Kapsel.
tooltip_distancenumber20Abstand des Slider-Tooltips vom Thumb in Pixeln.

Bedienelemente ohne konfigurierte Position oder mit der expliziten Position {bottom: 40px, right: 10px} liegen gemeinsam in einer horizontalen Reihe über der Karten-Attribution. Alle anderen Positionen, auch {bottom: 10px, right: 10px}, verwenden ihre konfigurierten Abstände unabhängig voneinander.

entity_filter ​

SchlüsselTypStandardBeschreibung
positionobject{bottom: 40px, right: 10px}CSS-Position des Filterbuttons.
sizestringsButtongröße, z. B. s, m, l.
variantstringneutralButtonvariante, z. B. brand, neutral, danger, warning, success.
appearancestringfilledDarstellung, z. B. accent, filled, plain.
iconstringmdi:filter-variantStart-Icon des Buttons.
labelstringFilterButtontext. Leer setzen, um den Text auszublenden.
groupboolean oder objectfalseGruppiert Entities nach Domain. true nutzt Standardlabels, ein Objekt setzt eigene Labels.

Gruppierung ​

SchlüsselTypStandardBeschreibung
personsstringPersonsLabel für person-Entities.
trackersstringTrackersLabel für device_tracker-Entities.
zonesstringZonesLabel für zone-Entities.

CSS-Variablen ​

Tour ​

VariableStandardBeschreibung
--uix-map-tour-icon-colorvar(--primary-color)Iconfarbe.
--uix-map-tour-icon-ring-colorvar(--uix-map-tour-icon-color)Farbe des Countdown-Rings.
--uix-map-tour-icon-backgroundrgba(255,255,255,0.8)Buttonhintergrund.
--uix-map-tour-icon-box-shadow0 1px 5px rgba(0,0,0,0.4)Schatten des Iconcontainers.
--uix-map-tour-icon-widthautoButtonbreite.
--uix-map-tour-icon-heightautoButtonhöhe.
--uix-map-tour-icon-border-radius9999pxRundung des Buttons.
--uix-map-tour-icon-z-index1000Stapelreihenfolge. Leaflet-Kontrollen nutzen ebenfalls 1000.

Hours to Show ​

VariableStandardBeschreibung
--uix-map-slider-backgroundrgba(255,255,255,0.8)Hintergrund der Slider-Kapsel.
--uix-map-slider-text-colorvar(--primary-text-color, #212121)Textfarbe des Dauerlabels.
--uix-map-slider-width100pxBreite des Sliders.
--uix-map-slider-border-radius9999pxRundung der Kapsel.
--uix-map-slider-padding4px 12pxInnenabstand.
--uix-map-slider-box-shadow0 1px 5px rgba(0,0,0,0.4)Schatten.
--uix-map-slider-z-index1000Overlay-Ebene.
--uix-map-slider-label-min-width28pxMindestbreite des Labels.
--uix-map-slider-thumb-sizenicht gesetztHöhe und Breite des Thumbs zusammen.
--uix-map-slider-thumb-height16pxThumb-Höhe.
--uix-map-slider-thumb-width16pxThumb-Breite.
--uix-map-slider-track-size4pxDicke der Slider-Spur.
--uix-map-slider-track-colorvar(--disabled-color)Grundfarbe der Spur.
--uix-map-slider-indicator-colorvar(--primary-color)Farbe der aktiven Anzeige.
--uix-map-slider-thumb-colorvar(--uix-map-slider-indicator-color)Thumb-Farbe.
--uix-map-slider-tooltip-background-colorvar(--secondary-background-color)Hintergrund des Tooltips.
--uix-map-slider-thumb-hover-opacity0.08Deckkraft des Hover-Bereichs am Thumb.
--uix-map-slider-thumb-pressed-opacity0.12Deckkraft des Halos beim Drücken.
--uix-map-slider-thumb-box-shadowinheritEigener Schatten des interaktiven Thumbs.
--uix-map-slider-tooltip-colorvar(--primary-text-color)Textfarbe im Thumb-Tooltip.
--uix-map-slider-tooltip-font-sizevar(--ha-font-size-s)Schriftgröße im Tooltip.
--uix-map-slider-tooltip-font-weightvar(--ha-font-weight-normal)Schriftgewicht im Tooltip.
--uix-map-slider-tooltip-border-radiusvar(--ha-border-radius-sm)Eckenradius des Tooltips.
--uix-map-slider-tooltip-border-width0pxRahmenbreite des Tooltips.
--uix-map-slider-tooltip-border-colorcurrentColorRahmenfarbe des Tooltips.
--uix-map-slider-tooltip-border-stylenoneRahmenstil des Tooltips.

Entity Filter ​

VariableStandardBeschreibung
--uix-map-entity-filter-backgroundrgba(255,255,255,0.8)Hintergrund des Filtercontainers.
--uix-map-entity-filter-padding4pxInnenabstand.
--uix-map-entity-filter-border-radius9999pxRundung.
--uix-map-entity-filter-box-shadow0 1px 5px rgba(0,0,0,0.4)Schatten.
--uix-map-entity-filter-z-index1000Overlay-Ebene.
--uix-map-entity-filter-dropdown-min-width180pxMindestbreite des Dropdowns.
--uix-map-entity-filter-item-icon-colorvar(--ha-color-fill-neutral-loud-resting)Farbe des Check-Icons.
--uix-map-entity-filter-item-icon-checked-colorvar(--uix-map-entity-filter-item-icon-color, var(--primary-color))Farbe des Check-Icons im ausgewählten Zustand.

Wie es funktioniert ​

Der Spark erweitert die vorhandene ha-map-Karte im Frontend. Er speichert UI-Zustand lokal im laufenden Dashboard, blendet zusätzliche Overlays ein und setzt Werte wie hours_to_show direkt an der Karte. Für den Speichermodus nutzt er die Karten-Engine von Home Assistant statt direkt eine Leaflet-Instanz anzusprechen.

::: note Der Spark arbeitet mit der gerenderten Home-Assistant-Karte. Er unterstützt MapLibre, wenn verfügbar, mit Leaflet-Fallback sowie ältere Leaflet-basierte Frontends. Wenn Home Assistant intern Markup ändert, kann ein Update der UIX-Selektoren oder des Sparks erforderlich werden.

:::

Beispiele ​

fit_map mit Auto-Entities ​

yaml
type: custom:uix-forge
forge:
  mold: card
  sparks:
    - type: map
      fit_map: true
element:
  type: custom:auto-entities
  card:
    type: map
  filter:
    include:
      - domain: person

Tour mit Standardwerten ​

yaml
type: custom:uix-forge
forge:
  mold: card
  sparks:
    - type: map
      tour: true
element:
  type: map
  entities:
    - person.max
    - person.erika

Tour mit eigener POI-Liste ​

yaml
type: custom:uix-forge
forge:
  mold: card
  sparks:
    - type: map
      tour:
        period: 20s
        zoom: 15
        poi:
          - entity: person.max
          - latitude: 50.356
            longitude: 7.589
            zoom: 13
element:
  type: map
  entities:
    - person.max

Tour-Button stylen ​

yaml
type: custom:uix-forge
forge:
  mold: card
  sparks:
    - type: map
      tour: true
element:
  type: map
  entities:
    - person.max
uix:
  style: |
    :host {
      --uix-map-tour-icon-background: var(--card-background-color);
      --uix-map-tour-icon-color: var(--primary-color);
    }

Verlaufsslider ​

yaml
type: custom:uix-forge
forge:
  mold: card
  sparks:
    - type: map
      hours_to_show:
        min: 0
        max: 48
        step: 1
element:
  type: map
  hours_to_show: 6
  entities:
    - device_tracker.phone

Entity-Filter ​

yaml
type: custom:uix-forge
forge:
  mold: card
  sparks:
    - type: map
      entity_filter:
        label: Filter
        group:
          persons: Personen
          trackers: Tracker
          zones: Zonen
element:
  type: map
  entities:
    - person.max
    - device_tracker.phone
    - zone.home

memory im Detail ​

memory verhindert, dass die Karte bei jedem Home-Assistant-Update auf den ursprünglichen Ausschnitt zurückspringt.

yaml
forge:
  sparks:
    - type: map
      memory: true

Das ist besonders nützlich, wenn viele Tracker aktualisiert werden oder wenn die Karte in einer Live-Ansicht lange offen bleibt.

fit_map im Detail ​

fit_map passt die Karte an alle sichtbaren Entities an, sobald die Map sichtbar ist. Das hilft bei Karten, die beim Laden in Tabs, Expandern oder Conditional Cards versteckt sind.

yaml
forge:
  sparks:
    - type: map
      fit_map: true

Tour mit Entity- und Koordinatenpunkten ​

yaml
forge:
  sparks:
    - type: map
      tour:
        period: 15s
        zoom: 14
        poi:
          - entity: person.max
          - entity: device_tracker.car
            zoom: 16
          - latitude: 50.356
            longitude: 7.589
            zoom: 13

Entity-POIs müssen in der entities-Liste der map-Karte stehen, damit Home Assistant sie kennt.

Slider positionieren ​

yaml
forge:
  sparks:
    - type: map
      hours_to_show:
        min: 0
        max: 72
        step: 6
        position:
          bottom: 12
          left: 12

Filter ohne Label ​

yaml
forge:
  sparks:
    - type: map
      entity_filter:
        label: ""
        icon: mdi:filter
        position:
          top: 12
          right: 12

Filtergruppen deutsch benennen ​

yaml
forge:
  sparks:
    - type: map
      entity_filter:
        group:
          persons: Personen
          trackers: Geraete
          zones: Zonen

Styling-Beispiel für alle Overlays ​

yaml
uix:
  style: |
    :host {
      --uix-map-tour-icon-background: var(--card-background-color);
      --uix-map-slider-background: var(--card-background-color);
      --uix-map-entity-filter-background: var(--card-background-color);
      --uix-map-slider-box-shadow: var(--ha-card-box-shadow);
      --uix-map-entity-filter-box-shadow: var(--ha-card-box-shadow);
    }

Hinweise ​

FunktionWann sinnvoll
memoryWenn Nutzer manuell zoomen oder verschieben
fit_mapWenn die Karte beim Laden versteckt ist
tourFür Übersichten mehrerer Personen, Fahrzeuge oder Orte
hours_to_showFür Tracker-Verlauf direkt in der Karte
entity_filterWenn viele Entities in einer Map liegen