Veraltete Switch Template & Light Template

Hallo zusammen,

ich melde mich nach längerer Abwesenheit in der Home Assistant Welt zurück. Mein System wurde damals von einem Bekannten eingerichtet und ich stehe jetzt vor angekündigten Breaking Changes, die meine HomeKit-Einbindung betreffen.

Die Probleme sollen angeblich ab der Version 2026.6 (oder einer ähnlichen zukünftigen Version, die genaue Nummer ist mir nicht bekannt) auftreten.

Ich brauche dringend Hilfe bei der Umstellung dieser spezifischen Funktionalitäten:

Sonos Lautstärkesteuerung über HomeKit

Hue Ambilight Steuerung über HomeKit

Hue Smarte Plugs als switch emulieren

evtl kann mir ja jemand aufzeigen wie es aussehen müsste damit ich es besser verstehe.

vielen lieben dank im vorraus.


#################################################################
## Hue Sync Licht
#################################################################

light:
- platform: template
  lights:
      hue_ambilight:
        friendly_name: "Ambilight"
        level_template: "{{ (states('number.sync_box_brightness') | int * 255 / 100) | int }}"
        value_template: "{{ states('number.sync_box_brightness') | int > 0 }}"
        turn_on:
          action: number.set_value
          target:
            entity_id: number.sync_box_brightness
          data:
            value: 100
        turn_off:
          action: number.set_value
          target:
            entity_id: number.sync_box_brightness
          data:
            value: 0
        set_level:
          action: number.set_value
          target:
            entity_id: number.sync_box_brightness
          data:
            value: "{{ (brightness / 255 * 100) | round(0) }}"


switch:
- platform: template
  switches:
    ladestation_wohnzimmer:
      value_template: "{{ is_state('light.ladesation_wohnzimmer', 'on') }}"
      turn_on:
        action: light.turn_on
        target:
          entity_id: light.ladesation_wohnzimmer
      turn_off:
        action: light.turn_off
        target:
          entity_id: light.ladesation_wohnzimmer

#################################################################
## Sonos - Lautstärke
#################################################################

light:
- platform: template
  lights:
    sonos_lautstarke:
        friendly_name: "Sonos Lautstärke"
        level_template: "{{ (state_attr('media_player.sonos', 'volume_level') * 255 ) |int }}"
        value_template: "{{ (state_attr('media_player.sonos', 'volume_level')) | float > 0 }}"
        turn_on:
          action: media_player.media_play
          target:
            entity_id: media_player.sonos
          data: {}
        turn_off:
          action: media_player.media_stop
          target:
            entity_id: media_player.sonos
        set_level:
          action: media_player.volume_set
          target:
            entity_id: media_player.sonos
          data:
            volume_level: "{{ brightness / 255}}"

Hi,

Ich weiß es klingt immer so wie mit dem erhobenen Zeigefinder, aber gerade bei HA finde ich es besser, wenn man sein System auch maintainen kann. Es erfordert einfach etwas Einarbeitung.

Das wäre jetzt die Gelegenheit für dich…

Das müsste dann so aussehen (ich hoffe ich habe alles erwischt (Irrtümer vorbehalten)):

Denk daran, dass Template nur einmal vorkommen darf.

template:
  - light:
      - name: "Ambilight"
        unique_id: hue_ambilight
        state: "{{ states('number.sync_box_brightness') | int > 0 }}"
        level: "{{ (states('number.sync_box_brightness') | int * 255 / 100) | int }}"
        turn_on:
          - service: number.set_value
            target:
              entity_id: number.sync_box_brightness
            data:
              value: 100
        turn_off:
          - service: number.set_value
            target:
              entity_id: number.sync_box_brightness
            data:
              value: 0
        set_level:
          - service: number.set_value
            target:
              entity_id: number.sync_box_brightness
            data:
              value: "{{ (brightness / 255 * 100) | round(0) }}"

  - light:
      - name: "Sonos Lautstärke"
        unique_id: sonos_lautstaerke
        state: "{{ state_attr('media_player.sonos', 'volume_level') | float > 0 }}"
        level: "{{ (state_attr('media_player.sonos', 'volume_level') | float * 255) | int }}"
        turn_on:
          - service: media_player.media_play
            target:
              entity_id: media_player.sonos
        turn_off:
          - service: media_player.media_stop
            target:
              entity_id: media_player.sonos
        set_level:
          - service: media_player.volume_set
            target:
              entity_id: media_player.sonos
            data:
              volume_level: "{{ brightness / 255 }}"
              
  - switch:
      - name: "Ladestation Wohnzimmer"
        unique_id: ladestation_wohnzimmer
        state: "{{ is_state('light.ladesation_wohnzimmer', 'on') }}"
        turn_on:
          - service: light.turn_on
            target:
              entity_id: light.ladesation_wohnzimmer
        turn_off:
          - service: light.turn_off
            target:
              entity_id: light.ladesation_wohnzimmer

Da gibts doch schon ein Thema:

Hier ist auch die Doku zum Nachlesen:

hey

vielen dank ich werde mich jetzt mal einlesen erst mal Danke für die mega Hilfe.

Wenn Du ohnehin alle Deine veraltetet Template Entitäten in YAMl anfassen musst.
Dann kannst Du Dir die auch gleich ohne YAML gefrimmel als Helfer in der GUI erstellen.

Gruß Osorkon

Das stimmt prinzipiell…

Ich habe auch service übersehen. Ist das nicht jetzt action?

Ich hab das mit den Helfern probiert, ich verliere mich da in den ganzen Auswahlen total und weiß gar nicht wo ich da was und wie machen soll :smiling_face:

Nach stundenlangem lesen hoffe ich nun, dass ich es hoffentlich einigermaßen verstanden hab und hab mal was zusammengebastelt. Bevor ich mich an die restlichen 87 Sensoren mache, kann da mal einer drüber gucken, ob das so stimmt?

Wäre nett, Danke schonmal.

################################################################################
# SD21 Regeneration
# -------------------------------

# so sieht der Sensor in der ausgelagerten "sensors.yaml" bisher aus:

  - platform: template
    sensors:
      date_time_regeneration_sd21:
        value_template: "{{ as_timestamp(states('sensor.softliq_d_bs50020237_nachste_regeneration')) | timestamp_custom('%d.%m.%y um %H:%M') }}"
        friendly_name: Regeneration SD21

# wenn ich nun eine "templates.yaml" Datei erstelle, also in der configuration.yaml 
# auslagere nach "template: !include templates.yaml"), muss der Sensor dann so aussehen?

  - sensor:
      - default_entity_id: sensor.date_time_regeneration_sd21
        state: "{{ as_timestamp(states('sensor.softliq_d_bs50020237_nachste_regeneration')) | timestamp_custom('%d.%m.%y um %H:%M') }}"
        name: "Regeneration SD21"


################################################################################
#  Blink Gartenhütte Batterie
# -------------------------------

# alt - in der sensors.yaml:

  - platform: template
    sensors:
      battery_voltage_cam_gartenhuette:
        friendly_name: "Batterie Status Kamera"
        value_template: "{{ (state_attr('camera.blink_gartenhuette', 'battery_voltage') | float(0) / 100) | round(2)}}"
        unit_of_measurement: "V"

# neu - in der templates.yaml:

  - sensor:
      - default_entity_id: sensor.battery_voltage_cam_gartenhuette
        state: "{{ (state_attr('camera.blink_gartenhuette', 'battery_voltage') | float(0) / 100) | round(2)}}"
        name: "Batterie Status Kamera"
        unit_of_measurement: "V" 

Ist doch recht Einfach Als Helfer Template auswählen und dann Sensor, Binärsensoer, Leuchte, Schalter, etc auswählen.

Unter Zustand trägst Du das template ein, also das was Du in YAML hinter state: stehen hast.
Wählst einen Geräteklasse (device class) aus, wenn gewünscht, wählst die passende Einheit zur Geräteklasse aus. Und definierst die Zustandklasse (state class)

Du kannst drüber hinaus den Template Sensor einem Gerät zuordnen, damit erscheint der Sensor auch in der Geräte Detailansicht. Vergibst dem Sensor einen Namen und speicherst das ganze.

Definitiv einfacher als in YAML zu werkeln, vor allem da Du Dich damit anscheinend schwer tust.

Am Bsp. Deines Sensors Batterie Status Kamera

Gruß Osorkon

erstmal vielen Dank für die Erklärung und ja, ich tu mir verdammt schwer damit, sowohl mit dem yaml als auch dem Helfer Zeugs. Ich war jetzt lange Zeit damit zufrieden, mir aus allen möglichen Foren und Beiträgen alles zusammen zu lesen und zu probieren, ohne jemand damit belästigen zu müssen … und jetzt das …

Aber ich seh schon, ich werd dran verzweifeln :wink:

Eine Frage hätt ich noch zu dem Thema: wenn ich es nun doch irgendwie schaffe einen Sensor mit dem Helfer zu erstellen, muss ich den dann vermutlich aus der sensors.yaml löschen, weil er sonst ja dpppelt da ist, oder?

Löschen ja, aber löschen ist so endgültig, wurde mir zumindest erstmal ein Backup der Yaml Dateien machen. Für alle Fälle.

  • Dann notierst Du Dir die Entity-Id vom bestehenden Sensor.
  • Löscht den alten aus der Yaml, prüfst die Konfiguration und ladest die Template Konfiguration neu.
  • Den neuen Helfer erstellen und diesen erstmal so benennen wie den alten. Die Entity-Id leitest sich vom Namen ab
  • Zum Schluss überprüfst Du noch die Entity-ID und änderst diese wenn nötig auf die alte. Damit alle Deine Dashboards und Automationen, Skripte, etc. weiterhin funktionieren.

Gruß Osorkon

Hat ein bisschen gedauert, aber ich denke jetzt hat es “klick“ gemacht, hab das mit dem Umstellen per Helfer mit über 25 Template Sensoren hinbekommen. In der sensors.yaml hab ich sie erstmal nicht gelöscht, sondern nur auskommentiert.

Ich danke Dir vielmals, Du hast mir extrem geholfen! :+1: