Entity Sensor auf Deutsch übersetzen

Ich habe diverse Fenstergriffsensoren (HmIP-SRH). Die Entity sieht wie folgt aus: sensor.name_state. Die angezeigten Optionen stimmen auch soweit, nur sind diese auf englisch - Closed, Tilted, Open.
Wie und wo kann ich diese Optionen auf Deutsch übersetzen?

Vielleicht hilft Dir das weiter.
[Datum übersetzen / formatieren - SmartHome yourself]

Gruß, Andreas

Hi Andreas,

vielen Dank, aber wie binde ich dass ein?

Beste Grüße
Detlef

Naja du hast ne cover Integration mit diverse Stati.
Würdest du diese nun übersetzen wo soll denn z.B. ein service.call hinlaufen?

Der macht ein cover.close_cover und es gibt gar kein ‘close’ weil du den auf ‘geschlossen’ geändert hat. Sprich er erreicht nie sein Ziel. Also selbst für den Fall das würde gehen hättest du dich selbst ausgeknockt.
Du musst unterscheiden zwischen einem systembedingten Status und dem zu visualisierenden Text. Das sind 2 komplett unterschiedliche Dinge, und ja solange du keinen Text vorgibt wird natürlich der Status benutzt, was auch sonst.
Bei Software sehr üblich, kommt halt meistens aus dem englischsprachigen Raum womit bei denen dieses exklusive Problem das sich daraus ergibt kein wirkliches Problem ist.

Deshalb gibts ja auch bei den entities selbst den friendly_name und du suchst nun den friendly_state würde ich mal sagen. Das klappt gut mit Dingen bei denen die meisten Dinge “templatable” <== geiles Wort) sind.

Im Thread Shutter Card hab ich ein Beispiel von Buttons die ich mit der “custom:button card” realisiert habe, schau dir da mal im YAML code den Bereich “state” in dem Code für den button an.

state:
  - value: closed
    name: geschlossen
  - value: open
    name: offen

Hallo Detlef,
so weit bin ich leider auch noch nicht. Ich arbeite selber nur mit der Wochentagsvariante und dachte, das es auch eine Möglichkeit sein könnte.
Das von justone scheint mir aber eine gute Lösung zu sein.

Gruß, Andreas

Das wäre zu schön gewesen…
Mein YAML Code sieht entsprechend so aus:

  - type: horizontal-stack
    cards:
      - type: "custom:button-card"
        template: card_generic
        entity: binary_sensor.detlef_fenster_state
      - type: "custom:button-card"
        template: card_generic
        entity: sensor.detlef_fenstergriff_state
        state:
          - value: closed
            name: Geschlossen
          - value: tilted
            name: Gekippt
          - value: open
            name: Offen

Am Ergebnis ändert dies leider nichts:

Was mir aufgefallen ist, wenn ich die weiteren Infos aufrufe, dann steht es dort in Deutsch:

Versuche mal state_text anstatt name, also so:

          - value: closed
            state_text: Geschlossen
          - value: tilted
            state_text: Gekippt
          - value: open
            state_text: Offen

Hier ein Beispiel wie ich es bei mir habe:

show_state: true
state:
  - value: 'on'
    color: Red
    icon: mdi:door-open
    state_text: Offen
    styles:
      card:
        - animation: blink 2s ease infinite

Ist leider auch nicht die Lösung. Aber, wenn ich folgendes raus nehme:

template: card_generic

Dann ist das Ergebnis:
SCR-20230319-ljdz
Füge ich jetzt Deinen ersten Code hinzu:

        state:
          - value: 'closed'
            name: Geschlossen
          - value: 'tilted'
            name: Gekippt
          - value: 'open'
            name: Offen

Bekomme das richte Ergebnis:
SCR-20230319-ljkm

Nur leider sieht die Karte nicht mehr so dezent aus wie mit dem template

Auch state_text ändert leider mit dem template nichts. Wenn ich das template wieder rausnehme wird “Fenstergriff” anstatt der Status “Gekippt” ausgegeben.

Ich vermute dass es daran liegt, dass es keine binär Sensoren (on/off) sind. Beim Rauchmelder ist es genau dasselbe. Die template Karten sind jedoch für binär Sensoren ausgelegt, weshalb der einfache Fenstersensor (im Bild links neben dem Fenstergriff) auch richtig dargestellt wird.

custom:button-card hast du ja installiert
card-mod hoffentlich auch
die shutter-card auch?

und der code hier funktioniert genau so was dein Problem angeht.
Du kannst ihn nur nicht komplett so benutzen weil dann müsstest du dir zum testen ein
Input.select basteln der bei mir vom enocean2mqtt geliefert wird.

Anbei meine Lösung für EnOcean … und das kannst du auch. Da muss nicht viel geändert werden.

sieht übrigens so aus die nachfolgenden YAML Zeilen
esszimmer
und wenn ich vor oder hinter dem physikalischen Rolladen stehen fährt der auch genau so.

wenn ich raten müsste … weil deine Karte keine Tap-Action hat ändert die Karte auch nie den Status also guckt sie auch in Folge nicht ob sie denn denn state: ändern müsste. Aber das ist nur ne Idee die mir gerade kommt beim vergleichen deiner YAML Zeilen mit meinen.

type: vertical-stack
cards:
  - type: custom:shutter-card
    title: Esszimmer
    entities:
      - entity: cover.ar_esszimmer
        name: 'offen zu:'
        buttons_position: none
        title_position: bottom
    style: |
      ha-card {
        font-size: 11px !IMPORTANT;
      }
      .sc-shutter-label {
        font-size: 15px !IMPORTANT;
      }
      .sc-shutter-top {
        text-align: left !IMPORTANT;
      }
      .card-header {
        font-size: 10px !IMPORTANT;
      }
      .sc-shutter-selector-slide {
        width: 129px !IMPORTANT;
      }
      .sc-shutter-selector-picture {
        width: 147px !IMPORTANT;
        background-size: 147px 100% !IMPORTANT;
        background-repeat: no-repeat !IMPORTANT;
      }
      .sc-shutter-selector-picker {
        width: 91.0% !IMPORTANT;
      }
      .sc-shutter-buttons {
        width: 1px !IMPORTANT;
      }
      .sc-shutter-button {
        width: 1000px !IMPORTANT;
      }
  - type: horizontal-stack
    cards:
      - type: custom:button-card
        entity: cover.ar_esszimmer
        tap_action:
          action: call-service
          service: script.virt_ar_unified
          service_data:
            select: select.e2m_virt_ar_esszimmer_action
            what: AO
            which: cover.ar_esszimmer
        aspect_ratio: 1/0.5
        color_type: card
        color: rgb(65, 109, 150)
        state:
          - operator: template
            value: |
              [[[
                if (entity.attributes.current_position > 99
                )
                return 'open';
              ]]]
            icon: mdi:file-excel-box-outline
            name: n/a
            color: rgb(100,100,100)
          - operator: template
            value: |
              [[[
                if (entity.attributes.current_position > 0
                && entity.attributes.current_position < 100
                && entity.state == 'open'
                )
                return 'tilt';
              ]]]
            icon: mdi:transfer-up
            name: OPEN
            color: rgb(65, 109, 150)
          - value: closed
            icon: mdi:transfer-up
            name: OPEN
            color: rgb(65, 109, 150)
          - value: opening
            icon: mdi:stop
            name: STOP
            color: rgb(65, 109, 150)
          - value: closing
            icon: mdi:stop
            name: STOP
            color: rgb(65, 109, 150)
      - type: custom:button-card
        entity: cover.ar_esszimmer
        tap_action:
          action: call-service
          service: script.virt_ar_unified
          service_data:
            select: select.e2m_virt_ar_esszimmer_action
            what: AI
            which: cover.ar_esszimmer
        aspect_ratio: 1/0.5
        color_type: card
        color: rgb(65, 109, 150)
        state:
          - value: opening
            icon: mdi:stop
            name: STOP
            color: rgb(65, 109, 150)
          - value: closing
            icon: mdi:stop
            name: STOP
            color: rgb(65, 109, 150)
          - operator: template
            value: |
              [[[
                if (entity.attributes.current_position < 1)
                return 'closed';
              ]]]
            icon: mdi:file-excel-box-outline
            name: n/a
            color: rgb(100,100,100)
          - operator: template
            value: |
              [[[
                if (entity.attributes.current_position > 99
                &&  entity.state == 'open')
                return 'open';
              ]]]
            icon: mdi:transfer-down
            name: CLOSE
            color: rgb(65,109,150)
          - operator: template
            value: |
              [[[
                if (entity.attributes.current_position > 0
                &&  entity.attributes.current_position < 100
                &&  entity.state == 'open')
                return 'tilt';
              ]]]
            icon: mdi:transfer-down
            name: CLOSE
            color: rgb(65, 109, 150)

Na klar, sonst hätte ich ja ganz andere Probleme :slightly_smiling_face:
Der für mich schlüssigste Code wäre:

      - type: 'custom:button-card'
        template: card_generic
        entity: sensor.detlef_fenstergriff_state
        state:
          - >
              {% if state('sensor.detlef_fenstergriff_state', 'closed') %}
                  Geschlossen
              {% elif state('sensor.detlef_fenstergriff_state', 'tilted') %}
                  Gekippt
              {% else %}
                  Offen
              {% endif %}

Bringt aber leider auch keinen Erfolg :unamused:

Auf meiner Dashboard Seite sieht es so aus:


Dort lass ich dem Icon je nach Zustand eine andere Farbe zukommen. Der Code dazu:

            entity_id: sensor.detlef_fenstergriff_state
            templates:
              - >
                [[[
                    if (states['sensor.detlef_fenstergriff_state'].state === 'open')
                        return 'pink_no_state';
                    else if (states['sensor.detlef_fenstergriff_state'].state === 'tilted')
                        return 'purple_no_state';
                    return 'grey_on'
                ]]]
            tap_action:
              action: none
            hold_action:
              action: none
            double_tap_action:
              action: none

Nur mit der Übersetzung, da will es nicht klappen :grimacing:

ah ok … hab mir nochmal meinen Code angeschaut und etwas gespielt.

Also es kann nicht gehen solange deine custom button-card kein button ist, sprich du keine tap-action definiert hast.
Und denn zeige ich in meinem Beispiel halt auch nicht den Status an deshalb
show_state: false
dafür aber
show_name: true

Sprich das was man denkt ist nicht immer das was man sieht. Man glaubt in meinem Beispiel es wäre der Status der natürlich immer noch Open Closed … ist. Anzeigen tue ich aber den Namen und denn ändere ich halt auch mit dem

state:
  - value: Open
    name: Offen

sorry … ich bin grad die Tage etwas im Stress … hätte mir ja auch gleich auffallen müssen.
Aber vielleicht bekommst du damit ne Idee was du versuchen könntest.

Du musst Dich doch nicht entschuldigen! Ich bin doch froh, dass Du mir Input lieferst.

        state:
          - value: closed
            name: Geschlossen
          - value: tilted
            name: Gekippt
          - value: open
            name: Offen

Gibt die richtigen Werte aus:

        show_state: false
        show_name: true

Sieht dann so aus:

Der gesamte Code:

  - type: horizontal-stack
    cards:
      - type: 'custom:button-card'
        template: card_generic
        entity: binary_sensor.detlef_fenster_state
      - type: 'custom:button-card'
        template: card_generic
        entity: sensor.detlef_fenstergriff_state
        show_name: true
        show_state: false
        tap_action:
          action:
        hold_action:
          action: none
        double_tap_action:
          action: none
        state:
          - value: closed
            name: Geschlossen
          - value: tilted
            name: Gekippt
          - value: open
            name: Offen

Das ich keine tap_action bei custom:button-card definiert hatte, dürft nicht das Problem sein - siehe Fenster.

Die von mir genutzte Karte card_generic ist im Prinzip eine card_binary_sensor, bei welcher name und state vertauscht sind.

Hier gibt es einen andere Herangehensweise. Aber da fehlt es mir an Wissen um dies umzusetzen.

Mir wäre damit vielleicht für den Fenstergriff geholfen, aber ich habe ja noch weitere Sensoren, mit mehr als zwei Werten - also keine binären Sensoren. Die funktionieren auch alle soweit, nur gibt es in der Dashboard Ansicht für diese Sensoren keine Deutsche Übersetzung.

Vielen lieben Dank für Eure Unterstützung :+1:

Hier ist die Lösung:

Ich habe einfach meine eigenen Karten erstellt:

  - type: horizontal-stack
    cards:
      - type: custom:mushroom-template-card
        entity: binary_sensor.detlef_fenster_state
        tap_action:
          action: more-info
        hold_action:
          action: none
        double_tap_action:
          action: none
        primary: |-
          {% if is_state('binary_sensor.detlef_fenster_state', 'on') %}
          Offen
          {% else %}
          Geschlossen
          {% endif %}
        icon: |-
          {% if is_state('binary_sensor.detlef_fenster_state', 'on') %}
          mdi:window-open
          {% else %}
          mdi:window-closed
          {% endif %}
        icon_color: |-
          {% if is_state('binary_sensor.detlef_fenster_state', 'on') %}
          deep-orange
          {% else %}
          disabled
          {% endif %}
        secondary: Fenster
      - type: custom:mushroom-template-card
        entity: sensor.detlef_fenstergriff_state
        tap_action:
          action: more-info
        hold_action:
          action: none
        double_tap_action:
          action: none
        primary: |-
          {% set mode = states('sensor.detlef_fenstergriff_state') %}
          {% if mode == 'open' %}
          Offen
          {% elif mode == 'tilted' %}
          Gekippt
          {% else %}
          Geschlossen
          {% endif %}
        icon: |-
          {% set mode = states('sensor.detlef_fenstergriff_state') %}
          {% if mode == 'open' %}
          mdi:window-open
          {% elif mode == 'tilted' %}
          mdi:window-open
          {% else %}
          mdi:window-closed
          {% endif %}
        icon_color: |-
          {% set mode = states('sensor.detlef_fenstergriff_state') %}
          {% if mode == 'open' %}
          deep-orange
          {% elif mode == 'tilted' %}
          orange
          {% else %}
          disabled
          {% endif %}
        secondary: Fenstergriff
2 „Gefällt mir“