FHEM Forum

FHEM => Automatisierung => Thema gestartet von: pointde am 01 Juni 2015, 16:54:57

Titel: Bewegungsmelder Notify
Beitrag von: pointde am 01 Juni 2015, 16:54:57
Ich habe versucht, das Notify aus dem Wiki für mich umzubauen. Leider bekomme ich einen Syntax Fehler.
Bei einem Brightnesswert kleiner als 34 soll der Bewegungsmelder1 das LichtEG einschalten.

define LichtEGAuto notify Bewegungsmelder1:motion:.* { \
        if ( Value("LichtEG") eq "off" && ReadingsVal( "Bewegungsmelder1", "brightness", "") <= 34 ) { \
                fhem ("set LichtEG on ;; define LichtEG_AUS at +00:00:40 set LichtEG off") } \
        else { \
                fhem ("delete LichtEG_AUS ;; define LichtEG_AUS at +00:00:40 set LichtEG off" ) } }


Ich habe mich für dieses Beispiel entschieden, weil hier der Funkverkehr möglichst gering gehalten wird.
Titel: Antw:Bewegungsmelder Notify
Beitrag von: flurin am 02 Juni 2015, 10:47:09
- Syntax Fehler: wie heisst die Fehlermeldung?

- Reading "brightness" mit oder ohne Einheit? evtl. ReadingsVal mit ReadingsNum ersetzen.

- define mit defmod ersetzen.

- "delete LichtEG_AUS" kann eine Fehlermeldung auslösen, wenn "LichtEG_AUS" nicht vorhanden ist.

Je mehr Infos du lieferst, um so einfacher ist es, dir zu helfen.
Titel: Antw:Bewegungsmelder Notify
Beitrag von: Zrrronggg! am 02 Juni 2015, 17:26:00
Zitat"delete LichtEG_AUS" kann eine Fehlermeldung auslösen, wenn "LichtEG_AUS" nicht vorhanden ist.

Stimmt, die kann man aber vernachlässigen. ODER man verwendet den recht neuen Befehl "defmod":
Also anstatt:
delete LichtEG_AUS ;; define LichtEG_AUS at +00:00:40 set LichtEG off
dies:
defmod LichtEG_AUS at +00:00:40 set LichtEG off
Macht das Selbe aber ohne Fehlermeldung, wenn das define nicht vorhanden ist.

Hier:
define LichtEGAuto notify Bewegungsmelder1:motion:.* { if ( Value("LichtEG") eq "off" && ReadingsVal( "Bewegungsmelder1", "brightness", "") <= 34 ) { \
                fhem ("set LichtEG on ;; define LichtEG_AUS at +00:00:40 set LichtEG off") }


kommen wir richtig nur weiter, wenn wir deine Fehlermeldung sehen.

Ich würde auf Verdacht erstmal versuchen:

define LichtEGAuto notify Bewegungsmelder1:motion:.on.* { if ( Value("LichtEG") eq "off" && ReadingsVal( "Bewegungsmelder1", "brightness", 200) < 35 ) { \
                fhem ("set LichtEG on ;; define LichtEG_AUS at +00:00:40 set LichtEG off") }
Titel: Antw:Bewegungsmelder Notify
Beitrag von: pointde am 02 Juni 2015, 19:33:00
Also, das hier hat schon mal funktioniert:
define LichtEGAuto notify Bewegungsmelder1:motion:.on.* { if ( Value("LichtEG") eq "off" && ReadingsVal( "Bewegungsmelder1", "brightness", 200) < 35 ) { \
                fhem ("set LichtEG on ;; define LichtEG_AUS at +00:00:40 set LichtEG off") }



Ich habe auch versucht eure Ratschläge in die Tat umzusetzen:
define LichtEGAuto notify Bewegungsmelder1:motion:.on.* { \
        if ( Value("LichtEG") eq "off" && ReadingsVal( "Bewegungsmelder1", "brightness", 200) < 35 ) { \
                fhem ("set LichtEG on ;; define LichtEG_AUS at +00:00:40 set LichtEG off") } \
        else { \
                fhem ("defmod LichtEG_AUS at +00:00:40 set LichtEG off " ) } }


Hat nicht funktioniert:
Fehlermeldung
2015.06.02 19:29:35 3: LichtEGAuto return value: syntax error at (eval 5850) line 1, near "\         if"
syntax error at (eval 5850) line 1, near "\         else"


Wahrscheinlich habe ich da einen riesen Denkfehler...
Titel: Antw:Bewegungsmelder Notify
Beitrag von: Zrrronggg! am 04 Juni 2015, 22:06:45
Hm.


Dann schreib das ganze doch mal als oneliner, also ohne Zeilenumbrüche /Strukturierung:

define LichtEGAuto notify Bewegungsmelder1:motion:.on.* { if ( Value("LichtEG") eq "off" && ReadingsVal( "Bewegungsmelder1", "brightness", 200) < 35 ) { fhem ("set LichtEG on ;; defmod LichtEG_AUS at +00:00:40 set LichtEG off") } else {  fhem ("defmod LichtEG_AUS at +00:00:40 set LichtEG off " ) } }

Wenn das geht ist's nur ein Formatierungsproblem mit den Zeilenumbrüchen (woran ich derzeit glaube)
Titel: Antw:Bewegungsmelder Notify
Beitrag von: otto am 22 Mai 2016, 13:50:21
Sorry aber kann mir auch einer dabei helfen :
define OG_Buero_DeckeAuto notify Taster1.press_long.* { if ( Value("OG_Buero_Decke") eq "off" && Value( "Wetter_schwach") eq "off") { fhem ("set OG_Buero_Decke on ;; defmod OG_Buero_Decke_AUS at +00:00:40 set OG_Buero_Decke off") } else {  fhem ("defmod OG_Buero_Decke_AUS at +00:00:40 set OG_Buero_Decke off " ) } }

OG_Buero_Decke ist die Lampe (on off)
Wetter_schwach ein Dummy (on off)
Taster1 ein Eingag (press_short  press_long)

Funkioniert leider nicht denke es liegt an der Abfrage =Taster1.press_long.*
aber finds nicht raus ?

Gruß otto