Sensor auslesen - Datum erhalten

Hallo,

wie bekomme ich aus diesem Sensor:

binary_sensor.wassersensor_waschkuche_feuchtigkeit_erkannt

Dieses Datum und Zeit ausgelesen? Das möchte ich dann in einer button Card zufügen?

Moin,
du möchtest das Datum und Zeit von einem Statewechsel?
Du könntest dir eine Automation machen und bei einen wechsel die aktuelle Zeit in einen Helfer speichern.
Oder du machst es so: {{ states.binary_sensor.wassersensor_bad.last_changed }} das Zeigt die Zeit vom letzten Statewechel an oder den letzten Neustart (wird warum auch immer auch als Statewechsel erkannt).

LG
Tobi

Oder einfach die Kachel (tile) Karte verwenden.
Mit der lässt sich neben dem Zustand auch die letzte Änderung als relative Zeit ausgeben.

Gruß
Osorkon

Danke, aber wie Du schon sagst, erhält man ja völlig falsche Werte dadurch. Ich habe Deine Zeilen mal unter template getestet. Ausgegeben wurde tatsächlich ja nur die letzte Änderung von “nicht verfügbar” in “trocken”. Also nicht die Auslösung in “nass”, also wirklich Wasser erkannt. Siehe hier:

und hier der eigentliche Alarm:

Ich brauche also die Daten, wann “nass” ausgelöst wurde???

Ich habe versucht, dass setzen des Datums und der Uhrzeit in die Automation einzubauen. Klappt aber nicht. Es wird dort nicht der korrekte Stempel hinterlegt. ich denke, da mache ich was falsch.

So geht es:

service: input_datetime.set_datetime
target:
  entity_id: input_datetime.test
metadata: {}
data:
  datetime: "{{now()}}"

LG
Tobi

1 „Gefällt mir“

Wenn Du den Zustand dauerhaft speichern willst, wann der Sensor zuletzt von OFF zu ON gewechselt hat. Würde ich einen Trigger based Template Sensor empfehlen.

#configuration.yaml
template:
  - trigger:
      platform: state
      entity_id:
        - binary_sensor.wassersensor_bad
      from: "off"
      to: "on"
    sensor:
      - name: Das letze mal nass
        state: |
          {{ as_timestamp(states.binary_sensor.wassersensor_bad.last_changed) | timestamp_custom('%d.%m.%y %H:%M')}}
        unique_id: c366926e-563e-43fa-a6fd-01bc613dc231

Als Ergebnis hast Du einen Wert nach diesem Schema:
dd.mm.yy hh:mm

Kannst Du natürlich nach Deinen Vorlieben formatieren.

Gruß
Osorkon

1 „Gefällt mir“

Ich benutze dafür die SQL Integration. Wenn du dich da nen bissel auskennst kannst du entsprechend den Wert auslesen.

SELECT datetime(last_updated_ts , 'unixepoch', 'localtime') as timestamp_manual FROM "states" where metadata_id = (select metadata_id from states_meta where entity_id = "sensor.terasse_station_status") and state = "manual" order by last_updated_ts desc limit 1;

@osorkon

Aber speichert er dann auch nicht wieder alle falschen Änderungen von last_changed? Korrekt wäre es, wenn der Zustand eben “nass” das Datum und Uhrzeit erzeugt?

Oder sehe ich das falsch?

Nein, nur den Zeitpunkt wann zuletzt der Sensor vom Zustand OFF zu ON gewechselt hat.
Das ist der Trigger für den Sensor.
Dieser Zustand bleibt auch erhalten, wen Du Home Assistant neu starten tust.

Gruß
Osorkon

Aber ist der Zustand “on” auch gleich der Meldung “nass” vom Sensor? Oder nur jeder Zustandwechsel, also auch unbekannt oder nicht erreichbar (weil last_changed ja alles beinhaltet)?

Wie schon erwähnt, nur der Zeitpunkt der letzten Zustandsänderung von OFF zu ON.

Gruß
Osorkon

OK. Danke. Versuche ich mal.

Ah, vergessen. Woher erhalte ich die unique_ID und kann ich es auch in meine
template.yaml einfügen, statt config.yaml?

So, habe das mal in meine template.yaml eingefügt. Finde aber nach Neustart kein Sensor o.ä.?

  - trigger:
      platform: state
      entity_id:
        - binary_sensor.wassersensor_waschkuche_feuchtigkeit_erkannt
      from: "off"
      to: "on"
    sensor:
      - name: Das letze mal feucht
        state: |
          {{ as_timestamp(states.binary_sensor.wassersensor_waschkuche_feuchtigkeit_erkannt.last_changed) | timestamp_custom('%d.%m.%y %H:%M')}}
        unique_id: feuchtigkeit_datum  
    
    
  - trigger:
      platform: state
      entity_id:
        - binary_sensor.wassersensor_waschkuche_wasserstand_erkannt
      from: "off"
      to: "on"
    sensor:
      - name: Das letze mal nass
        state: |
          {{ as_timestamp(states.binary_sensor.wassersensor_waschkuche_wasserstand_erkannt.last_changed) | timestamp_custom('%d.%m.%y %H:%M')}}
        unique_id: wasser_datum  
    

Ich habe es auch mal in der Sensor.yaml versucht. Aber überall erhalte ich Fehler:

Es handelt sich um die Template Platform.
Also entweder meinen Code 1:1 übernehmen und in der configuration.yaml einfügen.
Oder, wenn Du Deine configuration aufgeteilt hast. Kommt der coder in die template.yaml.
Dabei musst Du die erste Zeile
template:
weglassen und alles andere um 2 Leerstellen nach links rücken.

Dazu muss in der configuration.yaml, folgende Zeile stehen.
template : !include template.yaml

Die Unique Id kannst Du Dir z.B. hier erstellen.

Nach den Du die Template Sensoren angelegt hast, brauchst Du Home Assistant nicht neu starten.

Zuerst unter Entwicklungswerkzeuge → YAML
Die Konfiguration prüfen, wenn keinen Fehler angezeigt werden, einfach die TEMPLATE-ENTITÄTEN Konfiguration neu laden.

Gruß
Osorkon

Wofür ist diese unique_id eigentlich?

So steht es jetzt in meiner template.yaml. Aber ich finde danach keinen Sensor p.ä.?

Hat nun geklappt. Schon einmal echt vielen Dank. Wochenende gerettet :slight_smile:

Aufgefallen ist mir, nachdem ich noch ein wenig am Format des Datums herumgespielt habe, das ja alles im Englisch Format ist. Wie kann ich das ändern?

Leider muss Du händisch übersetzen, als die englischen Wochentage Abkürzung gegen die deutsche ersetzen.

{{ as_timestamp(states.binary_sensor.wassersensor_waschkuche_feuchtigkeit_erkannt.last_changed ) | timestamp_custom('%d.%m.%Y %a %H:%M:%S') | replace('Fri','Fr') | replace('Thu','Do') | replace('Wed','Mi') | replace('Tue','Di') | replace('Mon','Mo') | replace('Sun','So') | replace('Sat','Sa')}}

Nur so am Rande. Die Tatsache dass es geklappt hat, qualifiziert Deinen Beitrag als Lösung? :wink:

Gruß
Osorkon

Das wollte ich noch gern aufgreifen

Die Unique ID identifiziert die Entität eindeutig und dadurch können Name, Symbol und Entity-ID über die Weboberfläche geändert werden.

Siehe auch Dokumentation Template Integration.

Wichtig ist, das diese einzigartig ist = unique. Darf also jeweils nur einmal verwendet werden. Aus diesem Grund verwende ich die Zeitstempel basierte Unique ID.

Als Code Editor verwenden ich den Studio Code Server (Addon), dort kannst Du Dir die Erweiterung UUID Generator installieren. Und dann einfach mit einem rechts Klick eine unique ID generieren und gleich im code einfügen.

UUID Generator

Gruß
Osorkon

1 „Gefällt mir“

Geiles Teil. Dank für den Tip. Aber die Konfiguration prüfen kann ich damit nicht, korrekt?

Jetzt muss ich nur noch wissen, wie ich dieses:

{{ states(‘sensor.das_letze_mal_feucht’) }}

Als 3. Zeile in den button bekomme, wenn Wasser ausgelöst wurde.

      - type: custom:button-card
        color_type: card
        entity: sensor.waschkueche_feuchtigkeit_sensor
        show_icon: false
        show_state: true
        show_last_changed: true
        tap_action:
          action: call-service
          service: input_boolean.turn_off
          target:
            entity_id: input_boolean.wasseralarm_boolean_feuchtigkeit
        double_tap_action:
          action: more-info
          entity: binary_sensor.wassersensor_waschkuche_feuchtigkeit_erkannt
        name: Feuchte Sensor
        styles:
          card:
            - height: 70px
            - font-size: 14px
              color: black
            - font-weight: bold
            - font-family: Helvetica
        state:
          - value: Feuchtschaden
            color: red
            styles:
              card:
                - animation: blink 1s linear infinite
                - filter: drop-shadow(0 0 1.0rem rgb(255,255,255))
                - border: 5px
                - font-size: 14px
                - filter: opacity (70%)
          - operator: default
            name: Feuchte Sensor
            color: rgb(0,255,0)

Irgendwo unter state: müsste es ja rein, damit es nur angezeigt wird, wenn ausgelöst. Aber wo?