FHEM Forum

FHEM => fhem-users => Thema gestartet von: Guest am 15 August 2012, 10:49:21

Titel: OWSWITCH Frage
Beitrag von: Guest am 15 August 2012, 10:49:21
Originally posted by: <email address deleted>

...nachdem ich langsam ins Thema komme, stolpere ich noch über die ein oder
andere Unwägbarkeit.

Thema: OWSWITCH

Ich hab mir ein OWSWITCH definiert, wo ein Fenster entweder Auf oder Zu
sein kann.

So sieht mein notify aus:

define Hallenfenster_notify notify Halle_1W:Fenster.* { \
  if(ReadingsVal("Halle_1W","Fenster","") eq "Zu" { \
    #fhem("set Dachfenster on");; \
    log 1, "Fenster zu";;\
  } \
}

Ein {ReadingsVal("Halle_1W","Fenster","")} liefert mir aber ein  "Zustyle="color:red">☇" zurück, weil da so ein rotes < hiter dem "Zu "
ist.

Fragen: Wofür ist das rote < und wie frage ich im Notify richtig ab, das
das ignoriert wird?

VG
Ralf


--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: OWSWITCH Frage
Beitrag von: rudolfkoenig am 15 August 2012, 10:54:34
                                                   

> Fragen: Wofuer ist das rote <

Der Professor mag es bunt. Ich bin eigentlich dagegen sowas im Status zu
halten, es ist aber sein Modul.


> und wie frage ich im Notify richtig ab, das das ignoriert wird?

Mir einem Regexp:
  ...
  if(ReadingsVal("Halle_1W","Fenster","") =~ m/^Zu/) { \
  ...

btw. bei Dir fehlt in der if-Zeile ein Klammer zu.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: OWSWITCH Frage
Beitrag von: Guest am 15 August 2012, 12:19:54
Originally posted by: <email address deleted>

Danke Rudolf!

Ich mag's auch lieber nüchtern. Hab inzwischen den Abschnitt über Regexp
gelesen und rudimentär verstanden.
Dann mein notify abgeändert und gesaved.

define Hallenfenster_notify notify Halle_1W:Fenster.* { \
  if(ReadingsVal("Halle_1W","Fenster","") =~ m/^Zu/) {\
    #fhem("set Dachfenster on");;\
    Log 1, "Fenster zu";;\
  } \
}

Funktioniert aber leider immer noch nicht... Im EventMonitor kommen die
Events regelmässig, aber kein Reaktion im Logfile...

Events:
2012-08-15 12:18:24 OWTHERM Heizungsraum temperature: 22.31 °C
2012-08-15 12:18:38 OWSWITCH Halle_1W Tor: Auf Fenster: Zu☇
2012-08-15 12:18:39 CUL_HM Bad actuator: 0 %
2012-08-15 12:18:39 CUL_HM Bad_Actuator actuator: 0 %
2012-08-15 12:18:39 CUL_HM Bad_Actuator motor: ok
2012-08-15 12:18:39 CUL_HM Bad_Actuator battery: ok
2012-08-15 12:18:44 OWSWITCH Heizung_1W Wamwasser: Off Heizung: Off

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: OWSWITCH Frage
Beitrag von: rudolfkoenig am 15 August 2012, 13:03:21
                                                   

> Funktioniert aber leider immer noch nicht... Im EventMonitor kommen die
> Events regelmässig, aber kein Reaktion im Logfile...

Dein regexp in der notify passt nicht zum Event:

Dein notify:
 Halle_1W:Fenster.*
Event (wenn das so im eventmonitor steht)
  2012-08-15 12:18:38 OWSWITCH Halle_1W Tor: Auf Fenster: Zu???

Noetig waere in notify sowas wie
 Halle_1W:.*Fenster.*

Wenn im notify nur das Zu interessant ist, dann kann man es gleich hier
pruefen, und das if kann entfallen:
 Halle_1W:.*Fenster:.Zu.*

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: OWSWITCH Frage
Beitrag von: Guest am 15 August 2012, 14:23:31
Originally posted by: <email address deleted>

Sauber! Dankeschön!

Also wird immer der gesamte Eventstring vom Notify gelesen. Bislang dachte
ich, das jedes Halle_1W:Fenster-Event das notify triggert.

define Hallenfenster_notify notify Halle_1W:.*Fenster:.Auf.* { \
  Log 1,"Fenster auf!!!";;\
  fb_mail('ralf@@xxx.com','fhem MansCave','Fenster ist auf!!!');;\
}
 

So funktioniert das prima! Muss ich mir nur noch was ausdenken, wie ich das
mit einer dummy-Variablen ein und ausschalte, und das auch nur EINE Mail
versendet wird.
Also wenn ich das bald mal alles drauf habe, ist fhem ein mächtiges
Werkzeug!

Wirklich: mein allergrösster Respekt für diese Arbeit Rudolf & others!!

VG
Ralf

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: OWSWITCH Frage
Beitrag von: Guest am 15 August 2012, 14:43:47
Originally posted by: <email address deleted>

Hallo Ralf,

ich hab das leider noch nicht so elegant gelöst - werde das nach den Hinweisen von Rudolf bei mir auch einbauen. Die Mehrfachsendung der Mail lässt sich eigentlich mit Auswertung von LastValue lösen. Leider liefert das OWSWITCH Modul von pah keinen LastValue Wert, der verschieden zum Value ist. Das würde den Nutzen des Switch mit dem DS2406 wesentlich erhöhen.
Daher habe ich das bei mir so gelöst (sorry, nicht sehr elegant, funktioniert aber):

define OWSWITCH_A OWSWITCH DS2406 D7B57B000000 900
attr OWSWITCH_A AstateS XA #ersetzt das rote Zeichen bei Kurzschluss -> es steht dann ONXA
attr OWSWITCH_A IODev 1wire
attr OWSWITCH_A room Heizung


define melderA FS20 1034 89
attr melderA dummy 1
attr melderA loglevel 6
attr melderA model fs20st

define rueckA FS20 1034 90
attr rueckA dummy 1
attr rueckA loglevel 6
attr rueckA model fs20st



define SWA notify OWSWITCH_A:A.* {\
 if (ReadingsVal("OWSWITCH_A","A","20") ne "ONXA") {\
 fhem ("set melderA on ;; set rueckA on")\
 }\
 else {\
   fhem("set melderA off")\
 }\
}

define ALA notify OWSWITCH_A:A.* {\
 if (Value("melderA") eq "off" && Value("rueckA") eq "on") {\
 FBMail('det@@xxx.de',"Bitte Heizung auffuellen, Druck niedrig!",);;\
 fhem ("set rueckA off")\
 }\
}

vg det.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: OWSWITCH Frage
Beitrag von: Tobias am 15 August 2012, 20:14:16
                                                   

wegen diesem "blöden" Pfeil habe ich auch schon mit pah diskutiert.
Setze mal bitte das Attribut AStateS bzw BStateS auf zb. einen Punkt. Dann
hast du nur noch einen Punkt anstatt dem Pfeil.
Allerdings komplett wegbekommen habe ich es auch noch nicht. Konnte pah
(noch) nicht davon überzeugen uns sowas nicht aufzuzwingen...

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: OWSWITCH Frage
Beitrag von: Guest am 16 August 2012, 10:44:36
Originally posted by: <email address deleted>

...ich hab das noch mal versucht abzuändern, das nur EINE Mail bei "Fenster
offen"  gesendet wird, und mir ein Stück Code aus den Code Snippets raus
gesucht.

define Hallenfenster_notify notify Halle_1W:.*Fenster:.Auf.* {  \
   if( !$data({Hallenfenster_notify}) {\
   Log 1,"Hallenfenster ist auf!!!";;\
   fb_mail('ralf@xxx.com','fhem:MansCave','Hallenfenster ist auf!!!');;\
   $data{Hallenfenster_notify} = 1;;\
   }\
}

Funktioniert aber nicht... LogFile sagt

2012.08.16 10:33:02 3: Hallenfenster_notify return value: Global symbol
"$data" requires explicit package name at (eval 45) line 1.
syntax error at (eval 45) line 1, near "$data("
syntax error at (eval 45) line 1, near ";    }"

Hmm...

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: OWSWITCH Frage
Beitrag von: rudolfkoenig am 16 August 2012, 11:06:46
                                                   

> Funktioniert aber nicht... LogFile sagt

Bitte perl Grundlagen lernen, bevor man kreativ wird :)
Die ersten 2 Kapitel aus dem Kamelbook reichen erstmal.

Falsch:  $data({Hallenfenster_notify})
Richtig: $data{Hallenfenster_notify}

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: OWSWITCH Frage
Beitrag von: Guest am 16 August 2012, 12:59:19
Originally posted by: <email address deleted>

Das ist mir jetzt wirklich etwas peinlich. Du hast natürlich recht. Tut mir
leid.

Ich hab's jetzt aber (denk ich). Geht bestimmt 1000 mal eleganter, aber
besser kann ich es noch nicht.

Hab mir zunächst eine dummy Variable definiert, mit der ich die ganze
"Benachrichtigungs-Funktion" frei schalte.

define AlarmMode dummy
attr AlarmMode setList on off

Und dann die beiden notifys:

define Hallenfenster_auf_notify notify Halle_1W:.*Fenster:.Auf.* {\
   if( $value{AlarmMode} eq "on" &&\
       !$data{Hallenfenster_auf_notify}) {\
   Log 1,"Hallenfenster ist auf!";;\
   fb_mail('ralf@@xxx.com','fhem:MansCave','Hallenfenster ist auf!!!');;\
   $data{Hallenfenster_auf_notify} = 1\
   }\
}

define Hallenfenster_zu_notify notify Halle_1W:.*Fenster:.Zu.* {\
   if( $value{AlarmMode} eq "on" &&\
       $data{Hallenfenster_auf_notify}) {\
   Log 1,"Hallenfenster ist zu!";;\
   fb_mail('ralf@@xxx.com','fhem:MansCave','Hallenfenster ist zu!');;\
   delete $data{Hallenfenster_auf_notify}\
   }\
}

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: OWSWITCH Frage
Beitrag von: Tobias am 16 August 2012, 13:31:22
                                                   

ich lese fleißig mit, kann aber mit "$data{Hallenfenster_auf_notify})"
nichts anfangen. Was ist das?

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: OWSWITCH Frage
Beitrag von: rudolfkoenig am 16 August 2012, 14:02:48
                                                   

> Ich hab's jetzt aber (denk ich). Geht bestimmt 1000 mal eleganter, aber
> besser kann ich es noch nicht.

Keine Bescheidenheit, ich wuesste es auch nicht viel besser.

Fuer Andere ohnen zweiten notify waere eine Alternative statt $data{} einen
dummy zu verwenden, damit man den versende-status im Frontend zuruecksetzen
kann.

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