Homematic IP/Raspberrymatic Service/Alarmmeldung auf HA Visuell darstellen

Bin leider etwas unpässlich. Das sind alles Template Sensoren.

#Homematic-Batterie
#Fensterkontakte
  - platform: template
    sensors:
      fk_bad_unten_bat:
        friendly_name: "Fenster_Bad_unten"
        value_template: >-
          {% set voltage = states('sensor.fensterkontakt_bad_unten_operating_voltage') | float %}
          {% if is_state('binary_sensor.fensterkontakt_bad_unten_low_battery', 'on') %}
            0
          {% else %}
            {{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
          {% endif %}
        unit_of_measurement: "%" 
      fk_bad_oben_bat:
        friendly_name: "Fenster_Bad_oben"
        value_template: >-
          {% set voltage = states('sensor.fensterkontakt_bad_oben_operating_voltage') | float %}
          {% if is_state('binary_sensor.fensterkontakt_bad_oben_low_battery', 'on') %}
            0
          {% else %}
            {{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
          {% endif %}
        unit_of_measurement: "%" 
      fk_umkleide_bat:
        friendly_name: "Fenster_Umkleide"
        value_template: >-
          {% set voltage = states('sensor.fensterkontakt_umkleide_operating_voltage') | float %}
          {% if is_state('binary_sensor.fensterkontakt_umkleide_low_battery', 'on') %}
            0
          {% else %}
            {{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
          {% endif %}
        unit_of_measurement: "%" 
      fk_sch_kl_bat:
        friendly_name: "Fenster_Schafz_klein"
        value_template: >-
          {% set voltage = states('sensor.fensterkontakt_schlafen_klein_operating_voltage') | float %}
          {% if is_state('binary_sensor.fensterkontakt_schlafen_klein_low_battery', 'on') %}
            0
          {% else %}
            {{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
          {% endif %}
        unit_of_measurement: "%"         
      fk_sch_gr_bat:
        friendly_name: "Fenster_Schlafz_groß"
        value_template: >-
          {% set voltage = states('sensor.fensterkontakt_schafen_gross_operating_voltage') | float %}
          {% if is_state('binary_sensor.fensterkontakt_schafen_gross_low_battery', 'on') %}
            0
          {% else %}
            {{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
          {% endif %}
        unit_of_measurement: "%"
        
#Heizkörperthermostate
      hz_bad_oben_bat:
        friendly_name: "Heiz_Bad_oben"
        value_template: >-
          {% set voltage = states('sensor.heizkorperthermostat_bad_oben_operating_voltage') | float %}
          {% if is_state('binary_sensor.heizkorperthermostat_bad_oben_low_battery', 'on') %}
            0
          {% else %}
            {{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
          {% endif %}
        unit_of_measurement: "%"                         
      hz_flur_eingang_bat:
        friendly_name: "Heiz_Flur_eingang"
        value_template: >-
          {% set voltage = states('sensor.heizkorperthermostat_flur_eingang_operating_voltage') | float %}
          {% if is_state('binary_sensor.heizkorperthermostat_flur_eingang_low_battery', 'on') %}
            0
          {% else %}
            {{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
          {% endif %}
        unit_of_measurement: "%"                                 
      hz_schlafz_gr_bat:
        friendly_name: "Heiz_Schlafz_groß"
        value_template: >-
          {% set voltage = states('sensor.heizkorperthermostat_schlafen_gross_operating_voltage') | float %}
          {% if is_state('binary_sensor.heizkorperthermostat_schlafen_gross_low_battery', 'on') %}
            0
          {% else %}
            {{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
          {% endif %}
        unit_of_measurement: "%"                               
      hz_schlafz_kl_bat:
        friendly_name: "Heiz_Schlafz_klein"
        value_template: >-
          {% set voltage = states('sensor.heizkorperthermostat_schlafen_klein_operating_voltage') | float %}
          {% if is_state('binary_sensor.heizkorperthermostat_schlafen_klein_low_battery', 'on') %}
            0
          {% else %}
            {{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
          {% endif %}
        unit_of_measurement: "%"                     
      hz_umkl_bat:
        friendly_name: "Heiz_Umkleide"
        value_template: >-
          {% set voltage = states('sensor.heizkorperthermostat_umkleide_operating_voltage') | float %}
          {% if is_state('binary_sensor.heizkorperthermostat_umkleide_low_battery', 'on') %}
            0
          {% else %}
            {{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
          {% endif %}
        unit_of_measurement: "%"
        
#Wandthermostate
      wth_schl_klein_bat:
        friendly_name: "WTH_Schlafz_klein"
        value_template: >-
          {% set voltage = states('sensor.wandthermostat_schlafen_klein_operating_voltage') | float %}
          {% if is_state('binary_sensor.wandthermostat_schlafen_klein_low_battery', 'on') %}
            0
          {% else %}
            {{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
          {% endif %}
        unit_of_measurement: "%" 
      wth_schl_gr_bat:
        friendly_name: "WTH_Schlafz_groß"
        value_template: >-
          {% set voltage = states('sensor.wandthermostat_schlafen_gross_operating_voltage') | float %}
          {% if is_state('binary_sensor.wandthermostat_schlafen_gross_low_battery', 'on') %}
            0
          {% else %}
            {{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
          {% endif %}
        unit_of_measurement: "%"         
      wth_bad_oben_bat:
        friendly_name: "WTH_Bad_oben"
        value_template: >-
          {% set voltage = states('sensor.wandthermostat_bad_oben_operating_voltage') | float %}
          {% if is_state('binary_sensor.wandthermostat_bad_oben_low_battery', 'on') %}
            0
          {% else %}
            {{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
          {% endif %}
        unit_of_measurement: "%"                 
      wth_bad_unten_bat:
        friendly_name: "WTH_Bad_unten"
        value_template: >-
          {% set voltage = states('sensor.wandthermostat_bad_unten_operating_voltage') | float %}
          {% if is_state('binary_sensor.wandthermostat_bad_unten_low_battery', 'on') %}
            0
          {% else %}
            {{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
          {% endif %}
        unit_of_measurement: "%"                    
      wth_essz_bat:
        friendly_name: "WTH_Esszimmer"
        value_template: >-
          {% set voltage = states('sensor.wandthermostat_esszimmer_operating_voltage') | float %}
          {% if is_state('binary_sensor.wandthermostat_esszimmer_low_battery', 'on') %}
            0
          {% else %}
            {{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
          {% endif %}
        unit_of_measurement: "%"                            
      wth_flur_eing_bat:
        friendly_name: "WTH_Flur_Eingang"
        value_template: >-
          {% set voltage = states('sensor.wandthermostat_flur_eingang_operating_voltage') | float %}
          {% if is_state('binary_sensor.wandthermostat_flur_eingang_low_battery', 'on') %}
            0
          {% else %}
            {{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
          {% endif %}
        unit_of_measurement: "%"                    
      wth_kuche_bat:
        friendly_name: "WTH_Küche"
        value_template: >-
          {% set voltage = states('sensor.wandthermostat_kuche_operating_voltage') | float %}
          {% if is_state('binary_sensor.wandthermostat_kuche_low_battery', 'on') %}
            0
          {% else %}
            {{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
          {% endif %}
        unit_of_measurement: "%"                            
      wth_umkl_bat:
        friendly_name: "WTH_Umkleide"
        value_template: >-
          {% set voltage = states('sensor.wandthermostat_umkleide_operating_voltage') | float %}
          {% if is_state('binary_sensor.wandthermostat_umkleide_low_battery', 'on') %}
            0
          {% else %}
            {{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
          {% endif %}
        unit_of_measurement: "%"                                    
      wth_wohnz_bat:
        friendly_name: "WTH_Wohnzimmer"
        value_template: >-
          {% set voltage = states('sensor.wandthermostat_wohnzimmer_operating_voltage') | float %}
          {% if is_state('binary_sensor.wandthermostat_wohnzimmer_low_battery', 'on') %}
            0
          {% else %}
            {{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
          {% endif %}
        unit_of_measurement: "%"
      wth_speicher_bat:
        friendly_name: "WTH_Speicher"
        value_template: >-
          {% set voltage = states('sensor.raumthermostat_speicher_betriebsspannung') | float %}
          {% if is_state('binary_sensor.raumthermostat_speicher_batterie', 'on') %}
            0
          {% else %}
            {{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
          {% endif %}
        unit_of_measurement: "%"        
        
#Taster        
      taster_kuche_bat:
        friendly_name: "Taster_Küche"
        value_template: >-
          {% set voltage = states('sensor.6_fach_taster_kuche_operating_voltage') | float %}
          {% if is_state('binary_sensor.6_fach_taster_kuche_low_battery', 'on') %}
            0
          {% else %}
            {{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
          {% endif %}
        unit_of_measurement: "%"                    
      taster_schaf_klein_bat:
        friendly_name: "Taster_Schlaftzimmer_klein"
        value_template: >-
          {% set voltage = states('sensor.taster_schlafen_klein_operating_voltage') | float %}
          {% if is_state('binary_sensor.taster_schlafen_klein_low_battery', 'on') %}
            0
          {% else %}
            {{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
          {% endif %}
        unit_of_measurement: "%"                
      taster_schaf_gr_bat:
        friendly_name: "Taster_Schlaftzimmer_groß"
        value_template: >-
          {% set voltage = states('sensor.taster_schlafzimmer_operating_voltage') | float %}
          {% if is_state('binary_sensor.taster_schlafzimmer_low_battery', 'on') %}
            0
          {% else %}
            {{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
          {% endif %}
        unit_of_measurement: "%"                        
      taster_umkl_bat:
        friendly_name: "Taster_Umkleide"
        value_template: >-
          {% set voltage = states('sensor.taster_umkleide_operating_voltage') | float %}
          {% if is_state('binary_sensor.taster_umkleide_low_battery', 'on') %}
            0
          {% else %}
            {{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
          {% endif %}
        unit_of_measurement: "%" 
#Fernbedienung
      fernbediehnung_bat:
        friendly_name: "Fernbedienung"
        value_template: >-
          {% set voltage = states('sensor.fernbedienung_rolladen_ug_operating_voltage') | float %}
          {% if is_state('binary_sensor.fernbedienung_rolladen_ug_low_battery', 'on') %}
            0
          {% else %}
            {{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
          {% endif %}
        unit_of_measurement: "%"                          
        

@bimbo009 Alles gut. Vielen Dank dass Du Dich überhaupt meldest und mir antwortest. Vielen Dank erst einmal dafür.

Hier mein Sensor Eintrag.

#Homematic-Batterie
#Fensterkontakte
  - platform: template
    sensors:
      fk_wohnzimmer_bat:
        friendly_name: "FK_Wonzimmer"
        value_template: >-
          {% set voltage = states('sensor.fensterkontakt_opt_wohnzimmer_betriebsspannung') | float %}
          {% if is_state('binary_sensor.fensterkontakt_opt_wohnzimmer_batterie', 'on') %}
            0
          {% else %}
            {{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
          {% endif %}
        unit_of_measurement: "%"

Und das ist meine Battrie-State-Card

type: custom:battery-state-card
title: Fensterkontakte
colors:
  steps:
    - '#ff0000'
    - '#ffff00'
    - '#00ff00'
  gradient: true
entities:
  - entity: sensor.helfer_fk_wohnzimmer_batterie
    name: Wohnzimmer

und das ist das Ergebnis…:

HA_Hinweis

@ShawnR Zwei Sachen fallen mir auf, müssen aber nicht die Ursache sein.
Beim ‘template-sensor’ steht bei ‘friendly_name’ FK_Wonzimmer, also ohne ‘h’. Dürfte nur Kosmetik sein.
Bei der 'Batterie-State-Card steht 'entity: sensor.helfer_fk…_batterie. Wo kommt der ‘Helfer’ und ‘Batterie’ her? Denn der Sensor heißt bei dir nur ‘fk_wohnzimmer_bat’.
Bei @bimbo009 sieht man ja, daß die Einträge in der Batterie-Card identisch mit den angelegten Sensoren sind.

@bimbo009
@Macello

Wenn ich es richtig verstehe erstelle ich mit dem Template einen neuen Sensor mit dem Namen “fk_wohnzimmer_bat” und der Wert dieses Sensors errechnet sich aus der Entität “Betriebsspannung” & “Batterie”.
Auf dem Dashboard in der Batterie State Card greife ich dann auf diesen Sensor zurück um ihn anzuzeigen. Sehe ich das falsch?

Shawn´

Wo erstellst du den Sensor. In der ‘configuration.yaml’, oder ‘sensor.yaml’, oder oder bei den ‘Geräte und Dienste’ bei den ‘Helfern’?

@Macello
Bei den “Geräte und Diensten” unter Helfer.

Shawn

Wenn der Template Sensor richtig angelegt wurde, dann bekommst du eine neue Entität mit dem Namen ‘fk_wohnzimmer_bat’. Oder welchen Namen du auch immer vergeben hast. Diese Entität muss dann in die Batterie-State-Card, nicht der ‘Helfer’.

Nachtrag: Nach dem Erstellen des Sensors. HA einmal neu starten. Sonnst erscheint die neue Entität nicht.

@Macello
Aber die Entitäts-ID heißt doch “sensor.helfer_fk_wohnzimmer_batterie”. “HELFER:” schreibe ich nur vor jedem Helfer davor (zwecks Übersicht) und dadurch steht im Sensor auch der Teil mit dem Helfer. Er liefert mir ja auch einen Wert von -78.
Das ist ja das zweite Problem welches ich nicht verstehe.

Shawn

P.S.: Bei mir wäre die Berechnung auch Folgende.
{{ ((voltage = 1.4 - 2.1) / (3 - 2.1) * 100) | round(0) }}

Wäre das überhaupt richtig?
Weil bei @bimbo009 sehe ich deutlich höhere Voltzahlen.

Da steht bei Ihm nur ‘2.1’.
Wie die richtige Schreibweise ist, kann ich dir nicht sagen. Da bin ich raus.
Wenn der Sensor richtig funktioniert, dann kann man das bei den ‘Entwicklerwerkzeugen’ sehen. Dort auf ‘Zustand’ und die neu erstellte Entität raussuchen. Dort sollten dann die richtigen Werte angezeigt werden.

@Macello
Bei ihm steht {{ ((voltage - 2.1)… }}
Bei mir hat Voltage den Wert 1.4 und bei ihm ist es 2.9. Also muss ja bei mir zwangsläufig ein negativer und somit falscher Wert herauskommen oder habe ich da jetzt einen Gedankenfehler?

So habe jetzt herausgefunden das unter Geräte und Helfer in das Template nur das hier eingetragen werden darf.

{% set voltage = states('sensor.fensterkontakt_opt_wohnzimmer_betriebsspannung') | float %}
{% if is_state('binary_sensor.fensterkontakt_opt_wohnzimmer_batterie', 'on') %}
0
{% else %}
{{ ((voltage - 2.1) / (3 - 2.1) * 100) | round(0) }}
{% endif %}

dann erscheint auch im Dashboard ein %-Wert, aber leider immer noch -78% und das liegt vermutlich an der noch falschen Berechnung.

Nimm doch mal die Batterie raus, um zu testen ob der Sensor überhaupt arbeitet. Wenn sich der Wert ändert, dann kann es nur an der Berechnung liegen.

1 „Gefällt mir“

Ich denke mal die Werte müssten angepasst werden. Es gibt ja Sensoren mit einer Batterie, andere mit zwei. Dazu noch die verschiedenen Batterie Arten. Irgendwo hatte ich mal Beispiel Templates gesehen für die ganzen Arten. Aber hab mich nicht weiter damit beschäftigt da mir die Standart Batterie Anzeige reicht.

@ShawnR Schau mal hier rein. Vielleicht ist da was zu finden.

NACHTRAG
@ShawnR Ich bin jetzt mal wie du den Weg über die ‘Helfer’ gegangen. Helfer dann Template und Templatesensor (nicht Binärsensor). Dort habe ich deinen yaml-code reinkopiert und durch meine Entitäten ersetzt. Es funktioniert!!! Lediglich round(0) habe ich durch round(1) ersetzt, um eine Nachkommastelle zu bekommen.

@Macello Erst einmal Danke für den Tip. Schaue ich mir an.

Wie hoch liegt die Betriebsspannung bei Deiner Entität? Was verbirgt sich hinter “sensor.bwm_schlafzimmer…”? Wieviel Batterien befinden sich in “Deiner” Entität?

Shawn

Das ist ein HmIP Bewegungsmelder. Da sind 2x AAA drin, denke ich. Die Betriebsspannung beträgt 2,7 Volt.

@Macello
Und vermutlich liegt da genau das Problem. In meinem Fensterkontakt ist nur 1x AAA drin.
Daran scheint es dran zu liegen wie @ciddi89 beschrieben hatte.

@ShawnR Dann stell die Zahlen mal so ein. Siehe Bild ab {{ ((voltage…

Die aktuelle Betriebsspannung dieses Kontaktes liegt bei 1.1 Volt.
Die erste Zahl nach ‘voltage’ gibt die unterste Grenze (Volt) an ab der der Sensor aussteigt und nicht mehr funktioniert. Die nächste Zahl die gesamt Volt der Batterien (1x AAA 1.5, 2x AAA 3) und die letzte wieder die untere Grenze. Die Prozente werden aus der Differenz zwischen max Volt und der unteren Grenze errechnet.

2 „Gefällt mir“

@Macello
Dann gibt er mir einen Wert von 83,3% aus. Das scheint zumindest plausibler.
Danke Dir für die Unterstützung und auch an Dich
@bimbo009 vielen Dank.

Shawn

So wie es aussieht hat sich das Problem erledigt. Ja ich habe Geräte mit 2 Batterien zu je 1,5 Volt. Es kommt auch darauf an welche Qualität die Batterien haben. Wenn man billige kauft die können dann schon mal nur 1,35Volt haben hatte ich auch schon und mich dann gewundert wieso die Batterien so schnell leer waren. Also richtige AA oder auch AAA haben eigentlich 1,5 Volt nicht wie die billigen vom Discounter mit 1,35 Volt.

1 „Gefällt mir“

Kauf dir Vernünftige Batterien und keine billigen Discounter Batterien dann hast du auch 3,0 Volt.

1 „Gefällt mir“