FHEM Forum

FHEM => Automatisierung => Thema gestartet von: dennis_n am 14 September 2015, 16:21:23

Titel: Homestatus Rolladen steuern
Beitrag von: dennis_n am 14 September 2015, 16:21:23
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
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: P.A.Trick am 14 September 2015, 23:44:45
Mit lightscene sollte das auch klappen!
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: dennis_n am 15 September 2015, 07:38:04
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
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: Hollo am 15 September 2015, 13:26:21
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)
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: dennis_n am 15 September 2015, 13:53:00
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
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: CoolTux am 15 September 2015, 13:58:18
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.
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: dennis_n am 15 September 2015, 14:03:45
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
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: CoolTux am 15 September 2015, 14:06:20
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
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: dennis_n am 15 September 2015, 14:11:08
Vielen Dank.

Muss ich Residents unbedingt zusammen mit Roommate benutzen oder macht es in meinem Fall Sinn nur Residents einzeln zu benutzen?

Gruss
Dennis
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: CoolTux am 15 September 2015, 14:11:28
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.
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: CoolTux am 15 September 2015, 14:13:00
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.
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: dennis_n am 15 September 2015, 14:14:10
OK ich versuchs heute Abend und werde dann mal mein Vorschlag zum Aufbau hier posten.

Danke schonmal.

Gruss
Dennis
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: dennis_n am 15 September 2015, 18:13:10
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




Titel: Antw:Homestatus Rolladen steuern
Beitrag von: CoolTux am 15 September 2015, 19:18:24
Sieht im Groben erstmal schlüssig aus. Sollte so passen.



Grüße
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: dennis_n am 15 September 2015, 20:12:05
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
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: CoolTux am 15 September 2015, 20:39:37
Genau so sollte es passen meiner Meinung nach
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: dennis_n am 15 September 2015, 20:41:37
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
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: dennis_n am 15 September 2015, 20:51:20
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
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: CoolTux am 15 September 2015, 21:14:43
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.
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: dennis_n am 23 September 2015, 19:46:20
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

Titel: Antw:Homestatus Rolladen steuern
Beitrag von: Puschel74 am 23 September 2015, 19:52:28
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.
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: dennis_n am 23 September 2015, 20:15:10
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
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: Puschel74 am 23 September 2015, 20:18:59
Nö, dafür benutz ich at

Aber schau mal in die commandref zu WeekDayTimer oder such mal im Forum oder im Wiki.
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: dennis_n am 23 September 2015, 20:21:08
Ok trotzdem danke. Hast mir sehr geholfen.

Gruss
Dennis
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: dennis_n am 23 September 2015, 20:36:33
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
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: dennis_n am 23 September 2015, 21:16:21
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
Titel: Antw:Homestatus Rolladen steuern
Beitrag 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
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: Damian am 24 September 2015, 16:38:01
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
Titel: Antw:Homestatus Rolladen steuern
Beitrag 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
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: Damian am 24 September 2015, 16:41:23
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.
Titel: Antw:Homestatus Rolladen steuern
Beitrag 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.


Einfach ein zweites DOIF Konstrukt bauen oder in das vorhandene verschachteln?
Danke

Gruss
Dennis
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: Damian am 24 September 2015, 16:52:19
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

Titel: Antw:Homestatus Rolladen steuern
Beitrag von: dennis_n am 24 September 2015, 19:51:15
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
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: dennis_n am 10 Oktober 2015, 18:54:29
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

Titel: Antw:Homestatus Rolladen steuern
Beitrag von: Damian am 10 Oktober 2015, 21:53:10
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
Titel: Antw:Homestatus Rolladen steuern
Beitrag 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
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: Damian am 11 Oktober 2015, 08:48:28
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

Titel: Antw:Homestatus Rolladen steuern
Beitrag von: dennis_n am 11 Oktober 2015, 11:05:55
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.
Titel: Antw:Homestatus Rolladen steuern
Beitrag 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
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: Damian am 12 Oktober 2015, 20:50:30
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


Titel: Antw:Homestatus Rolladen steuern
Beitrag 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
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: Damian am 12 Oktober 2015, 21:51:50
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
Titel: Antw:Homestatus Rolladen steuern
Beitrag 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
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: Damian am 13 Oktober 2015, 08:31:45
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

Titel: Antw:Homestatus Rolladen steuern
Beitrag 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
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: Damian am 13 Oktober 2015, 09:22:36
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
Titel: Antw:Homestatus Rolladen steuern
Beitrag 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
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: Damian am 13 Oktober 2015, 09:28:00
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
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: dennis_n am 13 Oktober 2015, 18:47:34
Kann ich DOIF eigentlich statt der festen Zeiten mit Twilight sr_civil und ss_civil arbeiten?

Gruss
Dennis

EDIT: Sorry habs gefunden.
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: dennis_n am 13 Oktober 2015, 21:00:59
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
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: dennis_n am 19 Oktober 2015, 08:45:05
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
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: moonsorrox am 19 Oktober 2015, 13:44:41
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)
Titel: Antw:Homestatus Rolladen steuern
Beitrag von: dennis_n am 19 Oktober 2015, 13:50:07
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.