TCL Syntax für Email Addon

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

alchy
Beiträge: 10752
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 672 Mal

Re: TCL Syntax für Email Addon

Beitrag von alchy » 25.04.2015, 17:37

Dann nimm die set a1 Zeile mal raus, und probier es solo,, also nur die Abfrage der Systemvariablen deines Brenners.
Poste das Script, welches lindex $argv 1 füllt.
Um Hallo Gunther in einer Mail auszugeben brauchst du doch nicht so ein Konstrukt.
Wahrscheinlich reicht nur wieder mal der Input nicht.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Günni
Beiträge: 231
Registriert: 03.10.2013, 00:20
Wohnort: Nordstemmen
Danksagung erhalten: 1 Mal

Re: TCL Syntax für Email Addon

Beitrag von Günni » 25.04.2015, 23:27

Hallo,
wenn ich die erste zeile rausnehme bekomme ich eine gefüllte mail mit meinen verbrauchs daten.
wenn ich nur die erste zeile allein benutze bekomme ich eine auswertung meiner feuermelder.
beides zusammen geht nicht.
Das war ja mein anfangsproblem.

Email 01

Code: Alles auswählen

Betriebsstunden heute    $values(v2) Stunden
Verbrauch heute         $values(v1) Liter
Tankinhalt aktuell    $values(v3) Liter

$result(STDOUT)
Email 02

Code: Alles auswählen

Alarm Rauchmelder: $a1
Gruß Günni

alchy
Beiträge: 10752
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 672 Mal

Re: TCL Syntax für Email Addon

Beitrag von alchy » 26.04.2015, 23:19

Das ist für mich nicht nachvollziehbar.
So wie ich es geschrieben hatte, sollte es gehen, ich verwende es selbst so ähnlich,
und wahrscheinlich zig andere User auch.
Bleibt noch das log und das Script was lindex füllt....

BTW: Wenn Du etwas in einer Mail schreiben willst wie "Hallo Günther",
kannst Du unten unter die anderen set Zeilen im TCL Reiter so was schreiben wie:

Code: Alles auswählen

set hallo "HALLO Günther"
und in die Mailvorlage eben

Code: Alles auswählen

$hallo
Aber was für einen Sinn macht das?
kannst Du ja auch gleich in die Mailvorlage reinschreiben Hallo Günther. :mrgreen:

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

degu
Beiträge: 10
Registriert: 09.09.2016, 16:46

Re: TCL Syntax für Email Addon

Beitrag von degu » 14.09.2016, 19:38

Hallo Alchy,
auch wenn der Thread schon etwas älter ist, passt er genau zu meinem Problem.
Ich habe 3 verschiedene Variablen, die ich mit bestimmten werten zu bestimmten Anlässen fülle:
"Alarmmelder" = welcher Tür/Fensterkontakt wurde bei Alarm ausgelöst
"Brandmelder" = welcher Brandmelder hat ausgelöst
"Batterie-leer" = Welches Gerät meldet leere Batterie

Die Variablen werden auch korrekt bei Änderung/Auslösung auf meiner Startseite angezeigt.
Auch der nachfolgende Email Versand (ohne aktivierten TCL) funktioniert problemlos.
Mit nur einer Variablen und aktivierten TCL habe ich es dank Deiner und HMside Hilfe auch hinbekommen.

Jetzt wollte ich es mit 3 Variablen probieren und eine entsprechende Email versenden, wo auch der "Verursacher" namentlich benannt wird. Sobald ich TCL in der Mailvorlage aber aktiviere, klappt der Mailversand nicht mehr.
Anbei eine entsprechende Mailvorlage und das TCL Script.
Würdest Du bitte mal ein Blick drüber werfen, was ich falsch mache?
Im TCL habe ich auch schon anstelle ".variable" mit
"var v1 = dom.GetObject("Alarmmelder").Value();" probiert = ohne erfolg

TCL:

Code: Alles auswählen

load tclrega.so
array set values [rega_script {

var v1 = dom.GetObject("Alarmmelder").Variable();
var v2 = dom.GetObject("Brandmelder").Varible();
var v5 = dom.GetObject("Batterie-leer").Variable();
} ]

set AM $values(v1)
set BM $values(v2)
set Bat $values(v5)

Email Vorlage:

Code: Alles auswählen

Hallo,
$v1 hat Alarm ausgelöst.
(TCL = aktiviert)
CCU FW2.21.10 / Email Addon: V1.6.6

Vielen Dank vorab!
Mike
Zuletzt geändert von alchy am 14.09.2016, 19:43, insgesamt 1-mal geändert.
Grund: Code bitte in Codetags posten

alchy
Beiträge: 10752
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 672 Mal

Re: TCL Syntax für Email Addon

Beitrag von alchy » 14.09.2016, 19:54

TCL:

Code: Alles auswählen

load tclrega.so
array set values [rega_script {

var v1 = dom.GetObject("Alarmmelder").Value();
var v2 = dom.GetObject("Brandmelder").Value();
var v5 = dom.GetObject("Batterie-leer").Value();
} ]

set AM [encoding convertfrom utf-8 $values(v1)]
set BM [encoding convertfrom utf-8 $values(v2)]
set Bat [encoding convertfrom utf-8 $values(v5)]
Vorlage:

Code: Alles auswählen

Hallo,

$AM 
oder
$BM
oder
$Bat 

hat Alarm ausgelöst.
Auf die einzelnen Vorlagen die oder aufgeteilt.

Fehler:
Schreibfehler bei .Variable()
set Zeilen falsch.
Du kannst natürlich die Konvertierung auch weglassen und

Code: Alles auswählen

set AM $values(v1)
usw. schreiben. das war nicht der Fehler.
Aber in der Mail musst du aber auch $AM verwenden und nicht $v1

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

degu
Beiträge: 10
Registriert: 09.09.2016, 16:46

Re: TCL Syntax für Email Addon

Beitrag von degu » 15.09.2016, 19:00

Hallo Alchy,
Du hast mir damit wieder super geholfen. Nun versendet er den "Auslöser" auch per Email.
Hab vielen DANK dafür!
Mike

alchy
Beiträge: 10752
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 672 Mal

Re: TCL Syntax für Email Addon

Beitrag von alchy » 15.09.2016, 19:03

Bitteschön, freut mich geholfen zu haben und Danke für die Rückmeldung.

Den Auslöser musst du natürlich nicht aus einer Systemvariable auslesen beim Mailversand,
du kannst ihn gleich beim Ermitteln verschicken.
Aber das wirst du sicher gelesen haben

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

degu
Beiträge: 10
Registriert: 09.09.2016, 16:46

Re: TCL Syntax für Email Addon

Beitrag von degu » 15.09.2016, 20:33

Vielen DANK für den Tipp!
Ich bleib bei der Variablen Variante. :D Damit brauch ich nur eine Variable "loggen" anstelle alle Tür/Fensterkontakte.

Wenn ich dazu noch eine kleine von dem Thread abweichende Frage stellen darf:
Irgendwie ignoriert mein Programm, dass es nur von "Kontakt geschlossen --> auf öffnen" (optischer Tür/Fensterkontakt) reagieren soll.
screen.jpg
screen.jpg (22.67 KiB) 3772 mal betrachtet
Beim Zustand von geschlossen auf offen setzt er die Variable einwandfrei. Mach ich das Fenster/Tür 1-2 Sekunden später wieder zu, leert er auch die Variable.
Gibt es eine Möglichkeit, das folgendes Script (damit setze ich meine Variable als "Dann") so einzustellen, dass es nur auf den Status von geschlossen auf öffnen reagiert? --> "if true ..."

Code: Alles auswählen

var sec=dom.GetObject("EG");
string i;
string list;
list="";
foreach(i,sec.EnumUsedIDs())
{
var item=dom.GetObject(i);
if(item.IsTypeOf(OT_CHANNEL))
{
var dev=dom.GetObject(item.Device());
if(dev.HssType()=="HM-Sec-SCo")
{
var state=item.DPByHssDP("STATE");
if(state.Value())
{
list=list#dev.Name();
}
}
}
}
dom.GetObject('Alarmmelder').State(list);
Dankeschön
Mike

degu
Beiträge: 10
Registriert: 09.09.2016, 16:46

Re: TCL Syntax für Email Addon

Beitrag von degu » 15.09.2016, 21:17

sorry klassischer Anfänger Fehler!
Status des Tür/Fensterkontaktes von "geschlossen" auf "offen" im Programm umgestellt und "Retriggern" Haken entfernt und schon funktioniert es.

daniello
Beiträge: 68
Registriert: 09.12.2017, 08:22

Re: TCL Syntax für Email Addon

Beitrag von daniello » 14.12.2017, 15:35

Hallo,
die Variable Tageszeit ist eine Werteliste.

Nacht; frühmorgens; Morgengauen; Vormittag; Mittag; Nachmittag; Dämmerung; Abend

Mein TCL-Code schaut so aus:

Code: Alles auswählen

array set values [rega_script {
var tagesz = dom.GetObject("Tageszeit").Value();
} ]
set v1 $values(tagesz)
Statt des Wertes (Textes) aus der Werteliste erhalte ich den Wertezähler in der Mail, aktuell: 5

Wie krieg ich da den Text rein?

Schönen Gruß
daniello

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“