Originally posted by: <email address deleted>
Ich mache mal einen neuen Thread auf, da ich befürchte, dass in den
alten keiner mehr reinschaut ....
So, jetzt komm ich nochmal mit einer Frage..
Folgendes Szenario:
- An der Haustür ist ein Tür-Kontakt.
- Wenn die Tür auf geht (on) soll das Licht in der Wohnung
angeschaltet werden.
- Aber nur wenn: 1. es 30 Minuten nach Sonnenuntergang ist
UND
2. es nicht innerhalb der letzten 20 Minuten ein
Lampenstatus auf "off" gesetzt wurde
Ich will damit verhindern, dass ich Licht ausmache, weil ich ausgehe
und beim Öffnen der Tür wieder alles angeht :-)
Folgende Idee hatte ich schon.
Bei jedem Statuswechsel auf "off" setze ich den aktuellen Zeitstempel
in eine Variable.
Kann ich sowas per notify machen? -- define ntfLastOFF notify *:off
{fhem "set varLastOFF " . time();}
Anschließend gibt ein notify mit dem das Öffnen der Haustür überwacht
wird.
Hier brauch ich nun 2 Abfragen. Die äußere prüft ob Sonnenuntergang +
30 Minuten vorbei ist. Die innere ob innerhalb der letzten Zeit kein
OFF Befehl gesendet wurde.
Hier weiß ich allerdings nicht wie ich mit den if-Abfragen den
Variableinhalt prüfen kann und wie ich in Perl mit den sunset()
Funktionen umzugehen habe...
Weiß hier jemand Rat? Danke!
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
> Weiß hier jemand Rat? Danke!
define storeLastOff notify .*:off { $data{lastOffTime} = time() }
define sunSetOn notify doorContact:on { \
if($data{lastOffTime}+20*60 < time() &&\
sunset_abs(1800) lt sprintf("%02d:%02d",$hour,$min)) {\
fhem "set light on";;\
}\
}
Ungetestet. Wenn es tut, bitte ins Wiki....
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
Supi, geht.
Hatte es auch schon geschafft, allerdings bei weitem nicht so elegant.
Kannte den $data{lastOffTime} Befehl noch nicht und bin den umweg über
ein dummy Element gegangen. So ist aber viel schöner.
Danke nochmal!
On 6 Sep., 08:59, Rudolf Koenig wrote:
> > Wei hier jemand Rat? Danke!
>
> define storeLastOff notify .*:off { $data{lastOffTime} = time() }
>
> define sunSetOn notify doorContact:on { \
> if($data{lastOffTime}+20*60 < time() &&\
> sunset_abs(1800) lt sprintf("%02d:%02d",$hour,$min)) {\
> fhem "set light on";;\
> }\
>
> }
>
> Ungetestet. Wenn es tut, bitte ins Wiki....
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
Hallo Zusammen,
vielleicht bin nicht schlau genug, oder ich habe es im Wust der Infos
einfach nicht gefunden.
??? Wo werden solche scripte untergebracht ???
Eigenes pl-File oder fhem.cfg oder ????
Vielen Dank für Eure Rückmeldung.
Jörg
On 6 Sep., 15:44, sh-hedge wrote:
> Supi, geht.
>
> Hatte es auch schon geschafft, allerdings bei weitem nicht so elegant.
> Kannte den $data{lastOffTime} Befehl noch nicht und bin den umweg über
> ein dummy Element gegangen. So ist aber viel schöner.
>
> Danke nochmal!
>
> On 6 Sep., 08:59, Rudolf Koenig wrote:
>
>
>
> > > Wei hier jemand Rat? Danke!
>
> > define storeLastOff notify .*:off { $data{lastOffTime} = time() }
>
> > define sunSetOn notify doorContact:on { \
> > if($data{lastOffTime}+20*60 < time() &&\
> > sunset_abs(1800) lt sprintf("%02d:%02d",$hour,$min)) {\
> > fhem "set light on";;\
> > }\
>
> > }
>
> > Ungetestet. Wenn es tut, bitte ins Wiki....- Zitierten Text ausblenden -
>
> - Zitierten Text anzeigen -
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
Einfach in die fhem.cfg
Oder aber über die GUI erstellen. Dann gehts aber auch in die fhem.cfg
On Sep 7, 8:05 pm, JoWiemann wrote:
> Hallo Zusammen,
>
> vielleicht bin nicht schlau genug, oder ich habe es im Wust der Infos
> einfach nicht gefunden.
>
> ??? Wo werden solche scripte untergebracht ???
>
> Eigenes pl-File oder fhem.cfg oder ????
>
> Vielen Dank für Eure Rückmeldung.
>
> Jörg
>
> On 6 Sep., 15:44, sh-hedge wrote:
>
>
>
>
>
>
>
> > Supi, geht.
>
> > Hatte es auch schon geschafft, allerdings bei weitem nicht so elegant.
> > Kannte den $data{lastOffTime} Befehl noch nicht und bin den umweg über
> > ein dummy Element gegangen. So ist aber viel schöner.
>
> > Danke nochmal!
>
> > On 6 Sep., 08:59, Rudolf Koenig wrote:
>
> > > > Wei hier jemand Rat? Danke!
>
> > > define storeLastOff notify .*:off { $data{lastOffTime} = time() }
>
> > > define sunSetOn notify doorContact:on { \
> > > if($data{lastOffTime}+20*60 < time() &&\
> > > sunset_abs(1800) lt sprintf("%02d:%02d",$hour,$min)) {\
> > > fhem "set light on";;\
> > > }\
>
> > > }
>
> > > Ungetestet. Wenn es tut, bitte ins Wiki....- Zitierten Text ausblenden -
>
> > - Zitierten Text anzeigen -
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
Haben übrigens festgestellt, dass die Zeile "define storeLastOff
notify .*:off { $data{lastOffTime} = time() } "
eine Ausgabe in der GUI erzeugt was eigentlich wohl nicht so sein
sollte. Rudolf Koenig prüft ob es ein Bug ist.
Ein Workarround wär hier folgender: " modify storeLastOff
notify .*:off { $data{lastOffTime} = time();; undef }"
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Habe es in FHEM gepostet (Codesnippets), jedoch noch ohne
Berücksichtigung der Anmerkungen von sh-hedge. Wenn's da neue
Erkenntnissse gibt, änder ich das nochmal.
On 7 Sep., 22:07, sh-hedge wrote:
> Haben übrigens festgestellt, dass die Zeile "define storeLastOff
> notify .*:off { $data{lastOffTime} = time() } "
> eine Ausgabe in der GUI erzeugt was eigentlich wohl nicht so sein
> sollte. Rudolf Koenig prüft ob es ein Bug ist.
>
> Ein Workarround wär hier folgender: " modify storeLastOff
> notify .*:off { $data{lastOffTime} = time();; undef }"
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
Hi, ich nochmal!
Es gibt noch ein Problem mit dem Script.
Der Verlgeich von sunset_abs() lt sprintf("%02d:%02d", $hour, $min)
haut nicht hin.
komischerweise allerdings nur wenn die Funktion fsprinf genutzt wird.
Wenn man Werte als String einsetzt gehts.
Beispiel:
sunset_abs() sei 20:38:40
1. if(sunset_abs() lt "20:39") --> wahr
2. if(sunset_abs() lt "20:37") --> falsch
aber
1. if(sunset_abs() lt sprintf("%02d:%02d", "20", "39") --> wahr
2. if(sunset_abs() lt sprintf("%02d:%02d", "20", "37") --> wahr
Ich raffs nicht. Hab schon mit verschiedenen Typen für sprinf probiert
(%d, %u, %s), aber immer das selbe.
Als direkter String eingegeben gehts, über die Funktion ausgegeben
nicht.
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
> Als direkter String eingegeben gehts, über die Funktion ausgegeben
> nicht.
Hmmm. Bei mir geht es:
fhem> {sunset_abs()}
20:31:19
fhem> {sprintf("%02d:%02d", "20", "31")}
20:31
fhem> { sunset_abs() lt sprintf("%02d:%02d", "20", "31") }
fhem> { sunset_abs() lt sprintf("%02d:%02d", "20", "32") }
1
fhem>
Something different: Auf dem FritzBox 7270 kriege ich:
fhem> {sunset_abs()}
Illegal division by zero at ./FHEM/99_SUNRISE_EL.pm line 148.
Dem Perl @ FB7270 fehlt wohl nicht nur log, sondern auch auch sin und cos:
fhem@fb7270> { sin(1) }
1
fhem@PC> { sin(1) }
0.841470984807897
Ich glaube ich muss mein altes Perl fuer den FB7270 aktivieren. Der hatte auch
Device:SerialPort :/
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
> Hmmm. Bei mir geht es:
>
Jetzt gehts bei mir auch wieder... Mysteriös.
Naja... nicht weiter drüber nachdenken *g*
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
So, Fehler gefunden, warum dass beim Testen immer geklappt hat und im
Script später nicht.
Es liegt an den Prozent-Zeichen im sprintf() Ausdruck. Die werden ja
im Normalfall als Variable und ersetzt.
In unserem Fall sollen die aber nicht ersetzt werden, deshalb muss man
diese doppelt schreiben.
Also muss der Ausdruck so aussehen: sprintf("%%02d:%%02d", $hour,
$min)
Dann klappts.
@Zrrronggg! : Muss dann im Wiki auch noch angepasst werden.
Gruß Seb!
On 8 Sep., 23:01, sh-hedge wrote:
> > Hmmm. Bei mir geht es:
>
> Jetzt gehts bei mir auch wieder... Mysteriös.
> Naja... nicht weiter drüber nachdenken *g*
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Done
On 9 Sep., 12:19, sh-hedge wrote:
> So, Fehler gefunden, warum dass beim Testen immer geklappt hat und im
> Script später nicht.
> Es liegt an den Prozent-Zeichen im sprintf() Ausdruck. Die werden ja
> im Normalfall als Variable und ersetzt.
> In unserem Fall sollen die aber nicht ersetzt werden, deshalb muss man
> diese doppelt schreiben.
>
> Also muss der Ausdruck so aussehen: sprintf("%%02d:%%02d", $hour,
> $min)
>
> Dann klappts.
>
> @Zrrronggg! : Muss dann im Wiki auch noch angepasst werden.
>
> Gruß Seb!
>
> On 8 Sep., 23:01, sh-hedge wrote:
>
>
>
>
>
>
>
> > > Hmmm. Bei mir geht es:
>
> > Jetzt gehts bei mir auch wieder... Mysteriös.
> > Naja... nicht weiter drüber nachdenken *g*
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
Hallo,
ich habe ein ähliches Problem, hänge aber noch an einem Detail:
Ist Zustand:
Ich habe ein Watchdog, der mir, sobald ein Fenster mehr als 10min offen ist, eine mail schickt. Das funktioniert nach langem Probieren endlich... (siehe anderer Thread). Der springende Punkt waren die regexp, denn ich hatte immer ins fhttklog geschaut, aber im fhem.log sehen die Meldungen leicht anders formatiert aus... sobald ich sie daraufhin angepaßt hatte, ging auch der watschdog.
Das würde ich gerne noch um folgende zusätzliche Bedingung verfeinern:
- die Aussentemperatur (CUL_WS) ist < 18°
Ich habe versucht, analog zur lastoff-time eine variable zu befüllen mit dem Wert der CUL_WS-Temperatur, aber ich weiss nicht, wie ich im Perl-Teil des notify-Befehl auf die Temepratur zugreifen kann. Ist ja kein Perl-eigener Befehl wie z.B: "time()".
Kann mir hierzu einer einen kurzen Tipp geben?
Grüße,
Ferdinand
Am 07.09.2011 um 23:29 schrieb Zrrronggg!:
> Habe es in FHEM gepostet (Codesnippets), jedoch noch ohne
> Berücksichtigung der Anmerkungen von sh-hedge. Wenn's da neue
> Erkenntnissse gibt, änder ich das nochmal.
>
> On 7 Sep., 22:07, sh-hedge wrote:
>> Haben übrigens festgestellt, dass die Zeile "define storeLastOff
>> notify .*:off { $data{lastOffTime} = time() } "
>> eine Ausgabe in der GUI erzeugt was eigentlich wohl nicht so sein
>> sollte. Rudolf Koenig prüft ob es ein Bug ist.
>>
>> Ein Workarround wär hier folgender: " modify storeLastOff
>> notify .*:off { $data{lastOffTime} = time();; undef }"
>
> --
> To unsubscribe from this group, send email to
> fhem-users+unsubscribe@googlegroups.com
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
> Ich habe versucht, analog zur lastoff-time eine variable zu befüllen mit dem
> Wert der CUL_WS-Temperatur, aber ich weiss nicht, wie ich im Perl-Teil des
> notify-Befehl auf die Temepratur zugreifen kann. Ist ja kein Perl-eigener
> Befehl wie z.B: "time()".
>
Im telnet info timer einschalten, und warten bis ein entsprechendes Event kommt.
Dann weiss man genau, wie man das regexp bauen muss. Z.Bsp. man sieht sowas wie:
2011-09-18 20:21:51.407 CUL_WS s300th temperature: 18.8
Dann speichert man den Wert:
define lastTemp notify s300th:temperature.* { $data{lastTemp} = %EVTPART1 }
Das geht aber einfacher auch ohne notify/Zwischenspeichern: statt
$data{lastTemp} greift man auf dem Readings zu mit
ReadingsVal("s300th", "temperature", "15.0")
Was so alles in den Readings gespeichert wird, sieht man mit "list s300th"
Siehe auch http://fhem.de/commandref.html#perl
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
Hallo,
nach einiger Einarbeitungszeit hab ichs nun auch geshafft,... mein fhem
läuft auf dem USB-Stick an der FritzBox 7270.
Auch die Kinfiguration des CUL_HM lief (mehr oder weniger) problemlos.
Beim Versuch jedoch, eine Sunset-abhängige Programmierung zu schaffen, bin
ich auf den auch o.g. Fehler gestossen:
Something different: Auf dem FritzBox 7270 kriege ich:
fhem> {sunset_abs()}
Illegal division by zero at ./FHEM/99_SUNRISE_EL.pm line 148.
Dem Perl @ FB7270 fehlt wohl nicht nur log, sondern auch auch sin und cos:
fhem@fb7270> { sin(1) }
1
fhem@PC> { sin(1) }
0.841470984807897
Hat jemand schon eine Lösung?
Oder kann man die trigonometrischen Funktionen für diesen Fall nicht
umschreiben, um sie mit der Taylorformel anzunähern?
cos(x) = (x*x/12-1)*x*x/2+1
Das gibt für Abs-Werte kleiner Pi/4 sehr gute Näherungen (siehe Wikipedia).
Den tan könnte man gleich behandeln, nur mit acos und atan weiss ich nicht
so recht...
Ansonsten find ich die Lösung, fhem einfach von aussen auf die Box zu
"stecken" nämlich sehr elegant, aber ohne sunrise/set-Funktion...
Danke für Eure Hilfe!
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
Hallo Tom,
Glückwunsch "zum geschafft ... fhem und 7270". Leider bin ich noch nicht so
weit.
Kannst du bitte mal in meine 2 Themen vom 25.9.11 schauen, ob du mir da
weiterhelfen kannst.
Danke
Gruß
Vorhand
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
Hi Tom, all,
hast Du für dieses Problem eine Lösung gefunden?
Ich kriege nämlich auch auf meiner 7270 einen Division by zero
Fehler...
Gruß,
Marc
On 25 Sep., 13:17, Tom wrote:
> Hallo,
>
> nach einiger Einarbeitungszeit hab ichs nun auch geshafft,... mein fhem
> läuft auf dem USB-Stick an der FritzBox 7270.
> Auch die Kinfiguration des CUL_HM lief (mehr oder weniger) problemlos.
> Beim Versuch jedoch, eine Sunset-abhängige Programmierung zu schaffen, bin
> ich auf den auch o.g. Fehler gestossen:
>
> Something different: Auf dem FritzBox 7270 kriege ich:
> fhem> {sunset_abs()}
> Illegal division by zero at ./FHEM/99_SUNRISE_EL.pm line 148.
>
> Dem Perl @ FB7270 fehlt wohl nicht nur log, sondern auch auch sin und cos:
> fhem@fb7270> { sin(1) }
> 1
> fhem@PC> { sin(1) }
> 0.841470984807897
>
> Hat jemand schon eine Lösung?
>
> Oder kann man die trigonometrischen Funktionen für diesen Fall nicht
> umschreiben, um sie mit der Taylorformel anzunähern?
>
> cos(x) = (x*x/12-1)*x*x/2+1
>
> Das gibt für Abs-Werte kleiner Pi/4 sehr gute Näherungen (siehe Wikipedia).
>
> Den tan könnte man gleich behandeln, nur mit acos und atan weiss ich nicht
> so recht...
>
> Ansonsten find ich die Lösung, fhem einfach von aussen auf die Box zu
> "stecken" nämlich sehr elegant, aber ohne sunrise/set-Funktion...
>
> Danke für Eure Hilfe!
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com