TCL Script

Hallo an Alle.

Ich will mir von der Homematic den Inhalt einer Systemvariable vom Typ Zeichenkette per Email schicken lassen. Das Email Plugin ist installiert.
Mit Integer etc funktioniert es Klasse. Wenn ich aber eine Variable vom Typ zeichenkette ausgeben will dann
sendet er mir immer den Variablenname. Ich habe auch schon .Value() probiert.

Hier mein Script.

load tclrega.so
array set values [rega_script {
var v1 = dom.GetObject(„Bewegungsmelder“).Variable();

} ]

set v1 $values(v1)

Hat einer eine Idee, ohne IPS?

Ist es das was im Homematic-Forum besprochen wird ?

http://homematic-forum.de/forum/viewtopic.php?f=43&t=10168
http://homematic-forum.de/forum/viewtopic.php?f=41&t=15313&start=10

Gruß
Bruno

.Value() ist für HM-Script schon richtig.
Hast du mal getestet ob es am HM-Script oder TCL Part liegt?

Ergänzend, da bestimmt auch für andere Intressant:

HQ-WebUI ist eine nette Erweiterung der CCU um Scripte zu testen.

Und hier ist noch etwas Doku für (mehr) HM-Script:
http://www.wikimatic.de/wiki/Hauptseite
http://de.homematic.wikia.com/wiki/Inoffizielle_HomeMatic_Dokumentation

So kann man z.B. mit .ValueName0() & .ValueName1() direkt auf die zugeordneten Texte von bool-Vars zugreifen.
Michael

Es handelt sich um eine Zeichenkette in die immer die Bezeichnung des aktivierten Bewegungsmelders geschrieben wird. Wenn ich diese auslese dann steht in der variable v1 immer die Bezeichnung der Variable und nicht der Inhalt.

Nachtrag: Es scheint ein Homematic Problem zu sein.
in einem Homematic Script schreibt der Befehl

dom.GetObject(„Test“).Variable(dom.GetObject(„Bewegungsmelder“).Variable());

auch den Variablenname in die Variable Test.

Kann man in Homematic Script irgendwie anders auf den Inhalt der Zeichenketten zugreifen?

.Variable ist der Name oder das Objekt, interpretiert die CCU je nach angeforderten Rückgabewert.
.Value geht aber. Habe ich selber in Scripten (ohne TCL) in Verwendung.
EDIT: Ups der erste Satz war Mist :slight_smile:

WriteLine(„Value:“ # dom.GetObject(14901).Value());
gibt mir meinen String der Systemvar 14901 (‚Servicemeldung automatisch quitiert‘) wieder, ebenso wie:

oitemID = dom.GetObject(„Servicemeldung automatisch quitiert“);
WriteLine(„State:“ # oitemID.State());
WriteLine(„Variable:“ # oitemID.Variable());

Somit kann es bei dir nur an der identifizierung des Objektes anhand des Names scheitern.
Nutze lieber die IDs, diese sind eindeutig.

Oder wird deine SystemVar gar nicht richtig gesetzt ? In der WebUI kontrolliert ?

Michael

Lösung gefunden. Ich hatte ein Gewerk das die gleiche Bezeichnung wie die Variable hatte. :slight_smile:

Variable umbenannt , funktioniert.