ich hab ein kleines Problem und bin nicht sicher ob dies mit Homeassistent umsetzbar ist.
Ich benötige einen Timer der für eine gewisse Zeit (z.b. 60 Minuten) läuft. In dieser Zeitspanne soll zufällig (z.b. zwischen 2-5 Minuten), eine Steckdose eingeschaltet werden die dann eine zufällige Zeit (z.b. zwischen 1-4 Minuten) läuft, danach soll die Steckdose wieder abgeschaltet werden und das ganze Spiel geht von vorne los (innerhalb der Timer Zeit von z.b. 60 Minuten).
Ich hoffe ich konnte das ganze verständlich erklären. Ich Scheiter aber allerdings bei der Umsetzung. Hat vielleicht jemand Tipps, oder besser noch, eine Lösung? Schön wäre, wenn man das alles in der Automation quasi immer wieder dynamisch eingeben kann, ist aber kein muss ;-.).
Gerne steh ich für Rückfragen zur Verfügung und danke im Vorfeld.
den manuellen Schalter AN/AUS steuerst Du über eine Automatisation, die Deinen Zeitraum abdeckt, z.B. 19:00 Uhr → An, 20:00 Uhr → Aus (= Deine 60 min)
natürlich statt Pumpe ist das bei Dir die Steckdose
aus dem 6min Timer1 wird bei Dir die Dauer zufällig bestimmt zwischen 2-5 min {{ range(120, 300) | random }} → Steckdose AN
aus dem 2 min Timer2 wird bei Dir wieder zufällig die Dauer bestimmt zwischen 1-4 min {{ range(60, 240) | random }} → Steckdose AUS
Die Idee: Eine Automatisation startet und beendet die Simulation. In diesem Zeitraum wird sowohl die Dauer der Steckdose AN als auch die Dauer der Steckdose AUS über einen Zufallsmechanismus bestimmt, dessen Grenzen Du setzt. Das Auslaufen des einen Timers startet den anderen Timer und damit den Zustand der Steckdose.
dank dir schon mal für den Anstoss. Ich hab das Script jetzt soweit auf meine Umgebung angepasst, erhalte aber beim Versuch das ganze zu Speichern folgenden Fehler:
homeassistent Message malformed: extra keys not allowed @ data[‘triggers’]
Aktuell geh ich von einem Formatierungsfehler aus, such mich aber gerade “dämlich”. Den Fehler erhalte ich auch, wenn ich dein Script 1:1 versuche zu via YAML zu speichern.
Irgendeine Idee?
Update: Ist natürlich eine Automation, und kein Script - MyFault. Ich experimentiere mal rum und gebe dir dann eine Rückmeldung.
So, ich hab das ganze mal angepasst, ich hab die entsprechenden Timer unter Helfer angelegt, jeweils mit 6 und 2 Minuten. Wenn ich die Random Duration im Yaml Code hinterlegen will, verschwinden die wieder.
Jetzt habe ich verstanden was Du meinst. Beim Anlegen des Timer Helfers kannst, mußt aber nicht eine Dauer mitgeben. Dies machst Du nachher über den Auruf aus der Automatisation. Wichtiger ist daß Du beim Anlegen diesen Haken setzt.
Hab die Timer entsprechend angepasst das der Zustand jetzt erhalten bleibt. Ebenfalls hab ich jetzt die Random Variable rein bekommen. Interessanterweise geht das nicht, wenn ich das im ganzen Bearbeite, sondern nur in dem jeweiligen Drop Down Menu. Das sieht, bis hierhin, zumindest gut aus.
Zum Verständnis für mich. Um das ganze jetzt auf diese eine Stunde einzugrenzen muss ich jetzt in der Automation im oberen Segment die Uhrzeit oder die Dauer konfigurieren, korrekt?
Ich hab das mit der Auslöser ID noch nicht ganz verstanden, anbei mal ein Screenshot der aktuell folgenden Einstellung dafür:
Dies erkläre bitte etwas mehr, am Besten mit Screenshot(s).
triggers:
- trigger: state
entity_id:
- scene.steckdose_multiswitch_random_an_aus
from: "off"
to: "on"
id: SchalterAn
...
- trigger: state
entity_id:
- scene.steckdose_multiswitch_random_an_aus
from: "on"
to: "off"
id: SchalterAUS
Ich sehe in Deinem Code, Du versuchst über eine Szene den Schalter einzuschalten und damit den 60 min Zeitraum. Aber wann endet dieser? Laut Trigger, wenn der Schalter manuell auf Aus gestellt wird. Sieht noch nicht rund aus.
Um auf Deine Frage zu antworten: Über eine Automatisation mit festen Zeiten brauchst Du nur, wenn Du das so willst. Denkbar wäre auch ein Kalender Helfer, wo Du die Zeiten hinterlegst. Oder eben etwas was Deine Szene aktiviert und wieder deaktiviert. In dem anderen Post sah ich auch einen gelobten HACS Scheduler, ginge genauso. Du bräuchtest streng genommen auch keine gesonderte Automatisation sondern nur eine - dann müßtest Du Zeiten als Trigger setzen und die Optionen bzw. Aktionen anpassen. Sobald Du etwas mehr Erfahrungen hast, würde ich es so machen. Fürs Erste trenne in überschaubare Logiken.
Probiere einfach was Dir liegt.
Wichtig ist, der Schalter wird planmäßig AN und wieder AUS gestellt!
Wenn Du mehrere Trigger hast in einer Automatisation und hinter bestimmten soll eine gesonderte Action folgen, dann kannst Du im Action Teil sagen, Wenn der Trigger mit TriggerID = xyz, dann mache dies und das. Im oberen choose/conditions erreicht. “Ausgelöst durch” ist das Menüwort. Genauso wäre ein WENN/DANN Konstrukt möglich.