Abwesenheit und Anwesenheit

Begonnen von kristema, 12 Februar 2013, 20:14:19

Vorheriges Thema - Nächstes Thema

kristema

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

MisterEltako

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.    
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

kristema

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

MisterEltako

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.
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

kristema

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

MisterEltako

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.
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

kristema

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

MisterEltako

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.
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

kristema

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

kristema

Ich musste den Usb-Stick neu formatieren!!!!!!!!!!!!!!!

kristema

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

MisterEltako

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.
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

kristema

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

MisterEltako

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.
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

kristema

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, der per mail informieren.


Gruß
Markus