Hallo zusammen!
folgender Code:
define eg_FlurWandsenderAnAbwesend1Notify notify eg_FlurWandsenderAnAbwesend1 { if ( Value("eg_FlurWandsenderAnAbwesend") eq "on") {fhem('at *{sunset("REAL",0,'17:00','21:00')} set eg_WohnzimmerLichtDecke on')} }
define eg_FlurWandsenderAnAbwesend2Notify notify eg_FlurWandsenderAnAbwesend2 { if (Value("eg_FlurWandsenderAnAbwesend") eq "on") {fhem("at *22:30 set eg_WohnzimmerLichtDecke off")} }
Was noch nicht funktioniert: Wenn der sunset schon vorbei ist und es noch nicht 22:30 ist, kann man nicht mehr auf Abwesendheit schalten bzw., wenn man schaltet, geht die "eg_WohnzimmerLichtDecke" nicht an.
Wie kann man das konfigurieren?
Gruß
Markus
Hi!
Ich würde das so versuchen:
(Dummy simuliert hier den Wandsender)
define Wandsender dummy
attr Wandsender eventMap /on:Activ/off:Inactiv/
attr Wandsender room Experiment
attr Wandsender webCmd on:off
define n_Wandsender_on notify Wandsender:on.* {\
fhem("define Schaltvorgang_ein at *{sunset("REAL",0,'17:00','21:00')} set EG_WoziLichtDecke on");;}
define n_Wandsender_off notify Wandsender:off.* {\
fhem("define Schaltvorgang_aus at *22:30:00 set EG_WoziLichtDecke on");;}
MfG, MisterEltako.
Hallo !!
Ich habe das mal folgendermaßen
Angepasst
define n_Wandsender_on notify eg_FlurWandsenderAnAbwesend:on.* {\
fhem("define Schaltvorgang_ein at *{sunset("REAL",0,'17:00','21:00')} set eg_WohnzimmerLichtDecke on");;}
define n_Wandsender_off notify eg_FlurWandsenderAnAbwesend:off.* {\
fhem("define Schaltvorgang_aus at *21:40:00 set eg_WohnzimmerLichtDecke off");;}
MUss ich den den Dummy erstellen ??? Das klappt alles nicht so wie ich das gern hätte.
Gruß
Markus
Hi!
Nein den Dummy erstellen musst du nicht. Ich habe den nur verwendet um dein Beispiel zu testen, da ich keinen Wandsender nutze.
Wichtig wäre:
1. Welche Readings bzw State's liefert dein eg_FlurWandsenderAnAbwesend:on.* z.B. on oder off im STATE???
2. Was steht dem im Logfile bei Ausführung deiner Codezeilen???
MfG, MisterEltako.
Hi,
So nun folgendes:
eg_FlurWandsenderAnAbwesend
0
BTN 05
DEF b926 05
NAME eg_FlurWandsenderAnAbwesend
NR 53
STATE Anwesend
TYPE FS20
XMIT b926
Readings state off 2013-02-13 21:51:48
Allerdings in den Loggs steht:
2013-02-13_19:10:48 eg_FlurWandsenderAnAbwesend Anwesend 2013-02-13_19:10:53 eg_FlurWandsenderAnAbwesend Abwesend
2013-02-13_19:11:10 eg_FlurWandsenderAnAbwesend Anwesend 2013-02-13_19:11:23 eg_FlurWandsenderAnAbwesend Abwesend
2013-02-13_19:11:31 eg_FlurWandsenderAnAbwesend Anwesend 2013-02-13_19:15:07 eg_FlurWandsenderAnAbwesend Abwesend
2013-02-13_19:17:02 eg_FlurWandsenderAnAbwesend Abwesend 2013-02-13_19:17:05 eg_FlurWandsenderAnAbwesend Anwesend
2013-02-13_19:17:08 eg_FlurWandsenderAnAbwesend Abwesend 2013-02-13_19:22:47 eg_FlurWandsenderAnAbwesend Abwesend
2013-02-13_19:22:49 eg_FlurWandsenderAnAbwesend Anwesend 2013-02-13_19:30:58 eg_FlurWandsenderAnAbwesend Abwesend
Hi!
Unter der Annahme das eg_FlurWandsenderAnAbwesend im Status Anwesend/Abwesend liefert:
define n_Wandsender notify eg_FlurWandsenderAnAbwesend:.* {\
my $Logeintrag = Value("eg_FlurWandsenderAnAbwesend";;\
Log 1, "Der Status des Senders ist $Logeintrag");;\
if (Value("eg_FlurWandsenderAnAbwesend") eq "Anwesend"){\
fhem("define Schaltvorgang_ein at *{sunset("REAL",0,'17:00','21:00')} set eg_WohnzimmerLichtDecke on");;}\
elsif (Value("eg_FlurWandsenderAnAbwesend") eq "Abwesend"){\
fhem("define Schaltvorgang_aus at *21:40:00 set eg_WohnzimmerLichtDecke off");;}\
}\
}
Wenn es nicht geht bitte noch define mit attr von "eg_FlurWandsenderAnAbwesend" und neue Logeinträge posten.
Prinzipell zum Verständnis eine Frage:
Du möchtest:
bei Anwesenheit: Soll Lampe mit Sonnenuntergang ausgeschaltet werden (laut deinem Code: angeschaltet werden)
bei Abwesenheit: Soll Lampe um 22:30 Uhr ausgeschaltet werden
Meinst du das so?
MfG, MisterEltako.
Hi nochmals danke für die schnelel Antwort.
Fast richtige.
Bei Status Abwesenheit soll der Sunset greifen und die Lampe aber um 22:30 wieder ausschalten.
Noch als "Option" wär schön wenn während Anwesenheit aber der Sunset schon getriggert wurde, dann bei schalten auf Abwesenheit die lampe direkt angeht und wieder um 22:30 aus geht.
Bei betätigen der Anwesentheit soll die Lampe ausgeschaltet werden.
Ich hoffe meine Gedankengängen sind plausibel ;-)
Gruß
Markus
Hi!
Also soll die Lampe als "Einbrecherschreck" dienen???
Dann vielleicht so:
define Schaltvorgang_ein at *{sunset("REAL",0,'17:00','21:00')} set eg_WohnzimmerLichtDecke on
define Schalten notify eg_FlurWandsenderAnAbwesend {\
if ((Value("eg_FlurWandsenderAnAbwesend") eq "Abwesend") && ($hour >17)){\
fhem("set eg_WohnzimmerLichtDecke on");;}\
}
define Lampe_aus at*22:30:00 set eg_WohnzimmerLichtDecke off
MfG, MisterEltako.
Hi!
Ich werde noch bekloppt! Ich wolltes heute abend austesten und was war es, nischt. Nach einer heutigen FI-auslösung und somit Stromausfall; seit dem kann ich nur noch die die fhem.cfg lesen.
Es kommt beim Speichern fhem.cfg: Read-only file system.
So, nun habe ich geschaut und der Usb-stick war von der 7270 erkannt und hatte alle Rechte >>>
drwxrwxrwx 6 root root 4096 Feb 14 20:38 General-USBFlashDisk-01
Ich also die 7270 rebootet-> o.E. stromlos und USB-geräte raus ebenso o.E.
Ich weiß nicht weiter!!
PS. ich kann alle Dateien auf dem Usb nur noch lesen. Liegt so was am Usb-Stick oder an der FB.
Danke und Gruß Markus
Ich musste den Usb-Stick neu formatieren!!!!!!!!!!!!!!!
Hallo MisterEltako!
So, nu weiter mit der KOnfiguration.
define eg_FlurWandsenderAnAbwesend1_on notify eg_FlurWandsenderAnAbwesend { if (Value("eg_FlurWandsenderAnAbwesend") eq "Abwesend" && $now==Value(sunset("REAL",-600,"17:00","21:00")) || (Value("eg_FlurWandsenderAnAbwesend") eq "Abwesend") && $now gt Value(sunset("REAL",-600,"17:00","21:00"))) {fhem("define eg_WohnzimmerLichtDecke_ein set eg_WohnzimmerLichtDecke on)};; }
DEF
*{sunset("REAL",-600,"17:00","21:00")} set eg_WohnzimmerLichtDecke on, HausStatus on { if (Value("eg_FlurWandsenderAnAbwesend") eq "Abwesend")}; }
NAME
eg_WohnzimmerLichtDecke_ein
NR
56
NTM
17:40:02
REP
-1
STATE
Next: 17:40:02
TRIGGERTIME
1361205602
TYPE
at
Wie kann ich auf Next: 17:40:02" mappen ??? Ansonsten klappt soweit alles mit sunset Licht ein und aus etc..
Aber nun die Krucks. Also, wenn ich die Wohnung im Status Abwewend habe klappt es. aber ich möchte noch folgendes ergänzen und zwar den zustand "sunset vorbei" und dann erst "Abwesend" dann soll Lampe ein aber nicht nach 22:30.
Ich muss irgend wie den Valus von Sunset abfragen und mit der aktuellen Zeit vergleichen.Wie kann man das Machen ?????
Das obige define solle in etwa widerspiegeln. Ich weiß nur nicht ob das von der Syntax etc. funktioniert. Ich weiß halt nicht, wie man den sunset Value abfragt!!??
Gruß
Markus
Also wenn du deine o.g. Sonnenuntergangszeit vergleichen möchtest geht das etwas schwierig, da die direkte Abfrage nach Sonnenuntergang + 24h ergibt, davor stimmt sie. Beispiel: 17:46:00 nach Sonnenuntergang ergibt bei Abfrage 41:46:00 -> d.h. 17:46:00 morgen!!
define n_Test3 notify Test3 {\
my $now=sprintf("%%02d:%%02d",$hour,$min);;\
my $Sonnenaufgang_relativ= sunset("REAL",5,"16:00","21:00");;\
my @@Sonnenaufgang_absolut=split(/:/,$Sonnenaufgang_relativ);;\
my $Stunden=shift(@@Sonnenaufgang_absolut);;\
if ($Stunden > 24){$Stunden=($Stunden-24)};;\
unshift(@@Sonnenaufgang_absolut, $Stunden);;\
my $Sonnenuntergang=join (":",@@Sonnenaufgang_absolut);;\
Log 3, "$Sonnenuntergang";;\
if ($Sonnenuntergang lt sprintf("%%02d:%%02d:%%02d",$hour,$min,$sec)){Log 3, "....mach was...."}\
}
Vielleicht bring es dich weiter....
MfG, MisterEltako.
Danke erstmal und ich muss mal testen. Man oh man, mit Perl bin ich noch auf Kriegsfuß; ich hoffe es wird besser.
Aber muss es nicht define n_Test3 notify Test3:.* {\ heißen???
Gruß
Markus
Hi!
Muss es nicht, aber kann ;o).
Es funktioniert beides. Testbar mit: "trigger Test3"
Perl hat so seine Tücken, aber irgendwie ist es auch "faszinierend" was alles dit geht.
Ich erarbeite mir auch gerade eine eigene Übersicht, in der ich versuche die Endergebnisse der einzelnen Probleme, die hier im Fhem-Forum gelöst werden übersichtlicher zusammenzufassen (ähnl. wie FhemWiki, das zwar sehr gut ist, aber mir fehlen hier manchmal konkrete Anwendungen um es zu verstehen)
MfG, MisterEltako.
Hi!
Kann Man das so ausführen.. ich habs nochnicht getestet. Was macht der Eintrag .... Log 3, "$Sonnenuntergang";;\... und....{Log 3,....??
define Abwesend_WoZiLa1_an notify eg_FlurWandsenderAnAbwesend:.*{\
my $now=sprintf("%%02d:%%02d",$hour,$min);;\
my $Sonnenaufgang_relativ= sunset("REAL",-600,"17:00","22:30");;\
my @@Sonnenaufgang_absolut=split(/:/,$Sonnenaufgang_relativ);;\
my $Stunden=shift(@@Sonnenaufgang_absolut);;\
if ($Stunden > 24){$Stunden=($Stunden-24)};;\
unshift(@@Sonnenaufgang_absolut, $Stunden);;\
my $Sonnenuntergang=join (":",@@Sonnenaufgang_absolut);;\
Log 3, "$Sonnenuntergang";;\
if ($Sonnenuntergang lt sprintf("%%02d:%%02d:%%02d",$hour,$min,$sec) && (Value("eg_FlurWandsenderAnAbwesend") eq "Abwesend"){Log 3,"fhem("set eg_WohnzimmerLichtDecke on")";;}\
}
In zukunft sollen noch 1-2 weitere Lampen dazukommen.
und wenn möglich der Wassermelder http://www.elv.de/wassermelder-hms-100-wd.html (//www.elv.de/wassermelder-hms-100-wd.html), der per mail informieren.
Gruß
Markus
Hi!
Die Logeinträge dienen nur zum Testen, ob alles funktioniert und tatsächlich der richtige Wert ausgegeben wird. Das kann man dann entfernen oder ändern, je nachdem was man will...
also aus:
my $Sonnenuntergang=join (":",@@Sonnenaufgang_absolut);;\
Log 3, "$Sonnenuntergang";;\
if ($Sonnenuntergang lt sprintf("%%02d:%%02d:%%02d",$hour,$min,$sec) && (Value("eg_FlurWandsenderAnAbwesend") eq "Abwesend"){Log 3,"fhem("set eg_WohnzimmerLichtDecke on")";;}\
}
wird z.B.:
my $Sonnenuntergang=join (":",@@Sonnenaufgang_absolut);;\
if (($Sonnenuntergang lt sprintf("%%02d:%%02d:%%02d",$hour,$min,$sec)) && (Value("eg_FlurWandsenderAnAbwesend") eq "Abwesend")){\
fhem("set eg_WohnzimmerLichtDecke on")";;\
}
MfG, MisterEltako.
Hi nochmals!
Wo finde ich den die Log 3. in welchem Verzeichnis????
Gruß
Markus
Log 3, "Text....";;
ist doch keine eigene Log-Datei.
Die 3 bedeutet das alle Infos in den " " (wenn in FHEM Loglevel 3 angegeben wurde) in das Haupt-Logfile geschrieben werden. Dort würde man jetzt den Eintag "Text..." mit Logfilezeit finden. Das kannst du doch über Fhem anschauen und musst nicht in ein Verzeichnis.
MfG, MisterEltako.
Hallo Nochmals!
ich wollte nun eine mail bei Abwesenheit versenden und habe folgendes durchgeführt!!
Mail versenden geht grundsätzlich
getestet mit
{ SUB-Routinen-Name('EMailAdresse@Mail.Domain' ('EMailAdresse@Mail.Domain'),'Test','Test-Text');; }
Allerdings aus dem Notify nicht,mmh??!! Was mach ich nun falsch??!!
####################################################
fhem.cfg
define Abwesend_mail notify eg_FlurWandsenderAnAbwesend:on.*{\
FB_mail('xxxxxx@@xxx.xx' (@@xxx.xx'),'FHEM','Abwesend');;}
####################################################
99_Utils.pm
sub
FB_mail($$$)
{
my ($rcpt, $subject, $text) = @_;
my $tmpfile = "fhem_nachricht.txt";
system("/bin/echo \'$text\' > \'$tmpfile\' ");
system("/sbin/mailer send -i \"$tmpfile\" -s \"$subject\" -t \"$rcpt\"");
system("rm \"$tmpfile\"");
Log 3, "Mail sent to $rcpt";
}
########################################################
FritzBoxUtils.pl
sub
FB_mail($$$)
{
my ($rcpt, $subject, $text) = @_;
my $tmpfile = "fhem_nachricht.txt";
system("/bin/echo \'$text\' > \'$tmpfile\' ");
system("/sbin/mailer send -i \"$tmpfile\" -s \"$subject\" -t \"$rcpt\"");
system("rm \"$tmpfile\"");
Log 3, "Mail sent to $rcpt";
}
PS.: zu dem anderen Thema werde ich mal das testen.
define Abwesend_WoZiLa2_an notify eg_FlurWandsenderAnAbwesend:.* {\
my $now=sprintf("%%02d:%%02d",$hour,$min);;\
if (Value("eg_FlurWandsenderAnAbwesend") eq "Abwesend" && Value("eg_WohnzimmerLichtDecke") eq "aus" && sunset_abs(-1800) lt $now) {\
fhem("set eg_WohnzimmerLichtDecke on-till 23:00");;}\
elsif(Value("eg_FlurWandsenderAnAbwesend") eq "Abwesend" && Value("eg_WohnzimmerLichtDecke") eq "aus" && sunset_abs(-1800) gt $now){\
fhem('set eg_WohnzimmerLichtDecke on;;sleep 3;;set eg_WohnzimmerLichtDecke off;;define egWzLampe_an at *{sunset_abs(-1800)} set eg_WohnzimmerLichtDecke on-till 23:00');;}\
}
Gruß
markus
ZitatMail versenden geht grundsätzlich
getestet mit
{ SUB-Routinen-Name('EMailAdresse@Mail.Domain' ('EMailAdresse@Mail.Domain'),'Test','Test-Text');; }
Allerdings aus dem Notify nicht,mmh??!! Was mach ich nun falsch??!!
Also auf den ersten Blick würde ich sagen: müsste auch im notify gehen...
Bist du dir sicher das "notify" auch auslöst???
Versuch doch Mal folgendes:
define Abwesend_mail notify eg_FlurWandsenderAnAbwesend:on.*{\
Log 3, "Es wird versucht eine Email zu senden...";;\
FB_mail('xxxxxx@@xxx.xx' (@@xxx.xx'),'FHEM','Abwesend');;}99_Utils.pmsub
FB_mail($$$){
my ($rcpt, $subject, $text) = @_;
Log 3, "Subroutine erhält folgende Parameter: $rcpt, $subject, $text ...)";
my $tmpfile = "fhem_nachricht.txt";
system("/bin/echo \'$text\' > \'$tmpfile\' ");
system("/sbin/mailer send -i \"$tmpfile\" -s \"$subject\" -t \"$rcpt\"");
system("rm \"$tmpfile\"");
Log 3, "Mail sent to $rcpt";
}und schaue ins Logfile was dort dann steht....
MfG, MisterEltako.
Hallo Nochmals
Also, die { SUB-Routinen-Name('EMailAdresse@Mail.Domain' ('EMailAdresse@Mail.Domain'),'Test','Test-Text');; }
bzw. in meinem Fall { FB_mail('x.xxxxx@web.de' ('x.xxxxx@web.de'),'Test','Test-Text');; }
Bringt im fhem-2013-02.log -->
2013.02.25 16:00:14 3: Subroutine erhält folgende Parameter: x.xxxxx@web.de (x.xxxxx@web.de), Test, Test-Text ...)
2013.02.25 16:00:16 3: Mail sent to x.xxxxx@web.de (x.xxxxx@web.de)
Allerdings dein Listing bringt mir gar kein Eintrag in der fhem-2013-02.log
Gruß
Markus
Das bedeutet somit dein notify wird nicht aktiviert:
define Abwesend_mail notify eg_FlurWandsenderAnAbwesend:on.*{\...
somit wird der Event eg_FlurWandsenderAnAbwesend:on.* wird nicht ausgelöst.
Probier zum Test:
define Test dummy
define Abwesend_mail notify Test{\
Log 3, "Es wird versucht eine Email zu senden...";;\
FB_mail('xxxxxx@@xxx.xx' (@@xxx.xx'),'FHEM','Abwesend');;}
Dann in Kommandozeile: trigger Test
MfG, MisterEltako
Hallo Nochmals nach langer Zeit!
Habe nun FHEM der als EM auf einem RPI laufen und Dermail versandt uns die Abwesendheitsimulation funktioniert soweit. allerdings habe ich noch ein kleines Problem mit dem FS20 S6A Wand sender.
dieser ist als einfache Kanalzahl aktiv 3 Kanäle allerdings gist es ein Problem, wenn man die Taster länger als 0,4sec . betätigt kommt kein "on" oder "off" sondern "dimup" oder "dimdown". ich möchte dies unterdrücken, so da auch ein "ON" oder "Off" kommt.
Gruß
Markus