ich habe mal eine Frage an einen Experten.
Um zu überprüfen ob alle Rollladen wirklich runter gefahren sind, möchte ich dieses Skript verwenden. Ich benutze zum Checken den Kanal 3 des HM-IP Broll. Zum Schalten muss ich aber den Kanal 4 benutzen. Des Weiteren möchte ich immer nur einen offenen Rollladen ansteuern und dann im Fall das es mehrere gibt das Skript beenden. Das Skript soll über einen Cuxd Timer angesteuert werden bis es keine offenen Rollladen mehr gibt.
Mein funktionierendes Skript habe ich mal angefügt. Nun meine Fragen .
1) Ich habe zwei Methoden ausprobiert (alchy's aus dem Forum (methode1) und meine (methode2)). In alchy's Artikel spricht er von sicherer Zugriffsmethode. Ist meine nicht sicher?
2) Kann man das Skript vereinfachen? Ich denke bestimmt zu kompliziert/unerfahren.
3) In manchen Skripten lese ich von der Methode: IsTypeOf. Wofür soll diese angewendet werden?
4) Kennst Ihr eine bessere Methode die If-Schleife zu verlassen als „quit“ bei der ich das ganze Skript verlasse?
Danke für Eure Zeit und Hilfe.
Gruß Thomas
Code: Alles auswählen
!!Rollladen checken ob unten aus Beispiel im Gewerk Rollladen
!!Version 0.1, tloeffel
!!Gewerk aus dem die Aktoren gelesen werden sollen
var myFunction = dom.GetObject("Rollladen_Behang");
string itemId;
foreach(itemId, myFunction.EnumUsedIDs())
{ var item = dom.GetObject(itemId);
if (item.State() != "0")
{
!!Die Adresse des anderen Kanals zusammen bauen
string str = item.Address();
string address_alt = str.Replace (":3", "");
string channel_name = "HmIP-RF." # address_alt # ":4.LEVEL";
var methode2 = dom.GetObject(channel_name);
var methode1 = (dom.GetObject(ID_DATAPOINTS)).Get(channel_name);
WriteLine(methode1.State());
WriteLine(methode2.State());
!!Beide Wege lassen den Rollladen zu fahren
!methode1.State(0);
!methode2.State(0);
!!Verwende ich damit bei mehreren offen Rollladen nicht alle auf einmal “zu“ fahren. Aufruf erfolgt per Timer bis alle zu sind.
quit;
}
}