FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: wkarl am 22 September 2013, 05:23:33

Titel: trigger in Perl
Beitrag von: wkarl am 22 September 2013, 05:23:33
Hallo,

ich möchte eine Log-datei mit Informationen ergänzen. Dazu gibt es folgendes Szenario:

- Definition Gerät
###############################################
#####
################################################
define StromZaehler CUL_EM 1 150 1800 0.18802 6.6164
attr StromZaehler IODev CUL_868
attr StromZaehler fm_view 0,0
attr StromZaehler icon openautomation/measure_power_meter
attr StromZaehler model EMWZ
attr StromZaehler room H.DV.Strom
#################################################
define FileLog_StromZaehler_Gesamt FileLog /opt/fhem/log/StromZaehler_Gesamt-%Y.log StromZaehler
attr FileLog_StromZaehler_Gesamt icon edit_save
attr FileLog_StromZaehler_Gesamt logtype MyPowerkWhDay:Power,text
attr FileLog_StromZaehler_Gesamt room H.DV.Strom

- Definition Ergänzung
################################################
#####
################################################
define StromZaehler_CNT notify StromZaehler:CNT.* { \
    fhem ('trigger StromZaehler test');; \
    Log 1, ">>> test";; \
}
attr StromZaehler_CNT room Z.HA.fhem


trigger manuell ausgeführt schreibt die Information in die Log Datei. Aus der obigen Ergänzung heraus nicht.

Was ist hier falsch?

Danke schon mal für Eure Antworten.

ciao walter
Titel: Aw: trigger in Perl
Beitrag von: fiedel am 22 September 2013, 08:07:48
Hi Walter,

dann kann ja nur dein event :CNT.*nicht stimmen.

Gruß

Frank
Titel: Aw: trigger in Perl
Beitrag von: wkarl am 22 September 2013, 08:25:57
Hallo Frank,

die Log Information wird geschrieben, d.h. der Event wird ausgelöst.

ciao walter
Titel: Aw: trigger in Perl
Beitrag von: wkarl am 22 September 2013, 10:01:43
Hallo,

ich habe jetzt das trigger in ein sub ausgelagert:
sub
Write2Log($$) {
    my ($logdevice, $loginfo) = @_;  # device and info to be used
    Log 1, ">>> $logdevice $loginfo";
    fhem "trigger $logdevice $loginfo";
}

Aufruf geschieht wie folgt:
define StromZaehler_CNT notify StromZaehler:CNT.* { \
    my $dev = "StromZaehler";; \
    my $info ="Test: test";; \
    Write2Log("$dev", "$info");; \
}
attr StromZaehler_CNT room Z.HA.fhem

Wird das sub über das notify aufgerufen erscheint der Log-Eintag im Haupt-log, aber kein Eintrag im StromZaehler-log.
Rufe ich das sub mit
{ Write2Log("StromZaehler","Test: test") }
auf so bekomme ich einen Eintrag im StromZaehler-Log.

Persönlicher System-Modus meldet: Völlige Verwirrung!

Hat jemand ne Erklärung dafür?

Danke und ciao walter
Titel: Aw: trigger in Perl
Beitrag von: justme1968 am 22 September 2013, 10:31:20
in deinem triggrer fehlt der doppelpunkt nach dem device:fhem "trigger $logdevice: $loginfo";
gruss
  andre
Titel: Aw: trigger in Perl
Beitrag von: wkarl am 22 September 2013, 12:49:32
mmmmmmmmhhhhhh, nö.

2013.09.22 12:48:28.386 1: >>> StromZaehler Test: test
2013.09.22 12:48:28.387 3: trigger StromZaehler: Test: test : Please define Stro
mZaehler: first


ciao walter
Titel: Aw: trigger in Perl
Beitrag von: justme1968 am 22 September 2013, 14:23:29
sorry. das war natürlich  blödsinn und ich noch nicht ganz wach.

das problem ist die reihenfolge der aufrufe vom filelog und deinem notify. leider kann man die so viel ich weiss nur vom modul code sauber beinflussen.

der unsaubere weg ist von hand so etwas zu setzen:{$defs{StromZaehler_CNT}{NTFY_ORDER}="10-StromZaehler_CNT"};
bei dir kann es aber sein das es reicht wenn der name des triggers alphabetisch vor dem namen des filelog liegt.
gruss
  andre
Titel: Aw: trigger in Perl
Beitrag von: wkarl am 24 September 2013, 19:19:23
Hallo Andre,

folgendes um diesen threat abzuschließen.



ciao walter