Bewegungsmelder Notify

Begonnen von pointde, 01 Juni 2015, 16:54:57

Vorheriges Thema - Nächstes Thema

pointde

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.

flurin

#1
- 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.

Zrrronggg!

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") }
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

pointde

#3
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...

Zrrronggg!

#4
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)
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

otto

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