Datum und Uhrzeit in Betreff der E-Mail

diverse Zusatzsoftware

Moderator: Co-Administratoren

Marcelinio0087
Beiträge: 33
Registriert: 22.12.2017, 12:53

Re: Datum und Uhrzeit in Betreff der E-Mail

Beitrag von Marcelinio0087 » 27.12.2017, 13:35

robsdobs hat geschrieben:Hab oben noch eine hübsche Variante eingefügt.
Doofe Frage, aber was muss ich jetzt in deinem wirklich hübschen Code alles ersetzen? Danke vorab!

Gesendet von meinem SM-G930F mit Tapatalk

robsdobs
Beiträge: 510
Registriert: 08.08.2015, 22:52
Danksagung erhalten: 1 Mal

Re: Datum und Uhrzeit in Betreff der E-Mail

Beitrag von robsdobs » 27.12.2017, 14:51

Die Hübsche Variante ist der komplette TCL Code. Ersetzen brauchst du darin nicht viel.

Du brauchst auf der CCU/RM eine Systemvariable EmailEmpfaenger, EmailBetreff, Email Text.

Die Mailadresse test@gmail.com wird nur genommen, wenn die Systemvariable EmailEmpfaenger fehlt.

In der Mail-Vorlage trägst du die Platzhalter wie im Bild ein.

Im Programm beschreibst du die Systemvariable mit dem Betreff und es wird automatisch die Uhrzeit eingefügt.

Vom Smartphone gesendet.
sehr selten im Forum

Marcelinio0087
Beiträge: 33
Registriert: 22.12.2017, 12:53

Re: Datum und Uhrzeit in Betreff der E-Mail

Beitrag von Marcelinio0087 » 27.12.2017, 18:14

robsdobs hat geschrieben:Die Hübsche Variante ist der komplette TCL Code. Ersetzen brauchst du darin nicht viel.

Du brauchst auf der CCU/RM eine Systemvariable EmailEmpfaenger, EmailBetreff, Email Text.

Die Mailadresse test@gmail.com wird nur genommen, wenn die Systemvariable EmailEmpfaenger fehlt.

In der Mail-Vorlage trägst du die Platzhalter wie im Bild ein.

Im Programm beschreibst du die Systemvariable mit dem Betreff und es wird automatisch die Uhrzeit eingefügt.

Vom Smartphone gesendet.
Ich habe deinen ersten Code jetzt eingebunden. Er funktioniert wunderbar. Die hübsche Variante gucke ich mir nochmal in ruhe an. Kannst du mir aber noch erklären wie ich die SystemVariable "EmailBetreff" mit einen Textwert befüllen kann? Aktuell steht immer der Wert 0 in meinem Betreff.

Aktueller Betreff:
Statusänderung: Terassentüren 0 2017-12-27 17:51:39 CET

Davon manuell im EmailSetup erfasst sind die values:
Statusänderung: Terassentüren

aus der Variable kommen die Werte:
0 2017-12-27 17:51:39 CET





Gesendet von meinem SM-G930F mit Tapatalk

robsdobs
Beiträge: 510
Registriert: 08.08.2015, 22:52
Danksagung erhalten: 1 Mal

Re: Datum und Uhrzeit in Betreff der E-Mail

Beitrag von robsdobs » 27.12.2017, 22:56

Ich komme leider frühestens morgen Abend dazu mir das genauer anzusehen.

Vom Smartphone gesendet.
sehr selten im Forum

Marcelinio0087
Beiträge: 33
Registriert: 22.12.2017, 12:53

Re: Datum und Uhrzeit in Betreff der E-Mail

Beitrag von Marcelinio0087 » 02.01.2018, 22:04

robsdobs hat geschrieben:Ich komme leider frühestens morgen Abend dazu mir das genauer anzusehen.

Vom Smartphone gesendet.
Konntest du nochmal gucken? @robsdobs

Gesendet von meinem SM-G930F mit Tapatalk

robsdobs
Beiträge: 510
Registriert: 08.08.2015, 22:52
Danksagung erhalten: 1 Mal

Re: Datum und Uhrzeit in Betreff der E-Mail

Beitrag von robsdobs » 03.01.2018, 17:11

Hallo,

sorry bin nicht dazu gekommen...

Hab ich jetzt mal kurz getestet und kann ich leider nicht nachvollziehen, wo bei dir die 0 herkommt. Ist die Systemvariable "EmailBetreff" bei dir wirklich eine Zeichenkette?


Weil ich hier schon Anfragen hatte, wie es prinzipiell funktioniert eine Anleitung:

Schritt 1 Systemvariablen anlegen:
Einstellungen --> Systemvariable --> neu
SV_EmailBetreff.png
SV_EmailEmpfaenger.png
SV_EmailText.png
NotActive.png
Schritt 2 eMail addon Installieren
Schritt 3 eMail addon konfigurieren
Unter dem Reiter TCL
TCL.png

Code: Alles auswählen

load tclrega.so

set arg1 [lindex $argv 1]
set arg2 [encoding convertfrom utf-8 [lindex $argv 2]]
set arg3 [encoding convertfrom utf-8 [lindex $argv 3]]
Unter Mail eine Mailvorlage anlegen (hier nummer 12):
Mailvorlage.png
Schritt 4 Programm anlegen:
Programme und Verknüpfungen --> Programme --> Neu
Prog_Mailversand.png
Teil für den Script Code:
Zu beachten ist, das eventuell die Mail_ID mit der Nummer der Mailvorlage angepasst werden muss.

Code: Alles auswählen

!############
! Mailversand Version 1.1
!############
boolean DEBUG = false;  ! Enhanced Logging (set to true for debug)
boolean ACTIVE = true;   ! send Message activated (set to false for debug)
boolean addTimeToSubject = true; !set to true if timestamp shoudl be added to subject

var Mail_ID = "12"; ! Mail ID

! +++++ Implementierung +++++
if ( DEBUG ) { system.Exec("logger -t script -p user.debug [Send Push Message Scipt START]"); }
string current_DateTime = system.Date("%Y-%m-%d %H:%M:%S %Z"); !Define message Time

! +++++ EmailText +++++
var obj = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("EmailText");

if (!obj) {
	WriteLine("Keine Systamvariable EmailText!");
	quit;
}
string message = obj.Variable();

if ((message == "") || (message == "???")) {
	if ( DEBUG ) {
		system.Exec("logger -t script -p user.debug [Send Push Message Scipt No Message]");
		WriteLine("Kein Nachrichtentext!");
	}
	quit;
}

! +++++ EmailBetreff +++++
var obj = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("EmailBetreff");
if (!obj) {
	WriteLine("Keine Systamvariable EmailBetreff!");
	quit;
}
string subject = obj.Variable();
if (subject == "") {
	subject = 'Meldung von Homematic Zentrale';
}

if (addTimeToSubject) {
	subject = subject # " " # current_DateTime;
}

! +++++ EmailEmpfaenger +++++
var obj = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("EmailEmpfaenger");
string reciver = obj.Variable();
if (reciver == "") {
	if ( DEBUG ) {
		system.Exec("logger -t script -p user.debug [Send Push Message Scipt No reciver]");
		WriteLine("Kein Empfänger!");
	}
	quit;
}

! +++++ SV_Push_Text +++++

! +++++ Debug Messages +++++ 
string cmd ="/etc/config/addons/email/email "#Mail_ID#" '"#reciver#"' '"#subject#"' '"#message#"' '"#current_DateTime#"'";

if (DEBUG)
{
	WriteLine("Nachrichtentext    message = "#message);
	WriteLine("Betreff            subject = "#subject);
	WriteLine("Empfänger          reciver = "#reciver);
	WriteLine("wirklich senden    ACTIVE = "#ACTIVE);
	WriteLine("command            cmd = "#cmd);
}

if ( ACTIVE ) {
	system.Exec(cmd);
}

if ( DEBUG ) {
	system.Exec("logger -t script -p user.debug [Send Push Message Scipt END1]");
	WriteLine("Ende");
}

Damit kann man dann in beliebigen Programmen das verwenden. Wichtig ist, das der MailText als letztes gesetzt wird:
Mail_Start.png
Hinweis: Ich hab das jetzt schnell innerhalb kurzer Zeit zusammengeklickt. Bei mir hat es funktioniert, das bedeutet aber nicht, das nicht vielleicht noch andere Fehler drin sind.
Getestet ist es unter RaspberryMatic 2.29.23.20171216
Mit der CCU müsste es genauso mit der letzten Firmware und der "Community" Logikschicht funktionieren, bei anderen Einstellungen oder älteren Firmware, muss der System.Exec Befehl unter umständen durch CuXD ersetzt werden, damit es funktioniert.

Gruß

Antworten

Zurück zu „Sonstige Addons“