Mehrere Werte in einer Karte / selbst erstellte Card

sphere577

Member
Hallo Leute,
ich bin noch recht neu bei Homeassistent (3 Tage) und versuche mich hier grad rein zu arbeiten.
Die ersten Grundzüge hab ich schon drauf. Viele Integrationen und Geräte laufen schon. Mein Echo kann ich sprechen lassen etc. Das erste Script ist geschrieben.

Alles sehr sehr Geil!!! :)

Was mich aber grad sehr ärgert ist der Umstand, dass die Vorgeschlagenen Karten einfach Schrott sind! Insbesondere würde ich bestimmte Werte z.B. gruppiert ausgeben. z.B. Alle Raumtemperaturen.
Damit komme ich zu meine Frage (endlich ;))
Screenshot 2022-11-29 205604.png
Am Beispiel meines Autos, würde ich mir gerne den Reifendruck alle 4 Reifen in einer Kachel anzeigen Lassen:
Code:
type: entity
name: 'Links Vorn '
entity: sensor.fordpass_tirepressure
attribute: leftFrontTirePressure
unit: PSI
state_color: true

Momentan komme ich aber über einen Wert pro Kachel nicht hinaus.
Habt ihr einen Tipp für mich, wie ich dort alle 4 Werte anzeigen lassen kann.
Evtl sogar noch in BAR umrechnen? :D

danke
 
Hi, mir geht es ähnlich wie dir.
Nimm doch einfach eine "Elemente" Karte dafür.
Da kannst du alle 4 Werte untereinander einfügen.

Da war jemand schneller.
Aber jetzt muss er das noch auflösen damit es dir was hilft.
 
Ach guck an, ich seh jetzt erst, dass du auch Ford fährst. Sehr sympathisch 😍

Dann könntest du wenn dir das gefällt folgendes 1:1 übernehmen:

YAML:
type: vertical-stack
cards:
  - type: horizontal-stack
    cards:
      - type: entity
        entity: sensor.fordpass_tirepressure
        attribute: leftFrontTirePressure
        name: VL
        unit: psi
      - type: entity
        entity: sensor.fordpass_tirepressure
        name: VR
        attribute: rightFrontTirePressure
        unit: psi
  - type: horizontal-stack
    cards:
      - type: entity
        entity: sensor.fordpass_tirepressure
        attribute: outerLeftRearTirePressure
        name: HL
        unit: psi
      - type: entity
        entity: sensor.fordpass_tirepressure
        name: HR
        attribute: outerRightRearTirePressure
        unit: psi
 
Sowas in der Art hab ich jetzt mit Grid hinbekommen:

Code:
type: grid
title: S-Max Reifendruck
columns: 1
square: false
cards:
  - type: entity
    name: 'Links Vorn '
    entity: sensor.fordpass_tirepressure
    attribute: leftFrontTirePressure
    unit: PSI
  - type: entity
    name: 'Rechts Vorn '
    entity: sensor.fordpass_tirepressure
    attribute: rightFrontTirePressure
    unit: PSI
  - type: entity
    name: 'Links hinten '
    entity: sensor.fordpass_tirepressure
    attribute: outerLeftRearTirePressure
    unit: PSI
  - type: entity
    name: 'Links Vorn '
    entity: sensor.fordpass_tirepressure
    attribute: outerRightRearTirePressure
    unit: PSI

unschön finde ich hier aber noch, dass es relativ viel Platz einnimmt:

Screenshot 2022-11-29 205605.png


besser fänd ich sowas:

Code:
type: entities
title: Reifendruck
show_header_toggle: true
header:
  image: "https://www.home-assistant.io/images/dashboards/header-footer/balloons-header.png"
  type: picture
entities:
  - entity: sensor.fordpass_tirepressure
    attribute: leftFrontTirePressure
    unit: PSI
  - entity: sensor.fordpass_tirepressure
    attribute: rightFrontTirePressure
    unit: PSI
  - entity: sensor.fordpass_tirepressure
    attribute: outerLeftRearTirePressure
    unit: PSI
  - entity: sensor.fordpass_tirepressure
    attribute: outerRightRearTirePressure
    unit: PSI

Allerdings werden hier die Attribute komplett ignoriert :-(

Screenshot 2022-11-29 211948.png
 
Wie findet Ihr das?
ein paar Feinheiten sind noch an zu passen. Aber der Weg ist der richtige :)
Finde das so übersichtlicher . Bilder und Beschriftung kann man natürlich noch anpassen.
Was haltet Ihr davon?

Nur die Werte passen noch nicht ganz... ich denke die müssten einmal / 100 gerechnet werden. Kann ich direkt in der Kate machen?


Screenshot 2022-11-29 230242.png
YAML:
type: entities
title: Reifendruck S-MAX
show_header_toggle: true
header:
  image: >-
    https://www.alpina-automobiles.com/fileadmin/user_upload/IMG_Models/2020_06_D5_S/D5_S_Technik_Details_Fahrwerk.png
  type: picture
entities:
  - type: attribute
    entity: sensor.fordpass_tirepressure
    attribute: leftFrontTirePressure
    name: Vorn Links (VL)
    suffix: BAR
    image: >-
      https://png2.cleanpng.com/sh/8caeecc159dc844f9dc2113726da0032/L0KzQYi4UsE5N2k3TZGAYUO7SIK8g8A5a2M8TJC6MES5Q4K6VME2OWQ7TaQAN0KzQ4aCTwBvbz==/5a38815c08c274.1046313415136525720359.png
  - type: attribute
    entity: sensor.fordpass_tirepressure
    attribute: rightFrontTirePressure
    name: Vorn Rechts (VR)
    suffix: BAR
    image: >-
      https://png2.cleanpng.com/sh/8caeecc159dc844f9dc2113726da0032/L0KzQYi4UsE5N2k3TZGAYUO7SIK8g8A5a2M8TJC6MES5Q4K6VME2OWQ7TaQAN0KzQ4aCTwBvbz==/5a38815c08c274.1046313415136525720359.png
  - type: attribute
    entity: sensor.fordpass_tirepressure
    attribute: outerLeftRearTirePressure
    name: Hinten Links (HL)
    suffix: BAR
    image: >-
      https://png2.cleanpng.com/sh/8caeecc159dc844f9dc2113726da0032/L0KzQYi4UsE5N2k3TZGAYUO7SIK8g8A5a2M8TJC6MES5Q4K6VME2OWQ7TaQAN0KzQ4aCTwBvbz==/5a38815c08c274.1046313415136525720359.png
  - type: attribute
    entity: sensor.fordpass_tirepressure
    attribute: outerRightRearTirePressure
    name: Hinten Rechts (HR)
    suffix: BAR
    image: >-
      https://png2.cleanpng.com/sh/8caeecc159dc844f9dc2113726da0032/L0KzQYi4UsE5N2k3TZGAYUO7SIK8g8A5a2M8TJC6MES5Q4K6VME2OWQ7TaQAN0KzQ4aCTwBvbz==/5a38815c08c274.1046313415136525720359.png
 
Hallo sphere577, weil du ja geschrieben hast das du ähnlich wie ich neu im Thema bist, hole ich mal etwas weiter aus.
Wenn du schon einiges davon weist ist es ja auch nicht schlimm.
Da ich meine ganzen Konfigurationen nicht in der configuration.yaml machen möchte habe ich das auf verschiedene Dateien aufgeteilt.
Ich habe ein neues Unterverzeichnis "include" angelegt wo meine Dateien abgelegt sind.
In dem Verzeichnis "include" habe ich dann eine Datei "template.yaml" angelegt in der ich Templates zur Umrechnung des Sensors erstellt habe.
Bei mir sieht die Datei so aus:

YAML:
 sensor:
  - name: "Luftdruck Meereshöhe"
    state: "{{ iif(states('sensor.luftdruck_meereshohe_knx'), (states('sensor.luftdruck_meereshohe_knx') | float/100) | round(2)) }}"
    unit_of_measurement: "HPa"

In der "configuration.yaml" steht dann hierfür nur noch der Eintrag:

YAML:
#templates
template: !include include/template.yaml

In der template.yaml kannst du natürlich dann beliebige Templates ablegen.
Bei dir wären das dann ja auch 4 Stk, für jeden Reifen eines.
Ich hab mal ein Beispiel angefügt, wobei ich den Namen deiner Entitäten ja nicht kenne, also den musst du noch ändern.

YAML:
 sensor:
  - name: "Luftdruck Reifen VL"
    state: "{{ iif(states('sensor.reifendruck_VL'), (states('sensor.reifendruck_VL') | float/100) | round(2)) }}"
    unit_of_measurement: "Bar"
  - name: "Luftdruck Reifen VR"
    state: "{{ iif(states('sensor.reifendruck_VR'), (states('sensor.reifendruck_VR') | float/100) | round(2)) }}"
    unit_of_measurement: "Bar"
  - name: "Luftdruck Reifen HL"
    state: "{{ iif(states('sensor.reifendruck_HL'), (states('sensor.reifendruck_HL') | float/100) | round(2)) }}"
    unit_of_measurement: "Bar"
  - name: "Luftdruck Reifen HR"
    state: "{{ iif(states('sensor.reifendruck_HR'), (states('sensor.reifendruck_HR') | float/100) | round(2)) }}"
    unit_of_measurement: "Bar"


Die Hochkommas ' müssen bleiben, nur den Namen sensor.reifendruck_XX musst du anpassen.
Und dann nimmst du die neuen hier erstellten Entitäten zur Anzeige in der Karte.

Ich hoffe ich konnte dir helfen.

VG
 
Danke für Deine Mühe. Das mit dem Include werde ich sicher auch noch umsetzen. momentan ist es bei mir aber noch übersichtlich :)
Die Entität "sensor.reifendruck_HR" ist aber bei dir auch schon ein Template? Oder steht Dir der Sensor so zur Verfügung.

Ich versteht Syntax leider noch nicht ganz
Wo ist der Unterschied zwischen "iif(states) und state_attr() ??

Bei mir sieht es so aus und funktioniert gerade auch einmal. Aber sobal ich " | float/100 " hinzufüge, bekomme ich nur den Wert unbekannt.
Ich kämpfe hier grad noch daran, ein Attribut als Sensor an zu legen
YAML:
  - sensor:
      - name: "Reifendruck VL"
        unit_of_measurement: "bar"
        state: >
            {{ state_attr( '[URL='http://homeassistant.local:8123/developer-tools/state#']sensor.fordpass_tirepressure[/URL]', 'leftFrontTirePressure' )}}
 
Hallo, also mit dem Aufräumen kann man nicht früh genug anfangen, später wird es schwierig.
Die Entität "sensor.reifendruck_HR" ist keine Template sondern der Name der Sensoren aus deiner Integration.
Für 4 Reifen musst du doch 4 Sensoren haben oder nicht?

Soweit ich das verstanden habe soll die Abfrage "iif(states) eine Fehlermeldung verhindern wenn es dir Entität (noch) nicht gibt (zB beim Start von HA.
 
Bei Ford ist das leider etwas anders. Da gibts nur einen Sensor
Code:
sensor.fordpass_tirepressure
der den Wert Status_Good oder Status_Bad liefert.
Der Druck selbst verbirgt sich hinter den Attributen:
Code:
leftFrontTirePressure: 197
rightFrontTirePressure: 204
outerLeftRearTirePressure: 190
outerRightRearTirePressure: 195
recommendedFrontTirePressure: 241
recommendedRearTirePressure: 221
 
@sphere577
iif ist ein "instant-if", also ein wenn-dann, nur anders geschrieben. Kann man auch so:
YAML:
{% if Bedingung XY %}
{{irgendwas}}
{% else %}
{{irgendwas_anderes}}
{% endif %}

Ist nur deutlich sperriger als das von @Barry Ricoh , was ich ihm geschrieben habe.

Solche abfragen sollten in Template-Sensoren eingebaut werden, um Fehlermeldungen zu vermeiden, wenn ein Sensor mal nicht verfügbar ist. Das passiert zum Beispiel in den ersten Minuten nach dem Neustart von HA.
Das iif checkt in diesem Fall, ob der Sensor verfügbar ist und verhindert Fehlermeldungen.


Was du gerne haben möchtest sieht so aus:

YAML:
sensor:
  - name: "Luftdruck Reifen VL"
    state: "{{ iif(state_attr('sensor.fordpass_tirepressure', 'leftFrontTirePressure'), (state_attr('sensor.fordpass_tirepressure', 'leftFrontTirePressure') | float/100) ) }}"
    unit_of_measurement: "Bar"
  - name: "Luftdruck Reifen VR"
    state: "{{ iif(state_attr('sensor.fordpass_tirepressure', 'rightFrontTirePressure'), (state_attr('sensor.fordpass_tirepressure', 'rightFrontTirePressure') | float/100) ) }}"
    unit_of_measurement: "Bar"
  - name: "Luftdruck Reifen HL"
    state: "{{ iif(state_attr('sensor.fordpass_tirepressure', 'outerLeftRearTirePressure'), (state_attr('sensor.fordpass_tirepressure', 'outerLeftRearTirePressure') | float/100) ) }}"
    unit_of_measurement: "Bar"
  - name: "Luftdruck Reifen HR"
    state: "{{ iif(state_attr('sensor.fordpass_tirepressure', 'outerRightRearTirePressure'), (state_attr('sensor.fordpass_tirepressure', 'outerRightRearTirePressure') | float/100) ) }}"
    unit_of_measurement: "Bar"

Die kannst du auch einfacher in Karten verwenden, als eine Entität mit mehreren Attributen.

Wenn du das dennoch in einem Sensor haben möchtest, der dir als Status "Luftdruck gut" und als Attribute die einzelnen Drücke ausgibt, dann ist das auch kein Problem, den kann ich dir auch gerne schreiben.

Edit: Tippfehler im Template korrigiert. Auto-Großschreibung ist mein Feind.
 
Zuletzt bearbeitet:
Nee, das klappt leider nicht. Es gibt immer nur die Meldung "Nicht verfügbar"
Hier mal die ganze Template Section.

Der Sensor Temperatur Küche funktioniert übrigens...

um vielleicht schritt für Schritt vor zu gehen... wie müsste die Zeile denn aussehen, wenn ich Temperatur Küche durch 10 teilen würde.
Ohne die iif abfrage davor?

YAML:
template:
  - sensor:
      - name: "Luftdruck Reifen VL"
        state: "{{ iif(state_attr('sensor.fordpass_tirepressure', 'LeftFrontTirePressure'), (states('sensor.fordpass_tirepressure') | float/100) | round(2)) }}"
        unit_of_measurement: "Bar"
      - name: "Luftdruck Reifen VR"
        state: "{{ iif(state_attr('sensor.fordpass_tirepressure', 'RightFrontTirePressure'), (states('sensor.fordpass_tirepressure') | float/100) | round(2)) }}"
        unit_of_measurement: "Bar"
      - name: "Luftdruck Reifen HL"
        state: "{{ iif(state_attr('sensor.fordpass_tirepressure', 'OuterLeftRearTirePressure'), (states('sensor.fordpass_tirepressure') | float/100) | round(2)) }}"
        unit_of_measurement: "Bar"
      - name: "Luftdruck Reifen HR"
        state: >
            {{ iif(state_attr('sensor.fordpass_tirepressure', 'OuterRightRearTirePressure'), (states('sensor.fordpass_tirepressure') | float/100) | round(2)) }}
        unit_of_measurement: "Bar"
  - sensor:
      - name: "Temperatur Küche"
        unit_of_measurement: "°C"
#        device-class: "pressure"
#        state_class: "measurement"
        state: >
            {{ state_attr('climate.heizung_kuche', 'current_temperature') }}
 
Ich war wohl nicht schnell genug mit editieren. Guck nochmal meinen vorherigen Post und kopier das nochmal. Das funktioniert, da war nur ein Fehler drin, den du mitkopiert hast.

Zu deiner zweiten Frage:

Code:
{{ state_attr('climate.heizung_kuche', 'current_temperature') |float(0) /100 }}

Oder:

YAML:
{{ float(state_attr('climate.heizung_kuche', 'current_temperature'), 0) /100} }}
 
It works :D
Screenshot 2022-11-30 204544.png
MEGA! Danke erstmal. Wo war der Fehler vorher?

Zu Punkt2:
Hmmmm ... ist das "|" bei Yaml ein logisches-Oder oder ein Pipe? Ich würde es bei den beiden Beispielen. So ganz intuitiv erschließt sich mir die Logic der Syntax noch nicht. Würde ja auch gern verstehen, was ich da tu und nicht nur kopieren.
Gibts eigentlich irgendwo ne Refrenz zum Nachschlagen für YAML?
 
Der Fehler war, dass der erste Buchstabe der Attribute hätte klein sein müssen. Und da ich alles am Handy tippe, hat mir die "schlaue Tastatur" den Buchstaben automatisch groß gemacht. Und das hatte ich nicht bemerkt.

Der | ist ein Pipe, danach folgt ein Filter für alles vor dem |


Yaml ist was zb in der configuration.yaml steht.
Templates sind in Jinja.

Zu Templates kannst du hier alles mögliche nachlesen:

https://www.home-assistant.io/docs/configuration/templating/
https://palletsprojects.com/p/jinja/
 
Ja das ist echt gewöhnungsbedürftig, dass das Case-Sensitiv ist. Und selbst das einrücken ganz genau sein muss....
Ich Danke Euch Jedenfalls. Ich denke das Thema kann man als gelöst betrachten. :)

Hier nochmal der Code für die Nachwelt.
Ich finde das Ergebnis echt gelungen für meine ersten Gehversuche mit HA! :)

Die Karte:
YAML:
type: entities
title: Reifkontrollsystem S-MAX
show_header_toggle: true
header:
  image: /local/media/D5_S_Technik_Details_Fahrwerk.png
  type: picture
entities:
  - type: section
    label: 'Luftdruck:'
  - entity: sensor.luftdruck_reifen_vl
    name: Vorn Links (VL)
    image: /local/media/Reifen.png
  - entity: sensor.luftdruck_reifen_vr
    name: Vorn Rechts (VR)
    image: /local/media/Reifen.png
  - entity: sensor.luftdruck_reifen_hl
    name: Hinten Links (HL)
    image: /local/media/Reifen.png
  - entity: sensor.luftdruck_reifen_hr
    name: Hinten Rechts (HR)
    image: /local/media/Reifen.png

und die Template Sensoren:
YAML:
template:
  - sensor:
      - name: "Luftdruck Reifen VL"
        state: "{{ iif(state_attr('sensor.fordpass_tirepressure', 'leftFrontTirePressure'), (state_attr('sensor.fordpass_tirepressure', 'leftFrontTirePressure') | float/100) ) }}"
        unit_of_measurement: "Bar"
      - name: "Luftdruck Reifen VR"
        state: "{{ iif(state_attr('sensor.fordpass_tirepressure', 'rightFrontTirePressure'), (state_attr('sensor.fordpass_tirepressure', 'rightFrontTirePressure') | float/100) ) }}"
        unit_of_measurement: "Bar"
      - name: "Luftdruck Reifen HL"
        state: "{{ iif(state_attr('sensor.fordpass_tirepressure', 'outerLeftRearTirePressure'), (state_attr('sensor.fordpass_tirepressure', 'outerLeftRearTirePressure') | float/100) ) }}"
        unit_of_measurement: "Bar"
      - name: "Luftdruck Reifen HR"
        state: "{{ iif(state_attr('sensor.fordpass_tirepressure', 'outerRightRearTirePressure'), (state_attr('sensor.fordpass_tirepressure', 'outerRightRearTirePressure') | float/100) ) }}"
        unit_of_measurement: "Bar"
 

Letzte Anleitungen

Statistik des Forums

Themen
4.380
Beiträge
45.240
Mitglieder
3.982
Neuestes Mitglied
ThomasW
Zurück
Oben