Hallo zusammen,
in einer Testumgebung habe ich mal ASC aktiviert, nachdem ich ueber einige Jahre nun das urspruengliche Skript mit 14 Homematicaktoren (868MHz) weitgehend zufriedenstellend nutze.
Im noch aktiven System wird in die Fahrzeitberechnung eine Zufallskomponente eingestreut, sodass so gut wie nie 2 Rolllaeden gleichzeitig fahren (ausser bei der Abschattung). Dies finde ich sehr gut und wuerde es sehr gerne auch in ASC konfigurieren, kriege es aber iwie nicht hin - wahrscheinlich bin ich zu bloed oder uebersehe etwas; weiss aber auch nicht so recht, wonach ich das Forum durchsuchen soll, um die Info zu finden.
Im Devsystem habe ich die Aktoren als Dummies abgebildet - hier ein Beispiel:
defmod Device.HM.Rollo.EG.AZ dummy
attr Device.HM.Rollo.EG.AZ ASC 2
attr Device.HM.Rollo.EG.AZ ASC_BrightnessSensor Info.Sonne:twilight_weather
attr Device.HM.Rollo.EG.AZ ASC_Down brightness
attr Device.HM.Rollo.EG.AZ ASC_LockOut soft
attr Device.HM.Rollo.EG.AZ ASC_Pos_Reading pct
attr Device.HM.Rollo.EG.AZ ASC_Shading_InOutAzimuth 50:155
attr Device.HM.Rollo.EG.AZ ASC_Shading_MinMax_Elevation 10:100
attr Device.HM.Rollo.EG.AZ ASC_Shading_Mode always
attr Device.HM.Rollo.EG.AZ ASC_Shading_Pos 30
attr Device.HM.Rollo.EG.AZ ASC_Shading_StateChange_SunnyCloudy 90:60
attr Device.HM.Rollo.EG.AZ ASC_TempSensor Info.Proplanta
attr Device.HM.Rollo.EG.AZ ASC_Time_Down_Early 17:30
attr Device.HM.Rollo.EG.AZ ASC_Time_Down_Late 23:00
attr Device.HM.Rollo.EG.AZ ASC_Time_Up_Early 07:00
attr Device.HM.Rollo.EG.AZ ASC_Time_Up_Late 09:00
attr Device.HM.Rollo.EG.AZ ASC_Time_Up_WE_Holiday 08:59
attr Device.HM.Rollo.EG.AZ ASC_Up brightness
attr Device.HM.Rollo.EG.AZ ASC_WindProtection off
attr Device.HM.Rollo.EG.AZ event-on-change-reading pct
attr Device.HM.Rollo.EG.AZ readingList pct
attr Device.HM.Rollo.EG.AZ room Rollladen
attr Device.HM.Rollo.EG.AZ setList pct:slider,0,5,100
attr Device.HM.Rollo.EG.AZ stateFormat ASC_ShadingMessage
attr Device.HM.Rollo.EG.AZ webCmd pct
Die anderen sind entsprechend definiert und weichen primaer nur ab in
attr Device.HM.Rollo.EG.AZ ASC_Shading_InOutAzimuth 50:155
und ASC wie folgt definiert:
defmod Control.ASC AutoShuttersControl
attr Control.ASC ASC_autoAstroModeEvening CIVIL
attr Control.ASC ASC_autoAstroModeMorning CIVIL
attr Control.ASC ASC_autoShuttersControlEvening on
attr Control.ASC ASC_brightnessDriveUpDown 80:80
attr Control.ASC ASC_expert 1
attr Control.ASC ASC_shuttersDriveDelay 900
attr Control.ASC ASC_tempSensor Info.Proplanta:temperature
attr Control.ASC ASC_twilightDevice Info.Sonne
attr Control.ASC ASC_windSensor Info.Proplanta:wind
attr Control.ASC devStateIcon { ShuttersControl_DevStateIcon($name) }
attr Control.ASC icon fts_shutter_automatic
attr Control.ASC room ASC,Rollladen
attr Control.ASC webCmd ascEnable:controlShading:partyMode:renewAllTimer
attr Control.ASC webCmdLabel Enable:Shading:PartyMode: ;
Hiermit fahren alle Rollladen leider gleichzeitig hoch bzw. runter wie hier im Logfile zu sehen ist:
2023-08-24_07:10:01 Device.HM.Rollo.EG.WZ.Garten pct: 100
2023-08-24_07:10:01 Device.HM.Rollo.EG.Kueche.Einfahrt pct: 100
2023-08-24_07:10:01 Device.HM.Rollo.OG.Bad pct: 100
2023-08-24_07:10:01 Device.HM.Rollo.OG.Felix pct: 100
2023-08-24_07:10:01 Device.HM.Rollo.OG.Julian pct: 100
2023-08-24_07:10:01 Device.HM.Rollo.EG.Bad pct: 100
2023-08-24_07:10:01 Device.HM.Rollo.OG.Eltern.links pct: 100
2023-08-24_07:10:01 Device.HM.Rollo.EG.WZ.Strasse pct: 100
2023-08-24_07:10:01 Device.HM.Rollo.OG.Eltern.rechts pct: 100
2023-08-24_07:10:01 Device.HM.Rollo.OG.David pct: 100
2023-08-24_07:10:01 Device.HM.Rollo.EG.Kueche.Strasse pct: 100
2023-08-24_07:10:01 Device.HM.Rollo.EG.Essen pct: 100
2023-08-24_07:10:01 Device.HM.Rollo.EG.AZ pct: 100
2023-08-24_07:10:01 Device.HM.Rollo.EG.WZ.Terrasse pct: 100
Also, um es kurz zu fassen: Wie kriege ich diese Zufallskomponente wieder hin?
Vielen Dank schonmal!
/elle
Bei mir funktioniert das Attribut ASC_shuttersDriveDelay mit einer Zufallsveränderung um 180 Sekunden gut. Allerdings ist meine Erwartung, dass dabei bis zu drei Minuten Unterschied entstehen (quasi ein Rundgang durchs Haus simuliert wird) nicht aufgegangen. Die Rollläden fahren nah beieinander, ich würde sagen: Bis zu 10 Sekunden zufällige Verzögerung.
Ansonsten kann ich das Modul wirklich nur empfehlen, es "fasst sich anfangs sperrig an", ist aber superflexibel und anpassbar. Ich möchte es nicht mehr missen.
Zitat von: cwagner am 24 August 2023, 11:54:25Bei mir funktioniert das Attribut ASC_shuttersDriveDelay mit einer Zufallsveränderung um 180 Sekunden gut. Allerdings ist meine Erwartung, dass dabei bis zu drei Minuten Unterschied entstehen (quasi ein Rundgang durchs Haus simuliert wird) nicht aufgegangen. Die Rollläden fahren nah beieinander, ich würde sagen: Bis zu 10 Sekunden zufällige Verzögerung.
Ansonsten kann ich das Modul wirklich nur empfehlen, es "fasst sich anfangs sperrig an", ist aber superflexibel und anpassbar. Ich möchte es nicht mehr missen.
Hmm, die Verzoegerung ist mir eigentlich zu wenig - ich kenne kaum jemanden (mich einschliesslich), der durch's Haus geht und alle Rolllaeden nacheinander bedient (rauf oder runter). Daher fand ich diese Verzoegerung so klasse - in der Produktivumgebung sieht es heute so bei mir aus:
Device.HM.Rollo.EG.AZ 2023-08-24 03:05:00 21:30:39
Device.HM.Rollo.EG.Bad 2023-08-24 03:05:00 20:53:59
Device.HM.Rollo.EG.Essen 2023-08-24 03:05:00 21:31:55
Device.HM.Rollo.EG.Kueche.Einfahrt 2023-08-24 03:05:00 21:02:13
Device.HM.Rollo.EG.Kueche.Strasse 2023-08-24 03:05:00 21:30:11
Device.HM.Rollo.EG.WZ.Garten 2023-08-24 03:05:00 21:26:09
Device.HM.Rollo.EG.WZ.Terrasse 2023-08-24 03:05:00 21:29:55
Device.HM.Rollo.OG.Bad 2023-08-24 03:05:00 20:58:11
Device.HM.Rollo.OG.Eltern.links 2023-08-24 03:05:00 21:20:09
Device.HM.Rollo.OG.Eltern.rechts 2023-08-24 03:05:00 21:20:12
Device.HM.Rollo.OG.KindA 2023-08-24 03:05:00 21:16:40
Device.HM.Rollo.OG.KindB 2023-08-24 03:05:00 21:00:11
Also alle unterschiedlich innerhalb ca. einer halben Stunde.
Sowas haette ich gerne, falls ich auf ASC umstellen sollte.
Die Vorzuege habe ich auch schon erkannt, aber das Feature ist mir schon ziemlich wichtig ...
Wie bereits gesagt wurde sollte das Attr ASC_shuttersDriveDelay aus dem ASC Device entfernt werden.
Danach kann man dann für jedes Rollo ASC_Drive_DelayStart entsprechend in Sekunden setzen.
Damit starten dann die Rollofahrten entsprechend der angebenden Verzögerungszeit.
Oh, das habe ich wahrscheinlich uebersehen/nicht gefunden.
Sehe ich aus diesem Stueck aus Shutters.pm richtig, dass der hier angegebene Wert als Input fuer rand benutzt wird:
$offSet = $FHEM::Automation::ShuttersControl::shutters->getDelay
if ( $FHEM::Automation::ShuttersControl::shutters->getDelay > -1 );
$offSet = $FHEM::Automation::ShuttersControl::ascDev->getShuttersOffset
if ( $FHEM::Automation::ShuttersControl::shutters->getDelay < 0 );
$offSetStart =
$FHEM::Automation::ShuttersControl::shutters->getDelayStart;
[.... SNIP ....]
elsif ( $offSetStart > 0
&& !$FHEM::Automation::ShuttersControl::shutters->getNoDelay )
{
::InternalTimer(
::gettimeofday() + int(
rand($offSet) +
$FHEM::Automation::ShuttersControl::shutters
->getDelayStart
),
\&FHEM::Automation::ShuttersControl::SetCmdFn,
\%h
);
Wenn ja, dann muesste ich ja mit
attr <ShutterDevice> ASC_Drive_Delay 1800
die gewuenschte Zufallszeit innerhalb von 30 Minuten bekommen. Oder sehe ich das falsch?
Werde ich gleich mal ausprobieren.
Danke!
Mit ASC_Drive_Delay wird noch mal rand(1800) mit draufgehauen. Es muss aber dafür ASC_Drive_DelayStart gegeben werden.
Also sowas wie ASC_Drive_DelayStart 1 und dann noch ASC_Drive_Delay 1800.
Aber wäre es nicht besser einfach die Werte für Sonnenaufgang und Sonnenuntergang etwas zu ändern durch leichte Horizont Verschiebung?
Irgendwie verstehe ich das Anliegen auch nicht so ganz.
Wieso soll ein so großes Delay zwischen die Fahrten? Anwesenheitssimulation?
Hallo CoolTux,
nochmals danke. Da bin ich wohl mit ASC_Drive_Delay und ASC_Drive_DelayStart durcheinander gekommen. Da steht ja auch:
$offSet = $FHEM::Automation::ShuttersControl::shutters->getDelay
if ( $FHEM::Automation::ShuttersControl::shutters->getDelay > -1 );
$offSet = $FHEM::Automation::ShuttersControl::ascDev->getShuttersOffset
if ( $FHEM::Automation::ShuttersControl::shutters->getDelay < 0 );
$offSetStart =
$FHEM::Automation::ShuttersControl::shutters->getDelayStart;
[...snip...]
int(
rand($offSet) +
$FHEM::Automation::ShuttersControl::shutters
->getDelayStart
),
Wer lesen (und verstehen!) kann, ist klar im Vorteil.
Der Sinn ist tatsaechlich eine Art Anwesenheitssimulation.
Als die Rolllaeden zwar elektrisch, aber noch nicht automatisiert waren, bin ich ja auch nicht in einer festen Runde durch's Haus gegangen (ausser kurz vor'm Schlafengehen, falls noch etwas offen war), sondern habe die Rolllaeden etwa zum Sonnenuntergang oder danach zugemacht, so wie ich daran vorbeikam. Da war die Reihenfolge, aber auch die Streuung der Fahrtzeiten zufaellig und dieses habe ich mit Bernds Skript auch so gehabt und finde es nett.
Ich finde es immer komisch, wenn z.B. bei unseren Nachbarn alle Rolllaeden im EG gleichzeitig fahren - im OG machen die das alles von Hand und da ist es auch nicht gleichzeitig oder in einer Runde ...
Uebrigens - hat es irgendeinen speziellen Grund, warum Du, obwohl Du schon
$offsetStart = $FHEM::Automation::ShuttersControl::shutters->getDelayStart;
zugewiesen und im if(...) benutzt hast, danach nicht $offsetStart beim Berechnen des Timers nimmst? Es wird (fast?) keinen Unterschied machen, da die Runtime das eh optimieren wird, aber es hat mich ueberrascht ...
Ansonsten gute Arbeit! Danke dafuer!
Gruss
/elle