Ankündigung

Einklappen
Keine Ankündigung bisher.

Sensor Template für Zeitmessung nach Aktion (z.B. Switch Off)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Sensor Template für Zeitmessung nach Aktion (z.B. Switch Off)

    Hallo,

    kann mir einer ggf. helfen wie ich ein Sensor Template oder ähnliches bauen kann, dass ich die Zeit nach dem Abschalten eines Switches messen kann und somit auch abfragen.

    Also ich hätte gerne eine Variable in der ich sehen kann vor wie vielen Minuten ich einen Switch abgeschaltet habe.

    Gibt es hier eine Möglichkeit über die GUI bzw. YAML?

    #2
    Sowas? Das Template erstellt einen Sensor 'Schaltzeit', der wegen '{% set t = states('sensor.time') %}' eigentlich minütlich aktualisiert werden sollte:

    Code:
    - platform: template
      sensors:
        schaltzeit:
          friendly_name: Zeit seit Schaltvorgang
          icon_template: mdi:clock-outline
          value_template: >
            {% set t = states('sensor.time') %}
            {{ relative_time(states.switch.dein_switch.last_changed) }}"
    Falls es nur um die Anzeige auf dem Dashboard geht, müsste auch die 'entities' Karte gehen:

    Code:
    type: entities
    entities:
      - entity: switch.dein_switch
        secondary_info: last-changed
    Alles ungeprüft / aus dem Kopf - gern Feedback, ob es läuft!

    /tom

    Kommentar


      #3
      Falls du drauf reagieren willst, geht das in einer Automation direkt. Trigger Entität, Wert Änderung. Dann kannst du eine Zeit einstellen. Also "Aus" für "xx:xx:xx".

      Kommentar


        #4
        Zitat von Tom Bombadil Beitrag anzeigen
        Sowas? Das Template erstellt einen Sensor 'Schaltzeit', der wegen '{% set t = states('sensor.time') %}' eigentlich minütlich aktualisiert werden sollte:
        Code:

        - platform: template sensors: schaltzeit: friendly_name: Zeit seit Schaltvorgang icon_template: mdi:clock-outline value_template: > {% set t = states('sensor.time') %} {{ relative_time(states.switch.dein_switch.last_chang ed) }}"
        Ja das sieht gut aus.
        Das wäre dann aber für die configuration.yaml oder?

        Über die die GUI mit Helper, Template, Template a Sensor mit einem entsprechenden String für "State template" geht das nicht oder?

        Ich habe nämlich das Ziel soweit möglich alles über die GUI zu machen, weil mir das Editieren in den yaml als sehr fehleranfällig und problematisch bei größeren Updates von Home Assitant erscheint. Alles was über die GUI kommt, wird denke ich auch beim Update immer wieder fiunktionieren.

        Zitat von DerSeppel Beitrag anzeigen
        Falls du drauf reagieren willst, geht das in einer Automation direkt. Trigger Entität, Wert Änderung. Dann kannst du eine Zeit einstellen. Also "Aus" für "xx:xx:xx".
        Nicht ganz.
        Ich möchte eine Variable (Sensor) mit der ich in Automationen abfragen kann wie lange der Switch schon an oder aus ist und dann entsprechend handeln.

        Kommentar


          #5
          Zitat von steiniKNX Beitrag anzeigen
          Über die die GUI mit Helper, Template, Template a Sensor mit einem entsprechenden String für "State template" geht das nicht oder?
          Uff, keine Ahnung - irgendwie geht's bestimmt, aber ich konfiguriere so gut wie nie per GUI, immer nur YAML. Mal in die Runde fragen ...

          /tom

          Kommentar


            #6
            Zitat von Tom Bombadil Beitrag anzeigen
            Uff, keine Ahnung - irgendwie geht's bestimmt, aber ich konfiguriere so gut wie nie per GUI, immer nur YAML
            Also du siehst da eher keine Gefahr, dass eigener Code in yaml mit großen Updates inkompatibel werden könnte?
            Dann würde ich das auch so lösen ... oft würde ich mir mit Code schon leichter tun denke ich!

            Kommentar


              #7
              du könntest es hiermit versuchen

              Code:
              {{as_timestamp(states.switch.garage.last_changed) | timestamp_custom('%A %d-%b-%y, %H:%M:%S')}}

              Code:
              Wednesday 07-May-25, 22:18:37[URL="https://community.home-assistant.io/t/how-to-get-last-state-changed-from-switch/125656/2"][/URL]
              How to Get Last State Changed from Switch? - Configuration - Home Assistant Community


              Die Formatierung ist beliebig möglich und kann bei Bedarf für jede Entität genutzt werden.



              Oder du machts einen solchen Trigger:

              image.png

              Hier ist jedoch wichtig wie du KNX gesetzt hast. Du kannst im KNX-Modul je Entität konfigurieren, dass bei gleichem Status trotzdem ein state changed gesetzt wird.​​
              Zuletzt geändert von pamo; 09.05.2025, 19:35.

              Kommentar


                #8
                Zitat von steiniKNX Beitrag anzeigen
                Also du siehst da eher keine Gefahr, dass eigener Code in yaml mit großen Updates inkompatibel werden könnte?
                Ist Geschmackssache. Ich persönlich finde es übersichtlicher, kurz über YAML zu fliegen, als mich jedesmal in die unterschiedlichen GUI-Konfigurationen und Menüs reinzudenken und nach dieser einen Option zu suchen, die ich gerade anpassen will. Am Ende wird ja auch durch die visuellen Editoren nur YAML generiert; es stehen aber oft nur die wichtigsten Optionen zur Verfügung, und die Feinheiten fehlen.

                Ich fahre hier aber auch ein sehr stark auf meine persönlichen Vorstellungen angepasstes System, bis hin zu drei selbst programmierten 'custom components' samt eigenen Karten für das Lovelace-Dashboard. Sowas wie die Nachbildung der Helios/Vallox KWL Steuereinheit bekommst Du nur hin, wenn Du tiefer einsteigst, inklusive jeder Menge YAML und Templates.

                Updates mit 'breaking changes' kann es natürlich immer geben (siehe zB die Diskussion hier auf Discord über eine tiefergehende Änderung, die nach nur einer Woche erneut geändert wurde; auch 'Arbeitsbeschaffungsmaßnahme' genannt). Davor sind aber auch die visuellen Editoren nicht gefeit.

                /tom
                Zuletzt geändert von Tom Bombadil; 10.05.2025, 10:49.

                Kommentar


                  #9
                  Danke, das geht schon in die richtige Richtung.
                  Ich habe es jetzt so versucht:

                  Code:
                  sensors:
                        xyz_last_switch_off:
                          entity_id: switch.xyz_switch
                          friendly_name: "xyz Switch last ON"
                          value_template: "{{as_timestamp(states.switch.xyz.last_changed) | timestamp_custom('%A %d-%b-%y, %H:%M:%S')}}"​
                  Leider gibt mir das immer nur die Zeit seit dem letzten Schalten des Switches aus. Damit könnte ich natürlich mit Umwegen auch weiter machen.

                  Schöner wäre es aber, wenn ich die Zeit seit dem letzten angeschalteten Zustand hätte.
                  Also im Grunde den Zeitpunkt zu dem der Switch den Zustand Off annimmt.

                  Gibt es hier satt "last_changed" einen entsprechenden Parameter wie "last_on" oder "since_off"?

                  Wo gibt es überhaupt die Info zu "last_changed" ich finde das leider nicht in der Home Assistent Dokumentation. Wenn ich das finden würde, dann würde ich ggf. auch das finden was ich suche

                  Kommentar


                    #10
                    Jetzt habe ich noch etwas gefunden was funktioniert.
                    Finde ich zwar nicht so elegant wie die andere Lösung, aber es würde gehen:

                    Code:
                      - trigger:
                          - platform: state
                            entity_id: switch.xyz
                            from: 'on'
                            to: 'off'
                        sensor:
                          - unique_id: xyz_off
                            name: "xyz Aus"
                            state: "{{ trigger.to_state.last_changed  }}"
                            device_class: timestamp​
                    Allerdings hätte ich es gerne, dass die Zeit immer in Minuten angegeben wird, aber es fängt erst mit Sekunden an, dann Minuten ... kann man das noch anders konfigurieren?
                    Zuletzt geändert von steiniKNX; 12.05.2025, 13:03.

                    Kommentar


                      #11
                      Wie oben bereits geschrieben (hier eine etwas erweiterte Fassung):

                      Code:
                      sensors:
                        xyz_last_switch_off:
                          entity_id: switch.xyz_switch
                          friendly_name: "xyz Switch last OFF"
                          value_template: >
                            {% set t = states('sensor.time') %}
                            {% set is_off = is_state('input_boolean.ventilation_manual_boost_fireplace_mode', 'off')| int(0) %}
                            {% if is_off %}
                              {{ relative_time(states.switch.dein_switch.last_changed) }}"
                            {% else %}
                              {{ '-- XYZ_SWITCH IST AN! --' }}
                            {% endif %}
                      Die Zeile mit relative_time kannst Du natürlich auch die as_timestamp Variante ersetzen, wenn Dir die besser gefällt. Da Du aber im ersten Post oben explizit die Minuten haben wolltest, müsstest Du vermutlich /60 teilen, statt das Ergebnis mit '| timestamp_custom('%A %d-%b-%y, %H:%M:%S')​' in einen Zeitstempel zu konvertieren.

                      Und wie ebenfalls schon geschrieben: Wichtig ist die Zeile '{% set t = states('sensor.time') %}', auch wenn sie anfangs sinnbefreit aussieht. Sie sorgt für eine minütliche Aktualisierung des Templates. Sonst wird beim Schaltvorgang nur einmalig getriggert, und der Wert bleibt mangels Updates bis zum nächsten Schaltvorgang gleich.

                      /tom

                      p.s. Alles wieder aus dem Kopf geschrieben, hab grad keinen Zugriff auf HA. Das Template kannst Du in den Developer Tools ausprobieren.

                      Kommentar


                        #12
                        Zitat von Tom Bombadil Beitrag anzeigen
                        p.s. Alles wieder aus dem Kopf geschrieben, hab grad keinen Zugriff auf HA. Das Template kannst Du in den Developer Tools ausprobieren.
                        Danke dir.
                        Auf die schnelle auf dem Hady bekomme ich es so nicht zum Laufen, auch wenn das Developer Tool keinen Fehler wirft. Werde ich mir am Abend am Bildschirm mal genauer ansehen. Ich habe jetzt mal ein wenig was von dir ersetzt:

                        Code:
                        sensors:
                          xyz_last_switch_off:
                            entity_id: switch.xyz_switch
                            friendly_name: "xyz Switch last OFF"
                            value_template: >
                              {% set t = states('sensor.time') %}
                              {% set is_off = is_state('switch.xyz_switch', 'off')| int(0) %}
                              {% if is_off %}
                                {{ relative_time(states.switch.switch.xyz.last_changed) }}"
                              {% else %}
                                {{ '-- XYZ_SWITCH IST AN! --' }}
                              {% endif %}​

                        Kommentar


                          #13
                          Kurz angetestet (oberes Bild = Switch ist OFF, unteres Bild = anderer Switch ON):

                          image.png

                          image.png​​

                          So wie ich das sehe, tut es, was es tun soll ...

                          /tom

                          p.s. (ja, im oben verlinkten Code hatte ich vergessen, die Entität bei 'set is_off =' anzupassen.

                          Kommentar


                            #14
                            Zitat von Tom Bombadil Beitrag anzeigen
                            So wie ich das sehe, tut es, was es tun soll ...
                            Du hast das so einfach im "configuration.yaml" unter "sensors:" eingebunden?

                            Kommentar


                              #15
                              Zitat von steiniKNX Beitrag anzeigen
                              Du hast das so einfach im "configuration.yaml" unter "sensors:" eingebunden?
                              Versuch dich mal von der "configuration.yaml" zu lösen.
                              Du kannst beliebig viele Konfigurationsdateien anlegen und alle einbinden. Dann bleibt die configuration.yaml schön schlank und übersichtlich.
                              Die anderen Dateien nutzt du dann um Konfigurationen nach Thema/Gewerk/Typ/Gebäudestruktor oder ähnlichem anzulegen.

                              Das hilft wirklich sehr, den Überblick zu behalten.

                              Kommentar

                              Lädt...
                              X