E-Mail-Versand zu schnell nacheinander?

Anbindung von FS20-Komponenten, ELV-Wetterstationen, EnOcean und DMX an HomeMatic

Moderator: Co-Administratoren

Antworten
Hawkeye
Beiträge: 2
Registriert: 20.06.2018, 21:58

E-Mail-Versand zu schnell nacheinander?

Beitrag von Hawkeye » 20.06.2018, 22:53

Hallo,
das Neuaufsetzen meiner Homatic nutze ich für die Optimierung des ganzen Systems. So steige ich beim E-Mail-Versand auf den CUxD um. Anstelle von

Code: Alles auswählen

string stdout;
string stderr;
system.Exec("/etc/config/addons/email/email 02", &stdout, &stderr);
heißt es jetzt

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/email/email 02");
Die Skripte meiner Bewegungsmelder in der alten, nicht CUxD-Version
Ist der Alarmstatus scharf und wird eine Bewegung registriert, so wird für jeden Bewgungsmelder das folgende Skript aufgerufen:

Code: Alles auswählen

! Alarm-Weitergabe Variable für den Flur setzen
dom.GetObject("Bewegungsmelder_Flur").State("true");

! Text der Status-E-Mail
dom.GetObject("EMail_Betreff").State("Im Flur hat der Bewegungsmelder eine Bewegung registriert [AAAAAAAA]");
string vText = 
"Im Flur hat der Bewegungsmelder eine Bewegung registriert. [BBBBBBBB]";
dom.GetObject("EMail_Text").State(vText);

! Status-E-Mail versenden
string stdout;
string stderr;
system.Exec("/etc/config/addons/email/email 02", &stdout, &stderr);
Das Setzen der Variable 'Bewegungsmelder_Flur' am Anfang löst dabei ein zweites Skript aus, das den eigentlichen Alarm abhandelt:

Code: Alles auswählen

! Alarm-Weitergabe Variablen zurück setzen
dom.GetObject("Bewegungsmelder_Flur").State("false");

! Text der Status-E-Mail
dom.GetObject("EMail_Betreff").State("Alarm Stufe 3 ausgelöst [CCCCCCCC]");
string vText = 
"Alarm Stufe 3 ausgelöst. [DDDDDDDD]";
dom.GetObject("EMail_Text").State(vText);

! Status-E-Mail versenden
string stdout;
string stderr;
system.Exec("/etc/config/addons/email/email 02", &stdout, &stderr);
(Ich hab die Programme jetzt etwas vereinfacht. Die Buchstabenketten dienen der besseren Wiedererkennung des Textes in dieser Beschreibung)

Soweit hat bisher alles bestens funktioniert. Ich bekomme eine Meldung wer auslöst

Code: Alles auswählen

Betreff: [SmartHome] Im Flur hat der Bewegungsmelder eine Bewegung registriert [AAAAAAAA]
Im Flur hat der Bewegungsmelder eine Bewegung registriert. [BBBBBBBB]
und eine zweite Meldung dass auch der Alarm eingeleitet wurde

Code: Alles auswählen

Betreff: [SmartHome] Alarm Stufe 3 ausgelöst [CCCCCCCC]
Alarm Stufe 3 ausgelöst. [DDDDDDDD]
Nach dem Umstieg auf CUxD sehen die Skripte so aus:

Code: Alles auswählen

! Text der Status-E-Mail
dom.GetObject("EMail_Betreff").State("Im Flur hat der Bewegungsmelder eine Bewegung registriert [AAAAAAAA]");
string vText = 
"Im Flur hat der Bewegungsmelder eine Bewegung registriert. [BBBBBBBB]";
dom.GetObject("EMail_Text").State(vText);

! Status-E-Mail versenden
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/email/email 02");

! Alarm-Weitergabe Variable für den Flur setzen
dom.GetObject("Bewegungsmelder_Flur").State("true");
und

Code: Alles auswählen

! Alarm-Weitergabe Variablen zurück setzen
dom.GetObject("Bewegungsmelder_Flur").State("false");

! Text der Status-E-Mail
dom.GetObject("EMail_Betreff").State("Alarm Stufe 3 ausgelöst [CCCCCCCC]");
string vText = 
"Alarm Stufe 3 ausgelöst. [DDDDDDDD]";
dom.GetObject("EMail_Text").State(vText);

! Status-E-Mail versenden
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/email/email 02");
Beim ersten Skript habe ich dabei schon in einer 'verbesserten' Version die Weitergabe der Bewegung (Setzen einer Variable) ans Ende verschoben, damit die zweite E-Mail so spät wie möglich ausgelöst wird.

Jetzt bekomme ich aber nur noch eine E-Mail mit folgendem Inhalt:

Code: Alles auswählen

Betreff: [SmartHome] Alarm Stufe 3 ausgelöst [CCCCCCCC]
Alarm Stufe 3 ausgelöst. [DDDDDDDD]
Gestern Abend hab ich sogar folgende E-Mail bekommen (ebenfalls nur eine). Es ließ sich aber heute leider nicht mehr reproduzieren.

Code: Alles auswählen

Betreff: [SmartHome] Alarm Stufe 3 ausgelöst [CCCCCCCC]
Im Flur hat der Bewegungsmelder eine Bewegung registriert. [BBBBBBBB]
(ok, es war schon spät und ich war müde, vielleicht hab ich auch noch was anderes gemacht ... ;-) )
Auf alle Fälle: Nach dem Umstieg auf den E-Mail-Versand mit CUxD klappen beide E-Mails hintereinander nicht mehr richtig. Hat vielleicht jemand von Euch eine Ahnung was ich falsch mache bzw. besser machen könnte? (Ich muss an verschiedenen Stellen direkt nacheinander mehrere E-Mails verschicken, d.h. bessere Vorschläge der Alarmbehandlung helfen mir hier auch nur bedingt weiter.)

LG Hawkeye

P.S.: Ich würde es gerne bei den zwei Meldungen belassen. Das erste Skript behandelt individuell den jeweiligen Sensor und ich weiß wo etwas los ist. Das zweite Skript behandelt für alle Sensoren die Reaktion und ich weiß, dass auch die geklappt hat. Inzwischen hab ich mich an das zweistufige außerdem gewöhnt ...

Benutzeravatar
uwe111
Beiträge: 3677
Registriert: 26.02.2011, 23:22
Kontaktdaten:

Re: E-Mail-Versand zu schnell nacheinander?

Beitrag von uwe111 » 21.06.2018, 11:33

Ich bin jetzt kein HM-Script Experte, aber kurz aufeinander folgende Befehlsaufrufe sollten mittels CUxD kein Problem sein.

Vielleicht sind Deine alten Scripts noch parallel aktiv?

Wenn Du den CUxD Aufruf prüfen möchtest, dann kannst Du die Aufruf-Zeile in Deinem Script einfach verdoppeln:

Code: Alles auswählen

! Status-E-Mail versenden
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/email/email 02");
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/email/email 02");
Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.1.0, RFD-Monitor, Vellemann K8055, SSH KeyDir

Hawkeye
Beiträge: 2
Registriert: 20.06.2018, 21:58

Re: E-Mail-Versand zu schnell nacheinander?

Beitrag von Hawkeye » 24.06.2018, 13:05

Hallo,
ich habe jetzt dazu noch einige Versuche gemacht. Bei der oben verwendeten Methode des E-Mail-Versands arbeitet CUxD die E-Mails nicht der Reihe nach ab, sondern 'reagiert einfach' auf die Ereignisse, ohne dass ein Eingangsbuffer zu existieren scheint. Ähnliche Erfahrungen hat auch ein Bekannter von mir gemacht.

Ein Telefonat mit der HomeMatic Hotline (die natürlich CUxD nicht unterstützen) brachte das Ergebnis, dass sie anraten die Skripte mit 3 Sekunden Zeitunterschied abzusetzen. Und von diesem Wert nach unten kleinere Werte zu testen.

Das Ganze funktioniert natürlich nur, wenn nur ein Ergebnis nach dem anderen ein Ereignis auslöst. Werden zwei oder mehrere Ereignisse ausgelöst, so können sie sich erneut in die Quere kommen.

Ich habe mich jetzt überhaupt nicht mit den 'inneren Werten' des CUxD beschäftigt. Im Moment hab ich dazu auch leider gar keine Zeit. Über einen weiteren Tipp bin ich also jederzeit dankbar. Umgekehrt der Vorschlag aber auch von mir: Kann man dem Mailversand einen Eingangspuffer programmieren?

Viele Grüße
Hawkeye

Benutzeravatar
uwe111
Beiträge: 3677
Registriert: 26.02.2011, 23:22
Kontaktdaten:

Re: E-Mail-Versand zu schnell nacheinander?

Beitrag von uwe111 » 24.06.2018, 15:48

Hawkeye hat geschrieben:ich habe jetzt dazu noch einige Versuche gemacht. Bei der oben verwendeten Methode des E-Mail-Versands arbeitet CUxD die E-Mails nicht der Reihe nach ab, sondern 'reagiert einfach' auf die Ereignisse, ohne dass ein Eingangsbuffer zu existieren scheint. Ähnliche Erfahrungen hat auch ein Bekannter von mir gemacht.
Ich kenne Deine Versuche nicht, aber CUxD führt die Befehle nach dem Beschreiben der Datenpunkte auch in der Reihenfolge des Setzens dieser Datenpunkte durch die Logikschicht der CCU aus. Erst danach laufen die mittels CMD_EXEC aufgerufenen Befehlszeilen als parallele Prozesse im Hintergrund.
Hawkeye hat geschrieben:Ich habe mich jetzt überhaupt nicht mit den 'inneren Werten' des CUxD beschäftigt. Im Moment hab ich dazu auch leider gar keine Zeit. Über einen weiteren Tipp bin ich also jederzeit dankbar. Umgekehrt der Vorschlag aber auch von mir: Kann man dem Mailversand einen Eingangspuffer programmieren?
Mittels SYSLOG-Geräteparameter kannst Du die CMD_EXEC Aufrufe loggen. Vielleicht hilft das weiter.

Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.1.0, RFD-Monitor, Vellemann K8055, SSH KeyDir

Antworten

Zurück zu „CUxD“