Rollladen automatik will nicht immer

Begonnen von sven.scherf, 09 Juni 2016, 21:21:33

Vorheriges Thema - Nächstes Thema

sven.scherf

Hallo,

ich habe mir eine Rollladensteuerung zusammen geschrieben wo ich auch teile der Steuerung aus einigen Dokus rausgelesen habe.
So langsam bin ich aber am verzweifeln weil es einfach nicht so geht wie es soll.

Ich habe einen at Befehl(Rollladen_alle_Zufall_oben) geschrieben der mir Nachts um 00:05:00 eine Zufallszahl generiert und den at Befehl(Rollladen_alle_oben) modifiziert.
In einigen Dokus habe ich es jedoch so gelesen, dass der at Befehl(Rollladen_alle_oben) immer neu definiert und nicht modifiziert wird, dies hat bei mir jedoch nicht funktioniert.

Zusätzlich setze ich Lampe1 mit der Zeit um hier eine weitere Kontrolle zu haben.

Nun zu dem Punkt was nicht funktioniert.
Wenn ich nun den at Behfehl(Rollladen_alle_Zufall_oben) der den at Befehl(Rollladen_alle_oben) modifiziert mit execNow teste wird mir sporadisch nur die Zeit bei Lampe1 verändert und der eigentliche at Befehl(Rollladen_alle_oben) bleibt unverändert.


define Lampe1 dummy
attr Lampe1 room Rollladen
attr Lampe1 webCmd on:off

define Rollladen_alle_oben at *09:00:00 set Rollladen_alle oben
attr Rollladen_alle_oben room Rollladen

define Rollladen_alle_Zufall_oben at *00:05:00 { \
if (!$we) { \
my $Zufallszahl = int(rand(15) +1 );; \
my $Uhr = "05:".(30 + $Zufallszahl).":".$Zufallszahl;; \
fhem("set Lampe1 ".$Uhr);; \
fhem("modify Rollladen_alle_oben *".$Uhr);; \
}else{ \
my $Zufallszahl = int(rand(15) +1 );; \
my $Uhr = "07:".(45 + $Zufallszahl).":".$Zufallszahl;; \
fhem("set Lampe1 ".$Uhr);; \
fhem("modify Rollladen_alle_oben *".$Uhr);; \
} \
}
attr Rollladen_alle_Zufall_oben room Rollladen


Hat hier einer eine Idee woran dies liegen kann ?

Meine fhem Version ist
fhem.pl           11454 2016-05-15 19:33:56Z rudolfkoenig
90_at.pm          11342 2016-04-29 11:25:51Z rudolfkoenig

Viele Grüße

Sven
Raspi 3 mit CUL Stick 433/868MHZ, Homematic

sven.scherf

Hallo,

ich habe nun mal alle Tabs entfernt und mein code sieht nun so aus


define Rollladen_alle_Zufall_oben at *00:05:00 { \
if (!$we) { \
my $Zufallszahl = int(rand(15) +1 );; \
my $Uhr = "05:".(30 + $Zufallszahl).":".$Zufallszahl;; \
fhem("set Lampe1 ".$Uhr);; \
fhem("modify Rollladen_alle_oben *".$Uhr);; \
}else{ \
my $Zufallszahl = int(rand(15) +1 );; \
my $Uhr = "07:".(45 + $Zufallszahl).":".$Zufallszahl;; \
fhem("set Lampe1 ".$Uhr);; \
fhem("modify Rollladen_alle_oben *".$Uhr);; \
} \
}


Die lesbarkeit ist nun bescheiden.
Hiermit habe ich schon einmal erreicht, dass bei Lampe1 immer die Zeit geändert wird.
Bei dem Rollladen_alle_oben bleibt die Zeit jedoch unverändert.

Fällt jemadem hier der Fehler auf ?

Viele Grüße

Sven

Raspi 3 mit CUL Stick 433/868MHZ, Homematic

ht

Hi Sven,

beim Setzen der Uhrzeit verwendest Du die Zufallszahl auch für die Sekunden. Bei Werten kleiner 10 käme dann etwas wie 05:31:1 heraus. Das ist keine gültige Uhrzeit, bei einem kurzen Test kriege ich folgendes:

modify Rollladen_alle_oben *05:31:1
Wrong timespec 05:31:1: either HH:MM:SS or {perlcode}


Setz doch einfach die Sekunden immer auf 00, die zufälligen Minuten sollten ja reichen. Guck Dir auch noch mal die Wochenendezeit an. Zufall könnte doch 15 werden, und dann käme da 07:60:15 raus ;)

Grüße,
Volker
FHEM 5.7, RasPI 2, HomeMatic über HMUSB, JeeLink Clone, Viessmann Heizung

sven.scherf

Hallo Volker,

vielen Dank das war es.

Eigentlich sollte es logisch sein, aber manchmal der Wald und die Bäume.


Viele Grüße

Sven
Raspi 3 mit CUL Stick 433/868MHZ, Homematic