Ich möchte meinen code um eine if abfrage erweitern aber krig es nicht hin!
Das Funktioniert und macht genau was es soll
define act_on_ANLAGE_SCHARF_off notify ANLAGE_SCHARF.*:off \
delete Alarm_30Sec ;; delete Sirene_60Sec ;; \
delete verzoegert_scharf ;; set ANLAGE_STATUS warten ;;\
define Alarmanlage_aufraeumen at +00:00:11 set ANLAGE_STATUS unscharf ;; \
set ANLAGE_SCHARF_intern,ANLAGE_SCHARF off ;;set Alarm_Mail,Alarm Bereit ;; set Rauch_Melder,Alle_Lichter Alarm_Auswenn ich aber diese if abfragen dazu nehme klappt es nicht mehr!
Ich habe schon alles mögliche ausprobiert aber so scheint es mir am Richtigsten nur leider Funktioniert es nicht :-(
Hier stimmen die Zeilenumbrüche nicht in wirklichkeit schlisen alle sauber mit einem \ ab.
define act_on_ANLAGE_SCHARF_off notify ANLAGE_SCHARF.*:off {\
fhem { "delete Alarm_30Sec ;; delete Sirene_60Sec ;; \
delete verzoegert_scharf ;; set ANLAGE_STATUS warten ;;\
define Alarmanlage_aufraeumen at +00:00:11 set ANLAGE_STATUS unscharf ;; \
set ANLAGE_SCHARF_intern,ANLAGE_SCHARF off ;;set Alarm_Mail,Alarm Bereit ;; set Rauch_Melder,Alle_Lichter Alarm_Aus" };; \
} \
if ( Value("Licht_Vorraum") ne "off" ) { \
fhem { "set Licht_Vorraum off;;sleep 1" };; \
} \
if ( Value("Licht_Wohnzimmer") eq "99 %" ) { \
fhem { "set Licht_Wohnzimmer off;;sleep 1" };; \
} \
if ( Value("Licht_Schlafzimmer") eq "99" ) { \
fhem { "set Licht_Schlafzimmer off;;sleep 1" };; \
} \
if ( Value("Licht_Bad") eq "99" ) { \
fhem { "set Licht_Bad off;;sleep 1" };; \
} \
if ( Value("Licht_Kuche") eq "99" ) { \
fhem { "set Licht_Kuche off;;sleep 1" };; \
} \
} Ich bekomme diese Fehlermeldung hab aber keinen Plan wo die klammer Fehlen könnte
Zitatact_on_ANLAGE_SCHARF_off return value: Unmatched right curly bracket at (eval 36754) line 1, at end of line
syntax error at (eval 36754) line 1, near "} }"
Gruß Markus
Hallo,
verwende fhem in geschweiften Klammern und den Befehl in runden Klammern:
{fhem("set lamp on")};
Mfg Groby
Hallo,
zunächst, ich bin fhem / perl Anfänger und von daher mag das Folgende auch Quatsch sein.
Ich habe das Statement mal in Padre (perl IDE) gesteckt. Hier zeigt er mir an, dass die Klammern hinter
.*:off {\
vor dem ersten "if" Statement wieder geschlossen wird.
} \
Ganz an Ende kommt aber dann noch einmal ein "}"
Hoffe es hilft
Gruß Niko
Also ich verwende Notepad++...
Wenn das define den ganzen Block einschliessen soll, brauchst Du je eine geschweifte Klammer am Anfang & Ende des Blockes.
define act_on_ANLAGE_SCHARF_off notify ANLAGE_SCHARF.*:off {\
...
delete Alarm_30Sec;;
if (Value("Licht_Vorraum") ne "off") {fhem("set Licht_Vorraum off;;sleep 1")};; \
...
}
Mehr geschweifte Klammern brauchst Du nur wenn Du die if-Anweisungen verschachtelst. Nachlesen kannst Du weitere Klammer/if Details hier: http://de.wikibooks.org/wiki/Perl-Programmierung:_Kontrollstrukturen (//de.wikibooks.org/wiki/Perl-Programmierung:_Kontrollstrukturen)
Der Einfachheit halber würde ich mit einem Schaltbefehl und einer if-Anweisung starten. Wenn Du das zum Laufen hast, ist das weitere hinzufügen ein Kinderspiel...
Funktioniert jetzt Danke für die Hilfe!
War gestern wohl doch schon zu spät :-)
#Ausschalten
define act_on_ANLAGE_SCHARF_off notify ANLAGE_SCHARF.*:off { { \
fhem ( "delete Alarm_30Sec ;; delete Sirene_60Sec ;; \
delete verzoegert_scharf ;; set ANLAGE_STATUS warten ;;\
define Alarmanlage_aufraeumen at +00:00:11 set ANLAGE_STATUS unscharf ;; \
set ANLAGE_SCHARF_intern,ANLAGE_SCHARF off ;;set Alarm_Mail,Alarm Bereit ;; \
set Rauch_Melder,Alle_Lichter Alarm_Aus" )};; \
if (Value("Licht_Vorraum") ne "off" ) { \
fhem ( "set Licht_Vorraum off;;sleep 1")};; \
if (Value("Licht_Wohnzimmer") ne "on" ) { \
fhem ( "set Licht_Wohnzimmer off;;sleep 1" )};; \
if (Value("Licht_Schlafzimmer") ne "on" ) { \
fhem ( "set Licht_Schlafzimmer off;;sleep 1" )};; \
if (Value("Licht_Bad") ne "on" ) { \
fhem ( "set Licht_Bad off;;sleep 1" )};; \
if (Value("Licht_Kuche") ne "on" ) { \
fhem ( "set Licht_Kuche off;;sleep 1" )};; \
}
Gruß Markus
Hi!
Versuche es testweise so:
#Ausschalten
define act_on_ANLAGE_SCHARF_off notify ANLAGE_SCHARF.*:off {\
fhem ( "delete Alarm_30Sec ;; delete Sirene_60Sec ;;\
delete verzoegert_scharf ;; set ANLAGE_STATUS warten ;;\
define Alarmanlage_aufraeumen at +00:00:11 set ANLAGE_STATUS unscharf ;;\
set ANLAGE_SCHARF_intern,ANLAGE_SCHARF off ;;set Alarm_Mail,Alarm Bereit ;;\
set Rauch_Melder,Alle_Lichter Alarm_Aus" );;\
if (Value("Licht_Vorraum") ne "off" ) {fhem ( "set Licht_Vorraum off;;sleep 1")};; \
if (Value("Licht_Wohnzimmer") eq "99 %" ) {fhem ( "set Licht_Wohnzimmer off;;sleep 1")};; \
if (Value("Licht_Schlafzimmer") eq "99" ) {fhem ( "set Licht_Schlafzimmer off;;sleep 1")};; \
if (Value("Licht_Bad") eq "99" ) {fhem ( "set Licht_Bad off;;sleep 1" )};; \
if (Value("Licht_Kuche") eq "99" ) {fhem ( "set Licht_Kuche off;;sleep 1" )};; \
}
MfG, MisterEltako.
@ MisterEltako Danke für deine Hilfe! Ich glaube du hast hast auf eine EMail Benachrichtigung reagiert :-( Ich hab aber inzwischen die Lösung gefunden und meinen Beitrag Ediert Sorry!
Für alle die meinen Post gelesen haben bevor ich ihn edirt habe da gelöst:
Ich hab nicht gesehen das auf die Dimmer werte nicht reagiert wird hab es jetzt so gelöst
#Ausschalten
define act_on_ANLAGE_SCHARF_off notify ANLAGE_SCHARF.*:off { { \
fhem ( "delete Alarm_30Sec ;; delete Sirene_60Sec ;; \
delete verzoegert_scharf ;; set ANLAGE_STATUS warten ;;\
define Alarmanlage_aufraeumen at +00:00:11 set ANLAGE_STATUS unscharf ;; \
set ANLAGE_SCHARF_intern,ANLAGE_SCHARF off ;;set Alarm_Mail,Alarm Bereit ;; \
set Rauch_Melder,Alle_Lichter Alarm_Aus" )};; \
if (Value("Licht_Vorraum") ne "off" ) { \
fhem ( "set Licht_Vorraum off;;sleep 1")};; \
if (Value("Licht_Wohnzimmer") ne "on" && Value ("Licht_Wohnzimmer") ne "off") { \
fhem ( "set Licht_Wohnzimmer off;;sleep 1" )};; \
if (Value("Licht_Schlafzimmer") ne "on" && Value ("Licht_Schlafzimmer") ne "off") { \
fhem ( "set Licht_Schlafzimmer off;;sleep 1" )};; \
if (Value("Licht_Bad") ne "on" && Value ("Licht_Bad") ne "off") { \
fhem ( "set Licht_Bad off;;sleep 1" )};; \
if (Value("Licht_Kuche") ne "on*" && Value ("Licht_Kuche") ne "off") { \
fhem ( "set Licht_Kuche off;;sleep 1" )};; \
}