FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: blitzcom am 05 April 2017, 20:14:36

Titel: [gelöst] Notify mit Dummy Schalter und zwei Bedingungen bringt Syntax Fehler
Beitrag von: blitzcom am 05 April 2017, 20:14:36
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
Titel: Antw:Notify mit Dummy Schalter und zwei Bedingungen bringt Syntax Fehler
Beitrag von: Thorsten Pferdekaemper am 05 April 2017, 20:20:14

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
Titel: Antw:Notify mit Dummy Schalter und zwei Bedingungen bringt Syntax Fehler
Beitrag von: blitzcom am 05 April 2017, 20:32:54
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
Titel: Antw:Notify mit Dummy Schalter und zwei Bedingungen bringt Syntax Fehler
Beitrag von: Thorsten Pferdekaemper am 05 April 2017, 20:51:36
Hi,
ja, gib uns mal ein list Melder_Aussen
Gruß,
   Thorsten
Titel: Antw:Notify mit Dummy Schalter und zwei Bedingungen bringt Syntax Fehler
Beitrag von: blitzcom am 05 April 2017, 21:19:45
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
Titel: Antw:Notify mit Dummy Schalter und zwei Bedingungen bringt Syntax Fehler
Beitrag von: betateilchen am 05 April 2017, 21:31:25
das ist kein "list Melder_Aussen"

Titel: Antw:Notify mit Dummy Schalter und zwei Bedingungen bringt Syntax Fehler
Beitrag von: betateilchen am 05 April 2017, 21:35:04
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.
Titel: Antw:Notify mit Dummy Schalter und zwei Bedingungen bringt Syntax Fehler
Beitrag von: Thorsten Pferdekaemper am 05 April 2017, 21:49:07
Ah, offenbar ein fhem.cfg-Editierer. Damit bin ich raus.
Gruß,
   Thorsten
Titel: Antw:Notify mit Dummy Schalter und zwei Bedingungen bringt Syntax Fehler
Beitrag von: blitzcom am 05 April 2017, 21:59:55
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
Titel: Antw:Notify mit Dummy Schalter und zwei Bedingungen bringt Syntax Fehler
Beitrag von: betateilchen am 05 April 2017, 22:36:29
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.
Titel: Antw:Notify mit Dummy Schalter und zwei Bedingungen bringt Syntax Fehler
Beitrag von: Thorsten Pferdekaemper am 05 April 2017, 22:43:46
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
Titel: Antw:Notify mit Dummy Schalter und zwei Bedingungen bringt Syntax Fehler
Beitrag von: blitzcom am 06 April 2017, 07:38:53
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
Titel: Antw:Notify mit Dummy Schalter und zwei Bedingungen bringt Syntax Fehler
Beitrag von: Thorsten Pferdekaemper am 06 April 2017, 08:37:31
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
Titel: Antw:Notify mit Dummy Schalter und zwei Bedingungen bringt Syntax Fehler
Beitrag von: blitzcom am 06 April 2017, 10:10:17
Hallo Thorsten, gehe ich nachher gleich mal dran und melde mich dann direkt.

Aber hierfür erstmal recht herzlichen Dank.
mfg
Mike
Titel: Antw:Notify mit Dummy Schalter und zwei Bedingungen bringt Syntax Fehler
Beitrag von: blitzcom am 06 April 2017, 17:27:24
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:-)
Titel: Antw:Notify mit Dummy Schalter und zwei Bedingungen bringt Syntax Fehler
Beitrag von: Thorsten Pferdekaemper am 06 April 2017, 18:11:38
Hi,
ah, ja. Da war noch was. Da weiß ich allerdings nur den Weg über Perl, also ungefähr so, wie ich eigentlich schon vorgeschlagen hatte:

Bewegung_Terasse:on-old-for-timer.60 {if(ReadingsVal("Melder_Aussen","state","off") eq "on") {fhem("set Terassenlicht on-for-timer 60") }}

Ich benutze lieber ReadingsVal() statt Value(). Für mich haben Devices keinen Wert, sondern nur Readings.
Gruß,
   Thorsten
Titel: Antw:Notify mit Dummy Schalter und zwei Bedingungen bringt Syntax Fehler
Beitrag von: blitzcom am 06 April 2017, 18:15:09
Ok, verstehe ich. Aber !isday ist immer noch nicht drin. Also inkl. der Und Verknüpfung.
Schliesslich soll der Bewegungsmelder ja nur nachts gehen.

mfg
Mike
Das mit dem RadingsVal lese ich mir mal genauer durch.

mfg
Mike
Titel: Antw:Notify mit Dummy Schalter und zwei Bedingungen bringt Syntax Fehler
Beitrag von: Thorsten Pferdekaemper am 06 April 2017, 18:19:40
Du hast ja Recht...

Bewegung_Terasse:on-old-for-timer.60 {if(!isDay() and ReadingsVal("Melder_Aussen","state","off") eq "on") {fhem("set Terassenlicht on-for-timer 60") }}

Gruß,
   Thorsten
Titel: [gelöst]Antw:Notify mit Dummy Schalter und zwei Bedingungen bringt Syntax Fehler
Beitrag von: blitzcom am 07 April 2017, 06:19:03
Hallo Thorsten.

Bewegung_Terasse:on-old-for-timer.60 {if(!isday() and ReadingsVal("Melder_Aussen","state","off") eq "on") {fhem("set Terassenlicht on-for-timer 60") }}


Funktioniert perfekt. Danke nochmal für Deine Hilfe und Deine Geduld.

mfg
Mike