FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Dennis D. am 03 Januar 2013, 21:21:02

Titel: Problem mit der Rollladensteuerung
Beitrag von: Dennis D. am 03 Januar 2013, 21:21:02
Hallo zusammen,

ich fange gerade an, mich mit Fhem zu beschäftigen und eine Haussteuerung zusammenzustellen. Derzeit versuche ich die Rollladen entsprechend nach Sonnenauf- und Untergang zu steuern. Soweit klappt das mit den bisher angelegten "Dummys" auch (die Aktoren kommen hoffentlich morgen).

Zur Sicherheit möchte ich jedoch, dass der Rollladen der Terrassentür bei Sonnenuntergang bzw. bei erreichten von 22 Uhr NUR dann geschlossen wird, wenn der Fenstergriffsensor "geschlossen" meldet, andernfalls soll der Rollladen offen bleiben. Dies soll verhindern, dass man im Sommer draußen sitzt und man plötzlich ausgeschlossen wird. Habe Null Plan von Perl und habe aus anderen Code-Schnipseln versucht was abzuleiten. Naja, dass ich jjetzt hier um Hilfe bitte sagt alles ;). Hier mal wie es aktuell aussieht:

define EZ_Jalousie_runter at *{ if ("$value{EZ_Fensterdrehgriff}" eq "geschlossen") && "sunset ("HORIZON=-3",0,"17:00","22:00")" { fhem ("set EZ_Jalousie zu")}}


Richtig klasse wäre, wenn sich der Rollladen dann noch schließen würde, wenn man nach Sonnenuntergang dann wieder ins Haus geht und das Fenster schließt, also der Fensterdrehgriff meldet, dass das Fenster geschlossen ist. Vielleicht sogar mit Zeitverzögerung von drei Minuten.

Sind meine Ansprche da zu hoch, oder lässt sich das realisieren. Hat jemand von euch ne Idee, wie der Code da auszusehen hat?

Viele Grüße
Dennis
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: MisterEltako am 04 Januar 2013, 00:34:10
Hi!

Die Abfrage des Fenstergriffs kann man mit "notify" lösen.

define n_Fenstergriff notify EZ_Fenstergriff {\
       if ("$value("EZ_Fenstergriff")" eq "geschlossen") {\
          fhem("set EZ_Jalousie zu");;}}


MfG, MisterEltko
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Dennis D. am 04 Januar 2013, 07:23:14
Hmm,

entspricht ja ungefähr dem Teil, den ich in meinem Code drin habe (bis auf meinen eventuellen Syntaxfehler mit den Klammern)

if ("$value{EZ_Fensterdrehgriff}" eq "geschlossen")

Wenn ich das richtig interpretiere, würden damit die Rollladen aber generell runterfahren, wenn das Fenster geschlossen wird. Also auch Tagsüber. Wie kann ich denn den obigen Syntax mit dem Sunset-Syntax in einer UND-Bedingung verknüpfen?

Viele Grüße,
spunky78
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: kossmann am 04 Januar 2013, 09:52:13
Grundsätzlich würde ich nicht auf "geschlossen" prüfen, sondern auf "nicht offen" - wenn die Tür geklappt ist, darf das Rollo ja ruhig nach unten fahren. Bei mir sieht´s wie folgt aus:

define Job_Wohnzimmer_RolloBalkon_runter2 at *23:15 { if ( !(Value("Wohnzimmer_Balkontuer") eq "open") ) { fhem("set Wohnzimmer_RolloBalkon unten");; } }
Das automatische Herunterfahren nach dem Schließen ist eine gute Idee, die ich selbst noch nicht implementiert habe. Das Problem hierbei hast du schon erkannt - man muss die Uhrzeit beachten, ansonsten fährt das Rollo auch tagsüber nach unten.

Das Beispiel von MisterEltako müsste man entsprechend erweitern, z.B. ganz simpel mittels negiertem isday(), was dazu führt, dass das ganze nur nach Sonnenuntergang greift:

define n_Fenstergriff notify EZ_Fenstergriff {\
  if ("$value("EZ_Fenstergriff")" eq "geschlossen" && !(isday())) {\
  fhem("set EZ_Jalousie zu");;}}

Das ganze ist ungetestet, aber grundsätzlich wird in Perl eine Und-Verknüpfung mittels && gemacht.

Man kann auch die aktuelle Uhrzeit mit einfließen lassen:

# zwischen Sonnenuntergang und 22 Uhr einschalten, falls jemand kommt

define Job_Wohnzimmer_Weihnachtslicht_Abends1 notify (Anwesenheit_Nicole:on|Anwesenheit_Tino:on) { \
  my ($sec,$min,$hour,$heutetag,$heutemonat,$heutejahr,$wday,$yday,$isdst) = localtime(time);; \
  if ( !(isday()) && $hour<22 && $hour>15 ) { \
    if ( Value("Wohnzimmer_FunkSteckdose1") eq "off" ) { \
      fhem("set Wohnzimmer_FunkSteckdose1 on");; \
    } \
    if ( Value("Wohnzimmer_FunkSteckdose2") eq "off" ) { \
      fhem("set Wohnzimmer_FunkSteckdose2 on");; \
    } \
    if ( Value("Wohnzimmer_FunkSteckdose3") eq "off" ) { \
      fhem("set Wohnzimmer_FunkSteckdose3 on");; \
    } \
  } \
}
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Dennis D. am 04 Januar 2013, 10:19:40
Zitat von: kossmann schrieb am Fr, 04 Januar 2013 09:52Grundsätzlich würde ich nicht auf "geschlossen" prüfen, sondern auf "nicht offen" - wenn die Tür geklappt ist, darf das Rollo ja ruhig nach unten fahren. Bei mir sieht´s wie folgt aus:

define Job_Wohnzimmer_RolloBalkon_runter2 at *23:15 { [b]if ( !(Value("Wohnzimmer_Balkontuer") eq "open"[/b]) ) { fhem("set Wohnzimmer_RolloBalkon unten");; } }

Fragt er so nicht ab ob offen ist und fährt dann das Rollo runter? Müsste es nicht if ( !(Value("Wohnzimmer_Balkontuer") [b]ne[/b] "open" lauten?

Vielen Dank schon mal für die Vorschläge! Habe da mal versucht was draus zu basteln. Würde das so funktionieren?


# Wenn Fenstergriff geschlossen UND Sonnenuntergang, dann fahr das Rollo runter, jedoch nicht vor 17 Uhr und spätestens um 22
# Uhr, andernfalls schließe das Rollo, wenn der Fenstergriff geschlossen wird UND es nach 22 Uhr ist.

define EZ_Jalousie_runter at *{\
my ($sec,$min,$hour,$heutetag,$heutemonat,$heutejahr,$wday,$yday,$isdst) = localtime(time);; \
if ("$value("EZ_Fensterdrehgriff")" eq "geschlossen")\
&& "sunset ("HORIZON=-3",0,"17:00","22:00")" { fhem ("set EZ_Jalousie zu");;}\
elsif ("$value("EZ_Fensterdrehgriff")" eq "geschlossen") && $hour>22 { fhem ("set EZ_Jalousie zu");;}


Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: MisterEltako am 04 Januar 2013, 10:38:38
Dann hast du aber nicht deinen zusätzlichen Wunsch nach einem Schliessen der Jalousie bei schliessen des Fenstergriffes erfüllt. Das "at"-Kommando wird ja nur einmal zu einer bestimmten Zeit abgefragt. Deswegen mein o.g. Vorschlag mit "notify"', welches bei jeder ausgeführten Bewegung des Fenstergriffes kontrolliert als Zusatz zu deinen eigenen Definitionen über "at" gedacht.

MfG, MisterEltako
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: kossmann am 04 Januar 2013, 10:39:34
Mit ne (not equal) könnte man genauso abfragen, richtig - dann muss das ! am Anfang aber weg - dieses negiert den kompletten Ausdruck (hier in Klammern dahinter). Du fragst hier "ist NICHT (Status NICHT offen)", ich frage "ist NICHT (Status GLEICH offen)" ;-)

Mit einem at * (ohne Uhrzeit dahinter) habe ich noch nicht gearbeitet - führt dies dazu, dass der Code jede Minute ausgeführt wird oder vielleicht sogar jede Sekunde (auweia)?

Dann fällt mir noch && sunset auf. Liefert sunset() nicht eine Uhrzeit zurück? Diese würde in einer IF-Abfrage wahrscheinlich immer als wahr interpretiert, da sie ungleich 0 ist. In Verbindung mit && wäre der gesamte Ausdruck immer wahr und den elsif-Block könnte man sich sparen.

Das ganze wird man wahrscheinlich trennen müssen, ich lasse mich hier aber gerne eines besseren belehren. Ein at-Job um die Rollo "normal" herunter zu fahren, also z.B. nach Sonnenuntergang, wenn die Tür nicht offen sein sollte. Und dann ein notify-Job, welcher beim Schließen oder Kippen der Tür prüft, ob kein Tag mehr ist (bzw. ob eine gewisse Uhrzeit schon erreicht ist) und dann das Rollo herunter fährt.

Erweitern könnte man das ganze natürlich noch um einen weiteren notify-Job, welcher beim Öffnen der Tür das Rollo nach oben fährt (egal zu welcher Uhrzeit) - wenn dies individuell Sinn ergibt (eine offene Tür bei komplett geschlossenen Rollos macht selten Sinn).
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: kossmann am 04 Januar 2013, 10:41:46
Vergiss "Diese würde in einer IF-Abfrage wahrscheinlich immer als wahr interpretiert, da sie ungleich 0 ist. In Verbindung mit && wäre der gesamte Ausdruck immer wahr und den elsif-Block könnte man sich sparen."

Das ist natürlich Quatsch von mir, dies wäre bei ODER der Fall.

Warum kann man seinen eigenen Beitrag nicht editieren?
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Dennis D. am 04 Januar 2013, 10:52:08
Puhh! Gar nicht so einfach wenn man mit Perl bei Null einsteigt. Komme mir gerade vor, als versuche ich in Italien ne Pizza auf japanisch zu bestellen.

Also kann man das auch mit zwei Jobs realisieren? Ich dachte ich müsste das alles in einen packen. Habe das bisher so verstanden, dass ein "define" String ein abgeschlossener Befehl ist und wenn ich einen define at job für die Helligkeit und einen define notify job für den Türgriff habe, dass dann erst der define at Job ausgeführt wird und anschließend der notify job, was halt dazu führen würde, dass die Rollladen dennoch runterfahren. Gehe ich Recht in der Annahme, dass mein bisheriges Verständnis falsch ist, dass die Jobs ähnlich einer Batch abgearbeitet werden?
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: kossmann am 04 Januar 2013, 11:07:48
at und notify sind zwei völlig unterschiedliche Schuhe.

Ein at-Job läuft zu bestimmten Uhrzeiten ab, quasi wie der Wecker, der dich morgens aus dem Schlaf reißt oder die Tagesschau, die immer um 20 Uhr kommt. Diese können zu festen Uhrzeiten definiert werden, zu bestimmten Ereignissen durch Nutzung externer Funktionen (z.B. sunset()) oder auch in bestimmten Abständen zur aktuellen Zeit, z.B. in 5 Minuten (mit + vorweg). Mittels vorangestelltem * lässt sich der Job endlos wiederholen, also z.B. jeden Tag um 20 Uhr.

Man wird sich mehr oder weniger beliebig viele at-Jobs zu unterschiedlichen Zeiten definieren können, die grundsätzlich das selbe machen, aber eventuell andere Faktoren berücksichtigen - sie müssen nur anderes heißen. Also z.B.

Beleuchtung_an1 um 6 Uhr wenn jemand zu Hause und ein Werktag ist
Beleuchtung_an2 um 18 Uhr wenn jemand zu Hause ist

Wenn du um 18 Uhr mehrere Dinge gleichzeitig machst, kannst du (musst aber nicht) dies in einen Job packen, z.B. alle Rollos schließen.

Ein notify-Job hingegen läuft nicht zu festgelegten Zeiten, sondern lauscht im Hintergrund auf eintretende Ereignisse, z.B. die Statusänderung der Tür. Hier kann man z.B. festlegen, was passieren soll, wenn sich der Status der Tür auf "closed" ändert.
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Puschel74 am 04 Januar 2013, 11:15:36
Hallo,

vom Prinzip, und damit es funktioniert, musst du 2 Definintionen machen.

Du musst einmal bei Sonnenuntergang prüfen ob die Tür nicht offen ist, dann die Rollo
runter fahren und
Du musst beim schliessen der Tür prüfen ob nach Sonnenuntergang.

Ersteres greift, sinnigerweise, erst wenn die Sonne untergeht und das zweite greift
bei jedem schliessen der Tür.
Da aber in beiden Abfragen beide Ergebnisse geprüft werden hast du das was du wolltest ;-)

 d.h. du brauchst einmal ein

define Rollo_runter1 at *{sunset(HORIZON,'17:00','22:00')} trigger Rollo_runter_prüf zu
und du brauchst ein

define Rollo_runter2 notify EZ_Fenstergriff:.zu* trigger Rollo_runter_prüf zu #(oder was auch immer der sendet wenn die Tür geschlossen wird)

define Rollo_runter_prüfen notify Rollo_runter_prüf:.zu* {
my $now=sprintf("%%02d:%%02d",$hour,$min);
my $Griff =ReadingsVal("EZ_Fenstergriff","State","offen");
if($now >= "17:00" && $now <="22:00" && $Griff eq "zu") {
fhem ("set Rollo zufahren");
}
if($now > "22:00" && $Griff eq "zu") {
fhem ("set Rollo zufahren");
}
}

Da der Code einmal durch das at und einmal durch ein notify getriggert wird habe ich auch
eine Abfrage >22:00 Uhr eingebaut.
dür die Zeit zwischen 00:00 uhr und Sonnenaufgang kann man ja ähnlich verfahren und dir Uhrzeit
anpassen.
Da ich nicht weiß wie die Geräte wann was senden sind natürlich Stellen im Code an die Gegebenheiten
vor Ort an zu passen.

ACHTUNG!! Ungetest und ohne Gewähr auf Funktionsfähigkeit da NICHT getest und nur aus dem Kopf.
Ich bin mir sicher das man das auch eleganter lösen kann und vor allem auch richtig lösen kann.
Aber so (kompliziert) würde ich mal ran gehen.

Grüße
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Puschel74 am 04 Januar 2013, 11:18:48
Hallo,

und schon einen Fehler drinnen.

Sonnenuntergang zb 19 Uhr und Griff offen.
Beim schliessen des Griffs nach 17 Uhr wird die Rollo runter gefahren obwohl noch kein
Sunset.
Mist.
Erst nochmal nachdenken dann posten - sry.
Zwischen 17 und 22 Uhr sollte man noch prüfen ob Sunset bereits vorbei und dann erst Rollo runter.

Grüße
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: kossmann am 04 Januar 2013, 11:32:42
... oder !isday() verwenden.
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Dennis D. am 04 Januar 2013, 11:34:50
War ja ausm Kop und ohne Gewähr ;)

Auf jeden Fall schon mal vielen Dank an alle für die tolle Anlaufunterstützung. So langsam fügen sich ein paar Puzzle-Teile zusammen. Ich versuche mich mal weiter. Überweitere Tipps und Vorschläge bin ich natürlich dankbar.  Klasse, alle Komponenten werden heute geliefert - bis auf das HMLAN. :(
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Puschel74 am 04 Januar 2013, 11:39:16
Hallo,

jep. Oder so.
Man sollte vorher den gesamten Beitrag lesen und nicht den einen oder
anderen auslassen ;-)

define Rollo_runter_prüfen notify Rollo_runter_prüf:.zu* {
my $now=sprintf("%%02d:%%02d",$hour,$min);
my $Griff =ReadingsVal("EZ_Fenstergriff","State","offen");
if($now >= "17:00" && $now <="22:00" && $Griff eq "zu") {
if !(isday()) {
fhem ("set Rollo zufahren");
}
}
if($now > "22:00" && $Griff eq "zu") {
fhem ("set Rollo zufahren");
}
}

Dann sollte das so besser passen - ob des fehlerhaften Syntax bitte nicht schlagen ;-)
Aber zum Aufbauen sollte es reichen.

Grüße
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Dennis D. am 06 Januar 2013, 15:17:47
also genau an dem "fehlerhaften" Syntax scheint es zu liegen. Egal wie ich es versuche, ich bekomme ständig Fehlermeldungen bzgl. des Syntax.

Des weiteren habe ich noch ne Frage zu "isday": Wann wechselt diese Variable denn ihren Status. Bei Sunset verwende ich ja "HORIZON=-3" also müsste ich ja irgendwo einstellen, dass isday entsprechend um die korrekte zeit auf "nein" oder was auch immer gesetzt wird.
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Puschel74 am 06 Januar 2013, 16:15:16
Hallo,

die Fehlermeldungen wären interessant ;-) Aber ok.

define Rollo_runter_prüfen notify Rollo_runter_prüf:zu.* {
my $now=sprintf("%%02d:%%02d",$hour,$min);
my $Griff =ReadingsVal("EZ_Fenstergriff","State","offen");
if($now >= "17:00" && $now <="22:00" && $Griff eq "zu") {
if (!isday()) {
fhem ("set Rollo zufahren");
}
}
if($now > "22:00" && $Griff eq "zu") {
fhem ("set Rollo zufahren");
}
}


Versuchen wirs mal so rum ;-)
Einfach in die Def kopieren und das Regexp anpassen auf :zu.*
Und im zweiten notify auch noch das regexp anpassen auf EZ_Fenstergriff:zu.*
So. Und nächstes Mal bitte die Fehlermeldung posten ;-)

Grüße
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Dennis D. am 06 Januar 2013, 17:00:02
Sorry! Klar, ohne die Fehlermeldung ist das was schwierig.

Ich habe jetzt noch mal das von dir eingefügt und die Device-Namen angepasst. Mit dem Regexp anpassen habe ich aber jetzt nicht so ganz verstanden *rotwerd*. Bei mir sieht das jetzt in der .cfg so aus:


define EZ_Jalousie_runter1 at *{sunset("HORIZON=-4",0,'17:00','22:00')} trigger EZ_Jalousie_runter_pruef zu
attr EZ_Jalousie_runter1 alias Jalousie Sunset Trigger
attr EZ_Jalousie_runter1 group Jalousien
attr EZ_Jalousie_runter1 room Esszimmer
define EZ_Jalousie_runter2 notify EZ_Fensterdrehgriff:.zu* trigger EZ_Jalousie_runter_pruef zu
attr EZ_Jalousie_runter2 alias Jalousie Fensterdrehgriff Trigger
attr EZ_Jalousie_runter2 group Jalousien
attr EZ_Jalousie_runter2 room Esszimmer

define EZ_Jalousie_runter_pruef notify EZ_Jalousie_runter_pruef:zu.* {
my $now=sprintf("%%02d:%%02d",$hour,$min);
my $Griff =ReadingsVal("EZ_Fensterdrehgriff","State","offen");
if($now >= "17:00" && $now <="22:00" && $Griff eq "zu") {
if (!isday()) {
fhem ("set EZ_Jalousie geschlossen");
}
}
if($now > "22:00" && $Griff eq "zu") {
fhem ("set EZ_Jalousie geschlossen");
}
}
attr EZ_Jalousie_runter_pruef alias Jalousie schließen nach pruefung
attr EZ_Jalousie_runter_pruef group Jalousien
attr EZ_Jalousie_runter_pruef room Esszimmer


Wenn ich ein rereadcfg im Web-Interface eingebe, bekomme ich folgende Meldungen:

Unknown command my, try help
Unknown command my, try help
Unknown command if($now, try help
Unknown command if, try help
Unknown command fhem, try help
Unknown command }, try help
Unknown command }, try help
Unknown command if($now, try help
Unknown command fhem, try help
Unknown command }, try help
Unknown command }, try help
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Dennis D. am 06 Januar 2013, 17:19:56
Habs glaube ich. Habe den Code dahingehend geändert:

define EZ_Jalousie_runter_pruef notify EZ_Jalousie_runter_pruef:zu.* {\
   my $now=sprintf("%%02d:%%02d",$hour,$min);;\
   my $Griff =ReadingsVal("EZ_Fensterdrehgriff","State","offen");;\
      if($now >= "17:00" && $now <="22:00" && $Griff eq "zu") {\
      if (!isday()) {\
         fhem ("set EZ_Jalousie geschlossen");;\
      }\
   }\
   if($now > "22:00" && $Griff eq "zu") {\
      fhem ("set EZ_Jalousie geschlossen");;\
   }\
}

Semikolon durch Doppel-Semikolon ersetzt und hinter jeden Zeilenumbruch nen Backslash. Obs funktioniert weiß ich zwar noch nicht, aber es kommen keine Fehlermeldungen mehr *g*.
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Puschel74 am 06 Januar 2013, 18:59:38
Hallo,

ok wenn du die .cfg direkt editierst - hast du ja nicht verraten (meine ich) und meine Glaskugel hat noch Urlaub ;-)

Ich bin (fälschlicherweise) von mir ausgegangen.

Ich geb gern in die Befehlszeile von fhem

define EZ_Jalousie_runter_pruef notify EZ_Jalousie_runter_pruef:zu.* {

ein und bearbeite dann entsprechend die DEF des notify.

Da brauchst du nichts schützen und doppeln, das übernimmt fhem für dich.
Aber wenn schonmal keine Fehlermeldungen kommen ist das ja schonmal nicht schlecht.

Wenn jetzt der Rollladen noch tut was er machen soll dann wäre das ja top.

Grüße
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Dennis D. am 06 Januar 2013, 22:07:20
Hallo,

ja, bin absoluter Newbie und hab mich wohl etwas überstürzt rein geworfen. Habe nun erstmal das einsteiger Tutorial gelesen und da ist mir so einiges klar geworden. leider funktioniert es immer noch nicht, aber bevor ich hier wieder was poste, werde ich erst mal die Logs lesen und abwarten bis mein Fenstergriff Sensor da ist (habe aktuell ja nur nen Dummy angelegt).

Vielen Dank fürs erste. Gebe Bescheid, wenn es läuft (oder nicht).

Grüße
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Puschel74 am 06 Januar 2013, 22:24:04
Hallo,

naja, du kannst den Code doch schon testen.
Den Rollladen kannst du ja schon hoch und runter fahren oder?
Wenn ja dann sollte ein

set <DummyFenstergriff> zu
trigger EZ_Jalousie_runter_pruef zu

zumindest schonmal das notify ausführen lassen und wenn dein Dummy Fenstergriff zu
meldet sollte der Rollladen abends schonmal runter fahren.
Die Zeiten kannst du ja noch variieren damit das ganze auch Tagsüber funktioniert - zum testen.

Grüße

P.S.: Ich lauf auch nicht jedesmal ins Obergeschoss und mach das Fenster auf wenn ich einen
Codeschnipsel teste - das lässt sich mit dem trigger schön von der Tastatur aus erledigen ;-)
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Dennis D. am 07 Januar 2013, 11:35:47
irgendwie will es noch nicht.

habe nun folgenden code:


define EZ_Jalousie_runter_pruef dummy
attr EZ_Jalousie_runter_pruef eventMap on off
attr EZ_Jalousie_runter_pruef alias Jalousie Trigger
attr EZ_Jalousie_runter_pruef group Jalousien
attr EZ_Jalousie_runter_pruef room Esszimmer

define EZ_Jalousie_runter1 at *{sunset("HORIZON=-4",0,'17:00','22:00')} trigger EZ_Jalousie_runter_pruef on
attr EZ_Jalousie_runter1 alias Jalousie Sunset Prüfung
attr EZ_Jalousie_runter1 group Jalousien
attr EZ_Jalousie_runter1 room Esszimmer

define EZ_Jalousie_runter2 notify EZ_Fensterdrehgriff:off.* trigger EZ_Jalousie_runter_pruef on
attr EZ_Jalousie_runter2 alias Jalousie Fensterdrehgriff Prüfung
attr EZ_Jalousie_runter2 group Jalousien
attr EZ_Jalousie_runter2 room Esszimmer

define EZ_Jalousie_runter_pruef2 notify EZ_Jalousie_runter_pruef:on.* {\
   my $now=sprintf("%%02d:%%02d",$hour,$min);;\
   my $Griff =ReadingsVal("EZ_Fensterdrehgriff","State","on");;\
      if($now >= "17:00" && $now <="22:00" && $Griff eq "off") {\
      if (!isday()) {\
         fhem ("set EZ_Jalousie runter");;\
      }\
   }\
   if($now > "22:00" && $Griff eq "off") {\
      fhem ("set EZ_Jalousie runter");;\
   }\
}
attr EZ_Jalousie_runter_pruef2 alias Jalousie schließen nach Prüfung
attr EZ_Jalousie_runter_pruef2 eventMap off
attr EZ_Jalousie_runter_pruef2 group Jalousien
attr EZ_Jalousie_runter_pruef2 room Esszimmer


Wenn ich ins log schaue, setzt er beim schließen des Fenstergriffs (setzen auf "off") den Dummy "EZ_Jalousie_runter_pruef" auf "off":

2013-01-07_11:26:32 EZ_Fensterdrehgriff off
2013-01-07_11:26:32 EZ_Jalousie_runter_pruef on

Schaue ich ins WebInterface, dann steht der State des "EZ_Jalousie_runter_pruef" aber noch auf off. Entsprechend wird "EZ_Jalousie_runter_pruef2" nicht getriggert und der restliche Code nicht ausgeführt.
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Puschel74 am 07 Januar 2013, 11:45:40
Hallo,

evtl. nur halb gedacht von mir aber

define EZ_Jalousie_runter1 at *{sunset("HORIZON=-4",0,'17:00','22:00')} trigger EZ_Jalousie_runter_pruef on
sollte heissen
define EZ_Jalousie_runter1 at *{sunset("HORIZON=-4",0,'17:00','22:00')} set EZ_Jalousie_runter_pruef on
und nach erfolgter Prüfung muss noch ein
my $Griff =ReadingsVal("EZ_Fensterdrehgriff","State","on");;\
      if($now >= "17:00" && $now <="22:00" && $Griff eq "off") {\
      if (!isday()) {\
         fhem ("set EZ_Jalousie runter;; set EZ_Jalousie_runter_pruef off");;\
       }\
   }\
   if($now > "22:00" && $Griff eq "off") {\
      fhem ("set EZ_Jalousie runter;; set EZ_Jalousie_runter_pruef off");;\
   }\
}

damit beim nächsten on dieses auch erkannt werden kann.

Grüße
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Puschel74 am 07 Januar 2013, 11:48:16
Tante Edith fehlt ganz arg @Martin ^^

Das

define EZ_Jalousie_runter2 notify EZ_Fensterdrehgriff:off.* trigger EZ_Jalousie_runter_pruef on
sollte auch so
define EZ_Jalousie_runter2 notify EZ_Fensterdrehgriff:off.* set EZ_Jalousie_runter_pruef on
aussehen.

Nu sollte es aber klappen (jetzt haben wir ja bald alle Varianten durch ;-) ).

Grüße
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Dennis D. am 07 Januar 2013, 11:57:23
Nun funktioniert es schon was besser. Allerdings geht "EZ_Jalousie_runter_pruef" nun nicht aus. Aus dem Log geht auch nicht hervor, dass "EZ_Jalousie_runter_pruef2" ausgeführt wird. Kann das daran liegen, dass die Routine

$Griff =ReadingsVal("EZ_Fensterdrehgriff","State","on")

nicht auslesen kann, da der Fenstergriff ja noch ein "Dummy" ist?

PS: Ja die edit-Funktion vermisse ich hier auch :-)
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Puschel74 am 07 Januar 2013, 12:12:29
Hallo,

wenn du die Uhrzeiten und Bedingungen so wie im Code dargestellt
auch in der .cfg hast kann ja nichts passieren ;-)
Wir haben vor 17:00 Uhr also darf ja der Rollladen garnicht runter fahren.
Oder hab ich was verpasst??
Stell mal von 17 Uhr auf 11 Uhr oder 12 Uhr - so das die Bedingunge erfüllt ist
nach x Uhr (jetzt) und vor 22 Uhr (also jetzt) und Griff zu = wahr
dann müsste der Rollladen runter fahren.

Da, in diesem Fall jetzt, beide Abfragen false liefern wird auch EZ_Jalousie_runter_pruef
nicht zurück gesetzt da garnicht abgefragt wird.
Ok. Das muss auch noch rein.

my $Griff =ReadingsVal("EZ_Fensterdrehgriff","State","on");;\
      if($now >= "17:00" && $now <="22:00" && $Griff eq "off") {\
      if (isday()) {\          
         fhem ("set EZ_Jalousie runter;; set EZ_Jalousie_runter_pruef off");;\
       }\
   if($now > "22:00" && $Griff eq "off") {\
      fhem ("set EZ_Jalousie runter;; set EZ_Jalousie_runter_pruef off");;\
   }\
  fhem ("set EZ_Jalousie_runter_pruef off");;\
}


Ich hoffe die Stelle ist richtig und jetzt musst du auch aus !isday() ein isday()
machen sonst trifft auch diese Prüfung nicht zu.


Grüße
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Dennis D. am 07 Januar 2013, 12:31:19
manchmal sieht man den wald vor lauter bäumen nicht. dennoch, auch nach der änderung funktioniert es nicht. langsam verzeifel ich. von der logik her passt doch nun alles.


define EZ_Jalousie_runter_pruef2 notify EZ_Jalousie_runter_pruef:on.* {\
   my $now=sprintf("%%02d:%%02d",$hour,$min);;\
   my $Griff =ReadingsVal("EZ_Fensterdrehgriff","State","on");;\
      if($now >= "11:00" && $now <="22:00" && $Griff eq "off") {\
#      if (!isday()) {\
      if (isday()) {\
         fhem ("set EZ_Jalousie runter ;; set EZ_Jalousie_runter_pruef off");;\
      }\
#   }\
   if($now > "22:00" && $Griff eq "off") {\
      fhem ("set EZ_Jalousie runter ;; set EZ_Jalousie_runter_pruef off");;\
   }\
fhem ("set EZ_Jalousie_runter_pruef off");;\
}
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Puschel74 am 07 Januar 2013, 12:37:48
Hallo,

dir fehlt eine schliessende Klammer ;-)
Sollte aber auch im Logfile stehen.

Das letzte "set ... off" müssen wir fhem noch schmackhaft machen.
Spätestens wenn du die Uhrzeit wieder auf 17 Uhr änderst hast du zwischen
00:00 Uhr und 16:59 das Problem das der Befehl nicht ausgeführt wird da
wir um z.b. 10 Uhr ja ausserhalb der Zeit sind.

Also muss


define EZ_Jalousie_runter_pruef2 notify EZ_Jalousie_runter_pruef:on.* {\
   my $now=sprintf("%%02d:%%02d",$hour,$min);;\
   my $Griff =ReadingsVal("EZ_Fensterdrehgriff","State","on");;\
      if($now >= "11:00" && $now <="22:00" && $Griff eq "off") {\
      if (isday()) {\
         fhem ("set EZ_Jalousie runter");;\
      }\
   }\
   if($now > "22:00" && $Griff eq "off") {\
      fhem ("set EZ_Jalousie runter");;\
   }\
  fhem ("set EZ_Jalousie_runter_pruef off");;\
}


Da ich vorhin einige Klammern geklaut habe hier nochmal das ganze notify.
Die 2 ("set ... off") sollten wir uns sparen können da das letzte
fhem ("set ... off")
in jedem Fall ausgeführt werden sollte wenn das notify aufgerufen wird.

Grüße
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Dennis D. am 07 Januar 2013, 12:52:09
Jetzt sind wir soweit, dass er "EZ_Jalousie_runter_pruef" kurz ein und wieder ausschaltet (im WebInterface nicht sichtbar). Den Part dazwischen - das runterfahren - übergeht er nach wie vor.

2013.01.07 12:46:56 2: dummy set EZ_Fensterdrehgriff off
2013.01.07 12:46:56 2: dummy set EZ_Jalousie_runter_pruef on
2013.01.07 12:46:56 2: dummy set EZ_Jalousie_runter_pruef off

Aber so langsam wird es ja was. *g*
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Dennis D. am 07 Januar 2013, 12:56:18

define EZ_Jalousie_runter_pruef dummy
define EZ_Jalousie_runter1 at *{sunset("HORIZON=-4",0,'11:00','22:00')} set EZ_Jalousie_runter_pruef on
define EZ_Jalousie_runter2 notify EZ_Fensterdrehgriff:off.* set EZ_Jalousie_runter_pruef on

define EZ_Jalousie_runter_pruef2 notify EZ_Jalousie_runter_pruef:on.* {\
   my $now=sprintf("%%02d:%%02d",$hour,$min);;\
   my $Griff =ReadingsVal("EZ_Fensterdrehgriff","State","on");;\
      if($now >= "11:00" && $now <="22:00" && $Griff eq "off") {\
      if (isday()) {\
         fhem ("set EZ_Jalousie off");;\
      }\
   }\
   if($now > "22:00" && $Griff eq "off") {\
      fhem ("set EZ_Jalousie off");;\
   }\
fhem ("set EZ_Jalousie_runter_pruef off");;\
}


bei der EZ_Jalousie hab ich das Mapping von "off" auf "runter" entfernt, weil ich dachte, dass es vielleicht da dran liegen könnte. wars aber nicht.
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Dennis D. am 07 Januar 2013, 13:01:07
um noch mal auf die variable $Griff zurückzukommen.

Kann es nicht sein, dass er bei dem "Dummy" device keine ReadingsVal ausführen kann und entsprechend keinen Wert bekommt?
In der Abfrage wird ja eine UND Bedingung definiert. Und die zweite Bedingung wird nicht erfüllt, wegen dem fehlenden Wert!?

if($now >= "11:00" && $now <="22:00" && $Griff eq "off")

Oder?
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Dennis D. am 07 Januar 2013, 13:05:17
BINGO!!!

Nehme ich die Griff-Abfrage raus funktioniert es!!!!


define EZ_Jalousie_runter_pruef2 notify EZ_Jalousie_runter_pruef:on.* {\
   my $now=sprintf("%%02d:%%02d",$hour,$min);;\
      if($now >= "11:00" && $now <="22:00") {\
      if (isday()) {\
         fhem ("set EZ_Jalousie off");;\
      }\
   }\
   if($now > "22:00") {\
      fhem ("set EZ_Jalousie off");;\
   }\
fhem ("set EZ_Jalousie_runter_pruef off");;\
}


VIELEN VIELEN DANK für diesen tollen Support!
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Puschel74 am 07 Januar 2013, 13:17:43
Hallo,

aber der Griff - selbst als Dummy sollte doch on oder off annehmen können.
Und das kann man abfragen.
evtl. hillft ein

if($now >= "11:00" && $now <="22:00" && (Value("EZ_Fensterdrehgriff") eq "off")) {\
eher zum Ziel.

Grüße
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Dennis D. am 07 Januar 2013, 14:06:24
ja, so hab ich das jetzt auch gelöst. zumindest bis mein fenstergriffsensor endlich da ist.

soweit funktioniert es ja nun so wie ich es mir vorstelle. wie wäre es denn, wenn er die Jalousien beim schließen des fenstergriffs erst nach ablauf von z. b. drei minuten runterfahren soll? also quasi zeitverzögert?

ja ich weiß! ich bin anspruchsvoll :)
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Puschel74 am 07 Januar 2013, 14:10:30
fhem ("fhem define Rollo_ab_später at +00:03:00 set EZ_Jalousie off");;\
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Puschel74 am 07 Januar 2013, 14:29:09
Und schon wieder falsch :-(

Zitat von: Puschel74 schrieb am Mo, 07 Januar 2013 14:10fhem ("fhem define Rollo_ab_später at +00:03:00 set EZ_Jalousie off");;\

Soll natürlich

fhem ("define Rollo_ab_später at +00:03:00 set EZ_Jalousie off");;\

Das brauchst du ja nur noch an den passenden Stellen einfügen und schon fährt die Rollo
3 Minuten nach schliessen des Fenstergriffs runter - hoffentlich ;-)

Und das ganze geht sicher auch noch kürzer und eleganter.

Grüße
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Dennis D. am 07 Januar 2013, 14:40:08
SUPER! Vielen Dank. Werde ich ausprobieren :)
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Dennis D. am 11 Januar 2013, 16:43:10
Die Rollladen laufen nun wie sie sollen! Vielen Dank allen, für eure Hilfe!
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Frank Steinhauer am 17 Februar 2013, 13:29:24
Hallo Dennis,
meine Problemstellung ist die gleiche wie deine. Im Verlauf des Threads habe ich aber den Faden verloren welcher Code nun wirklich benötigt wird.
Könntest du den entgültigen Code der türabhängigen Rolladensteuerung  nochmal posten?
Wäre super nett!

Danke
Frank
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Dennis D. am 17 Februar 2013, 14:45:11
Hi Frank,

gerne. There it is:


define EZ_Jalousie_runter_pruef dummy
  attr EZ_Jalousie_runter_pruef alias Jalousie Trigger Prüfung
  attr EZ_Jalousie_runter_pruef eventMap on off

define EZ_Jalousie_runter1 at *{sunset("HORIZON=-5",0,'17:00','22:00')} set EZ_Jalousie_runter_pruef on
  attr EZ_Jalousie_runter1 alias Jalousie Esszimmer schließen

define EZ_Jalousie_runter2 notify EZ_Fensterdrehgriff:zu.* set EZ_Jalousie_runter_pruef on
  attr EZ_Jalousie_runter2 alias Jalousie Fensterdrehgriff Prüfung

define EZ_Jalousie_runter_pruef2 notify EZ_Jalousie_runter_pruef:on.* {\
   my $now=sprintf("%%02d:%%02d",$hour,$min);;\
       if($now >= "17:00" && $now <="22:00" && (Value("Hell") eq "Nein") && (Value("EZ_Fensterdrehgriff") eq "zu")) {\
         fhem ("define EZ_Jalousie_verzoegert at +00:01:00 set EZ_Jalousie runter");;}\
    if($now > "22:00" && (Value("EZ_Fensterdrehgriff") eq "zu")) {\
       fhem ("define EZ_Jalousie_verzoegert at +00:01:00 set EZ_Jalousie runter");;}\
fhem ("set EZ_Jalousie_runter_pruef off");;}
  attr EZ_Jalousie_runter_pruef2 alias Jalousie schließen nach Prüfung


Gruß,
Dennis

Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Georg312 am 17 Februar 2013, 23:56:45
Hi,
Noch eine Idee zum Thema: hast du einen zweiten Rolladen, der auf jeden fall nach Sonnenuntergang runterfährt? Dann könntest du beim schließen der Tür den Rolanden dann runterfahren, wenn der andere schon zu ist. Damit erübrigt sich die ganzen Zeitrechnungen...
Gruß Georg.
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Dennis D. am 18 Februar 2013, 09:39:40
Hi Georg,

keine verkehrte Idee. Ist natürlich eine Möglichkeit, welche etwas einfacher umzusetzen gewesen wäre. Ich bevorzuge dennoch eine von den anderen Jalousien unabhängige Prüfung. So ist zumindest eine Fehlerquelle ausgeschlossen, falls der Aktor des für die Prüfung verwendeten Rollladen mal nen Missing Ack hat oder ähnliches.

Gruß,
Dennis
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: ole30419 am 04 Mai 2013, 09:51:49
Hallo an alle,
 das mir den Rollladen steuern über den Fensterdrehgriff finde ich eine sehr schöne Idee. Habe das mal für meine Rollladen versucht umzuschreiben aber es will einfach nicht klappen, es wird im ,,at" eine Zeit angezeigt aber der Befehl zum Rolladen schliessen kommt nicht. Was habe ich Vergessen?

Hier mal der Umgeschriebene Code für mein Rollladen:
    - mein Rollladen wird mit ,,set KU_Roll zu" runtergefahren
    - und der ,,KU_Fenster_Sensor" sendet tilted/open/closed

define KU_Roll_runter_pruef dummy
  attr KU_Roll_runter_pruef alias Rollladen Trigger Pruefung
  attr KU_Roll_runter_pruef eventMap open closed

define KU_Roll_runter1 at *{sunset("HORIZON=-6",0,"17:00","22:00")} set KU_Roll_runter_pruef open
  attr KU_Roll_runter1 alias Rollladen Kueche schliessen

define KU_Roll_runter2 notify KU_Fenster_Sensor:closed.* set KU_Roll_runter_pruef open
  attr KU_Roll_runter2 alias Rolladen Fensterdrehgriff Pruefung

define KU_Roll_runter_pruef2 notify KU_Roll_runter_pruef:open.* {\
   my $now=sprintf("%%02d:%%02d",$hour,$min);;\
       if($now >= "17:00" && $now <="22:00" && (Value("Hell") eq "Nein") && (Value("KU_Fenster_Sensor") eq "closed")) {\
         fhem ("define KU_Roll_verzoegert at +00:01:00 set KU_Roll zu");;}\
    if($now > "22:00" && (Value("KU_Fenster_Sensor") eq "closed")) {\
       fhem ("define KU_Roll_verzoegert at +00:01:00 set KU_Roll zu");;}\
fhem ("set KU_Roll_runter_pruef closed");;}
  attr KU_Roll_runter_pruef2 alias Rollladen schliessen nach Pruefung
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: MisterEltako am 04 Mai 2013, 10:20:22
if($now >= "17:00" && $now <="22:00"...

müsste das nicht:

if($now gt "17:00" && $now lt "22:00"...

lauten?

MfG, MisterEltako
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: ole30419 am 05 Mai 2013, 11:34:18
Hallo, leider sehen ich hier nicht ganz durch :-((

Habe zum Testen mal die Zeit im "define KU_Roll_runter1 at *11:15 set KU_Roll_runter_pruef open" fest auf 11:15 Uhr eingestellt. Ich bekomme im eventMonitor immer
Zitat2013-05-05 11:15:00 dummy KU_Roll_runter_pruef closed
2013-05-05 11:15:00 Global global DELETED KU_Roll_runter1
2013-05-05 11:15:00 Global global DEFINED KU_Roll_runter1

Egal on der "KU_Fenster_Sensor"  open oder closed ist.

Ich habe mir noch mal den Code von Dennis D. angeschaut und ich sehen keine Fehler zu meine umgeschrieben Code. oder ????

@MisterEltako
Zitatif($now gt "17:00" && $now lt "22:00"...
das wahr`s leider nicht .....
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: ole30419 am 05 Mai 2013, 12:07:11
Habe eben noch mal den "eventMap" von "open closed" auf "on off" getauscht das hat aber nicht`s geändert.
bekomme immer noch im eventMonitor
Zitat2013-05-05 12:05:00 dummy KU_Roll_runter_pruef off
2013-05-05 12:05:00 Global global DELETED KU_Roll_runter1
2013-05-05 12:05:00 Global global DEFINED KU_Roll_runter1
define KU_Roll_runter_pruef dummy
attr KU_Roll_runter_pruef alias Rollladen Trigger Pruefung
attr KU_Roll_runter_pruef eventMap on off

define KU_Roll_runter1 at *12:05 set KU_Roll_runter_pruef on
attr KU_Roll_runter1 alias Rollladen Kueche schliessen
attr KU_Roll_runter1 room Sever_Raum

define KU_Roll_runter2 notify KU_Fenster_Sensor:closed.* set KU_Roll_runter_pruef on
attr KU_Roll_runter2 alias Rolladen Fensterdrehgriff Pruefung

define KU_Roll_runter_pruef2 notify KU_Roll_runter_pruef:on.* {\
   my $now=sprintf("%%02d:%%02d",$hour,$min);;\
       if($now >= "17:00" && $now <="22:00" && (Value("Hell") eq "Nein") && (Value("KU_Fenster_Sensor") eq "closed")) {\
         fhem ("define KU_Roll_verzoegert at +00:01:00 set KU_Roll zu");;}\
    if($now > "22:00" && (Value("KU_Fenster_Sensor") eq "closed")) {\
       fhem ("define KU_Roll_verzoegert at +00:01:00 set KU_Roll zu");;}\
fhem ("set KU_Roll_runter_pruef off");;}
attr KU_Roll_runter_pruef2 alias Rollladen schliessen nach Pruefung
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: MisterEltako am 06 Mai 2013, 00:47:42
Hi!

Probiere die aus:

define KU_Roll_runter_pruef dummy
attr KU_Roll_runter_pruef eventMap on off

define KU_Roll_runter1 at *12:05 set KU_Roll_runter_pruef on

define KU_Roll_runter2 notify KU_Fenster_Sensor:closed.* set KU_Roll_runter_pruef on

define KU_Roll_runter_pruef2 notify KU_Roll_runter_pruef:on.* {\
   my $Zustand =Value("KU_Fenster_Sensor");;\
   Log 3, "Stunde: $hours, Fenstersensor: $Zustand";;\
   if(($hours >= 17) && ($hours <= 22) && (Value("KU_Fenster_Sensor") eq "closed") && (Value("Hell") eq "Nein")) {\
           if (defined($defs{KU_Roll_verzoegert})){fhem('delete KU_Roll_verzoegert')};;\
           fhem ("define KU_Roll_verzoegert at +00:01:00 set KU_Roll zu");;\
           Log 3, "Rollo wird zugefahren 1.Variante";;\
       }\
       if ((($hours > 22) || ($hours < 7)) && (Value("KU_Fenster_Sensor") eq "closed")) {\
        if (defined($defs{KU_Roll_verzoegert})){fhem('delete KU_Roll_verzoegert')};;\
           fhem ("define KU_Roll_verzoegert at +00:01:00 set KU_Roll zu");;\
           Log 3, "Rollo wird zugefahren 2.Variante";;\
       }\
       fhem ("set KU_Roll_runter_pruef off");;\
}

[/color]
MfG, MisterEltako
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Dennis D. am 06 Mai 2013, 08:46:50
Zitat von: MisterEltako schrieb am Sa, 04 Mai 2013 10:20if($now >= "17:00" && $now <="22:00"...

müsste das nicht:

if($now gt "17:00" && $now lt "22:00"...

lauten?

Jep, das ist korrekt. Habe das bei mir auch schon seit einiger Zeit auf gt, lt, eq, und so umgeschrieben, da es sonst zu "fehlermeldungen" im Log kommt. Es funktioniert zwar dennoch, aber <,>,= nimmt man glaub ich im Perlsyntax nur für Zahlen. Mit "17:00" hat man jedoch nen String und Strings werden wohl mit gt,lt,eq,ne verglichen. Korrigier mich einer, wenn ich falsch liege.

Bei mir siehts so aus:


EZ_Jalousie_runter_pruef:on.* {
   my $now=sprintf("%%02d:%%02d",$hour,$min);
       if($now ge "17:00" && $now le"22:00" && (Value("Hell") eq "Nein") && (Value("EZ_Fensterdrehgriff") eq "zu")) {
         fhem ("define EZ_Jalousie_verzoegert at +00:01:00 set EZ_Jalousie runter");}
    if($now gt "22:00" && (Value("EZ_Fensterdrehgriff") eq "zu")) {
       fhem ("define EZ_Jalousie_verzoegert at +00:01:00 set EZ_Jalousie runter");}
fhem ("set EZ_Jalousie_runter_pruef off");}


@ole:

Hast Du auch den Dummy "Hell" definiert? Dieser wird ja in dem Notify auch abgefragt. Wenn Du ihn nicht definiert hast leg einfach

define Hell dummy


Der Dummy wird bei mir durch zwei at's geschaltet:


define Sonnenaufgang at *{sunrise("HORIZON=-4",0,,)} set Hell Ja
define Sonnenuntergang at *{sunset("HORIZON=-4",0,,)} set Hell Nein


Viele Grüße,
Dennis
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: ole30419 am 07 Mai 2013, 22:24:28
Hallo,

ja Super habe mir den Log eintragen noch eine Fehler bei mir gefunden. Denn mit "$hours" konnte FHEM nicht`s anfangen habe es in "$hour" geändert und schon stand im Log die "Stunde".
Und mit dem  "define Hell dummy", das habe ich wohl nicht richtig mitbekommen und nachgeholt.
Nach dem ersten Test hat sich der Küchen Rollladen auch schon nach "1.Variante" selbständig geschlossen. Super und Danke !!!!
define Hell dummy
attr Hell eventMap ja nein
define Sonnenaufgang at *{sunrise("HORIZON=-4",0,,)} set Hell Ja
define Sonnenuntergang at *{sunset("HORIZON=-5",0,,)} set Hell Nein

define KU_Roll_runter_pruef dummy
attr KU_Roll_runter_pruef eventMap on off

define KU_Roll_runter1 at *{sunset("HORIZON=-5",300,"17:00","22:00")} set KU_Roll_runter_pruef on

define KU_Roll_runter2 notify KU_Fenster_Sensor:closed.* set KU_Roll_runter_pruef on

define KU_Roll_runter_pruef2 notify KU_Roll_runter_pruef:on.* {\
   my $Zustand =Value("KU_Fenster_Sensor");;\
   my $Zustandhell =Value("Hell");;\
   Log 3, "Stunde: $hour, noch Hell drausen:$Zustandhell, Fenstersensor: $Zustand";;\
   if(($hour >= 17) && ($hour <= 22) && (Value("KU_Fenster_Sensor") eq "closed") && (Value("Hell") eq "Nein")) {\
           if (defined($defs{KU_Roll_verzoegert})){fhem('delete KU_Roll_verzoegert')};;\
           fhem ("define KU_Roll_verzoegert at +00:01:00 set KU_Roll zu");;\
           Log 3, "Rollo wird zugefahren 1.Variante";;\
       }\
       if ((($hour > 22) || ($hour < 7)) && (Value("KU_Fenster_Sensor") eq "closed")) {\
        if (defined($defs{KU_Roll_verzoegert})){fhem('delete KU_Roll_verzoegert')};;\
           fhem ("define KU_Roll_verzoegert at +00:01:00 set KU_Roll zu");;\
           Log 3, "Rollo wird zugefahren 2.Variante";;\
       }\
       fhem ("set KU_Roll_runter_pruef off");;\
}
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: AK-868 am 12 Mai 2013, 20:03:46
Hallo zusammen,

ich hab die Zeilen mal kopiert und meine Sachen angepasst.

Jetzt passiert folgendes das er der Ansicht ist, es ist dunkel, um 17:25 Uhr? oO

Wie oft wird geprüft ob es hell ist? Wie funktioniert das überhaupt alles...

Ich wäre dankbar wenn sich jemand 2-3min Zeit nimmt und mir das erklärt. Oder sagt wo ich es lesen kann. In der Anfänger Abteilung ;)

Vielen Dank.

Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Dennis D. am 13 Mai 2013, 09:45:44
Hallo AK-868,

hilfreich wäre es, wenn Du deine Konfiguration bzgl. der Rolladen hier posten würdest. Die Glaskugel offenbart ohne diese Info leider nicht, warum deine Rolladen bereits um 17:25 Uhr runterfahren. ;-)

Folgendes zur Funktion. Jedenfalls, so wie ich es bisher interpretiert habe. Sollte ich irgendwo irren, bitte ich darum mich zu berichtigen.

Im Grunde wird nicht "geprüft" ob es hell ist, sondern die Funktion "sunset" bzw. "sunrise" ist eine Art astronomischer Kalender bei dem der Zeitpunkt des Sonnenauf- und untergangs berechnet werden. Bei welchem Grad an Dämmerung geschaltet werden soll, kann man durch die Variable HORIZON, NAUTIC, CIVIL, u.s.w. groß einstellen. Die Feineinstellung kann man mittels der Zahl hinter dem "=" vornehmen. Als Beispiel (Werte müssen nicht stimmen): Besagt HORIZON den Zeitpunkt, an dem die Sonne sich am Horizont befindet, so bedeutet "HORIZON=-4" das sich die Sonne 4 Grad unter dem Horizont befindet und es somit noch nicht so hell ist.
1 Grad entsprechen dabei ungefähr 6 Minuten, glaub ich.

Im Endeffekt ist die Funktion Sunrise/Sunset eine Variable für eine Uhrzeit.

Gruß,
Dennis
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: Dennis D. am 13 Mai 2013, 10:21:07
Zitat von: ole30419 schrieb am Di, 07 Mai 2013 22:24Hallo,

define KU_Roll_runter1 at *{sunset("HORIZON=-5",300,"17:00","22:00")} set KU_Roll_runter_pruef on

Hi ole,

wofür stehen denn die "300" in dem sunset-string???

Gruß,
Dennis
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: AK-868 am 13 Mai 2013, 20:30:21
Die 300 sind ein Delay von 300sec.

@ Dennis D.

Ich hab den Quelltext wie oben kopiert nur Namen der Sensoren und Aktoren getauscht. Und das Wort "zu" gegen "off" getauscht.

Jetzt aktuell ist er der Ansicht es ist noch Hell draussen. Wer weiß was passiert wenn ich jetzt das Fenster öffne und wieder zu mache...

Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: MisterEltako am 14 Mai 2013, 10:10:45
Habt ihr latitude und longitude richtig eingegeben?

Ansonsten einfach mit HORIZON=-2 oder CIVIL oder REAL testen.

MfG, MisterEltako
Titel: Aw: Problem mit der Rollladensteuerung
Beitrag von: AK-868 am 14 Mai 2013, 12:18:48
Gestern hat es geklappt, waere moeglich das die fritzbox eine falsche Uhrzeit hatte?


Das wuerde das verhalten klaeren...

Kann mir evtl jemand erklaeren wie das programm im detail funktioniert?


was wann wo passiert genau passiert... Ich meine das ich noch massive defiziete habe was das angeht.


Dafuer waere ich sehr dankbar.

mfg ak-868