Hallo zusammen,
ich habe mir mit Fhem auch meine Rollladensteuerung automatisiert.
Nun kommt es ja mal vor, dass man diese Steuerung deaktivieren möchte.
Damit ich sie nicht immer wieder erneut aktiviern muss, sofern sie nur einmal deaktivert werden soll habe ich mir hier den Schalter Rollladen_next_Automatic = on:off einfallen lassen.
Wenn dieser Schalter off gesetzt ist, soll die Automatic einmal deakiviert sein.
Soweit so gut, der AT - Befehl erkennt den Schaltzustand und soll nun den Schaltzustand von Off wieder auf On schalten und die Rollläden sollen dann aber nicht fahren.
Ich habe die Programmierung(AT-Befehl) mit set Rollladen_alle_oben execNow überprüft und es funktionierte.
Mit der eigentlichen Automatic funktioniert es aber nicht.
Der Schalter wird Off nach OIn geschaltet und die Rollläden fahren trotzdem.
Es scheint so zu sein, dass Fhem das AT - Command mehrmals absetzt um hier sicherzustellen, dass dies auch ausgeführt wird.
Was für eine Möglichkeit habe ich hier damit meine Steuerung funktioniert.
Hier mein Code.
define Rollladen_alle_oben at *06:40:00 \
{if (Value("Rollladen_next_Automatic") eq "off") \
{fhem("set Rollladen_next_Automatic on")} \
else \
{fhem("set Rollladen_alle oben") } \
}
attr Rollladen_alle_oben room Rollladen
Viele Grüße
Sven
ZitatEs scheint so zu sein, dass Fhem das AT - Command mehrmals absetzt um hier sicherzustellen, dass dies auch ausgeführt wird.
Mit Sicherheit nicht.
Dein Fehler scheint woanders zu liegen.
Grüße Markus
Hast du eine Ahnung wo ich suchen kann ?
Wo ist denn Rolladen_next_Automatic noch "eingebaut"?
Da wird wahrscheinlich der Fehler liegen.
Bestimmt in einem DOIF.
Gesendet von iPhone mit Tapatalk
Hi Sven,
zunächst mal scheint es einen Tippfehler im Fhem-Befehl im Else-Zweig zu geben: Dort steht "set Rollladen_alle oben" müsste das nicht sowas wie "set Rollladen_alle_oben on" heißen?
Also das "oben" noch mit Unterstrich Bestandteil des Namens, und dann noch den Befehl dazu?
Wenn das allerdings so korrekt sein sollte, empfiehlt es sich immer eher, jedes Rolladendevice direkt zu schalten (anstatt einen "Sammeldummy" zu kreieren). Das kann ja in einem Schritt mit einer DevSpec passieren z.B.:
set Rolladen_.* oben
Da empfiehlt sich eine schöne Namensstruktur, dann braucht man auch nicht weiter zu filtern. Testen kannst du diese "DevSpec"s mit dem List-Befehl. Dort werden dann alle Devices als Ergebnis aufgelistet, die dieser DevSpec betrifft...
Ansonsten bräuchten wir für eine echte Hilfe, wie jemand schon geschrieben hat, alle Stellen, die irgendwie auf deine Devices einwirken: Notify/DoIf/At...
Grüße
Reinerlein
Und am besten ein list dieser Devices. Ansonsten kann man halt nur raten.
Hallo,
vielen Dank euch allen es wäre besser gewesen wenn ich gleich alle Infos hierein gepackt hätte.
Ich habe nun alles aus der Konfigdatei herausgezogen und hoffe nichts vergessen zu haben.
Der AT - Befehl der die Rollläden nach oben fährt
define Rollladen_alle_oben at *06:40:00 \
{if (Value("Rollladen_next_Automatic") eq "off") \
{fhem("set Rollladen_next_Automatic on")} \
else \
{fhem("set Rollladen_alle oben") } \
}
attr Rollladen_alle_oben room Rollladen
Der AT - Befehl der die Rollläden nach unten fährt
define Rollladen_alle_unten at *{sunset("REAL",1800,"18:00","23:00")} \
{if (Value("Rollladen_next_Automatic") eq "off") \
{fhem("set Rollladen_next_Automatic on")} \
else \
{fhem("set Rollladen_alle unten") } \
}
attr Rollladen_alle_unten room Rollladen
Die Fahrzeiten werden von dem folgendem AT angepasst.
Dies Funktionalität ist in Ordnung und läuft einwandfrei
define Rollladen_alle_Zufall_oben at *00:05:00 { \
if (!$we) { \
my $Zufallszahl = int(rand(15) +1 );; \
my $Uhr = "06:".(30 + $Zufallszahl).":00";; \
fhem("set Lampe1 ".$Uhr);; \
fhem("modify Rollladen_alle_oben *".$Uhr);; \
}else{ \
my $Zufallszahl = int(rand(15) +1 );; \
my $Uhr = "07:".(44 + $Zufallszahl).":00";; \
fhem("modify Rollladen_alle_oben *".$Uhr);; \
fhem("set Lampe1 ".$Uhr);; \
} \
}
attr Rollladen_alle_Zufall_oben room Rollladen
Hier der Dummy Schalter Automatic Dummy
Dies funktioniert auch einwandfrei. Hier schalte ich die Automatic kpl. aus und an
define Rollladen_Automatic dummy
attr Rollladen_Automatic room Rollladen
attr Rollladen_Automatic webCmd on:off
Dies der Schalter der die Automatik einmal abschalten soll.
Dies funktioniert nicht einwandfrei
define Rollladen_next_Automatic dummy
attr Rollladen_next_Automatic room Rollladen
attr Rollladen_next_Automatic webCmd on:off
set Rollladen_next_Automatic on
Wenn ich den Schalter Rollladen_next_Automatic mit execNow überprüfe funktioniert es einwandfrei.
Mit der eigentlichen Automatic funktioniert es aber nicht.
Der Schalter wird Off nach OIn geschaltet und die Rollläden fahren trotzdem.
Vielen Dank schon mal.
Sven
Wie ist der Dummy "Rollladen_Automatic" in der Logik involviert?
Wie sieht das Device "Rollladen_alle" aus?
Gruß
Zitat von: sven.scherf am 05 Mai 2017, 07:48:59
Hallo,
vielen Dank euch allen es wäre besser gewesen wenn ich gleich alle Infos hierein gepackt hätte.
Ich habe nun alles aus der Konfigdatei herausgezogen und hoffe nichts vergessen zu haben.
Der AT - Befehl der die Rollläden nach oben fährt
define Rollladen_alle_oben at *06:40:00 \
{if (Value("Rollladen_next_Automatic") eq "off") \
{fhem("set Rollladen_next_Automatic on")} \
else \
{fhem("set Rollladen_alle oben") } \
}
attr Rollladen_alle_oben room Rollladen
Der AT - Befehl der die Rollläden nach unten fährt
define Rollladen_alle_unten at *{sunset("REAL",1800,"18:00","23:00")} \
{if (Value("Rollladen_next_Automatic") eq "off") \
{fhem("set Rollladen_next_Automatic on")} \
else \
{fhem("set Rollladen_alle unten") } \
}
attr Rollladen_alle_unten room Rollladen
Die Fahrzeiten werden von dem folgendem AT angepasst.
Dies Funktionalität ist in Ordnung und läuft einwandfrei
define Rollladen_alle_Zufall_oben at *00:05:00 { \
if (!$we) { \
my $Zufallszahl = int(rand(15) +1 );; \
my $Uhr = "06:".(30 + $Zufallszahl).":00";; \
fhem("set Lampe1 ".$Uhr);; \
fhem("modify Rollladen_alle_oben *".$Uhr);; \
}else{ \
my $Zufallszahl = int(rand(15) +1 );; \
my $Uhr = "07:".(44 + $Zufallszahl).":00";; \
fhem("modify Rollladen_alle_oben *".$Uhr);; \
fhem("set Lampe1 ".$Uhr);; \
} \
}
attr Rollladen_alle_Zufall_oben room Rollladen
Hier der Dummy Schalter Automatic Dummy
Dies funktioniert auch einwandfrei. Hier schalte ich die Automatic kpl. aus und an
define Rollladen_Automatic dummy
attr Rollladen_Automatic room Rollladen
attr Rollladen_Automatic webCmd on:off
Dies der Schalter der die Automatik einmal abschalten soll.
Dies funktioniert nicht einwandfrei
define Rollladen_next_Automatic dummy
attr Rollladen_next_Automatic room Rollladen
attr Rollladen_next_Automatic webCmd on:off
set Rollladen_next_Automatic on
Wenn ich den Schalter Rollladen_next_Automatic mit execNow überprüfe funktioniert es einwandfrei.
Mit der eigentlichen Automatic funktioniert es aber nicht.
Der Schalter wird Off nach OIn geschaltet und die Rollläden fahren trotzdem.
Vielen Dank schon mal.
Sven
Mit den Infos kann ich nicht helfen. Was ich wollte ist ein list von allen beteiligten Devices.
list DEVICENAME
oben in die Commandline eingeben bitte.
Hallo,
die Devices habe ich nun mit list ausgelesen und hier die Ausgaben eingefügt.
Der AT - Befehl der die Rollläden nach oben fährt
Internals:
CFGFN /usr/local/fhem/opt/rollladen.cfg
COMMAND
{if (Value("Rollladen_next_Automatic") eq "off")
{fhem("set Rollladen_next_Automatic on")}
else
{fhem("set Rollladen_alle oben") }
}
DEF *07:56:00
{if (Value("Rollladen_next_Automatic") eq "off")
{fhem("set Rollladen_next_Automatic on")}
else
{fhem("set Rollladen_alle oben") }
}
NAME Rollladen_alle_oben
NR 209
PERIODIC yes
RELATIVE no
REP -1
STATE Next: 07:56:00
TIMESPEC 07:56:00
TRIGGERTIME 1494136560
TRIGGERTIME_FMT 2017-05-07 07:56:00
TYPE at
Readings:
2017-05-06 16:49:50 state Next: 07:56:00
Attributes:
room Rollladen
Der AT - Befehl der die Rollläden nach unten fährt
Internals:
CFGFN /usr/local/fhem/opt/rollladen.cfg
COMMAND
{if (Value("Rollladen_next_Automatic") eq "off")
{fhem("set Rollladen_next_Automatic on")}
else
{fhem("set Rollladen_alle unten") }
}
DEF *{sunset("REAL",1800,"18:00","23:00")}
{if (Value("Rollladen_next_Automatic") eq "off")
{fhem("set Rollladen_next_Automatic on")}
else
{fhem("set Rollladen_alle unten") }
}
NAME Rollladen_alle_unten
NR 206
NTM 21:15:42
PERIODIC yes
RELATIVE no
REP -1
STATE Next: 21:15:42
TIMESPEC {sunset("REAL",1800,"18:00","23:00")}
TRIGGERTIME 1494098142
TRIGGERTIME_FMT 2017-05-06 21:15:42
TYPE at
Readings:
2017-05-06 16:49:37 state Next: 21:15:42
Attributes:
room Rollladen
Hier habe ich die einzelen Rollläden zusammen gefasst.
Internals:
ATTR room
CFGFN /usr/local/fhem/opt/rollladen.cfg
DEF room WC_Rol Bad_Rol Kue_Rol_Li Kue_Rol_Re Wz_Rol_Fenster Esse_Rol Bue_Rol_Fenster
NAME Rollladen_alle
NR 203
NTFY_ORDER 50-Rollladen_alle
STATE IOerr
TYPE structure
Content:
Bad_Rol IOerr
Bue_Rol_Fenster IOerr
Esse_Rol IOerr
Kue_Rol_Li IOerr
Kue_Rol_Re IOerr
WC_Rol IOerr
Wz_Rol_Fenster IOerr
Readings:
2017-05-06 16:50:01 LastDevice Wz_Rol_Fenster
2017-05-06 16:50:01 LastDevice_Abs Wz_Rol_Fenster
2017-05-06 16:50:01 state IOerr
Attributes:
eventMap on:unten off:oben
room Rollladen
Die Fahrzeiten werden von dem folgendem AT angepasst.
Dies Funktionalität ist in Ordnung und läuft einwandfrei
Internals:
CFGFN /usr/local/fhem/opt/rollladen.cfg
COMMAND {
if (!$we) {
my $Zufallszahl = int(rand(15) +1 );
my $Uhr = "06:".(30 + $Zufallszahl).":00";
fhem("set Lampe1 ".$Uhr);
fhem("modify Rollladen_alle_oben *".$Uhr);
}else{
my $Zufallszahl = int(rand(15) +1 );
my $Uhr = "07:".(44 + $Zufallszahl).":00";
fhem("modify Rollladen_alle_oben *".$Uhr);
fhem("set Lampe1 ".$Uhr);
}
}
DEF *00:05:00 {
if (!$we) {
my $Zufallszahl = int(rand(15) +1 );
my $Uhr = "06:".(30 + $Zufallszahl).":00";
fhem("set Lampe1 ".$Uhr);
fhem("modify Rollladen_alle_oben *".$Uhr);
}else{
my $Zufallszahl = int(rand(15) +1 );
my $Uhr = "07:".(44 + $Zufallszahl).":00";
fhem("modify Rollladen_alle_oben *".$Uhr);
fhem("set Lampe1 ".$Uhr);
}
}
NAME Rollladen_alle_Zufall_oben
NR 199
PERIODIC yes
RELATIVE no
REP -1
STATE Next: 00:05:00
TIMESPEC 00:05:00
TRIGGERTIME 1494108300
TRIGGERTIME_FMT 2017-05-07 00:05:00
TYPE at
Readings:
2017-05-06 16:49:37 state Next: 00:05:00
Attributes:
room Rollladen
Hier der Dummy Schalter Automatic Dummy
Dies funktioniert auch einwandfrei. Hier schalte ich die Automatic kpl. aus und an
Internals:
CFGFN /usr/local/fhem/opt/rollladen.cfg
NAME Rollladen_Automatic
NR 240
STATE on
TYPE dummy
Readings:
2017-05-06 16:47:07 state on
Attributes:
room Rollladen
webCmd on:off
Da dazu gehörige Notify On
Internals:
CFGFN /usr/local/fhem/opt/rollladen.cfg
DEF Rollladen_Automatic:on set Rollladen_alle_oben active; set Rollladen_alle_unten active
NAME n_RollladenAutomatikOn
NOTIFYDEV Rollladen_Automatic
NR 253
NTFY_ORDER 50-n_RollladenAutomatikOn
REGEXP Rollladen_Automatic:on
STATE 2017-05-06 17:01:08
TYPE notify
Readings:
2017-05-06 16:49:37 state active
Attributes:
room Rollladen
und das Off
Internals:
CFGFN /usr/local/fhem/opt/rollladen.cfg
DEF Rollladen_Automatic:off set Rollladen_alle_oben inactive; set Rollladen_alle_unten inactive
NAME n_RollladenAutomatikOff
NOTIFYDEV Rollladen_Automatic
NR 254
NTFY_ORDER 50-n_RollladenAutomatikOff
REGEXP Rollladen_Automatic:off
STATE 2017-05-06 17:01:07
TYPE notify
Readings:
2017-05-06 16:49:37 state active
Attributes:
room Rollladen
Dies der Schalter der die Automatik einmal abschalten soll.
Dies funktioniert nicht.
Internals:
CFGFN /usr/local/fhem/opt/rollladen.cfg
NAME Rollladen_next_Automatic
NR 242
STATE on
TYPE dummy
Readings:
2017-05-06 16:49:37 state on
Attributes:
room Rollladen
webCmd on:off
Wenn ich den Schalter Rollladen_next_Automatic mit execNow überprüfe funktioniert es einwandfrei.
Mit der eigentlichen Automatic funktioniert es aber nicht.
Der Schalter wird Off nach OIn geschaltet und die Rollläden fahren trotzdem.
Vielen Dank schon mal.
Sven
Auf den ersten Blick konnte ich nichts feststellen was zur Nichtfunktion führen könnte.
Ich würde mir gerne morgen Früh etwas Zeit nehmen und das ganze mal in meine Testinstallation einbringen.
Grüße
Hallo,
vielen Dank an alle.
Die Fehlerwirkung hat sich in Luft aufgelöst.
Gestern morgen fiel mir auf, dass meine Funktion Rollladen_alle_Zufall _oben nicht mehr richtig funktionierte. Ich wurde zu früh geweckt :((
Das Wochenende wurde nicht erkannt.
Um den Fehler auf die Spur zu kommen habe ich die Config-Dateien ein wenig aufgeräumt und auch hier das Posting mit dem List Command erstellt.
Nun funktionierte die Zufalls Funktion wieder uns auch das einmalige Abschalten hat nun funktioniert.
Woran dies nun lag kann ich nicht sagen.
Ich könnte nun die alten Config Files nochmal wieder einspielen und es austesten aber das möchte ich im Augenblick nicht riskieren. Das System will ich erst einmal runter von der NAS auf einen RASPI spielen damit es ein wenig stabiler ist.
Man lernt ja :)
Danke nochmals und viele Grüße
Sven