[gelöst] Notify mit Dummy Schalter und zwei Bedingungen bringt Syntax Fehler

Begonnen von blitzcom, 05 April 2017, 20:14:36

Vorheriges Thema - Nächstes Thema

blitzcom

Hallo zusammen,

ich verzweifel langsam. Trotz intensiven lesen und studieren komme ich nicht weiter und brauch mal eure Hilfe:

define Terrasse_auf_Licht_an notify Bewegung_Terasse.* { if(isday()) && (if( Value ("Melder_Aussen") eq "on") { fhem "set Terassenlicht on-for-timer 60" }}

Das bringt folgende Fehler:

2017.04.05 20:07:38 1: ERROR evaluating my $EVTPART0='on-old-for-timer';my $TYPE='FS20';my $SELF='Terrasse_auf_Licht_an';my $EVTPART1='60';my $EVENT='on-old-for-timer 60';my $NAME='Bewegung_Terasse';{ if(isday()) && (if( Value ("Melder_Aussen") eq "on") { fhem "set Terassenlicht on-for-timer 60" }}: syntax error at (eval 46269) line 1, near ") &&"
syntax error at (eval 46269) line 1, near "}}"

2017.04.05 20:07:38 3: Terrasse_auf_Licht_an return value: syntax error at (eval 46269) line 1, near ") &&"
syntax error at (eval 46269) line 1, near "}}"

Ich schnall es wirklich nicht, könnt ihr mir helfen?

mfg
Mike

Thorsten Pferdekaemper


Terrasse_auf_Licht_an notify Bewegung_Terasse.* { if(isday() && Value("Melder_Aussen") eq "on") { fhem "set Terassenlicht on-for-timer 60" }}

...zumindest könnte das gehen.
Gruß,
   Thorsten
FUIP

blitzcom

Hallo Thorsten,

erstmal danke für Deine Antwort, aber leider geht das nicht.
Ich hab jetzt mal aufgrund der Zeit ein Ausrufezeichen mit vor das isday gesetzt.
define Terasse_Bewegung notify Bewegung_Terasse.* { if(!isday() && Value("Melder_Aussen") eq "on") { fhem "set Terassenlicht on-for-timer 60" }}
Ich sehe im Event, dass bei Bewegung die Meldung reinkommt, ich LOG steht rein gar nichts, keine Meldung oder Reaktion.

Hast Du noch irgendeine Idee?

mfg
Mike

Thorsten Pferdekaemper

Hi,
ja, gib uns mal ein list Melder_Aussen
Gruß,
   Thorsten
FUIP

blitzcom

Klar, hier mal der Abschnitt aus meiner config:
#*********************************************************************
#*******************Bewegungsmelder Außen********************
#*********************************************************************
define Bewegung_Terasse FS20 ccf3 00
attr Bewegung_Terasse IODev CUL_2
attr Bewegung_Terasse model fs20pira
attr Bewegung_Terasse room FS20
define FileLog_Bewegung_Terasse FileLog ./log/Bewegung_Terasse-%Y.log Bewegung_Terasse
attr FileLog_Bewegung_Terasse logtype text
attr FileLog_Bewegung_Terasse room FS20

#*****Schalter um Bewegungsmelder deaktivieren zu können**************************
define Melder_Aussen dummy
attr Melder_Aussen room FS20
attr Melder_Aussen webCmd on:off

#*****Aktion bei Bewegungserkennung Melder außen**************************

define Terasse_Bewegung notify Bewegung_Terasse.* { if(!isday() && Value("Melder_Aussen") eq "on") { fhem "set Terassenlicht on-for-timer 60" }}


Himtergrund ist, dass ich den Melder im Dunkeln vorrübergehend ausschalten will.

Danke dir

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

ich würde mal die regexp des notify ändern.

notify Bewegung_Terasse:.*

Deine Bedingung

{!isday() && Value("Melder_Aussen") eq "on" }

liefert bei mir aktuell korrekt eine 1 zurück.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Thorsten Pferdekaemper

Ah, offenbar ein fhem.cfg-Editierer. Damit bin ich raus.
Gruß,
   Thorsten
FUIP

blitzcom

Hallo Thorsten. Ja das stimmt, hab aber auch nie gelernt wie man das anders macht.

List Melder:aussen bringt:
Internals:
   NAME       Melder_Aussen
   NR         285
   STATE      off
   TYPE       dummy
   Helper:
     Dblog:
       State:
         Mydblog:
           TIME       1491421857.24741
           VALUE      off
   Readings:
     2017-04-05 21:50:57   state           off
Attributes:
   room       FS20
   webCmd     on:off

@betateilchen
Ich habs abgepasst, allerdings kommen jetzt noch andere Fehler im Log:
2017.04.05 21:51:18 1: PERL WARNING: Useless use of string eq in void context at (eval 46785) line 1.
2017.04.05 21:51:18 3: eval: my $EVTPART0='on-old-for-timer';my $TYPE='FS20';my $SELF='Terasse_Bewegung';my $EVTPART1='60';my $EVENT='on-old-for-timer 60';my $NAME='Bewegung_Terasse';{!isday() && Value("Melder_Aussen") eq "on" } { fhem "set Terassenlicht on-for-timer 60" }

Ich kann schon ein wenig englisch... aber mal im ernst, als Anfänger bin ich hier überfordert.
Eigentlich will ich doch nur den Bewegungsmelder deaktivieren können.
Also bitte, seid gnädig und klärt mich auf. Auch was das fhem.cfg-Editierer betrifft, ich lasse mich wirklich gerne belehren.

mfg
Mike

betateilchen

Da wird auf einen event "on-old-for-timer 60" getriggert, wo auch immer der herkommt.

Geh doch mal in den EventMonitor, löse dann den gewünschten Event aus und lass Dir das notify automatisch als Vorlage generieren.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Thorsten Pferdekaemper

Zitat von: blitzcom am 05 April 2017, 21:59:55
Hallo Thorsten. Ja das stimmt, hab aber auch nie gelernt wie man das anders macht.
Im Kommandofeld. Also ab jetzt: Nie wieder die fhem.cfg auch nur anschauen!

Zitat
List Melder:aussen bringt:
Internals:
   NAME       Melder_Aussen
Sowas bitte in Zukunf in code-Tags.

Zitat
;{!isday() && Value("Melder_Aussen") eq "on" } { fhem "set Terassenlicht on-for-timer 60" }
Wo ist denn jetzt das "if" plötzlich hin?

Zitat
Auch was das fhem.cfg-Editierer betrifft, ich lasse mich wirklich gerne belehren.
Ganz einfach: Tu's nie wieder. Schau die fhem.cfg nicht einmal mehr an.
Gruß,
   Thorsten
FUIP

blitzcom

Hallo Thorsten.
Ist lange her das jemand so mit mir gesprochen hat. Aber natürlich hast du ja Recht und ich werde das beherzigen... Keinen Eingriff mehr in die cfg. War es bisher nur so gewohnt.

Ich habe das genau so gemacht, im Event das entsprechende notify erstellt.

DEF
Bewegung_Terasse:on-old-for-timer.60 set Terassenlicht off-for-timer 60

So weit so gut. Und trotzdem wüsste ich jetzt nicht, wie der entsprechende Befehl zur Verknüpfung mit dem Melder außen lautet.
Wenn ich das hier erst mal verstanden habe, sollte einiges einfacher gehen. Ich gehöre leider nicht zu denen die Perl mit der Muttermilch aufgenommen haben.
Wäre super, wenn ich mich hier aufgleist.

mfg
Mike

Thorsten Pferdekaemper

Hi,
versuch mal das:
Bewegung_Terasse:on-old-for-timer.60 IF ([Melder_Aussen] eq "on") (set Terassenlicht off-for-timer 60)
oder
Bewegung_Terasse:on-old-for-timer.60 IF ([Melder_Aussen:state] eq "on") (set Terassenlicht off-for-timer 60)
Eins von beiden müsste funktionieren.
Gruß,
   Thorsten
FUIP

blitzcom

Hallo Thorsten, gehe ich nachher gleich mal dran und melde mich dann direkt.

Aber hierfür erstmal recht herzlichen Dank.
mfg
Mike

blitzcom

#14
Hallo Thorsten,
sitze gerade hier und will das ausprobieren.
Was jetzt noch in der Formel fehlt ist die !isday Verknüpfung. Kannst Du mir sagen, wie ich die && Verknüpfung setze?

Das wäre super, wenn Du mir hier helfen kannst. Ich arbeite auch artig so wie ich es soll, also nicht in .cfg.

mfg mike

btw: Bewegung_Terasse:on-old-for-timer.60 IF ([Melder_Aussen:state] eq "on") (set Terassenlicht on-for-timer 60)
funtioniert schon mal:-)