Gerätename in email.body einfügen

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Antworten
voojagig
Beiträge: 2
Registriert: 04.03.2023, 08:50
System: CCU

Gerätename in email.body einfügen

Beitrag von voojagig » 04.03.2023, 09:55

Hallo
ich bin neu in diesem Forum. Habe nun lange damit verbracht diverse Beiträge zu lesen, bin aber nicht fündig geworden. Ich erlaube mir mein Anliegen hier zu platzieren. Vermutlich wurde dies in der Vergangenheit schon mehrfach gefragt. Habe aber eine passende Antwort bis anhin nicht gefunden.

Habe mir ein einfaches Programm zusammengestellt, welches mir eine Email sendet, eine der zwei Türen auf geht. Funktioniert einwandfrei. Siehe Anhang.
Nun möchte ich nur noch, dass ich im email.body den auslösenden Aktor einfügen kann. Damit ich weiss welche Türe sich geöffnet hat. Habe keinen Plan wie ich dies da reinkriege. Hab was mit TCL Variablen gelesen etc. Weiss nicht ob es eine Systemvariable gibt, welche ein Pointer auf den im Programm auszulösendes Gerät war. Bin aber an dieser Stelle ein wenig ratlos. Alternativ kann ich zwei Programme machen auf je einen Gerät. Wär halt schöner in einem Programm zu machen.

Kann mir da jemand einen Tip geben, in welche Richtung ich loslaufen soll?

Danke und Gruss
Robert
Dateianhänge
Image.png

Fonzo
Beiträge: 6744
Registriert: 22.05.2012, 08:40
System: CCU
Hat sich bedankt: 25 Mal
Danksagung erhalten: 486 Mal

Re: Gerätename in email.body einfügen

Beitrag von Fonzo » 04.03.2023, 14:22

voojagig hat geschrieben:
04.03.2023, 09:55
Kann mir da jemand einen Tip geben, in welche Richtung ich loslaufen soll?
Im einfachsten Fall legst Du einfach zwei Programme an mit einem Auslöser, dann kannst Du auch einfach in den Body statt Door Alarm Open die passende Bezeichnung der Tür reinschreiben, weil der Auslöser eindeutig ist.

Benutzeravatar
Black
Beiträge: 5483
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: Gerätename in email.body einfügen

Beitrag von Black » 04.03.2023, 14:43

Es braucht keine 2 oder mehr Programme,

Den Auslöser des Programmes bekommst du mit den paar Scriptzeilen raus:

Code: Alles auswählen

object oID= dom.GetObject("$src$");
string sDevName;
if (oID) {
  if (oID.Type()==OT_HSSDP) {
  sDevName= (devices.Get((channels.Get(oID.Channel())).Device())).Name();
  }
} 
sDevName enthält in dem Falle den Namen des Gerätes, dessen Datenpunkt das Programm getriggert hatte.

Das musst du dann entprechend in dem Script weiterverarbeiten und zuweisen. (heisst die Scriptzeilen sinnig in des Script deines Programmes einarbeiten und sDevName dann entsprechend verarbeiten

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

manfredh
Beiträge: 4155
Registriert: 09.09.2012, 10:41
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 78 Mal
Danksagung erhalten: 301 Mal

Re: Gerätename in email.body einfügen

Beitrag von manfredh » 04.03.2023, 15:04

Die Richtung sieht so aus:

Ich habe eine Systemvariable (eigentlich mehrere, da ich mehrere Scharfschaltebereiche habe) "Alarm_Eingaenge_Ausloeser".

Im Programm, das durch die auslösenden Sensoren getriggert wird, wird unter anderem flgendes Script ausgeführt, welches die se Variable füllt:

Code: Alles auswählen

! Auslöser in SV Alarm_Eingaenge_Ausloeser schreiben
var source = dom.GetObject("$src$");
if(source.IsTypeOf(OT_VARDP))
{
var source = dom.GetObject("$src$").Name();
}
else{
var source = dom.GetObject(((dom.GetObject("$src$")).Channel())).Name();
}
dom.GetObject("Alarm_Eingaenge_Ausloeser").State(source);
Im E-Mail AddOn wird dann folgendes TCL-Script definiert:

Code: Alles auswählen

array set values [rega_script {
var v1 = dom.GetObject("Alarm_Wohnung_Ausloeser").Value();
var v2 = dom.GetObject("Alarm_ELW_Ausloeser").Value();
var v3 = dom.GetObject("Alarm_Intern_Ausloeser").Value();
var v4 = dom.GetObject("Alarm_Eingaenge_Ausloeser").Value();
var v5 = dom.GetObject("Alarm_Zusatzinfo").Value();
var v6 = dom.GetObject("Alarm_Feuer_Ausloeser").Value();
} ]

set v1 $values(v1)
set v2 $values(v2)
set v3 $values(v3)
set v4 $values(v4)
set v5 $values(v5)
set v6 $values(v6)
Wie gesagt - ich habe mehrere Alarmarten/-bereiche.

Bei Alarm wird per Script der Mailversand angestoßen:

Code: Alles auswählen

string stdout;
string stderr;
system.Exec("/etc/config/addons/email/email 01", &stdout, &stderr);
Der im TCL-Script definierte Wert wird dann im Mailbody eingefügt:

Code: Alles auswählen

...
Ausgelöster Bereich: $values(v5)
Erster ausgelöster Melder: $values(v1) $values(v2) $values(v3) $values(v4)
...
Kleiner Schönheitsfehler:
Die Werte V1 bis V4 definieren erstausgelöste Melder von vier Schafschaltebereichen.
Die in HM definierte SV wird immer beim Unscharfschalten mit einem Punkt gefüllt. Somit ist nur die SV des alarmauslösenden Bereichs mit sinnvollem Inhalt gefüllt. Ergebnis (Beispiel) in der Mail:

Code: Alles auswählen

...
Ausgelöster Bereich: Intern
Erster ausgelöster Melder: . . Bewegungsmelder_Flur_unten .
...
Hätte ich umgehen können, indem ich für jeden Bereich eine eigene Mailvorlage definiert hätte. Aber ich bin faul...
Es gibt 10 Arten von Menschen: solche die Binärcode verstehen und solche, die ihn nicht verstehen.

voojagig
Beiträge: 2
Registriert: 04.03.2023, 08:50
System: CCU

Re: Gerätename in email.body einfügen

Beitrag von voojagig » 05.03.2023, 10:51

OK. Vielen Dank. Denke nun habe ich genügend Material zu verarbeiten.

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“