Hauptmenü

at nachtriggern?

Begonnen von Guest, 29 August 2012, 08:45:01

Vorheriges Thema - Nächstes Thema

Guest

Originally posted by: <email address deleted>

Frage: gibt es einen Trick, das ich ein at nachtriggern kann?
(Vielleicht/bestimmt gibt es auch ne bessere Lösung für meine Funktion)

Ich hab in meiner Garage einen Bewegungsmelder, der nur einen dim Befehl
absetzt.
Ich wollte, das im WebFrontend das Icon nach ein paar Minuten dann gelöscht
wird, wenn keine Bewegung mehr statt gefunden hat.

Hier mein notify in der fhem.cfg dazu:

define Bewegungsmelder_notify notify MansCave_Bewegungsmelder_Oben:dim.* {\
 Log 1, "MansCave Bewegungsmelder Oben meldet Bewegung";;\
 prg_MansCave_Bewegungsmelder_oben\
}


Und weil ich dazu übergegangen bin, all meine Funktionen vor dem Eigenleben
von OWX zu schützen, und das in die MyUtils auslagere, hier noch die
Funktion dazu:

sub
prg_MansCave_Bewegungsmelder_oben()
 {
  { fhem ("define Bewegungsmelder_reset at +00:05:00 set
MansCave_Bewegungsmelder_Oben off")};
  if ($value{AlarmMode} eq "on") {
   {Log 1,"Bewegungsmelder Halle ALARM!!!"};
   {fhem("set MansCave_Fensterlicht on-for-timer 180")};
   {fhem("set MansCave_Dachlicht on-for-timer 180")};
   {fb_mail('ralf@xxx.com','fhem:MansCave','ALARM Bewegungsmelder Halle
oben!')}
   }
}

So weit so gut. Problem: ist das at erst mal aktiv, und gehen weitere
Bewegungsmeldungen innerhalb der nächsten 5 Minuten ein, gibt es
Fehlermeldungen im Log, das das at schon definiert ist.

Geht das eleganter?

VG
Ralf


--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

rudolfkoenig

                                                   

> gibt es Fehlermeldungen im Log, das das at schon definiert ist.

Ergo man sollte das at nur dann definieren, wenn es noch nicht existiert:
  if(!Value("Bewegungsmelder_reset")) {
    fhem ("define Bewegungsmelder_reset at ...");
  }

Was mir noch auffaellt:
- Bei { fhem("...") }; ist das {} ueberfluessig, fhem("..."); reicht auch, und
  das gilt auch fuer alle anderen Kommandos.  Das {cmd1}{cmd2}{...} hat hier
  irgendwer erfunden um die ;; zu sparen (was mir trotzdem lieber waere), und
  das Format verbreitet sich zu meinem erstaunen wie Unkraut, mit div.
  Mutationen.
- $value{xxx} wird demnaechst entfernt, bitte Value("xxx") verwenden.
- man kann statt "set a xxx; set b xxx" auch "set a,b xxx" schreiben.
  Oder "set MansCave_.*licht on-for-timer 180".

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Zrrronggg!

                                                     

Ich mag mich taeuschen, aber diese Fehlermeldung haben ja letztlich
nur informativen Charakter und koennten im Grunde auch ignoriert
werden.

Allerdings hat dein Konstrukt als auch Rudis Vorschlag den Nachteil,
dass die Zeit in das Webfrontend geaendert wird, bei neuer Ausloesung
nicht verlaengert wird.

Es kann also folgendes passieren:
1. Ausloesung :  define Bewegungsmelder_reset at +00:05:00
2. Ausloesung nach 4 Minuten und 59 Sekunden: Da Bewegungsmelder_reset
noch existiert wird  kein neues erzeugt
3. EINE Sekunde später geht das Webfrontend auf OFF, obwohl die letzte
Ausloesung erst vor einer Sekunde war.

Kann sein, dass das in deiner Anwendung egal ist.
Will man hingegen, dass die Zeit mit jeder Meldung des IR Sensors
verlaengert wird, könnte man auch


fhem ("delete Bewegungsmelder_reset ;; define Bewegungsmelder_reset at
+00:05:00 set
MansCave_Bewegungsmelder_Oben off")

verwenden

Damit wird die Zeit mit jeder Ausloesung zurueckgesetzt. Natuerlich
gibts bei der ersten Ausloesung die Fehlermeledung
"please define Bewegungsmelder_reset first", die man meiner Auffassung
nach aber auch einfach ignorieren kann.


Ich arbeite viel mit sowas und kann eigentlich ausser der "stoerenden"
Zeile im Logfile keinen Nachteil erkennen.

Wenn man es ganz sauber haben will, koennte man Rudis abfrage als
Bedingung fuer das delete verwenden.

Ich mach mir die Muehe nicht.

(Aber vielleicht uebersehe ich auch einen andren als den rein
optischen Nachteil der Fehlermeldung "please define... first")



On 29 Aug., 17:34, Rudolf Koenig wrote:
> > gibt es Fehlermeldungen im Log, das das at schon definiert ist.
>
> Ergo man sollte das at nur dann definieren, wenn es noch nicht existiert:
>   if(!Value("Bewegungsmelder_reset")) {
>     fhem ("define Bewegungsmelder_reset at ...");
>   }
>
> Was mir noch auffaellt:
> - Bei { fhem("...") }; ist das {} ueberfluessig, fhem("..."); reicht auch, und
>   das gilt auch fuer alle anderen Kommandos.  Das {cmd1}{cmd2}{...} hat hier
>   irgendwer erfunden um die ;; zu sparen (was mir trotzdem lieber waere), und
>   das Format verbreitet sich zu meinem erstaunen wie Unkraut, mit div.
>   Mutationen.
> - $value{xxx} wird demnaechst entfernt, bitte Value("xxx") verwenden.
> - man kann statt "set a xxx; set b xxx" auch "set a,b xxx" schreiben.
>   Oder "set MansCave_.*licht on-for-timer 180".

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

Guest

Originally posted by: <email address deleted>

...ihr seit phantastisch!

Rudolf:
auf die Idee mit Value("Bewegungsmelder_reset") wäre ich nie gekommen! Das
ist echt genial.
Die Änderungen der Sytax habe ich eingepflegt.

Zrrong:
Die Mühe mit dem Nachtriggern hab ich mir schon gemacht. So lange ich noch
nicht Sattelfest in der Syntax bin, versuche ich so genau und fehlerfrei
wie Möglich zu arbeiten.

Danke euch beiden!

VG
Ralf



sub
prg_MansCave_Bewegungsmelder_oben()
 {
   if(Value("Bewegungsmelder_reset")) {
      fhem ("delete Bewegungsmelder_reset")
   };
  fhem ("define Bewegungsmelder_reset at +00:05:00 set
MansCave_Bewegungsmelder_Oben off");
  if (Value{"AlarmMode"} eq "on") {
   Log 1,"Bewegungsmelder Halle ALARM!!!";
   fhem("set MansCave_.*licht on-for-timer 180");
   fb_mail('ralf@xxx.com','fhem:MansCave','ALARM Bewegungsmelder Halle
oben!')
   }
}

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com