DOIF-Zweig: Ausschalten nach Zufallszeit - mir fehlt die Idee

Begonnen von Jogi, 09 März 2023, 14:17:02

Vorheriges Thema - Nächstes Thema

Jogi

Hallo,
ich habe ein DOIF mit folgendem letzten Zweig (vor DOELSE):
DOELSEIF ([21:15-22:00] and [Helligkeit] < 1) (set HUEDevice5 rgb 111170 : bri 245 : transitiontime 100)
Ich möchte jetzt aber, dass das Ende der Zeit nicht 22:00 Uhr ist, sondern durch einen Zufall zwischen 22:00-23:00 Uhr bestimmt und geschaltet wird.
Ich habe leider keine Ahnung wie ich das einbauen kann.
Bei meiner Suche habe ich das hier gefunden:
define di_wz_TVLampee DOIF ([({sunset()}+900+int(rand(1800)))]) (set wz_TVLampe on) DOELSEIF ([([23:59]+int(rand(1800)))])
was mir aber leider nicht weiter hilft, weil ich in meinem DOIF immer diese Zeitdefinitionen habe
[21:15-22:00]
Die ersten Zweige sollen auch so bleiben, aber beim letzten (siehe oben) hätte ich gerne den Zufallsgenerator mit drin.
Hat jemand einen Tipp für mich?
Danke.

Otto123

#1
attr ... wait rand(3600)

Natürlich an der richtigen Stelle/für den entsprechenden Zweig :) weiß ja nicht wieviele es sind.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Jogi

Zitat von: Otto123 am 09 März 2023, 14:57:51
attr ... wait rand(3600)

Natürlich an der richtigen Stelle/für den entsprechenden Zweig :) weiß ja nicht wieviele es sind.
Vielen Dank Otto,
die Idee mit dem wait hatte ich auch schon mal recherchiert.
Allerdings müsste ich das dann für den DOELSE-Zweig definieren und dann gilt das für jedes Ausschalten. Ich möchte aber das Ausschalten über Zufall nur für Zweig 6 haben. Ich könnte das komplette DOIF natürlich auch umbauen.
Ich präzisiere meine Frage daher noch einmal:
Mich interessiert aber, ob es möglich ist, eine Zeitangabe in der Form
[21:15-22:00]
so verändern kann, dass eine der beiden Zeiten (bei mir das Ende, also 22:00 Uhr) durch Zufall in einem bestimmten Zeitraum (zwischen 220:00-22:30 Uhr) geschaltet wird.

Zur Vollständigkeit hier das ganze DOIF.

([17:00-19:00] and [Helligkeit] < 1) (set HUEDevice5 on) (set HUEDevice5 rgb AB2E54 : bri 200)## 1 gelb
DOELSEIF ([Alarmanlage] eq "on" and [19:00-20:00] and [Helligkeit] < 1)(set HUEDevice5 rgb AB2E54 : bri 200)## 2 rose,rot
DOELSEIF ([Alarmanlage] eq "on" and [20:00-20:30] and [Helligkeit] < 1)(set HUEDevice5 rgb 6E1349 : bri 245 : transitiontime 100) ## 3 rose
DOELSEIF ([20:30-21:00] and [Helligkeit] < 1) (set HUEDevice5 rgb 0580FB : bri 245 : transitiontime 100) ## 4 helles türkis
DOELSEIF ([Alarmanlage] eq "on" and [21:00-21:15] and [Helligkeit] < 1) (set HUEDevice5 rgb 337687 : bri 245 : transitiontime 100)## 5 türkis
DOELSEIF ([21:15-22:00] and [Helligkeit] < 1) (set HUEDevice5 rgb 111170 : bri 245 : transitiontime 100) ## 6 dunkles blau
DOELSEIF ([Alarmanlage] eq "on" and [22:00-22:30] and [Helligkeit] < 1) (set HUEDevice5 rgb 000073 300 : transitiontime 100) ## 7 dunkles weiss
DOELSE (set HUEDevice5 off) ## 8 AUS

laberlaib

Du kannst doch unterschiedliche wait`s für jeden Zweig definieren, per Doppelpunkt getrennt.
Und dann halt 0:0:0:0:0:rand(123):0:0
So schreibts Otto doch auch.

Oder übersehe ich auf dem handybildschirm irgendwas?

Einfache Alternative : lege Dir einen Dummy an und fülle den zu Tagesbeginn mit einer Zufallsuhrzeit. Den nutzt Du dann in der Formel.
Mach ich so der Übersichtlichkeit halber mit Rollläden, gekoppelt an den Sonnenaufgang  und -Untergang.
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

Jogi

#4
Zitat von: laberlaib am 10 März 2023, 10:44:15
Oder kann ich anstatt einer der beiden Zeiten einen Dummy einfügen? Wenn "ja", wie?
so geht das https://fhem.de/commandref_modular_DE.html#DOIF_Indirekten_Zeitangaben

yersinia

Das geht in der Tat, hier mit einer Zufallszahl zwischen 0 und 300 Sekunden:
[21:15-([22:00]+int(rand(300)))]
=> https://fhem.de/commandref_DE.html#DOIF_Zeitsteuerung_mit_Zeitberechnung
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Otto123

Mist sorry, irgendwie habe ich Beitrag von Jogi editiert anstatt zu zitieren.  Ich bekomme das Original nicht wieder hergestellt.
Enstchduldigung

Meine Antwort:

so geht das https://fhem.de/commandref_modular_DE.html#DOIF_Indirekten_Zeitangaben
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Jogi

Zitat von: yersinia am 10 März 2023, 11:18:04
Das geht in der Tat, hier mit einer Zufallszahl zwischen 0 und 300 Sekunden:
[21:15-([22:00]+int(rand(300)))]
=> https://fhem.de/commandref_DE.html#DOIF_Zeitsteuerung_mit_Zeitberechnung
Super, das werde ich sofort mal einbauen. Wenn es funktioniert ist es genau das, was ich gesucht habe.
Das hatte ich bei meiner Recherche leider nicht gesehen/gefunden.

Vielen Dank!

Damian

Zitat von: Jogi am 10 März 2023, 11:55:59
Super, das werde ich sofort mal einbauen. Wenn es funktioniert ist es genau das, was ich gesucht habe.
Das hatte ich bei meiner Recherche leider nicht gesehen/gefunden.

Vielen Dank!

Warum sollte es nicht funktionieren. Das besondere am "berechneten Zufall" ist, dass du im Gegensatz zum Einbrecher heute schon weißt, wann die Lampe heute ausgehen wird :)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Jogi

Zitat von: Otto123 am 10 März 2023, 11:32:20
Mist sorry, irgendwie habe ich Beitrag von Jogi editiert anstatt zu zitieren.  Ich bekomme das Original nicht wieder hergestellt.
Enstchduldigung

Meine Antwort:

so geht das https://fhem.de/commandref_modular_DE.html#DOIF_Indirekten_Zeitangaben
Alles gut, kein Problem  ;D