END_ Makro

Programmierung der HomeMatic CCU mittels contronics homeputer CL

Moderator: Co-Administratoren

Antworten
Mathias@Home
Beiträge: 12
Registriert: 26.02.2018, 21:26
Kontaktdaten:

END_ Makro

Beitrag von Mathias@Home » 26.02.2018, 21:39

Hallo,

wie es in der Anleitung steht habe ich ein Objekt vom Typ Makro erzeugt und den Prefix END_ verwendet.
Das Makro heißt END_MeldungenSenden. Im Makro wird nur eine Mail an mich gesendet ohne irgendwelche Bedingungen.
Das Senden der Mail funktioniert an andere Stelle und ist nur copy&paste, daher kann ich am Code einen Fehler ausschließen.

Leider wird offensichtlich das END_Makro bei erneutem kompilieren und hochladen auf die CCU2 nicht ausgeführt.
Jemand eine Idee, vielleicht muss ich da noch irgendwo was einstellen was nicht in der Hilfe nicht steht?

Grüße
147 Homematic und Homematic IP an CCU2, PhilipsHue, Homeputer CL Studio mit 57200 Lines of Code.

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: END_ Makro

Beitrag von Familienvater » 26.02.2018, 23:32

Hi,

das End-Makro hat ein paar ungeschriebene Gesetze, die leider nicht im Kleingedruckten der Hilfe stehen.

Eine eMail aus dem Makro versenden kann funktionieren, muss es aber nicht, Problem ist, das das versenden der eMail "Zeit" braucht, weil der Authentifizierungshandshake mit dem SMTP-Server gemacht werden muss, davor muss ggf. der Nameserver noch DNS-Adressen auflösen, und es müssen auch noch Daten übertragen werden, während eigentlich ein externer Steuerprozess, der auf Zentrale läuft, von außen den Befehl bekommen hat: "Shut Down Execengine". Je schneller das Netzwerk, je "näher" der Mailserver, je kürzer die eMail, desto größer die Wahrscheinlichkeit, das die eMail noch versendet wird, bevor der EE der Strom abgestellt wird.
Jetzt könnte man sagen, kein Thema, dann mache ich ein "warte("00:00:10") nach dem Versenden der eMail in das Makro, das hilft leider nichts, weil mit der ersten Aktion, die eine "Zeitverzögerung" auslöst, auch das Makro bzw. die ExecEngine beendet wird. Man müsste die ExecEngine mit Dingen beschäftigen, die "echt" Zeit kosten, aber nicht in den Hintergrund geschickt werden (wobei ich ehrlich nicht weiß, ob dann die eMail zuverlässiger Versendet werden würde). Unter Windows würde ich einfach sagen, lass uns mal die Fakultät einer großen Zahl berechnen, aber ein Sprung mit GEHEZU im END_ -Makro nach oben ist ein "Zeitverbrauch" und führt auch zum sofortigen Ende.
Ich verschicke aus meinem End-Makro erst die Mail, dann starte ich noch eine externe Shell, die eine Pushover versendet, führe dann noch sehr viele Schreibedatei()-Befehle aus, und dann hatte hoffentlich alles genug Zeit, um sauber beendet zu werden (wobei mein Mailserver im Intranet steht, und keine Authentifizierung und Verschlüsselung braucht).

Der "einzige" Befehl, der mir auf die schnelle einfällt, der je nach Projekt einiges an Zeit fressen könnte, wäre ALLEWERTESICHERN, das ist aber evtl. das "letzte", was ich in der Situation machen möchte, weil ich nicht weiß, wann das interne Sichern der Variablen passiert, nicht das sich die beiden in die Quere kommen, und nachher nichts gesichert ist.

Der Familienvater

Antworten

Zurück zu „homeputer CL“