FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: SVLoneStar am 26 Mai 2016, 03:08:27

Titel: (gelöst) Log in einem at
Beitrag von: SVLoneStar am 26 Mai 2016, 03:08:27
Hallo,
ich habe folgendes notify definiert:
define Piri_Flur_UG_notify_Dark notify FS20_894700:on.* {\
    if (Value("reset_PIRI_UG_Dark") ne "") {\
        fhem ("delete reset_PIRI_UG_Dark");;\
    }\
    fhem ("set FS20_ST_D on");;\
    fhem ("define reset_PIRI_UG_Dark at +00:05:00 set FS20_894700 off ;;;; set FS20_ST_D off");;\
}

Funktioniert auch - schaltet eine Lampe bei Bewegung an und nach 5 Minuten wieder aus.

Für das Ausschalten hätte ich nun gerne zusätzlich einen Eintrag im Log. Wie kann ich den in das AT einbauen?

Nach einem AT kann man ja auch per {} Perl-Code verwenden und darin z.B.
Log 3, "AT ausgelöst"
Allerdings habe ich beim Ausprobieren keine Möglichkeit entdeckt, sowohl Perl-Code als auch fhem() innerhalb des Perl-Codes zu verwenden....(wie) geht das, oder wie bekomme ich ein 'Log' ins 'at'?

Besten Dank,
Stefan
Titel: Antw:Log in einem at
Beitrag von: Ellert am 26 Mai 2016, 06:53:20
Versuch mal DOIF, fhem.de/commandref_DE.html#DOIF

define Piri_Flur_UG_DOIF_ Dark DOIF (["FS20_894700:on"]) (set FS20_ST_D on) (set FS20_ST_D off, {Log 3, "AT ausgelöst"})

und das Attribut

attr Piri_Flur_UG_DOIF_ Dark wait 0,300

siehe, http://fhem.de/commandref_DE.html#DOIF_wait
Titel: Antw:Log in einem at
Beitrag von: igami am 26 Mai 2016, 07:39:06
Ich würde auch defmod statt define verwenden, dann wird das at bei mehrmaligem auslösen des notify immer weiter nach hinten verschoben und es gibt keine Fehlermeldung "already defined"
Im DEF Editor:

{
[...]
Log 3, "AT ausgelöst";
fhem("...")
}


Grüße
igami
Titel: Antw:Log in einem at
Beitrag von: SVLoneStar am 26 Mai 2016, 12:00:08
Hallo,
danke an Euch beide!
Ich habe den Vorschlag von Ellert (DOIF) umgesetzt - funktioniert.
Beim Vorschlag von igami verstehe ich den Ansatz mit defmod statt define - allerdings habe ich beim Umsetzen des Codes Fehler im Log.
Nach meinem Verständnis müsste das 'Log' und das fhem ("...") doch innerhalb eines 'AT-Blocks' ausgeführt werden - sonst kommt das Log ja sofort beim Auslösen des notify und nicht erst beim Ausführen des AT...einen 'AT-Block' mit {} oder so bekomme ich ohne Fehler im Log aber nicht hin.

Danke nochmal,
Stefan
Titel: Antw:(gelöst) Log in einem at
Beitrag von: CoolTux am 26 Mai 2016, 12:32:38

define Piri_Flur_UG_notify_Dark notify FS20_894700:on.* {
    if (Value("reset_PIRI_UG_Dark") ne "") {
        fhem ("delete reset_PIRI_UG_Dark");
    }
    fhem ("set FS20_ST_D on");
    fhem ("define reset_PIRI_UG_Dark at +00:05:00 { fhem \"set FS20_894700 off;; set FS20_ST_D off\";; Log 3, \"AT ausgelöst\";; }");
}


Konnte es aber nicht testen. Würde aber vielleicht helfen wenn Du mal diese so genannte Fehlermeldungen posten würdest.
Titel: Antw:(gelöst) Log in einem at
Beitrag von: SVLoneStar am 26 Mai 2016, 14:15:12
Hallo CoolTux,
danke Dir, Dein Code geht.
Ich hatte wie beschrieben Probleme, die FHEM- bzw. LOG-Befehle richtig zu 'klammern'. Meine sogenannten Fehlermeldungen im Log sahen u.a. so aus:

2016.05.26 10:46:32 3: FS20 set FS20_ST_D on
2016.05.26 10:46:32 3: defmod reset_PIRI_UG_Dark2 at +00:01:00 {
    fhem("set FS20_894700 off;;set FS20_ST_D off");
Log 3, "AT ausgelöst";} : Unknown command Log, try help.
Unknown command }, try help.
2016.05.26 10:46:32 3: Piri_Flur_UG_notify_Dark2 return value: Unknown command Log, try help.
Unknown command }, try help.
2016.05.26 10:47:32 3: reset_PIRI_UG_Dark2: Unknown command {
, try help.
Unknown argument off"), choose one of dim06% dim100% dim12% dim18% dim25% dim31% dim37% dim43% dim50% dim56% dim62% dim68% dim75% dim81% dim87% dim93% dimdown dimup dimupdown off off-for-timer on on-100-for-timer-prev on-for-timer on-old-for-timer on-old-for-timer-prev ramp-off-time ramp-on-time reset sendstate timer toggle dim:slider,0,6.25,100 blink off-till-overnight intervals on-till-overnight off-till on-till

...und anders, je nachdem, welche (falsche) Syntax ich versucht hatte.

Sorry & Danke für's Helfen,
Stefan