FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: uxtuner am 02 Oktober 2021, 17:20:10

Titel: DoIf Unix Mail versenden bei Event
Beitrag von: uxtuner am 02 Oktober 2021, 17:20:10
Hallo,

ich bin etwas außer Übung ..

Bei diesem Event möchte ich ein Mail versenden:

2021-10-02 17:13:36 ZWave ZWave_SENSOR_NOTIFICATION_3 alarm: HomeSecurity: Tampering - product covering removed


Mein Doif sieht so aus

Internals:
   CFGFN     
   DEF        ([ZWave_SENSOR_NOTIFICATION_3:alarm] eq "Tampering") ({echo "Wassermeldung" | mail -s"im Keller steht Wasser" xx@xxxxxxx.org})
   FUUID      615874b3-f33f-55bb-ce9c-96cc9da8faa0554a
   MODEL      FHEM
   NAME       di_water
   NOTIFYDEV  global,ZWave_SENSOR_NOTIFICATION_3
   NR         883
   NTFY_ORDER 50-Wasserdetection
   STATE      cmd_2
   TYPE       DOIF
   VERSION    24905 2021-09-01 18:35:54
   READINGS:
     2021-10-02 17:14:01   Device          ZWave_SENSOR_NOTIFICATION_3
     2021-10-02 17:13:36   cmd             2
     2021-10-02 17:13:36   cmd_event       ZWave_SENSOR_NOTIFICATION_3
     2021-10-02 17:13:36   cmd_nr          2
     2021-10-02 17:14:01   e_ZWave_SENSOR_NOTIFICATION_3_alarm HomeSecurity: Event cleared: Previous Events cleared
     2021-10-02 17:13:15   mode            enabled
     2021-10-02 17:13:36   state           cmd_2
   Regex:
     accu:
     collect:
     cond:
       ZWave_SENSOR_NOTIFICATION_3:
         0:
           alarm      ^ZWave_SENSOR_NOTIFICATION_3$:^alarm:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'ZWave_SENSOR_NOTIFICATION_3','alarm') eq "Tampering"
   do:
     0:
       0          {echo "Wassermeldung" | mail -s"im Keller steht Wasser" xx@xxxxxxxx}
     1:
   helper:
     DEVFILTER  ^global$|^ZWave_SENSOR_NOTIFICATION_3$
     NOTIFYDEV  global|ZWave_SENSOR_NOTIFICATION_3
     event      alarm: HomeSecurity: Event cleared: Previous Events cleared
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   ZWave_SENSOR_NOTIFICATION_3
     timerevent alarm: HomeSecurity: Event cleared: Previous Events cleared
     triggerDev ZWave_SENSOR_NOTIFICATION_3
     timerevents:
       alarm: HomeSecurity: Event cleared: Previous Events cleared
     timereventsState:
       alarm: HomeSecurity: Event cleared: Previous Events cleared
     triggerEvents:
       alarm: HomeSecurity: Event cleared: Previous Events cleared
     triggerEventsState:
       alarm: HomeSecurity: Event cleared: Previous Events cleared
   internals:
   readings:
     all         ZWave_SENSOR_NOTIFICATION_3:alarm
   trigger:
   uiState:
   uiTable:
Attributes:
   room       System->DoIF


Mailversand von der Kommandozeile funktioniert. Was mach ich falsch?
Titel: Antw:DoIf Unix Mail versenden bei Event
Beitrag von: Otto123 am 02 Oktober 2021, 17:36:09
Hi,

Du hast den Shell code einfach in die Perl Klammer geschrieben. Das wird nix.
Wenn du den Shell Code in system() einpackst wird es gehen. Falls der User fhem Mail senden darf.

Gruß Otto
Titel: Antw:DoIf Unix Mail versenden bei Event
Beitrag von: uxtuner am 02 Oktober 2021, 17:40:02
habs gefunden - das funktioniert:

(["ZWave_SENSOR_NOTIFICATION_3 alarm: HomeSecurity: Tampering"]) ({echo "Wassermeldung im Keller" | mail -s"Wasser!!!" xxx@xxxxxx})
Titel: Antw:DoIf Unix Mail versenden bei Event
Beitrag von: uxtuner am 02 Oktober 2021, 17:51:50
doch nicht ;-)
Titel: Antw:DoIf Unix Mail versenden bei Event
Beitrag von: Otto123 am 02 Oktober 2021, 18:23:59
Hätte mich auch gewundert. Das Problem zerfällt immer in zwei Teile:
Wird überhaupt getriggert (danach habe ich nicht geschaut) den Teil hast Du eventuell gefunden bzw. hast Dich genähert. Den Punkt kannst Du aber super einfach mit dem Eventmonitor lösen (create modify Devices)! https://wiki.fhem.de/wiki/Event_monitor
Der zweite Teil: funktioniert der Ausführungsteil? Dazu hatte ich was "gefunden" :)
Titel: Antw:DoIf Unix Mail versenden bei Event
Beitrag von: uxtuner am 02 Oktober 2021, 18:27:51
([ZWave_SENSOR_NOTIFICATION_3:"alarm:.Water:.Leak.detected.-.Unknown.Location"]) ({echo 'Wassermeldung im Keller' | /usr/bin/mail -s 'Wasser' xxx@xxxxx})

seh ich zumindest im Event Monitor "2021-10-02 18:24:28 DOIF di_water cmd_event: ZWave_SENSOR_NOTIFICATION_3"
Titel: Antw:DoIf Unix Mail versenden bei Event
Beitrag von: MadMax-FHEM am 02 Oktober 2021, 18:34:05
Wollte ich auch grad schreiben, weil das hier:

Zitat
2021-10-02 17:13:36 ZWave ZWave_SENSOR_NOTIFICATION_3 alarm: HomeSecurity: Tampering - product covering removed
sicher nicht der "Wasseralarm" ist ;)

Ich habe z.B. bei den ZWave-Rauchmeldern und auch Bewegungsmeldern erst mal ein userReadings angelegt, um aus den vielen Alarmen den passenden "rauszusuchen".

EDIT: z.B.:

motion_state:alarm_HomeSecurity.* {if(ReadingsVal($name,"alarm_HomeSecurity","n.a.") eq "Motion Detection - Unknown Location, notificationIsOn"){return "motion"}elsif(ReadingsVal($name,"alarm_HomeSecurity","n.a.") eq "Event cleared: Motion Detection - Unknown Location, arg 108, notificationIsOn"){return "noMotion"}else{return "unknown"}}

d.h. ich triggere dann auf "motion" bzw. "noMotion"... :)

Es gibt auch das Attribut extendedAlarmReadings...

Gruß, Joachim
Titel: Antw:DoIf Unix Mail versenden bei Event
Beitrag von: Otto123 am 02 Oktober 2021, 18:37:25
Zitat von: uxtuner am 02 Oktober 2021, 18:27:51
seh ich zumindest im Event Monitor "2021-10-02 18:24:28 DOIF di_water cmd_event: ZWave_SENSOR_NOTIFICATION_3"
Scheinbar hast Du korrigiert und jetzt stimmt der Ausführungsteil immer noch nicht, eventuell so?:
([ZWave_SENSOR_NOTIFICATION_3:"alarm:.Water:.Leak.detected.-.Unknown.Location"]) ({system(echo 'Wassermeldung im Keller' | /usr/bin/mail -s 'Wasser' xxx@xxxxx)})
Titel: Antw:DoIf Unix Mail versenden bei Event
Beitrag von: uxtuner am 02 Oktober 2021, 19:26:36
leider auch nicht - ich werde mal Doku wälzen ...
Titel: Antw:DoIf Unix Mail versenden bei Event
Beitrag von: Otto123 am 02 Oktober 2021, 19:53:15
Funktioniert das in der FHEM Kommandozeile?
{system(echo 'Wassermeldung im Keller' | /usr/bin/mail -s 'Wasser' xxx@xxxxx)}
Was steht danach im FHEM Log?

Wie schon gesagt: Dein Versuch im System läuft mit user x, der Code in FHEM läuft (meist) mit user fhem. Du kannst Deinen Versuch auf Systemebene damit für user fhem testen
sudo -su fhem echo ' .....
Titel: Antw:DoIf Unix Mail versenden bei Event
Beitrag von: uxtuner am 02 Oktober 2021, 20:10:02
hab das direkt als fhem user im cli ausgeführt  ;)
Titel: Antw:DoIf Unix Mail versenden bei Event
Beitrag von: uxtuner am 02 Oktober 2021, 20:35:38
so funktionierts (siehe Quotes und Maskierung \@):

([ZWave_SENSOR_NOTIFICATION_3:"alarm:.Water:.Leak.detected.-.Unknown.Location"]) ({system("echo 'Wassermeldung im Keller' | /usr/bin/mail -s'Wasser' xxx\@xxxxxx")})


Danke für Eure Unterstützung!