Skip to content

Map Spark

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

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. Nuetzlich 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: 10px, right: 10px}CSS-Position des Buttons. 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: 10px, right: 10px}CSS-Position der Slider-Kapsel.
tooltip_distancenumber20Abstand des Slider-Tooltips vom Thumb in Pixeln.

entity_filter

SchlüsselTypStandardBeschreibung
positionobject{bottom: 10px, 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.

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.

::: note Der Spark arbeitet mit der gerenderten Home-Assistant-Karte. 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