Hi,
ich arbeite mit der Tablet UI und möchte anhand des Homestatus meinen Rolläden schalten.
Wenn ich auf dem Tablet nun einen bestimmten Status wähle sollen entweder alle Rolläden hochgehen oder nur bestimmte runter gehen.
Jetzt könnte ich doch mit set mehrere Rolläden gleichzeitig ansprechen. Allerdings ist mir aufgefallen, dass manchmal die Befehle nicht sauber abgearbeitet werden. Der eine Rolladen geht zu, der andere nicht. Also habe ich eine structure gemacht und den Parameter async_delay 1 mit angegeben. Das funktioniert soweit.
Die Frage ist jetzt, sollte ich für den Fall dass nur bestimmte Rolläden zugehen sollen einen weitere structure anlegen mit nur diesen Rolläden und falls ja, wie rufe ich die auf? Auch mit set und den structure Namen?
oder gibt es eine elegantere Lösung?
Danke
Gruss
Dennis
Mit lightscene sollte das auch klappen!
Hi,
also ich habe es jetzt geschafft mittels einem Dummy und einem Notify zu erkennen, welcher Homestatus Button gedrückt wurde. Nach drücken des Status fahren dann auch mit set die entsprechenden Rolladen hoch und runter.
Jetzt habe ich aber noch für alle Rolläden einen eigenen WeekdayTimer. Manche Rolläden sollen morgens hochfahren, manche nicht. Und umgekehrt Abends.
Wie mache ich es nun, dass diese WeekdayTimer mit berücksichtig werden?
Ich gebe mal ein Beispiel:
Meine Frau hat Nachtdienst. Sie kommt morgens um 7 Uhr nach Hause, stellt sie den Status per Knopfdruck auf "Nachtdienst" und legt sich schlafen. Nach dem Weekdaytimer würden alle Rolläden um 7.15 Uhr hochfahren. Wenn der Status aber auch Nachtdienst steht, sollen 3 bestimmte Rolläden nicht hochfahren, sondern erst, wenn sie den Status auf "Anwesend" stellt.
Also wenn Status "Home" sollen alle Rolläden nach dem Weekdaytimer gesteuert werden.
Bei Status "Nachdienst" sollen 3 Rolläden morgens nicht nach dem Weekdaytimer gehen, abends aber wieder mit dem Timer runterfahren
Kann mir da bitte jemand helfen?
Vielen Dank.
Gruss
Dennis
Vorab:
Deine Lösung werden "andere" (ich) später evtl. nicht verstehen, da Du eine andere Logik hast als ich (und evtl. andere)...
denn: Wenn Deine Frau von der Nachtschicht nach Hause kommt, ist die Nachtschicht vorbei und sie ist anwesend.
zur Frage:
Du könntest z.B. mit 2 Weekdaytimern arbeiten, um so die Rolladen-Gruppen zu trennen.
Dann bei Nachtschicht den einen disablen (damit morgens nicht hoch) und z.B. mittags wieder enablen (damit abends wieder runter).
Oder den Homestatus als Bedingung mit reinnehmen (mache nur wenn nicht Nachtschicht; abends ist ja wieder anwesend)
Hi,
ja, das mit den unterschiedlichen WeekdayTimern gefällt mir irgendwie.
Bisher hatte ich es ja so, dass ich für jeden Rolladen einzeln einen Weekdaytimer habe. Kann ich denn mit einem Weekdaytimer eigentlich auch eine structure aufrufen statt das Device?
Wenn ja, wie würde die Syntax lauten?
define Rolladen_Timer WeekdayTimer <structure_name> Mo-Fr|06:45:00|Hoch Mo-Fr|20:30:00|Runter Sa-So|09:00:00|Hoch Sa-So|20:30:00|Runter
Klappt das so?
Danke
Gruss
Dennis
Ich würde dafür das Residenz Modul nehmen und dann auf asleep triggern oder asleep auswerten. Warum bauen die Leute komplizierte eigene Konstrukte und wollen dann darauf noch Hilfe. Verwendet doch bitte die Sachen die schon da sind und fragt dann. Dann können auch mehrere Leute helfen.
Ein Beispiel.
Ich gehe davon aus das Du die Rolladen Raumbasiert fahren möchtest. So soll zum Beispiel wenn Deine Frau oder Du auf schlafend steht die Rolläden im Schlafzimmer unten bleiben.
richte pro Raum eine Struktur mit den entsprechenden Rolladen ein, diese Strukturen packst du in eine weitere Struktur für die Etagen und die Etagenstrukturen in eine einzige Hausstruktur. Nun kannst du entsprechend Deinem Wunsch die strukturebenen schalten. Entweder für das ganze Haus. Alle gehen schlafen oder wachen auf, oder eben pro Raum und schaltest die anderen Raume einzeln.
Beispiel:
Schlafzimmer oberste Etage, Frau schläft. Sage den Raumstrukturen der oberen Etage bis auf Schalfzimmer "hoch fahren", sage der Struktur untere Etage "hoch fahren".
Fertig. Und ich habe nicht mal Rolläden ;)
Zitat
zur Frage:
Du könntest z.B. mit 2 Weekdaytimern arbeiten, um so die Rolladen-Gruppen zu trennen.
Dann bei Nachtschicht den einen disablen (damit morgens nicht hoch) und z.B. mittags wieder enablen (damit abends wieder runter).
Oder den Homestatus als Bedingung mit reinnehmen (mache nur wenn nicht Nachtschicht; abends ist ja wieder anwesend)
Oder schaffe eine Bedingungsabfrage in Deinem Befehl. So das die Rolläden im Schlafzimmer nur runter gehen wenn Bedingung erfüllt ist.
Hi CoolTux,
vielen Dank für Deine Antwort.
Allerdings setzt dies ja voraus, dass man die Module auch alle kennt. Bin ja froh, dass ich meinen Rolläden und den Weekdaytimer hinbekomme ;-)
Also das mit den structure schaue ich mir genauer an.
Aber kann ich die einzelnen structure dann auch mit dem WeekdayTimer wie von mir geschrieben ansprechen?
Gruss
Dennis
Ich würde ja sagen. Macht ja nichts weiter als einen set Befehl zu setzen und das wird durch structure an die Devices weiter gereicht. Sollte also passen
Vielen Dank.
Muss ich Residents unbedingt zusammen mit Roommate benutzen oder macht es in meinem Fall Sinn nur Residents einzeln zu benutzen?
Gruss
Dennis
Hier mal ein Beispiel für Rolläden und WeekdayTimer
http://forum.fhem.de/index.php/topic,27247.0.html (http://forum.fhem.de/index.php/topic,27247.0.html)
Also ich würde mit 2 Timern arbeiten, und in den einem Timer wo du die Structure vom Schlafzimmer mit ansprichst machst du eine Abfrage auf die Anwesenheit von personen/Frau.
Benutze beides. Glaub mir irgendwann brauch man beide, und eigentlich schaltest Du Residents nicht sondern nur roommate. Und Auf basis von roommate wird dann Residents geschalten.
Und wenn Du dann noch einen wakeuptimer anlegst, (muss man ja nicht verwenden) werden Scripte angelegt für schalfen gehen, schlafen und aufwachen. Damit kannst du dann weitere Aktionen einstellen.
OK ich versuchs heute Abend und werde dann mal mein Vorschlag zum Aufbau hier posten.
Danke schonmal.
Gruss
Dennis
Hallo,
so ich habe mal angefangen von Grund an alles aufzubauen. Wie gesagt ich bin Neuling. Also habt etwas Geduld mit mir ;-)
define Haus RESIDENTS
—> set Haus addRoommate Vater
—> set Haus addRoommate Mutter
—> set Haus addRoommate Kind
Jeder Bewohner soll in der Zukunft seinen eigenen Status-Buttton bekommen. Aktuell benötigen wir aber nur einen Staus.
Ich orientiere mich am Status des Vaters.
Wenn ich meinen Status dann auf abwesend setzen will führe ich folgendes Kommando aus:
set Vater state absent oder eben set Vater state home wenn wir zu Hause sind.
Struktur der Rollläden:
Zuerst alle Rollläden einzeln in Strukturen aufnehmen:
define RL_Buero_li srtucture ZWAVE_SWITCH1
define RL_Buero_re srtucture ZWAVE_SWITCH2
define RL_Kueche srtucture ZWAVE_SWITCH3
usw.
Dann pro Etage:
define allRL_EG structure ZWAVE_SWITCH1 ZWAVE_SWITCH2 ZWAVE SWITCH3
define allRL_OG structure ZWAVE_SWITCH4 ZWAVE_SWITCH5 ZWAVE SWITCH6
Dann alles zusammen:
define allRL_Haus structure allRL_EG allRL_OG
Jetzt geht es an die Steuerung per Status:
Wenn wir also den Status auf home setzen, sollen zunächst einmal alle Rollläden hoch gehen (die Verfeinerung kommt nachher).
Das passende notify:
define status_absent notify Vater:absent set allRL_Haus Runter
oder
define status_home notify Vater:home set allRL_Haus Hoch
Stimmt das bis hier hin schonmal oder sind da schon grobe Fehler drin?
Danke
Gruss
Dennis
Sieht im Groben erstmal schlüssig aus. Sollte so passen.
Grüße
Wäre dies dann mein erster WeekdayTimer, wenn sowohl morgens als auch Abends der Status auf home steht?
define WT_Rolladen_EG_OG_Status_home WeekdayTimer allRL_Haus Mo-Fr|06:30:00|Hoch (Value("Vater") eq "home") Mo-Fr|20:00:00|Runter (Value("Vater") eq "home")
Gruss
Dennis
Genau so sollte es passen meiner Meinung nach
So jetzt habe ich ja aber noch den Fall, wenn der Status auf absent steht sollen morgens nur bestimmte Rolläden hoch gehen, aber Abend ALLE Rolläden runter.
Lässt sich das mit einem WDT realisieren oder brauche ich dazu 2?
Oder anders gefragt, kann ich mit einem WDT 2 Strukturen ansteuern?
Gruss
Dennis
Sorry, ich glaube das war ne doofe Frage.
Wenn der Status ja wieder auf home ist, dann greift ja wieder der erste WDT und die Rolläden gehen alle um 20 Uhr runter, richtig?
Also sind meine 2 WDT:
define WT_Rolladen_EG_OG_Status_home WeekdayTimer allRL_Haus Mo-Fr|06:30:00|Hoch (Value("Vater") eq "home") Mo-Fr|20:00:00|Runter (Value("Vater") eq "home")
define WT_Rolladen_EG_OG_Status_absent WeekdayTimer RL_EG_OG_absent Mo-Fr|06:30:00|Hoch (Value("Vater") eq "absent") Mo-Fr|20:00:00|Runter (Value("Vater") eq "absent")
Wobei im zweiten WDT die Struktur RL_EG_OG_absent alle Rolläden ausser die drei enthält, die nicht geöffnet werden sollen.
Habe ich das soweit richtig verstanden?
Gruss
Dennis
Ich kenne das Modul nicht, aber von meinem Verständnis her sollte es genau so sein. Der erste WDT greift wenn home status ist.
Nimm es erstmal so, und schaue ob es klappt.
Hi,
ich habe ein Problem mit dem Schalten der Rolläden bei einem WdT in Verbindung mit einem Homestatus.
Meinen Wdt habe ich so definiert:
define WT_Rolladen_EG_OG_Status_home WeekdayTimer RL_EG_OG_alle Mo-Fr|06:30:00|Hoch (Value("homestatus") eq "home") Mo-Fr|19:45:00|Runter (Value("homestatus") eq "home")
Zusätzlich gibt es dummy namens homestatus welchen den Wert home hat.
Aber der Timer funktioniert nicht. Woran liegt das?
Ich vermute es stimmt wie immer etwas an der Syntax nicht, aber ich komme nicht drauf.
Danke
Gruss
Dennis
Lt. commandref geht das so:
define dimmer WeekdayTimer livingRoom Sa-Su,We|07:00|dim30% Sa-Su,We|21:00|dim90% (ReadingsVal("WeAreThere", "state", "no") eq "yes")
d.h. nur für den gesamten WDT.
Würde umgeschrieben evtl. so
define WT_Rolladen_EG_OG_Status_home WeekdayTimer RL_EG_OG_alle Mo-Fr|06:30:00|Hoch Mo-Fr|19:45:00|Runter (ReadingsVal("homestatus","state","undef") eq "home")
aussehen.
Ohne Gewähr.
Edith: Benutz bitte die Code-Tags - dann ist der Text leserlicher.
Hi,
hat super funktioniert.
Kannst Du mir noch sagen, wie ich un die Rolläden nicht nach festen Uhrzeiten sondern nach dem Wert sr_civil
aus Twilight hoch und runter gehen lasse?
Vielen Dank.
Gruss
Dennis
Nö, dafür benutz ich at
Aber schau mal in die commandref zu WeekDayTimer oder such mal im Forum oder im Wiki.
Ok trotzdem danke. Hast mir sehr geholfen.
Gruss
Dennis
Sorry habe doch noch ne Frage.
Wenn ich aus dem Haus gehe, setze ich den Status auf abwesend. Dabei rufe ich eine structure auf bei der der Rolladen im Schlafzimmer und an der Terassentür zu geht.
Wenn ich nach Hause komme, setzte ich den Status wieder auf home. Wenn ich vor 19:45 Uhr nach Hause komme, sollte beim setzen des Status auf home, die Rolläden hoch gehen. Nach 19:45 Uhr sollten die Rolläden aber nicht mehr hochgehen.
Wie mache ich das am besten?
Ich dachte an ein notify, welches mir die structure für alle Rolläden hoch oder runter aufruft.
Also beispielsweise:
define status_home notify homestatus:home set RL_EG_OG_alle Hoch bzw. Runter
Aber eben Hoch nur, wenn es noch vor 19:45 Uhr ist.
Gruss
Dennis
Hmmm, geht mein Plan auch mit DOIF?
define di_Rolladen DOIF ([homestatus:home] and [07:30-19:45]) (set RL_EG_OG_alle Hoch) DOELSEIF ([homstatus:home]) (set RL_EG_OG_alle Runter)
Wenn ich es richtig verstehe, dann würde doch beim ändern des Status auf home in der zeit zwischen 7.30 und 19.45 Uhr die Rolläden hoch gehen und falls es danach wäre, würden die Rolläden runter gehen. Stimmt das so?
Und anstatt jetzt den dummy homestatus zu ändern, rufe ich mit dem Button in meinem Interface das DOIF auf.
Bitte helft mir, ich stehe da etwas auf dem Schlauch.
Danke
Gruss
Dennis
Hallo,
kann mir hier bitte jemand helfen?
Ich stehe nach wie vor auf dem Schlauch, wie ich am besten die Steuerung der Rolläden anhand eines Status anspreche.
Danke
Gruss
Dennis
Zitat von: dennis_n am 24 September 2015, 15:17:39
Hallo,
kann mir hier bitte jemand helfen?
Ich stehe nach wie vor auf dem Schlauch, wie ich am besten die Steuerung der Rolläden anhand eines Status anspreche.
Danke
Gruss
Dennis
define di_Rolladen DOIF ([homestatus] eq "home" and [07:30-19:45]) (set RL_EG_OG_alle Hoch) DOELSEIF ([homstatus] eq "home") (set RL_EG_OG_alle Runter)
Gruß
Damian
Hallo Damian,
ich danke Dir vielmals. Und ist es richtig, dass ich mit einem notify dann di_Rolladen aufrufe?
Danke
Gruss
Dennis
Zitat von: dennis_n am 24 September 2015, 16:40:28
Hallo Damian,
ich danke Dir vielmals. Und ist es richtig, dass ich mit einem notify dann di_Rolladen aufrufe?
Danke
Gruss
Dennis
nein. DOIF ersetzt ein notify.
das heißt wenn ich den Wert von homestatus ändere merkt das DOIF automatisch?
Aber wie baue ich dann einen weiteren status ein?
Angenommen ich habe jetzt noch den Wert abwesend und wenn dieser gesetzt ist sollte eine andere Struktur aufgerufen werden.
Einfach ein zweites DOIF Konstrukt bauen oder in das vorhandene verschachteln?
Danke
Gruss
Dennis
Zitat von: dennis_n am 24 September 2015, 16:43:34
das heißt wenn ich den Wert von homestatus ändere merkt das DOIF automatisch?
Aber wie baue ich dann einen weiteren status ein?
Angenommen ich habe jetzt noch den Wert abwesend und wenn dieser gesetzt ist sollte eine andere Struktur aufgerufen werden.
Danke
Gruss
Dennis
Das DOIF reagiert auf die jeweiligen Änderungen, wertet die Bedingungen aus und macht das, was hinter der Bedingung steht.
Wenn du Status auf "abwesend" abfragen willst, dann kannst du dir jetzt schon denken, dass du dann [home] eq "abwesend" abfragen musst.
Um komplexere Sachen zu definieren, solltest du zuerst die umfangreiche Dokumentation des DOIF-Moduls in der deutschen Commandref studieren.
Gruß
Damian
Hallo,
wollte nur mitteilen, dass ich es jetzt damit gelöst habe und einwandfrei funktioniert:
define di_Rolladen DOIF ([homestatus] eq "home" and [07:30-19:45]) (set RL_EG_OG_alle Hoch) DOELSEIF ([homestatus] eq "nachtdienst" and [07:30-19:45]) (set RL_Nachtdienst Runter)
Gruss
Dennis
Hi,
muss den Thread leider nochmal hoch holen.
Seit heute funktioniert mein DOIF nicht mehr.
Ich setze ja über den Dummy den homestatus. Der dummy wird auch einwandfrei mit dem entsprechenden Status gefüttert. Aber beim ändern des Status wird mein DOIF nicht mehr ausgeführt.
Einzige Änderung, die ich gemacht habe, sind unterschiedliche Uhrzeiten am Wochenende.
Mein DOIF sieht jetzt so aus:
([homestatus] eq "home" and [07:15:00-19:15:00|8] or [09:00:00-19:15:00|7]) (set RL_EG_OG_alle Hoch) DOELSEIF ([homestatus] eq "home" and [19:15:01-07:14:59|8] or [19:15:01-09:00:00|7]) (set RL_EG_OG_alle Runter) DOELSEIF ([homestatus] eq "nachtdienst" and [07:14:59-19:15:00|8] or [08:59:59-19:15:00|7]) (set RL_Nachtdienst Runter) DOELSEIF ([homestatus] eq "party" and [19:15:00-07:29:59]) (set RL_Party Runter)
Gestern hat es noch funktioniert. Hat das vielleicht etwas mit den definierten Wochentagen zu tun?
Danke
Gruss
Dennis
Zitat von: dennis_n am 10 Oktober 2015, 18:54:29
Gestern hat es noch funktioniert. Hat das vielleicht etwas mit den definierten Wochentagen zu tun?
Vielleicht. Mit den geposteten Informationen kann man nicht mehr dazu sagen. Vielleicht hast du in deiner holiday-Datei gerade Ferien eingetragen.
Gruß
Damian
Hi Damian,
welche holiday Datei?
Ich meinte mit den definierten Wochentagen die Angabe im DOIF, also [07:15:00-19:15:00|8] or [09:00:00-19:15:00|7], genauer gesagt die 7 bzw. die 8 hinter der Uhrzeit.
Ich habe keine holiday Datei definiert.
Brauche ich die denn?
Heute morgen (Samstag) ging der Rolladen ja pünktlich um 9 Uhr auf. An den Wochentagen immer um 7.15 Uhr.
Gruss
Dennis
Zitat von: dennis_n am 10 Oktober 2015, 22:57:56
Hi Damian,
welche holiday Datei?
Ich meinte mit den definierten Wochentagen die Angabe im DOIF, also [07:15:00-19:15:00|8] or [09:00:00-19:15:00|7], genauer gesagt die 7 bzw. die 8 hinter der Uhrzeit.
Ich habe keine holiday Datei definiert.
Brauche ich die denn?
Heute morgen (Samstag) ging der Rolladen ja pünktlich um 9 Uhr auf. An den Wochentagen immer um 7.15 Uhr.
Gruss
Dennis
In der Commandref zu DOIF steht:
Zitat[<time>|012345678] 0-8 entspricht: 0-Sonntag, 1-Montag, ... bis 6-Samstag sowie 7 für Wochenende und Feiertage (entspricht $we) und 8 für Arbeitstage (entspricht !$we)
Also bedeutet 7 nicht nur Wochenende sondern auch Feiertage. Wenn du die holiday-Datei nicht kennst, dann musst du nach Holiday in der Commandref suchen.
Poste mal list von deinem DOIF-Modul bevor wir hier noch lange rätseln.
Gruß
Damian
Hi,
anbei mein list:
Internals:
DEF ([homestatus] eq "home" and [07:15:00-19:05:00|8] or [09:00:00-19:05:00|7]) (set RL_EG_OG_alle Hoch) DOELSEIF ([homestatus] eq "home" and [19:05:01-07:14:59|8] or [19:05:01-09:00:00|7]) (set RL_EG_OG_alle Runter) DOELSEIF ([homestatus] eq "nachtdienst" and [07:14:59-19:05:00|8] or [08:59:59-19:05:00|7]) (set RL_Nachtdienst Runter)
NAME di_Rolladen
NR 92
NTFY_ORDER 50-di_Rolladen
STATE cmd_1
TYPE DOIF
Readings:
2015-10-10 20:03:45 Device homestatus
2015-10-11 09:00:00 cmd_event timer_3
2015-10-11 09:00:00 cmd_nr 1
2015-10-10 20:03:45 e_homestatus_STATE home
2015-10-11 09:00:00 state cmd_1
2015-10-10 21:09:55 timer_10_c3 11.10.2015 19:05:00|8
2015-10-11 08:59:59 timer_11_c3 12.10.2015 08:59:59|7
2015-10-10 21:09:55 timer_12_c3 11.10.2015 19:05:00|7
2015-10-11 07:15:00 timer_1_c1 12.10.2015 07:15:00|8
2015-10-10 21:09:55 timer_2_c1 11.10.2015 19:05:00|8
2015-10-11 09:00:00 timer_3_c1 12.10.2015 09:00:00|7
2015-10-10 21:09:55 timer_4_c1 11.10.2015 19:05:00|7
2015-10-10 21:09:55 timer_5_c2 11.10.2015 19:05:01|8
2015-10-11 07:14:59 timer_6_c2 12.10.2015 07:14:59|8
2015-10-10 21:09:55 timer_7_c2 11.10.2015 19:05:01|7
2015-10-11 09:00:00 timer_8_c2 12.10.2015 09:00:00|7
2015-10-11 07:14:59 timer_9_c3 12.10.2015 07:14:59|8
Condition:
0 InternalDoIf('homestatus','STATE','') eq "home" and DOIF_time($hash,$hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"8") or DOIF_time($hash,$hash->{realtime}{2},$hash->{realtime}{3},$wday,$hms,"7")
1 InternalDoIf('homestatus','STATE','') eq "home" and DOIF_time($hash,$hash->{realtime}{4},$hash->{realtime}{5},$wday,$hms,"8") or DOIF_time($hash,$hash->{realtime}{6},$hash->{realtime}{7},$wday,$hms,"7")
2 InternalDoIf('homestatus','STATE','') eq "nachtdienst" and DOIF_time($hash,$hash->{realtime}{8},$hash->{realtime}{9},$wday,$hms,"8") or DOIF_time($hash,$hash->{realtime}{10},$hash->{realtime}{11},$wday,$hms,"7")
Days:
0 8
1 8
10 7
11 7
2 7
3 7
4 8
5 8
6 7
7 7
8 8
9 8
Devices:
0 homestatus
1 homestatus
2 homestatus
all homestatus
Do:
0:
0 set RL_EG_OG_alle Hoch
1:
0 set RL_EG_OG_alle Runter
2:
0 set RL_Nachtdienst Runter
3:
Helper:
globalinit 1
last_timer 12
sleeptimer -1
Internals:
0 homestatus:STATE
1 homestatus:STATE
2 homestatus:STATE
all homestatus:STATE
Itimer:
Readings:
Realtime:
0 07:15:00
1 19:05:00
10 08:59:59
11 19:05:00
2 09:00:00
3 19:05:00
4 19:05:01
5 07:14:59
6 19:05:01
7 09:00:00
8 07:14:59
9 19:05:00
State:
Time:
0 07:15:00
1 19:05:00
10 08:59:59
11 19:05:00
2 09:00:00
3 19:05:00
4 19:05:01
5 07:14:59
6 19:05:01
7 09:00:00
8 07:14:59
9 19:05:00
Timecond:
0 0
1 0
10 2
11 2
2 0
3 0
4 1
5 1
6 1
7 1
8 2
9 2
Timer:
0 0
1 0
10 0
11 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
Timerfunc:
Timers:
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
Attributes:
room Timer
Ausserdem steht in meinem log nach dem fhem Neustart noch folgendes:
2015.10.11 11:47:09 1: PERL WARNING: Argument "0\\" isn't numeric in int at ./FHEM/95_holiday.pm line 217.
2015.10.11 11:47:10 1: PERL WARNING: Argument "1\\" isn't numeric in int at ./FHEM/95_holiday.pm line 217.
2015.10.11 11:47:10 1: PERL WARNING: Argument "2\\" isn't numeric in int at ./FHEM/95_holiday.pm line 217.
2015.10.11 11:47:10 1: PERL WARNING: Argument "3\\" isn't numeric in int at ./FHEM/95_holiday.pm line 217.
2015.10.11 11:47:10 1: PERL WARNING: Argument "4\\" isn't numeric in int at ./FHEM/95_holiday.pm line 217.
2015.10.11 11:47:10 1: PERL WARNING: Argument "5\\" isn't numeric in int at ./FHEM/95_holiday.pm line 217.
2015.10.11 11:47:10 1: PERL WARNING: Argument "6\\" isn't numeric in int at ./FHEM/95_holiday.pm line 217.
2015.10.11 11:47:10 1: PERL WARNING: Argument "7\\" isn't numeric in int at ./FHEM/95_holiday.pm line 217.
2015.10.11 11:47:10 1: PERL WARNING: Argument "8\\" isn't numeric in int at ./FHEM/95_holiday.pm line 217.
2015.10.11 11:47:11 1: PERL WARNING: Argument "9\\" isn't numeric in int at ./FHEM/95_holiday.pm line 217.
2015.10.11 11:47:11 1: PERL WARNING: Argument "10\\" isn't numeric in int at ./FHEM/95_holiday.pm line 217.
2015.10.11 11:47:11 1: PERL WARNING: Argument "11\\" isn't numeric in int at ./FHEM/95_holiday.pm line 217.
2015.10.11 11:47:11 1: PERL WARNING: Argument "12\\" isn't numeric in int at ./FHEM/95_holiday.pm line 217.
2015.10.11 11:47:11 1: PERL WARNING: Argument "13\\" isn't numeric in int at ./FHEM/95_holiday.pm line 217.
Hi,
hat niemand einen Tipp für mich wo ich suchen muss?
Heute funktioniert wieder alles normal, nur an den Wochenenden nicht.
Also das DOIF funktioniert immer wie es soll. Unter der Woche gehen die Rolläden um 7.15 Uhr hoch und am Wochenende um 9.00 Uhr.
Nur die Schaltung per Status funktioniert am Wochenende nicht.
Danke
Gruss
Dennis
Zitat von: dennis_n am 12 Oktober 2015, 19:29:59
Hi,
hat niemand einen Tipp für mich wo ich suchen muss?
Heute funktioniert wieder alles normal, nur an den Wochenenden nicht.
Also das DOIF funktioniert immer wie es soll. Unter der Woche gehen die Rolläden um 7.15 Uhr hoch und am Wochenende um 9.00 Uhr.
Nur die Schaltung per Status funktioniert am Wochenende nicht.
Danke
Gruss
Dennis
Jetzt weiß ich erst, was dein Problem ist. Warum sagst du nicht gleich ganz konkret was nicht geht, dann hättest du schon vor paar Tagen den richtigen Tipp von mir bekommen.
Die Lösung ist eigentlich ganz einfach:
UND hat höhere Priorität als ODER (entspricht der Regel: Punkt (UND) vor Strich (ODER)).
Nun zu deine Aufgabe:
Überlege jetzt mal, wie du deine Bedingung klammern musst, dass dein Homestatus für beide Zeiträume gilt. Ich bin mir sicher, dass du es auch ohne meine Hilfe schaffen wirst ;)
Gruß
Damian
Hi Damian,
dann versuche ich es mal. Ich bin da leider echt ein Neuling, also hab etwas Geduld mit mir.
Passt das so?
([homestatus] eq "home" and [07:15:00-19:15:00|8] or [homestatus] eq "home" and [09:00:00-19:15:00|7]) (set RL_EG_OG_alle Hoch) DOELSEIF ([homestatus] eq "home" and [19:15:01-07:14:59|8] or [homestatus] eq "home" and [19:15:01-09:00:00|7]) (set RL_EG_OG_alle Runter) DOELSEIF ([homestatus] eq "nachtdienst" and [07:14:59-19:15:00|8] or [homestatus] eq "nachtdienst" and [08:59:59-19:15:00|7]) (set RL_Nachtdienst Runter)
Oder kann ich die Abfrage nach dem Status auch nach der Uhrzeit setzen?
also:
([07:15:00-19:15:00|8] or [09:00:00-19:15:00|7] and [homestatus] eq "home") (set set RL_EG_OG_alle Hoch) usw.
Gruss
Dennis
Zitat von: dennis_n am 12 Oktober 2015, 21:40:40
Hi Damian,
dann versuche ich es mal. Ich bin da leider echt ein Neuling, also hab etwas Geduld mit mir.
Passt das so?
([homestatus] eq "home" and [07:15:00-19:15:00|8] or [homestatus] eq "home" and [09:00:00-19:15:00|7]) (set RL_EG_OG_alle Hoch) DOELSEIF ([homestatus] eq "home" and [19:15:01-07:14:59|8] or [homestatus] eq "home" and [19:15:01-09:00:00|7]) (set RL_EG_OG_alle Runter) DOELSEIF ([homestatus] eq "nachtdienst" and [07:14:59-19:15:00|8] or [homestatus] eq "nachtdienst" and [08:59:59-19:15:00|7]) (set RL_Nachtdienst Runter)
Oder kann ich die Abfrage nach dem Status auch nach der Uhrzeit setzen?
also:
([07:15:00-19:15:00|8] or [09:00:00-19:15:00|7] and [homestatus] eq "home") (set set RL_EG_OG_alle Hoch) usw.
Gruss
Dennis
Nein.
Dann anders:
Status * Zeit1 + Zeit2
Was müsstest du tun, damit Status mit Zeit1 und mit Zeit2 multipliziert wird?
Edit: Dein erste Vorschlag geht auch, allerdings geht es einfacher mit Klammerung
Tut mir leid. Ich stehe völlig auf dem Schlauch und weiß nicht was Du meinst.
So vielleicht?
([homestatus] eq "home" ([07:15:00-19:15:00|8] and [09:00:00-19:15:00|7])) (set set RL_EG_OG_alle Hoch)
Gruss
Dennis
Zitat von: dennis_n am 12 Oktober 2015, 22:29:54
Tut mir leid. Ich stehe völlig auf dem Schlauch und weiß nicht was Du meinst.
So vielleicht?
([homestatus] eq "home" ([07:15:00-19:15:00|8] and [09:00:00-19:15:00|7])) (set set RL_EG_OG_alle Hoch)
Gruss
Dennis
OK. Die Lösung ist:
Status *(Zeit1 +Zeit2)
entspricht in der Informatik:
Status and (Zeit1 or Zeit2)
das bedeutet also für dich:
([homestatus] eq "home" and ([07:15:00-19:15:00|8] or [09:00:00-19:15:00|7])) ...
Allerdings sind solche Grundlagen Voraussetzung, um mit DOIF-Modul (und nicht nur da) sinnvoll umgehen zu können.
Gruß
Damian
Hallo Damian,
ich danke Dir vielmals.
Manchmal sieht man halt den Wald vor lauter Bäumen nicht. Ich beschäftige mich noch nicht so lange mit fhem.
Vor allem die Syntax bereitet mir oft Probleme.
Mit meinem ersten Vorschlag hatte ich ja die Lösung, wie Du geschrieben hast, aber dies dann weiter "einzukürzen" stellt für mich zunächst mal ein Problem dar.
Ich fand es auch gut, dass Du mir nicht gleich die Lösung gesagt hast. Habe gestern Abend 1 Stunde vor dem Texteditor verbracht und mein DOIF ständig umgestellt und daran geknobelt. Aber wie gesagt, habe halt auf dem Schlauch gestanden.
Sorry dafür.
Gruss
Dennis
Zitat von: dennis_n am 13 Oktober 2015, 08:38:49
Hallo Damian,
ich danke Dir vielmals.
Manchmal sieht man halt den Wald vor lauter Bäumen nicht. Ich beschäftige mich noch nicht so lange mit fhem.
Vor allem die Syntax bereitet mir oft Probleme.
Mit meinem ersten Vorschlag hatte ich ja die Lösung, wie Du geschrieben hast, aber dies dann weiter "einzukürzen" stellt für mich zunächst mal ein Problem dar.
Ich fand es auch gut, dass Du mir nicht gleich die Lösung gesagt hast. Habe gestern Abend 1 Stunde vor dem Texteditor verbracht und mein DOIF ständig umgestellt und daran geknobelt. Aber wie gesagt, habe halt auf dem Schlauch gestanden.
Sorry dafür.
Gruss
Dennis
Kein Problem.
Und warum dein erster Vorschlag korrekt war, lässt sich auch relativ einfach erklären, denn:
Dein Vorschlag:
Status and Zeit1 or Status and Zeit2
entspricht mit and gleich * und or gleich +
Status * Zeit1 + Status * Zeit2
mit Distributiv-Gesetzt (haben wir mal in der Schule gelernt) ist es äquivalent zu
Status * (Zeit1 + Zeit2)
und das ist nichts anderes als:
Status and (Zeit1 or Zeit2)
Gruß
Damian
Daumen hoch!
Dass Du Dir für Anfänger wie mich solche Mühe gibst. ;)
Gruss
Dennis
Zitat von: dennis_n am 13 Oktober 2015, 09:24:36
Daumen hoch!
Dass Du Dir für Anfänger wie mich solche Mühe gibst. ;)
Gruss
Dennis
Naja, vielleicht lesen hier noch andere "Anfänger", die damit etwas anfangen können.
Gruß
Damian
Kann ich DOIF eigentlich statt der festen Zeiten mit Twilight sr_civil und ss_civil arbeiten?
Gruss
Dennis
EDIT: Sorry habs gefunden.
Hallo nochmal,
ich habe mir jetzt mal ein DOIF mit Twilight (Sonnenstand) zusammen gebaut.
Kann das so funktionieren? Ich kann doch innerhalb der runden Klammern rechnen oder?
Am Wochenende sollen die Rolläden quasi 2 Stunden später nach oben gehen.
([homestatus] eq "home" and ([[Sonnenstand:sr_civil|8]-[Sonnenstand:ss_civil|8]] or [([Sonnenstand:sr_civil|7]+ [02:00])]-[Sonnenstand:ss_civil|7])) (set RL_EG_OG_alle Hoch)...
Danke
Gruss
Dennis
Hallo Damian, oder auch gerne die Anderen hier,
ich bekomme trotz mehrfacher Versuche etwas noch nicht hin und bin leider noch einmal auf eure Hilfe angewiesen.
Aktuell sieht mein DOIF ja so aus:
([homestatus] eq "home" and ([07:15:00-19:05:00|8] or [09:00:00-19:05:00|7])) (set RL_EG_OG_alle Hoch) DOELSEIF ([homestatus] eq "home" and ([19:05:01-07:14:59|8] or [19:05:01-09:00:00|7])) (set RL_EG_OG_alle Runter) DOELSEIF ([homestatus] eq "nachtdienst" and ([07:14:59-19:05:00|8] or [08:59:59-19:05:00|7])) (set RL_Nachtdienst Runter)
Dann ist es aber so, dass wenn der Status auf nachtdienst steht und es Wochentags nach 19:05 ist, nichts passiert. Allerdings soll es so sein, dass auch beim Status nachtdienst um 19:05 Uhr alle Rolläden runter gehen.
Also habe ich zunächst mal folgendes DOIF eingebaut:
DOELSEIF ([homestatus] eq "nachtdienst" and ([19:05:01-07:14:59|8] or [19:05:01-09:00:00|7])) (set RL_EG_OG_alle Runter)
Es gibt aber bestimmt eine Möglichkeit in meinem ersten DOELSEIF nach dem Status home oder nachtdienst zu fragen, oder?
Ich hatte es so versucht:
DOELSEIF ([homestatus] eq "home" or [homestatus] eq "nachtdienst" and ([19:05:01-07:14:59|8] or [19:05:01-09:00:00|7])) (set RL_EG_OG_alle Runter)
Das hat aber nicht funktioniert. Es passierte nichts nach 19:05
Kann mir hier bitte nochmal jemand mit der Syntax weiterhelfen?
Vielen Dank.
Gruss
Dennis
ich würde es so machen:
DOELSEIF ([homestatus] eq "home" and ([19:05:01-07:14:59|8] or [19:05:01-09:00:00|7])) (set RL_EG_OG_alle Runter)
DOELSEIF ([homestatus] eq "nachtdienst" and ([19:05:01-07:14:59|8] or [19:05:01-09:00:00|7])) (set RL_EG_OG_alle Runter)
oder einfacher:
DOELSEIF ([homestatus] =~ "home|nachtdienst" and ([19:05:01-07:14:59|8] or [19:05:01-09:00:00|7])) (set RL_EG_OG_alle Runter)
Hi,
Danke für deine Antwort.
Aber so hatte ich es ja schon. Ich dachte nur es gibt eine Möglichkeit den Status home und nachtdienst in einem DOIF abzufragen, da die Zeiten und die entsprechende Aktion (Rolläden runter) ja sonst identisch sind.
Also nach dem Motto:
wenn Status "home" oder "nachtdienst" und ([19:05:01-07:14:59|8] or [19:05:01-09:00:00|7])) (set RL_EG_OG_alle Runter)
Mir ist nur die Syntax nicht klar, bzw. ob das überhaupt so geht.
Folgendes hat bei jedenfalls nicht funktioniert:
DOELSEIF ([homestatus] eq "home" or [homestatus] eq "nachtdienst" and ([19:05:01-07:14:59|8] or [19:05:01-09:00:00|7])) (set RL_EG_OG_alle Runter)
Gruss
Dennis
P.S. ok, da haben wir uns wohl überschnitten. Ja, so habe ich das gemeint. Vielen Dank.