Attribute eines Sensors in Home Assistant nutzen

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

@olli ja so ist es. Das heißt ich möchte natürlich den Status von „Deicing active“  wissen.

@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.

@olli Vielen lieben Dank Oli !!! Es sieht so aus als würde es kla :blush: :blush: ppen

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

Ich habe meine Idee mit einer Markdown Card lösen können 

@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! :wink:

@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>

@imoe Mega, danke fürs Teilen! :+1: