Attribute eines Sensors in Home Assistant nutzen

Entitäten also auch Sensoren können in Home Assistant neben dem eigentlichen Zustand auch noch weitere Attribute haben, die beliebig genutzt werden können. Hierdurch stehen einem unzählige weitere Werte zur Verfügung, welche für Automationen beispielsweise genutzt werden können. Wie man auf diese Attribute zugreifen kann, erkläre ich dir in diesem Beitrag.

Da vermutlich einige nun irritiert sein werden, worum es sich bei Attributen einer Entität handelt, möchte ich diese zunächst an einem konkreten Beispiel erklären:

Attribute einer Home Assistant Entität

Was wir im obigen Screenshot sehen, ist der Dialog Entwicklerwerkzeuge Zustände für die Entität sensor.pixel_5n_geocoded_location. Bei der Entität handelt es sich um eine von der Home Assistant App bereitgestellte Entität – also Daten von meinem Handy. Im konkreten Fall die „geocoded location“, also Informationen über den aktuellen Standort des Handys (ein paar Details unter Attribute habe ich ausgepixelt – bitte nicht wundern).

Hier findest du diesen Beitrag auch als Video von mir:

Sie sehen gerade einen Platzhalterinhalt von YouTube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.

Mehr Informationen
Attribute von Entitäten auslesen

Was man in der Regel für Automations nutzt, ist der eigentliche Zustand der Entität. Ebenso ist aber auch möglich auf die unter „Attribute“ aufgeführten Attribute und deren Werte zuzugreifen. Die Auflistung dort ist wie ein Telefonbuch zu verstehen: Wenn man auf das Attribut „administrative_area“ zugreift, erhält man als Wert „Nordrhein-Westfalen“ zurück beispielsweise.

Du magst Home Assistant? Dann abonniere kostenlos meine Beiträge mit Tipps, Tricks und Anleitungen rund um Home Assistant:

Follow Home Assistant
( 700 Followers )
X

Follow Home Assistant

E-mail : *
* Ich stimme der Datenschutzerklärung zu!

Garantiert kein Spam, keine Werbung und immer mit Abmelde-Link, solltest du es dir anders überlegen!

Am einfachsten probiert man das Auswählen des gewünschten Attributs unter Entwicklerwerkzeuge -> Template aus, da man hier „on-the-fly“ Code schreiben und das Ergebnis prüfen kann:

Entwicklerwerkzeuge Template Demo in Home Assistant

Links im Template-Editor kann man Code eintippen, dessen Ergebnis dann rechts im Bild gezeigt wird.

Wie liest man das Attribut einer Entität aus?

Aus dem Screenshot kann man es schon ablesen, wie ein konkretes Attribut einer Entität angesprochen beziehungsweise ausgelesen wird. Der Aufbau ist immer gleich wie folgt:

{{ states.DEINE-ENTITÄT.attributes.DEIN-ATTRIBUT }}

In dem konkreten Fall von mir also {{ states.sensor.pixel_5n_geocoded_location.attributes.administrative_area }} um auf das Attribut administrative_area der Entität sensor.pixel_5n_geocoded_location zuzugreifen

Um für die selbe Entität auf das Attribut iso_country_code zuzugreifen, würde man lediglich das Attribut am Ende tauschen, also konkret {{ states.sensor.pixel_5n_geocoded_location.attributes.iso_country_code }} – lediglich das Attribut am Ende ändert sich!

In einer Automation kannst du auf solche Attribute wie folgt zugreifen:

    trigger:
    - platform: numeric_state
      entity_id: weather.home
      attribute: temperature
      above: 23

Wie du siehst, musst du nicht den „Umweg“ über die geschweiften Klammern etc. gehen. Aber in anderen Anwendungsfällen wirst du ggf. hierum nicht umherkommen.

Ich hoffe, dass ich dir mit diesem Tipp ein wenig weiterhelfen konnte und du somit ggf. sogar die Lösung für ein bislang bestehendes Problem gefunden hast – immerhin stehen dir nun deutlich mehr dynamische Attribute in deinem Smarthome zur Verfügung! 😉

Dieser Beitrag ist Teil einer kleinen Beitrags-Serie rund um das Smarthome mit Home Assistant.

Produktempfehlungen

30 Gedanken zu „Attribute eines Sensors in Home Assistant nutzen“

  1. Hi Olli,
    ich habe Dein Video zum Attribute Auslesen gesehen und fand es richtig gut. Hast Du vielleicht eine Idee, wie Du mir bei meinem Szenario weiterhelfen kannst?
    Ich würde gerne auf einem Home Assistant Dashboard mein aktuelles Crypto Portfolio mit Einzelwerten in Form einer Tabelle darstellen.
    Die Daten für das Portfolio werden täglich von einem Python Script (auf einem anderen PI) eingesammelt und in einer JSON-Datei gesichert. Ich hatte überlegt das tägliche JSON-Objekt via MQTT an den MQTT Broker in Home Assistant zu schicken. Dann würde ich eine oder vermutlich mehrere Entitäten mit Attributen in der MQTT Integration anlegen, um die Daten verfügbar zu machen.
    Die Struktur des JSONs ist in der Form dynamisch, dass Assets dazu kommen können und natürlich verschwinden können.
    Die Struktur sieht aktuell so aus:
    {
    „dt“: „02/02/2025 00:00:01.000“,
    „portfolioValue“: {
    „dt-1“: „01/02/2025 00:00:01.000“,
    „perf-1“: „-0.38%“,
    „dt-2“: „31/01/2025 00:00:01.000“,
    „perf-2“: „-0.13%“,
    „portfolioValue“: 100
    },
    { „assets“: [
    {
    ‚type‘: ‚BTC‘,
    ‚assetV‘: 0.001,
    ‚assetP‘: ‚10.0%‘,
    ‚dt-1′: ’01/02/2025 00:01‘,
    ‚perf-1‘: ‚-0.29%‘,
    ‚dt-2′: ’31/01/2025 00:01‘,
    ‚perf-2‘: ‚-0.16%‘
    },
    {
    ‚type‘: ‚NextAsset‘,
    ‚assetV‘: 1,
    ‚assetP‘: ‚50.0%‘,
    ‚dt-1′: ’01/02/2025 00:01‘,
    ‚perf-1‘: ‚-0.29%‘,
    ‚dt-2′: ’31/01/2025 00:01‘,
    ‚perf-2‘: ‚-0.16%‘
    },
    {…}
    ]}
    }
    Zur dauerhaften Speicherung würde ich dann noch eine InfluxDB vorsehen.

    • Noch eine Ergänzung, ChatGPT habe ich schon mal gefragt und das hat mir folgende manuelle Card vorgeschlagen. Allerdings bekomme ich die nicht zum Laufen:
      type: custom:config-template-card
      variables:
      assets: >
      [[[ return states[’sensor.portfolio‘].attributes.assets || []; ]]]
      sorted_assets: >
      [[[ return assets.sort((a,b) => b.assetV – a.assetV); ]]]
      card:
      type: entities
      title: Assets
      entities: >
      [[[ return sorted_assets.map(asset => {
      return {
      entity: ’sensor.portfolio‘, // hier könntest Du einen Dummy-Eintrag verwenden
      name: asset.type,
      secondary_info: asset.assetP + ‚ (‚ + asset.assetV + ‚)‘
      }
      }); ]]]

    • Ich habe die Frage auch hier mal gepostet mit noch ein paar mehr Details:
      https://community.home-assistant.io/t/100-templatable-lovelace-configurations/105241/912?u=themoe

      • @imoe Ja, über eine Markdown-Card wäre ich auch gegangen, da ich für sowas gerne auf zusätzliche HACS-Karten verzichte, wenn möglich.

        Magst du deinen konkreten Code teilen, da dieser in Kombination mit deinem Attribut-Beispiel sicherlich nicht nur für mich interessant sein dürfte! 😉

        • @olli ja klar!
          Mein YAML Code der Markdown Card sieht jetzt so aus:
          <i>
          <table width=100%>
          <tr>
          <td align=“right“>{{ states[’sensor.portfolio‘].attributes.dt }}
          </td>
          </tr>
          </table>
          </i>

          <table width=100%>
          <tr align=“right“>
          <td align=“center“ width=20%>{{ states[’sensor.portfolio‘].attributes.assetsCount}}</td>
          <td width=20%>{{ states[’sensor.portfolio‘].attributes.portfolioValue.portfolioValueStr }}</td>
          <td width=20%></td>
          <td width=20%>{{ states[’sensor.portfolio‘].attributes.portfolioValue[‚perf-1′] }}</td>
          <td width=20%>{{ states[’sensor.portfolio‘].attributes.portfolioValue[‚perf-2′] }}</td>
          </tr>
          </table>

          <table width=100%>
          <tr align=“right“>
          <th width=20% align=“center“>Asset</th>
          <th width=20%>USDT</th>
          <th width=20%>%</th>
          <th width=20%>Perf-1</th>
          <th width=20%>Perf-2</th>
          </tr>
          {% for asset in states[’sensor.portfolio‘].attributes.assets %}
          {% if float(asset.assetPercentage) > 0.25 %}
          <tr align=“right“>
          <td align=“center“>{{ asset.type }}</td>
          <td>{{ asset.assetValueStr }}</td>
          <td>{{ asset.assetPercentageStr }}</td>
          <td>{{ asset[„perf-1“] }}</td>
          <td>{{ asset[„perf-2″] }}</td>
          </tr>
          {% endif %}
          {% endfor %}
          <tr align=“right“>
          <td align=“center“>{{ states[’sensor.portfolio‘].attributes.others.type }}</td>
          <td>{{ states[’sensor.portfolio‘].attributes.others.assetValueStr }}</td>
          <td>{{ states[’sensor.portfolio‘].attributes.others.assetPercentageStr }}</td>
          <td></td>
          <td></td>
          </tr>
          </table>
          <small><i>
          <table width=100%>
          <tr align=“right“>
          <td>
          Dt-1: {{ states[’sensor.portfolio‘].attributes.portfolioValue[‚dt-1′] }}
          </td>
          </tr>
          <tr align=“right“>
          <td>
          Dt-2: {{ states[’sensor.portfolio‘].attributes.portfolioValue[‚dt-2‘] }}
          </td>
          </tr>
          </table></i></small>

  2. Hallo Oli , hallo Leute, ich möchte den Status (siehe attribuste unten )von „Deicing active“ auslesen bzw wissen ob er true oder false ist und bekomme das einfach nicht hin. Hat jemand eine Idee ?
     
    options:
    – Frost protection
    – Standby
    – „Heating: Compressor shutdown“
    – „Heating: Compressor blocked“
    – „Heating: Prerun“
    – „Heating: Compressor active“
    – „Heating: Overrun“
    – „Cooling: Compressor shutdown“
    – „Cooling: Compressor blocked“
    – „Cooling: Prerun“
    – „Cooling: Compressor active“
    – „Cooling: Overrun“
    – „Heating: Immersion heater active“
    – „Warm Water: Compressor blocked“
    – „Warm Water: Prerun“
    – „Warm Water: Compressor active“
    – „Warm Water: Immersion Heater active“
    – „Warm Water: Overrun“
    – „Heating: Immersion Heater shutdown“
    – „Heating: Immersion Heater blocked“
    – „Warm Water: Immersion Heater shutdown“
    – „Warm Water: Immersion Heater blocked“
    – Air purging program active
    – Deicing active
    – Frequency converter fault
    – „Connection fault: frequency converter“
    – 4-port-valve position fault
     
    device_class: enum
    Weniger anzeigen

     

     

    • @bernd32457 Hi! Kannst du einen Screenshot aus den Entwicklerwerkzeugen von der Entität bereitstellen, in dem die Spalte „Attribute“ sichtbar ist?

        • @bernd32457 Top, danke dir!

          Das sieht, sagen wir mal, interessant aus, was da an Daten bereitgestellt wird. Strukturiert ist es leider nicht, aber ggf. hilft dir mein Code dennoch.

          Probier‘ mal in den Entwicklerwerkzeugen unter Template aus, ob du mit folgendem Code eine Ausgabe der „options“ bekommst:

          {{ state_attr("sensor.ebusd_hmu_ebusd_hmu_statuscode_scode", "options") }}

          Wenn ja, kannst du mit einer einfachen Abfrage überprüfen, ob der Wert „Deicing active“ in der Auflistung enthalten ist:

          {% if 'Deicing active' in state_attr("sensor.ebusd_hmu_ebusd_hmu_statuscode_scode", "options") %}
              ja
          {% else %}
              nein
          {% endif %}

          Schau‘ sicherheitshalber mal, ob ich den Namen des Sensors korrekt abgetippt habe.

          • @olli Hallo Oli, erstmal vielen Dank für deine Mühen. Ich denke aber ich habe falsch ausgedrückt. Das der Wert „Deicing active“ in der Auflistung vorhanden will ich nicht prüfen da es offensichtlich ist und z.b. bei Beginn der Enteisung im Logbuch als Meldung eingetragen wird. Ich möchte den Status auslesen um zu wissen ob ob „Deicing active“ an oder aus ist. Mit den Informationen bzw die beiden Zuständen möchte ich z.b. Betriebsstunden ermitteln die für die Enteisung anfallen oder Verlustleistung berechnen die bei Enteisung anfällt.
            Alle hier aufgeführten „Options“  sind auch verfügbar.
            options:- Frost protection- Standby- „Heating: Compressor shutdown“- „Heating: Compressor blocked“- „Heating: Prerun“- „Heating: Compressor active“- „Heating: Overrun“- „Cooling: Compressor shutdown“- „Cooling: Compressor blocked“- „Cooling: Prerun“- „Cooling: Compressor active“- „Cooling: Overrun“- „Heating: Immersion heater active“- „Warm Water: Compressor blocked“- „Warm Water: Prerun“- „Warm Water: Compressor active“- „Warm Water: Immersion Heater active“- „Warm Water: Overrun“- „Heating: Immersion Heater shutdown“- „Heating: Immersion Heater blocked“- „Warm Water: Immersion Heater shutdown“- „Warm Water: Immersion Heater blocked“- Air purging program active- Compressor oil heating activated- Fan 1 blocked- Fan 1 air inlet too high- Fan 1 air inlet too low- Fan 2 blocked- Building circuit flow too low- Building circuit pump fault- „Frequency converter fault: Compressor“- „Frequency converter fault: Mains voltage“- „Frequency converter fault: Overheating“- Deicing time too long- Deicing flow temperature too low- Compressor outlet temperature too high- Hot gas temperature switch open- „Fan 1: Wind“- „Fan 2: Wind“- Current limt active- High pressure switch open- Compressor outlet temperature too high- Evaporation temperature too low- Condensation temperature too low- Evaporation temperature too high- Condensation temperature too high- Building circuit return temperature too low- Building circuit return temperature too high- „Immersion heater: Flow temperature too high“- Deicing active- Frequency converter fault- „Connection fault: frequency converter“- 4-port-valve position fault
            device_class: enumfriendly_name: „ebusd hmu Statuscode “ 

          • @bernd32457 Das verstehe ich irgendwie nicht.

            Ich möchte den Status auslesen um zu wissen ob ob „Deicing active“ an oder aus ist.

            Ist das jetzt ein Status oder eine Information im Attribut? 

            …da es offensichtlich ist und z.b. bei Beginn der Enteisung im Logbuch als Meldung eingetragen wird

            Aber dann kennst du doch den aktuellen Zustand, wenn es als Meldung im Logbuch steht?

            Alle hier aufgeführten „Options“  sind auch verfügbar.

            Meinst du damit, dass dies die möglichen Zustände der Entität sein können? Dann kann dort also als Zustand „Deicing active“ stehen? Da es kein „Deicing inactive“ gibt, unterstelle ich, dass jeder andere Zustand, als „Deicing active“ dann als „inactive“ anzusehen ist? Und wenn dem so ist, willst du vermutlich eigentlich nur wissen, wie lange die Entität den Zustand „Deicing active“ hatte und 24h abzüglich dieses Zustandes wäre dann „Deicing inactive“?

            Sorry, wenn ich unnötig viel Frage, aber aus der Ferne verstehe ich es bislang noch nicht so richtig 🤔 😆 

          • @olli sorry, du hast Recht ich möchte die möglichen Zustände der Entität  auswerten / weiterverarbeiten . Es z.B. den Zustand „Deicing active“ ein / true oder aus / false. 

          • @bernd32457 Sorry, dass ich noch einmal nachfrage: Du willst wissen, wie lange der Zustand „Deicing active“ war, richtig?

          • @bernd32457 Alles klar, das sollte mit folgendem Code/History-Sensor gehen:

            sensor:
              - platform: history_stats
                name: Deicing active
                entity_id: sensor.ebusd_hmu_ebusd_hmu_statuscode_scode
                state: "Deicing active"
                type: time
                start: "{{ today_at() }}"
                end: "{{ now() }}"

            Ein Reboot von HA nach dem Hinzufügen des Codes ist notwendig. Das Ergebnis ist dann in Stunden mit Nachkommastelle.

  3. Hallo Danke für die Ausführungen.
    So kann ich die laufenden Attribute von Entitäten saauber auslesen und verwenden.
    Mir fehlt aber eine andere Möglichkeit.
    Die Attribute ändern sich aber stellenweise dynamisch.
    Hast Du eine Idee, wie man, per „Knopf“ auf dem Dashboard, gezielt ein Atribut „irgendwo“/“irgendwie“
    zu einem bestimten Zeitpunkt zwischenspeichern kann?
    Ich habe bei meiner Thermostat-Steuerung mehrere Automationen am Laufen, welche die Temperatur zu bestimmten Tageszeiten einstellt.
    Jetzt möchte ich aber, auf Wunsch meiner Frau, auf dem Heizungsdashboard, Button anlegen, die die Automation gezielt „übersteuert“.
    Das funktioniert auch so weit und die „Übersteuerung“ bleibt auch so lange aktiv, bis die nächste Automation greift.

    Ich möchte aber in diese Button noch eine Funktion einbauen, welche den aktuell eingestellten Wert des Thermostats irgendwo sichert.
    Dann möchte ich einen „Reset“-Button bauen, welcher diesen zwischengespeicherten Wert nimmt und die Thermostat-Steuerung wieder auf
    den, vor der „Übersteuerung“ gesicherten Wert zurücksetzt.

    Has Du eine Idee wie man soetwas umsetzen kann und vielleicht auch ein kleinen Code-Schnipsel?

    Danke im Voraus.
    MfG
    Frank

    • Hi Frank,

      wenn ich dich richtig verstanden habe, würde ich das wie folgt umsetzen:

      In dein bestehendes Übersteuern baust du ein scene.create ein:

      - service: scene.create
      data:
      scene_id: 'zustand_alt'
      snapshot_entities: climate_device

      Und in deinem „Reset-Button“ führst du dann lediglich ein scene.turn_on aus:

      - service: scene.turn_on
      target:
      entity_id: 'zustand_alt'

      So müsste das eigentlich funktionieren.

      Da ich hierzu noch gar keinen Beitrag geschrieben habe, werde ich das wohl mal am Wochenende nachholen müssen! 😉

      VG
      Olli

      PS: Das Einrücken des Codes erfolgt leider nicht wie gewünscht! Du musst das beim Nachbauen bitte beachten (also im 1. code data auf der Höhe von service und alles folgende weiter eingerückt; im 2. Code target auf der Höhe von service und die entity_id weiter eingerückt)!

      • Hi Frank,

        falls du mehr Infos hierzu brauchst, habe ich ganz aktuell einen Beitrag dazu geschrieben: https://smarterkram.de/5547/

        VG
        Olli

  4. Hi, hat wer eine Idee, ein Attribut (Helligkeit) entsprechend eines Wertes in einem Sensor (Dimmer) zu ändern. Mit Automatisierung kann ich zwar das Attribut auslesen, aber scheinbar nicht schreiben, oder?
    Danke für egal welchen input 🙂
    Thomas

  5. Ich habe das zwar hinbekommen.
    Aber der Wert des Attributs (eine Temperatur) wird nur 1x gelesen.
    Und zwar, wenn ich die config yaml (Template) neu starte.
    Danach ändert sich zwar der Wert (sehe ich in meiner Ios App) aber
    diese geänderten Werte tauchen in Home Assitant nicht auf.
    Wie füge ich also ein „Refresh“ durch, damit ich ständig den aktuellen Wert
    in home assistant bekomme.

    • Kann es sein, dass du einen Handy-Sensor ausliest, der von der Home Assistant App bereitgestellt wird? Was du schreibst, klingt nämlich ein wenig danach. Und wenn dem so ist, klingt das für mich danach, als wäre die Aktualisierungsfrequenz der App-Sensoren auf „selten“ eingestellt. Bei Android kann man in den App-Einstellungen unter Aktualisierungsfrequenz der Sensoren wählen zwischen: Normal, Schnell während des Ladens, Immer schnell.

      Hilft das ggf.?

  6. Hey ich stehe etwas auf dem Schlauch. Wie kann ich die Attribute aktivieren? Bei mir fehlt der Reiter komplett.

    • Hi Christian,
      also ich habe bewusst nichts getan, um die Attribute sehen zu können. Auch auf meiner DEV-Umgebung von Home Assistant, die noch relativ unangetastet ist, habe ich die Ansicht Entität, Zustand, Attribute, wenn ich in den Entwicklerwerkzeugen auf Zustände wechsel.

  7. Wenn ein Attribut eine Leerstelle hat, dann so: {{states.sensor.anjas_iphone_11_pro_max_geocoded_location.attributes[‚Sub Locality‘]}}

    Doch wie kann ich das in einer Karte darstellen?

    • Also wenn dein iPhone 11 Pro Max mit einer Person (Anja) verknüpft ist, solltest du bei einem Klick auf person.anja eigentlich eine OpenStreetMap-Karte angezeigt bekommen mit dem zuletzt bekannten Standort.

Die Kommentare sind geschlossen.