folgende Test-Automatisierung soll eine Steckdose in Abhängigkeit von einer Leistung einschalten. Im aktuellen Beispiel -150 (W), negativer Strombezug (Einspeisung). Es ist aber egal, welche utopischen Wert ich da reinschreibe, z.B. 50000, 0, -9000, … die Steckdose wird immer eingeschalten.
Hintergrund ist, ein Luftentfeuchter im Keller soll einschalten, wenn genügend Solarstrom vorhanden ist.
Wenn ich als Trigger z.B. eine Uhrzeit nehme, dann klappt es.
Noch ein paar Hinweise,
Der trigger sollte schon gehen, ich würde aber sagen… Nur wenn es für mind. 5min ist.
Denn wenn mal ein ganz kurzer solar Ausschlag ist, würde deine automatisierung schon aktiv werden.
Ich habe mir dazu einen sensor erstellt, der den Durchschnittswert der letzten 30min beinhaltet, diesen Wert nehme ich als trigger.
Eine automatisierung die aller 10min schaut… Das ist nicht optimal fürs System, die würde auch in der Nacht aller 10min aktiv sein.
Es war ein Trigger für 10 Minuten drin, den ich aber der Übersicht halber weggelassen habe. Und in der Nacht schläft die Automatisierung, wird im Prinzip durch Sonnenaufgang und Untergang gesteuert.
Was mich nur wundert ist, auch wenn ich total unsinnige Werte, welche in der Realität nie erreicht werden eintippe, die Steckdose schaltet immer ein. Aber vielleicht ist die Logik in Home Assistant anders als meine.
Ich habe es gerade rein interessehalber nachgebaut:
alias: Test unter -150
description: ""
triggers:
- trigger: numeric_state
entity_id:
- sensor.bitshake_smartmeterreader_sgm_power
below: -150
conditions: []
actions:
- action: switch.turn_on
metadata: {}
data: {}
target:
entity_id: switch.hifi_stecker
mode: single
Das funktioniert 1A.
Der Schalter löst nur aus, wenn die Einspeisung größer als 150 W ist (also der Leistungswert unterhalb von -150). Macht natürlich wie bereits angemerkt keinen Sinn ohne eine Zeitkomponente, funktioniert prinzipiell aber. Woran es bei dir speziell lag, dass es nicht funktioniert, kann ich nicht nachvollziehen.
Ja, ist etwas komisch. Habe deinen Code genommen und meine Parameter eingesetzt. Der Schalter wird eingeschalten, obwohl er nicht einschalten sollte. Der Wert wird anscheinend ignoriert.
alias: Test unter -150
description: ""
triggers:
- trigger: numeric_state
entity_id:
- sensor.bitshake_smartmeterreader_e320_power
below: -150000
conditions: []
actions:
- action: switch.turn_on
metadata: {}
data: {}
target:
entity_id: switch.t84_staubsauger_keller
mode: single
Wenn es ein C-Code wäre, würde ich einfach im Debugger durch steppen, ist ja ein Pipifax-Code
by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)
Ist jetzt automatisiert abgelaufen und schaltet trotzdem ein.
Ich verstehe es nicht. Habe ja mehrere Automatisierungen, nach gleichem Schema, welche alle funktionieren, nur bei diesem nicht.
Den Trace kenne ich. Hilft mir aber noch nicht weiter. Muss ihn mit einem funktionierenden vergleichen. Die schalten aber gerade nicht. Jedenfalls der Vergleichsparameter -150000 kommt da nicht vor, was mich etwas wundert.
Alles klar.
Ich werde es gemäß dem Vorschlag von LacTyyn implementieren. Da sind die Conditions drinnen und es funktioniert.
Besten Dank
by HarryP: Zusammenführung Doppelpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)
Funktioniert auch.
Aber der erste Trigger “- trigger: numeric_state” ist nicht notwendig.
Jedenfalls habe ich jetzt gelernt, wie Trigger und Condion in Home Assistant zu interpretieren sind.
Zusatz. Wenn die “for…” Bedingung notwendig ist, dann muss der erste Trigger doch drinnen sein.
Zusatz 2, der Vollständigkeit halber:
In meinem Fall ist es so, dass ich in den ersten Trigger bei der Leistung reinschreiben kann was ich will, das hat keine Auswirkung. Allein
“time_pattern” ist hier ausschlaggebend.
Unter “Conditions” kann man keine “for” Bedingung mehr reinbringen, also wie lange ein Wert vorhanden sein soll, bis ausgelöst wird.
Um jetzt noch die “for” Bedingung reinbringen zu können, habe ich für die Leistung einen Statistik Helfer erstellt, der mir den Mittelwert der Leistung über eine bestimmt Zeit liefert. Zusammen mit dem “time_pattern” wird dadurch ein On/Off Verhalten reduziert.