Smart Plug auf Stromausfall prüfen

Ich sende dann nochmal meine jaml. ich habe beide Trigger drinn.

@HaGoDo zeig doch mal deine jaml für die Automation.

War es nicht so, dass Zigbee2MQTT den Status erst nach einer weile ändert?

Was zeigt bei dir Zigbee2MQTT für einen Status, wenn die Dose keinen Strom mehr hat?

Meine Steckdosen laufen per W-Lan über eine Integration.

Beispiel,

- id: smartplug_auto_recovery
  alias: Geschirrspüler – Smartplug Auto Recovery
  description: >
    Überwacht, ob der Leistungssensor länger als watchdog_timeout Minuten
    den Zustand unavailable oder unknown hat. Falls dies der Fall ist,
    wird die Smart-Steckdose automatisch kurz stromlos geschaltet, um
    eine Wiederherstellung zu versuchen. Es werden maximal max_retries
    Wiederherstellungsversuche durchgeführt.
  initial_state: true
  variables:
    watchdog_timeout: 30      # Minuten
    power_cycle_time: 10      # Sekunden stromlos
    startup_time: 30          # Sekunden Wartezeit nach Neustart
    retry_delay: 60           # Sekunden zwischen Wiederholungsversuchen
    max_retries: 2            # Maximale Anzahl an Wiederherstellungsversuchen
  triggers:
    - trigger: time_pattern
      minutes: "/1"
  conditions:
    # Die Automation läuft jede Minute.
    # Wurde sie in der letzten Stunde bereits ausgelöst?
    # Dadurch werden unnötige Wiederholungen und Meldungen vermieden.
    - condition: template
      value_template: >
        {{ (now() - this.last_triggered).total_seconds() > 3600
           if this.last_triggered is not none else true }}

    # Prüfen, ob der Leistungssensor seit mindestens watchdog_timeout Minuten
    # unavailable oder unknown ist.
    - condition: template
      value_template: >
        {% set sensor = states.sensor.smart_plug_afwasmachine_vermogen %}
        {{
          sensor.state in ['unknown', 'unavailable']
          and
          (now() - sensor.last_changed).total_seconds() >= watchdog_timeout * 60
        }}
  actions:
    # Startmeldung
    - action: notify.henk
      data:
        title: "⚠️ Geschirrspüler – Wiederherstellung gestartet"
        message: >
          Der Leistungssensor ist seit {{ watchdog_timeout }} Minuten nicht erreichbar.

          Automatischer Wiederherstellungsversuch wird eingeleitet.
        data:
          ttl: 0
          priority: high
          clickAction: "noAction"

    # Wiederherstellungsversuche
    - repeat:
        count: "{{ max_retries }}"
        sequence:
          # Wiederherstellungsversuch {{ repeat.index }}
          - action: switch.turn_off
            target:
              entity_id: switch.smart_plug_afwasmachine_stopcontact_1

          - delay:
              seconds: "{{ power_cycle_time }}"

          - action: switch.turn_on
            target:
              entity_id: switch.smart_plug_afwasmachine_stopcontact_1

          # Warten, bis ZHA die Sensorwerte neu aufgebaut hat
          - delay:
              seconds: "{{ startup_time }}"

          # Prüfen, ob die Wiederherstellung erfolgreich war
          - if:
              - condition: template
                value_template: >
                  {{ states('sensor.smart_plug_afwasmachine_vermogen')
                     not in ['unknown', 'unavailable'] }}
            then:
              - action: notify.henk
                data:
                  title: "✅ Geschirrspüler – Wiederherstellung erfolgreich"
                  message: >
                    Die Smart-Steckdose wurde erfolgreich nach Versuch {{ repeat.index }} wiederhergestellt.

                    Leistungssensor : {{ states('sensor.smart_plug_afwasmachine_vermogen') }} W
                    Spannung        : {{ states('sensor.smart_plug_afwasmachine_spanning') }} V
                  data:
                    ttl: 0
                    priority: high
                    clickAction: "noAction"

              # Automation beenden, da Wiederherstellung erfolgreich
              - stop: "Smart-Steckdose erfolgreich wiederhergestellt."

          # Warten zwischen zwei Versuchen
          - if:
              - condition: template
                value_template: >
                  {{ repeat.index < max_retries }}
            then:
              - delay:
                  seconds: "{{ retry_delay }}"

    # Meldung, wenn alle Versuche fehlgeschlagen sind
    - action: notify.henk
      data:
        title: "❗ Geschirrspüler – Wiederherstellung fehlgeschlagen"
        message: >
          Die automatische Wiederherstellung ist nach {{ max_retries }} Versuchen fehlgeschlagen.

          Leistungssensor : {{ states('sensor.smart_plug_afwasmachine_vermogen') }}
          Spannung        : {{ states('sensor.smart_plug_afwasmachine_spanning') }}
          Schalter        : {{ states('switch.smart_plug_afwasmachine_stopcontact_1') }}

          Bitte die Smart-Steckdose manuell überprüfen.
        data:
          ttl: 0
          priority: high
          clickAction: "noAction"

  trace:
    stored_traces: 10
  mode: single

Nimm doch einfach…. wenn die Spannung unter 200 Volt ist dann trigger….

Wenn Du Deinen smarten Plug aus der Steckdose ziehen tust, dann sinkt bei Dir die Spannung?!
Und wie wird diese an Home Assistant übertragen, wenn Plug spannungslos?!

Gruß Osorkon

1 „Gefällt mir“

Vielen Dank, ich werde es testen, heute komme ich aber nicht mehr dazu.

Ich bin jetzt etwas verwirrt – was ist die Absicht? Überwachung oder Schalten?

Auf Stromausfall an den Plugs überwachen soll es sein. Nicht auf einen generellen Stromausfall.

Ich habe vorhin einfach mal einen Aqara Temperatursensor in die Kühltruhe geschmissen. Hätte nicht gedacht das ein vernünftiges Signal kommt. Aber es funktioniert gut. Die Automation ist hier einfach. Wenn die Temperatur z.B. unter -10 Grad fällt bekomme ich eine Nachricht. Das funktioniert.

@UweGausO

So jetzt mal die Automation, habe sie gerade noch mal getestet und sie funktioniert gut, nach 1 Minute kommt die Meldung aufs Handy.

Du musst nur die Entität und notify austauschen.

Conditions sind zwei eckige Klammern, das kommt irgendwie durch das kopieren.

 alias: "Ausfall Zirkulation "
 description: “”
 triggers:

 - trigger: state
   entity_id:
   - switch.zirkulationschaltung
     from: null
     to:
   - unavailable
   - unknown
     for:
     hours: 0
     minutes: 1
     seconds: 0
     conditions: [ ]
     actions:
 - action: notify.mobile_app_iphone_12_toni
   metadata: {}
   data:
   message: Zirkulation offline
   title: "WW "

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)
s.a.: (Neues Update & Features - Hier in der Community 🫶)

Ich gebe auf. Ich verstehe nicht, was das – einen Aqara-Temperatursensor in die Kühltruhe geschmissen – mit einem Stromausfall zu tun hat.

Ganz einfach: wenn es dem Sensor zu warm wird, muss man die Kühltruhe überprüfen (auf Stromausfall, Defekt, Deckel oder Tür offen)

@Hette77Hette77

Ich hab das genau so eingerichtet und es funktioniert bei mir nicht. Läuft es bei dir auch mit Z2M?

alias: Smartplug Schalter
description: ''
triggers:
  - trigger: state
    entity_id:
      - switch.reserve
    for:
      hours: 0
      minutes: 1
      seconds: 0
    to:
      - unavailable
      - unknown
conditions: []
actions:
  - action: notify.mobile_app_iphone16_harald
    metadata: {}
    data:
      message: Schalter
mode: single

Nein ich habe ein Integration.

Ich denke es liegt am Z2MQTT bei euch, mach doch mal die Dose Stromlos und schau bei MQTT, was da als Status ausgegeben wird.

Hast du meine Jaml kopiert und angepasst?

ÜBER! Du willst wissen wenn es zu warm wird :wink:

1 „Gefällt mir“

Das hab ich schon alles durch. Es ändert sich von keiner der Entitäten der Status.

Ich brauch das auch nicht. Es hat mich nur interessiert und deshalb hab ich experimentiert.

Das was HaGoDo schreibt ist der Sinn. Dann weiss ich zumindest das was nicht stimmt.

Ok, den deine geteilte yaml hat mir nicht so richtig eingeleuchtet.

Soweit ich den Eingangs-Beitrag verstanden habe, geht es um die Detektion eines Stromausfalles, dh. konlkret, wenn keine Spannung mehr am Eingang des Kühlgerätes anliegt (das Kühlgerät läuft ja nicht permanent, einfache Leistungsmessung scheidet also aus).

Eine einfache Hauruck-Lösung:

  • Wenn dort WLAN vorhanden ist, irgend einen Shelly (im Grundsatz funktionslos) parallel am/im Kühlgerät (oder Steckdose(n)) anschliessen.

    Ist der Shelly per WLAN erreichbar: gut.
    Ist der Shelly per WLAN nicht mehr erreichbar: nicht gut.

  • Wenn dor nur Zigbee erreichbar ist: irgend ein Zegbee Gerät anschliessen, welches an 220V läuft. Falls es ein Smart-Plug ist: Nicht den Kühlschrank damit einschalten, sondern einfach parallel zum Kühlschrank anhängen.
    Auch hier dann:
    Ist das Zigbee-Gerät via Zigbee erreichbar: gut.
    Ist das Zigbee-Gerät via Zigbee nicht mehr erreichbar: nicht gut.
    Erreichbar oder nicht kann man, indem man zyklisch umschaltet
    Bei mir sieht das dann so aus, wenn der Smart-Plug keinen Strom mehr hat::slight_smile:

    .

Ich könnte mir vorstellen, dass es auch echte Zigbeee-Spannungsmesseräte gibt… warum denn einfach, wenn es kompliziert geht …

Grüsse

Henri

1 „Gefällt mir“

Das ist doch das Problem, dass bei uns “Nicht verfügbar” nicht angezeigt wird.

Eine andere Idee wäre, das Smartplug periodisch, z.B. alle 10 Minuten, auszuschalten und zu überprüfen, ob es wirklich aus ist.
Wenn ja, gleich wieder einschalten, wenn nein, dann Alarm.

Was nützt ein Zigbee-Spannungsmesser, wenn er wegen Stromausfall nichts messen bzw. melden kann? Gibt es batteriegespeiste Zigbee-Spannungsmesser?

Eben getest, funktioniert zuverlässig.Bei einem Kühlgerät reicht wahrscheinlich, die Automation jede Stunde laufen zu lassen. Hier sind zum Testen 5 Sekunden eingestellt:

alias: Alarm Smartplug
description: ''
triggers:
  - trigger: time_pattern
    seconds: /5
conditions: []
actions:
  - action: switch.turn_off
    metadata: {}
    target:
      entity_id: switch.reserve
    data: {}
  - delay:
      hours: 0
      minutes: 0
      seconds: 1
      milliseconds: 0
  - if:
      - condition: switch.is_off
        target:
          entity_id: switch.reserve
        options:
          behavior: any
          for: '00:00:00'
    then:
      - action: switch.turn_on
        metadata: {}
        target:
          entity_id: switch.reserve
        data: {}
    else:
      - action: notify.mobile_app_iphone16_harald
        metadata: {}
        data:
          message: Alarm Smartplug
mode: single

Ich habe es so verstanden, dass er ein Notify Benachrichtigung haben möchte, wenn kein Strom an der Zigbee Steckdose anliegt, z.B. wenn die Sicherung für den Stromkreis rausgeflogen ist.

Ich hatte meinen Jaml Code dazu gepostet, bei dem ich die Dose für meine Zirkulation überwache, heißt, wenn ich die Dose entferne oder kein Strom an der Dose anliegt, bekomme ich eine Notify aufs Handy.

Das schein aber den Zigbee Steckdosen nicht zu so zu funktionieren, wenn ich es richtig verstehe.

Ich hatte mehrmals nach dem Zigbee Status gefragt, wenn kein Strom anliegt.

z.B. Wann wird welcher Status bei Z2MQTT angezeigt, daraus könnte man dann einen Trigger bauen.

Das könnte man natürlich auch mit der der Volt Angabe machen, wie @Osorkon schon geschrieben hat, dafür müsste man aber auch den Z2MQTT zum Zeitpunkt kennen, wenn die Dose stromlos ist.

Ich habe hier irgendwo im Forum gelesen, dass bei manchen Geräten im Z2MQTT der Status, nicht erreichbar, erst nach sehr langer Zeit angezeigt wird.

Leider habe ich keine Zigbee Steckdose um diesen Workaround zu prüfen.

Orksons Lösung funktioniert problemlos mit zha,
Sobald man den Plug während des Betriebs abzieht bleiben die Sensoren auf den letzten Werten stehen.

Die also einfach auf Veränderung nach x Minuten prüfen reicht.

Gerne wiederhole ich mich.
Wenn der Plug ausfällt weil kein Strom und diese nicht als nicht verfügbar angezeigt wird. Sendet dieser keine Daten mehr. Egal ob Kühlschrank oder Gefrierschrank, die Leistung wird im Normalfall immer gemeldet und je nach Leistungsverlauf, änderst sich diese spätestens nach x Minuten.

In diesem Fall: Keine Änderung der Leistung für 30 min, wäre ein eindeutiger Auslöser, dass der Plug offline ist.

Gruß Osorkon