ich habe ein kleines Scripting Problem...
Ich versuche seit geraumer Zeit via Script den "BATTERY_STATE" der HKT's und Wandthermostaten abzufragen und in einer Systemvariablen abzulegen.
Hier erst mal dass Script:
Code: Alles auswählen
var BatDev = dom.GetObject("Batterie");
string itemID;
string text = "";
! Durch alle angemeldeten Geräte laufen
foreach(itemID, BatDev.EnumUsedIDs())
{
! Gerätedetails & Schnittstelle holen
var item = dom.GetObject(itemID);
var device = dom.GetObject(item.Device());
var interface = dom.GetObject(item.Interface());
! Name, Adresse, Kanal und Batteriespannung auslesen (Kanal4)
string interface_name = interface.Name();
string device_address = device.Address();
device_address = device_address.StrValueByIndex(":", 0);
string channel_name = interface_name # "." # device_address # ":4.BATTERY_STATE";
var channel = dom.GetObject(channel_name);
string batvalue = dom.GetObject(channel_name).Value();
! Text zusammensetzen
string text = text # "- " # item.Name() # " hat: " # batvalue.ToString(1) # " V Spannung" # "\r\n";
!WriteLine(text);
}
}
dom.GetObject("Batteriestatus").State(text);
! WriteLine(Batteriestatus);
Soweit funzt es ganz gut ABER:
1) Die SysVar "Batteriestatus" bleibt leer. Warum?
2) Habe ich das Problem dass manche Geräte Kanal 2 (:2.BATTERY_STATE) verwenden. Wie kann ich dass lösen dass ich NICHT 2x foreach durchlaufen lassen muss?
3) Aktuell hat die SysVar den Typus "Zeichenkette". Wie funktioniert dass ganze mit dem Typus "Wertetabelle"?
Ich möchete ein Programm anlegen welches alle 24 Std. die SysVar mit den Aktuellen Spannungen aktualisiert. Möchte mir die Variable auf dem Startbildschirm meiner CCU2 anzeigen lassen.
Es geht mir nur um das Script, die Programme und Rest ist kein Problem.
Danke im Vorraus
Feyrgas Mortes