Systemvariable per Email

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

blueb6
Beiträge: 118
Registriert: 08.01.2015, 20:22
Wohnort: Neufeld/Leitha
Danksagung erhalten: 3 Mal

Systemvariable per Email

Beitrag von blueb6 » 12.01.2015, 13:12

Hallo

Ich möchte eine Systemvariable per email bekommen.

Habe die SV Urlaub erstellt Zeichenkette

Bei Tastendruck kurz Soll systemzustand (auf was gesetzt werden)?
und bei Tastenlruck lang Soll systemzustand (auf was gesetzt werden)?

das möchte ich gerne mit

if (dom.GetObject("Urlaub").Value() == 'false') {
var v4 = "Ja";
}else {var v4 = "Nein!";
}


abfragen und dann per mail verschicken.

Email funktioniert, nur ich bekomme egal wie ich es versuche immer nur einen wert (zb. 1 oder 0 oder fales), egal was in der SV steht

Habe es schon mit wert und Logik auch probiert

komme aber auf keine grünen zweig

bitte um hilfe, habe auch schon einige forenbeiträge gelesen, aber daraus werde ich leider nicht schlauer :cry:

lg Tom
LG Tom
________________________________________________________
2 mal CCU3 (Raspberrymatic) 1 mal CCU2, 10 Lan Gateway, und ca. 180 Komponenten

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

Re: Systemvariable per Email

Beitrag von alchy » 12.01.2015, 18:00

Nichts per Suche gefunden? Ich habe das Gefühl, täglich dieselben Fragen zu beantworten.

1. Systenvariable Urlaub anlegen Typ Logik
2. Klickibuntiprogramm zum Ändern der Systemvariablen auf wahr / unwahr anlegen
3. TCL Reiter im Emailprogramm

Code: Alles auswählen

load tclrega.so
array set values [rega_script { 

if ( dom.GetObject(ID_SYSTEM_VARIABLES).Get("Urlaub").State() ) { 
var v4 = "Urlaub"; }else { var v4 = "kein Urlaub"; }

} ]

set v4 $values(v4)
4. Mail verschicken....

Alchy
unterwegs getippelt
Zuletzt geändert von alchy am 07.09.2017, 13:48, insgesamt 1-mal geändert.
Grund: angepasste Version

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.

BJS
Beiträge: 18
Registriert: 26.08.2017, 10:02

Re: Systemvariable per Email

Beitrag von BJS » 06.09.2017, 21:49

Hallo, kann mir bitte jemand kurz helfen ?

Habe eine Systenvariable angelegt => Logigwert Name Regensensor / (REGEN / NAS und TROCKEN)
Es gibt ein Programm welches den Regensensor abfragt und die Variable füllt.
Das funktioniert auch über die eingeblendete Variablen Anzeige beim Benutzer.

Ich möchte nun den jeweiligen Inhalt (REGEN / NAS oder TROCKEN) der Variablen „Regensensor“ in einer Email versenden. (Mails versenden etc. funktioniert über Mail AddOn)
Im TCL ist nachfolgender Code. (Hier kopiert und Umgeschrieben.)

Code: Alles auswählen

load tclrega.so
array set values [rega_script { 
  if (dom.GetObject("Regensensor").Value()) {
    var v4 = "Regen / Nass";
    }else {
    var v4 = "Troken";
    }
} ]
set v4 $values(v4)
In der Email Vorlage ist TCL aktiviert und „$Regensensor“ als Text.

Bei diesem Code wird dann beim Testen aber keine Email gesendet.
Sieht einer den Fehler, den ich hier mache?

Danke schon mal, Bernd

blueb6
Beiträge: 118
Registriert: 08.01.2015, 20:22
Wohnort: Neufeld/Leitha
Danksagung erhalten: 3 Mal

Re: Systemvariable per Email

Beitrag von blueb6 » 07.09.2017, 06:44

Code: Alles auswählen

set serviceliste [encoding convertfrom utf-8 [lindex $argv 1]]
load tclrega.so
 
array set values [rega_script {

var v4 = dom.GetObject('Regensensor').State();

} ]

set v4 $values(v4)
und im email muss stehen

$v4

lg Tom
LG Tom
________________________________________________________
2 mal CCU3 (Raspberrymatic) 1 mal CCU2, 10 Lan Gateway, und ca. 180 Komponenten

BJS
Beiträge: 18
Registriert: 26.08.2017, 10:02

Re: Systemvariable per Email

Beitrag von BJS » 07.09.2017, 08:08

Hallo Tom und rechtherzlichen Dank,

ich bin nun ein Schritt weiter …. Die Mail geht raus, jedoch ist leider nichts im Text.
Bedeutet, der Wert (REGEN / NAS oder TROCKEN) der Systemvariablen „Regensensor“ steht nicht in der Mail. {($v4) steht aber im Mailtext}

Irgendwo habe ich noch etwas nicht wirklich richtig gemacht.
Weitere Ideen, Danke Bernd

Xel66
Beiträge: 14085
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 580 Mal
Danksagung erhalten: 1492 Mal

Re: Systemvariable per Email

Beitrag von Xel66 » 07.09.2017, 09:36

TCL angehakt oder Klammern um die Variable entfernt?

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

BJS
Beiträge: 18
Registriert: 26.08.2017, 10:02

Re: Systemvariable per Email

Beitrag von BJS » 07.09.2017, 10:13

OK, nochmal genauer … und Danke !
HM-BJS-0.jpg
RaspberryMatic
HM-BJS-1.jpg
Systemvariable erstellt
HM-BJS-2.jpg
Programm Systemvariable befüllen ...
HM-BJS-4.jpg
Programm => Regensensor Status Änderung versennden

Code: Alles auswählen

string stdout;
string stderr;
system.Exec("/etc/config/addons/email/email 07", &stdout, &stderr);

TCL Code:

Code: Alles auswählen

set serviceliste [encoding convertfrom utf-8 [lindex $argv 1]]
load tclrega.so
array set values [rega_script {
var v4 = dom.GetObject('Regensensor').State();
} ]
set v4 $values(v4)
HM-BJS-3.jpg
Mail Vorlage => senden
Ich hoffe es mit der Beschreibung nicht übertrieben zu haben .....

Problemm an dieser Stelle:
Es wird eine Mail versendet jedoch ist der Variablen Wert (Regensensor) nicht in der Mail.
Danke, Bernd

blueb6
Beiträge: 118
Registriert: 08.01.2015, 20:22
Wohnort: Neufeld/Leitha
Danksagung erhalten: 3 Mal

Re: Systemvariable per Email

Beitrag von blueb6 » 07.09.2017, 10:25

probier mal statt

var v4 = dom.GetObject('Regensensor').State();

vielleicht geht dass

var v4 = dom.GetObject('Regensensor').Value();
LG Tom
________________________________________________________
2 mal CCU3 (Raspberrymatic) 1 mal CCU2, 10 Lan Gateway, und ca. 180 Komponenten

BJS
Beiträge: 18
Registriert: 26.08.2017, 10:02

Re: Systemvariable per Email

Beitrag von BJS » 07.09.2017, 10:46

Habe ich ausprobiert .....
nun wird " Regensensor " in die Mail geschrieben

BadenPower

Re: Systemvariable per Email

Beitrag von BadenPower » 07.09.2017, 11:15

Der Fehler der gemacht wird ist die Verwendung von dom.GetObject() in Verbindung mit der Suche per Name.

Der TE hat mehrere Objekte mit dem gleichen Namen auf seiner CCU angelegt.
Woher soll das Skript denn wissen, welches Objekt der TE abfragen möchte.
.

Antworten

Zurück zu „HomeMatic allgemein“