Sensor Status ändern, wenn überschreiten eines Bereichs?

Ritschi

New member
Hallo
Ich habe in der configuration.yaml einen Sensor erstellt, der mir melden soll, ob die Maschine ein oder aus ist.
Code:
  - sensor:
      - name: "miele_zustand"
        state: >
          {% if is_state('sensor.tumbler_messwert_power') | float >= 0.2 %}
            Tumbler ein
          {% elif is_state('sensor.miele_waschmaschine_status', 'In Betrieb') %}
            Waschmaschine ein
          {% elif is_state('sensor.tumbler_messwert_power') | float <= 0.2 %}
            Tumbler aus
          {% elif is_state('sensor.miele_waschmaschine_status', 'Aus') %}
            aus
          {% else %}
            fehler beim Abruf
          {% endif %}
Der "sensor.miele_waschmaschine_status" funktioniert wunderbar.
Beim "sensor.tumbler_messwert_power" geht es leider nicht, da kommt ein "unavailable".
Beim Tumbler sensor möchte ich einfach, dass wenn der Wert 0.2 übersteigt "Tumbler ein" ausgegeben wird.
Wenn der Wert unter 0.2 sinkt, wird "Tumbler aus" ausgegeben.

Gruss
Ritschi
 
Zuletzt bearbeitet:

Nival

-
Moderator
Verstehe ich das richtig, prinzipiell soll ein "Tumbler aus" geliefert werden, wenn entweder der Zustand "unavailable" oder der Wert unter 0,2 liegt, ansonsten ein "Tumbler ein"?
 

Ritschi

New member
Verstehe ich das richtig, prinzipiell soll ein "Tumbler aus" geliefert werden, wenn entweder der Zustand "unavailable" oder der Wert unter 0,2 liegt, ansonsten ein "Tumbler ein"?
unavailable wird jetzt ausgegeben, da anscheinend die Programmierung nicht stimmt.
Also wenn wert unter 0.2 dann Tumbler aus, wenn über 02. dann Tumbler ein.
So möchte ich dass das ausgegeben wird
 

Nival

-
Moderator
Ah, dann kam das falsch rüber.

Ändere mal {% elif is_state('sensor.tumbler_messwert_power') | float >= 0.2 %} in {% if states('sensor.tumbler_messwert_power') | float >= 0.2 %}, dann sollte das eigentlich schon passen.

Edit, {% elif is_state('sensor.tumbler_messwert_power') | float <= 0.2 %} müsste ebenfalls auf {% elif states('sensor.tumbler_messwert_power') | float <= 0.2 %} umgeschrieben werden.
 

Ritschi

New member
Super, herzlichen Dank an dich, so funktioniert es wunderbar.

Hier noch mein ganzer sensor, wie das am Schluss für mich funktioniert hat.

Code:
# Miele Geräte Zustand für Hauptseite Button
  - sensor:
      - name: "miele_zustand"
        state: >
          {% if is_state('sensor.backofen_status', 'In Betrieb') %}
            ein
          {% elif states('sensor.tumbler_messwert_power') | float >= 0.2 %}
            Tumbler ein
          {% elif is_state('sensor.geschirrspuler_status', 'In Betrieb') %}
            Geschirrspüler ein
          {% elif is_state('sensor.miele_waschmaschine_status', 'In Betrieb') %}
            Waschmaschine ein
          {% elif is_state('sensor.miele_waschmaschine_status', 'Ende') %}
            Waschmaschine Ende
          {% elif is_state('sensor.geschirrspuler_status', 'Ende') %}
            Geschirrspüler Ende
          {% elif is_state('sensor.backofen_status', 'Ende') %}
            Backofen Ende
          {% elif is_state('sensor.miele_waschmaschine_status', 'Aus') %}
            aus
          {% elif is_state('sensor.geschirrspuler_status', 'Aus') %}
            aus
          {% elif is_state('sensor.backofen_status', 'Aus') %}
            aus
          {% elif states('sensor.tumbler_messwert_power') | float <= 0.1 %}
            aus
          {% else %}
            fehler beim Abruf
          {% endif %}
        icon: >
          {% if is_state('sensor.backofen_status', 'In Betrieb') %}
            mdi:stovesto
          {% elif is_state('sensor.geschirrspuler_status', 'In Betrieb') %}
            mdi:dishwasher
          {% elif is_state('sensor.miele_waschmaschine_status', 'In Betrieb') %}
            mdi:washing-machine
          {% elif states('sensor.tumbler_messwert_power') | float >= 0.1 %}
            mdi:tumble-dryer
          {% else %}
            mdi:washing-machine-off
          {% endif %}
Der Button dazu ist folgender:
Code:
type: custom:button-card
show_name: false
show_icon: true
tap_action:
  action: navigate
  navigation_path: miele
entity: sensor.miele_zustand
aspect_ratio: 1/1
name: Miele Geräte
state:
  - value: Waschmaschine ein
    color: rgb(253, 216,53)
    styles:
      icon:
        - animation:
            - blink 3s linear infinite
  - value: Tumbler ein
    color: rgb(253, 216,53)
    styles:
      icon:
        - animation:
            - blink 3s linear infinite
  - value: Geschirrspüler ein
    color: rgb(253, 216,53)
    styles:
      icon:
        - animation:
            - blink 3s linear infinite
styles:
  grid: null
  icon:
    - position: absolute
  custom_fields:
    notification:
      - background-color: rgb(068, 115, 158)
      - border-radius: 0%
      - position: absolute
      - left: 0%
      - bottom: 0%
      - height: 20px
      - width: 100%
      - font-size: 9px
      - line-height: 20px
      - font-weight: bold
      - color: white
custom_fields:
  notification: |
    [[[ return (states['sensor.miele_zustand'].state) ]]]

Das sieht dann so aus:
Wenn etwas läuft, blinkt der Button dann langsam gelb

Bildschirmfoto 2022-09-26 um 21.06.08.pngBildschirmfoto 2022-09-26 um 21.08.08.png
Gruss
Ritschi
 
Zuletzt bearbeitet:

u5zzug

Active member
Wie stellst du fest, dass Herd + Wama an sind? Willst du immer nur das erste Gerät sehen, das an ist?
Ich würde ein if je Gerät machen und die Ergebnisse aneinander hängen.
Es gibt seit einiger Zeit eine kurze if syntax
YAML:
```
{{ iif(is_state('light.kitchen', 'on'), 'Yes', 'No') }}

{{ is_state('light.kitchen', 'on') | iif('Yes', 'No') }}

{{ (states('light.kitchen') == 'on') | iif('Yes', 'No') }}
```
 

Ritschi

New member
Wie stellst du fest, dass Herd + Wama an sind? Willst du immer nur das erste Gerät sehen, das an ist?
Ich würde ein if je Gerät machen und die Ergebnisse aneinander hängen.
Es gibt seit einiger Zeit eine kurze if syntax
YAML:
```
{{ iif(is_state('light.kitchen', 'on'), 'Yes', 'No') }}

{{ is_state('light.kitchen', 'on') | iif('Yes', 'No') }}

{{ (states('light.kitchen') == 'on') | iif('Yes', 'No') }}
```
Das klingt sehr interessant. Bis jetzt ist es so, dass auf meiner Hauptseite der View nur ein Geräte angezeigt wird wenn es läuft und auf der Unterseite dann alle Geräte.
Deine Variante klingt sehr interessant. Leider kann ich nicht coden und schnipsle alles nur zusammen.
Kannst du mir da genauer erklären, wie ich das auf meinen Fall anwenden kann?
 

u5zzug

Active member
Ich würde für jedes Gerät einen Sensor machen und dann für die Übersicht per Template abfragen, ob eines davon an ist. " if wama an or herd an or ... an".

Kennst du die Mushroom cards? Per HACs installierbar.
Da gibt es auch eine Template card.
 

Ritschi

New member
Na, mal schauen, ob ich da was hin bekomme.
Im Moment blicke ich da nicht ganz durch, versuche es aber mal.
Mushroom cards ist installiert und mit der Template Card bin ichs jetzt am versuchen.

Wenn ich nun folgenden Code eingebe bei icon, dann funktioniert das nicht.
Code:
  {{ iif(is_state('sensor.miele_waschmaschine_status', 'In Betrieb'),'mdi:washing-machine', 'mdi:washing-machine-off') }}
  {{ is_state('sensor.geschirrspuler_status', 'In Betrieb') | iif('mdi:dishwasher', 'mdi:dishwasher-off') }}
  {{ (states('sensor.miele_zustand_tumbler') == 'Ein') | iif('mdi:tumble-dryer', 'mdi:tumble-dryer-off') }}

Wenn ich aber nur die erste Zeile eingebe, dann wird mir das icon angezeigt:
Code:
  {{ iif(is_state('sensor.miele_waschmaschine_status', 'In Betrieb'),'mdi:washing-machine', 'mdi:washing-machine-off') }}

Hier der ganze Code des der Mushroom Template Card:
Code:
type: custom:mushroom-template-card
primary: >-
  {{ iif(is_state('sensor.miele_waschmaschine_status', 'In Betrieb'), 'In
  Betrieb', 'Aus') }}
secondary: How are you?
icon: >-
  {{ iif(is_state('sensor.miele_waschmaschine_status', 'In Betrieb'),
  'mdi:washing-machine', 'mdi:washing-machine-off') }}
  {{ is_state('sensor.geschirrspuler_status', 'In Betrieb') |
  iif('mdi:dishwasher', 'mdi:dishwasher') }}
  {{ (states('sensor.miele_zustand_tumbler') == 'Ein') |
  iif('mdi:tumble-dryer', 'mdi:tumble-dryer-off') }}
fill_container: true
multiline_secondary: true
badge_icon: mdi:home
badge_color: >-
  {{ iif(is_state('sensor.miele_waschmaschine_status', 'In Betrieb'), 'green',
  'red') }}

  {{ is_state('sensor.geschirrspuler_status', 'In Betrieb') | iif('yellow',
  'orange') }}

  {{ (states('sensor.miele_zustand_tumbler') == 'Ein') | iif('blue', 'lime') }}
icon_color: >-
  {{ iif(is_state('sensor.geschirrspuler_status', 'In Betrieb'), 'green', 'red')
  }}

  {{ is_state('sensor.miele_waschmaschine_status', 'In Betrieb') | iif('yellow',
  'orange') }}

  {{ (states('sensor.miele_zustand_tumbler') == 'Ein') | iif('orange', 'lime')
  }}
entity: sensor.miele_waschmaschine_status
 

u5zzug

Active member
Die 3 Zeilen code sind verschiedene Varianten, iif anzuwenden ;-)

probier mal das einzufügen
YAML:
primary: >-
  {{ (iif(is_state('sensor.miele_waschmaschine_status', 'In Betrieb'),
  'WaMa, ', '') }}
  {{ (iif(is_state('sensor.geschirrspuler_status', 'In Betrieb'),
  'SpüMa, ', '') }}
    {{ (iif(is_state('sensor.miele_zustand_tumbler', 'Ein'),
  'Trockner, ', '')|trim(', ') }}
 

Ritschi

New member
Super, danke.
Wenn ich die Klammer vor jedem iif weg nehme dann klappt es.
Gruss
Ritschi
Code:
primary: >-
  {{ iif(is_state('sensor.miele_waschmaschine_status', 'In Betrieb'),
  'WaMa, ', '') }}
  {{ iif(is_state('sensor.geschirrspuler_status', 'In Betrieb'),
  'SpüMa, ', '') }}
    {{ iif(is_state('sensor.miele_zustand_tumbler', 'Ein'),
  'Trockner, ', '')|trim(', ') }}
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
1.725
Beiträge
21.439
Mitglieder
1.234
Neuestes Mitglied
Doneinei
Oben