Seite 1 von 40
Anzahl offene Fenster
Verfasst: 09.06.2015, 22:04
von mctom
Hallo zusammen,
ich würde gerne mit einem Script die Anzahl der offenen Fenster ermitteln.
Ein ersten Teil des Script habe ich mir zusammengesucht:
Code: Alles auswählen
var myAssembly = dom.GetObject("Verschluss");
string itemID;
integer zaehler;
zaehler = 0;
foreach(itemID, myAssembly.EnumUsedIDs())
{
var item = dom.GetObject(itemID);
if
(item.IsTypeOf(OT_CHANNEL))
{
var device = dom.GetObject(item.Device());
if (device.HssType() == "HM-Sec-SC")
{
if (item.State() == 1)
{
zaehler = zaehler + 1.00;
}
}
}
}
WriteLine(zaehler);
Dies funktioniert auch ganz gut.
Allerdings würde ich nun auch gerne den Drehgriffkontakt HM-Sec-RHS mit aufnehmen.
Allerdings bekomme ich das nicht hin.
Ich habe die Schleife:
Code: Alles auswählen
if (device.HssType() == "HM-Sec-RHS")
{
if (item.State() == 1)
{
zaehler = zaehler + 1.00;
}
}
mit eingebaut. Dies funktioniert allerdings nicht.
Hat jemand einen Tip für mich ?
Gruß
MIchael
Re: Anzahl offene Fenster
Verfasst: 09.06.2015, 22:12
von nicolas-eric
Einem Kumpel hab ich das Script hier aus dem Forum in seiner CCU eingefügt, funktioniert super.
Code: Alles auswählen
object sec = dom.GetObject("Verschluss");
string itemId;
integer offen =0;
foreach(itemId, sec.EnumUsedIDs()) {
var item = dom.GetObject(itemId);
if (item.IsTypeOf(OT_CHANNEL)) {
var dev = dom.GetObject(item.Device());
var hssType = item.HssType();
if((dev.HssType()=="HM-Sec-RHS") || (dev.HssType()=="HM-Sec-SC") || (dev.HssType()=="HM-Sec-SC-2")|| (dev.HssType()=="HM-Sec-Sco")) {
var status = item.DPByHssDP("STATE").Value();
if(status.Value()) {
if (status > 0 ) { offen = offen + 1; }
}
}
}
}
WriteLine("Offen: " # offen);
Re: Anzahl offene Fenster
Verfasst: 10.06.2015, 01:31
von alchy
Dein gepostetes Script kann man um einen HSS Typ erweitern, das sieht dann ungefähr so aus:
Code: Alles auswählen
var myAssembly = dom.GetObject("Verschluss");
string itemID;
integer zaehler;
zaehler = 0;
foreach(itemID, myAssembly.EnumUsedIDs())
{
var item = dom.GetObject(itemID);
if
(item.IsTypeOf(OT_CHANNEL))
{
var device = dom.GetObject(item.Device());
if ( (device.HssType() == "HM-Sec-SC" ) || (device.HssType() == "HM-Sec-RHS" ) )
{
if (item.State() == 1)
{
zaehler = zaehler + 1.00;
}
}
}
}
WriteLine(zaehler);
die Variante:
birgt aber so seine Fallstricke.
Die RHS haben 0 oder 1 oder 2 als Status.
womit ==1 funktioniert, solange die RHS nur gekippt sind. Alles klar?
Alchy
Re: Anzahl offene Fenster
Verfasst: 11.06.2015, 13:26
von mctom
Hallo zusammen,
vielen Dank für die Hilfe.
Funktioniert soweit alles.
Ich habe jetzt !=0 genutzt. So bekomm ich sowohl gekippte als auch offene Fenster.
Gruß
MT
Re: Anzahl offene Fenster
Verfasst: 07.08.2015, 14:27
von Ritschi
Hallo
Ich möchte dieses Script auch gerne einsetzen.
Nun meine Frage:
Wo, oder wie findet denn die Ausgabe der Anzahl offenen Fenster statt?
Muss ich da eine Variable mit einem gewissen Namen anlegen?
Gruss
Ritschi
Re: Anzahl offene Fenster
Verfasst: 07.08.2015, 15:01
von alchy
Die ^^ Scripte schreiben nur die Anzahl der geöffneten Fenster auf den Bildschirm, wenn du das Script im Script Executer oder unter Script testen ausführst.
Wenn Du diese Anzahl in eine Systemvariable speichern willst, dann musst du eine Systemvariable Zahl oder Zeichenkette
anlegen und die WriteLine Zeile durch die Folgende
ersetzen.
bzw. bei dem von nicolas-eric geposteten Script zwingend Zeichenkette
Natürlich im Script "NAME DEINER SYSvar" durch den Namen deiner Systemvariable.
Beides machbar, es gibt aber massig andere Scripte.
Alchy
Re: Anzahl offene Fenster
Verfasst: 07.08.2015, 20:03
von Ritschi
Hi Alchy
Danke für die Hilfe.
Habe es so versucht:
Code: Alles auswählen
var myAssembly = dom.GetObject("Verschluss");
string itemID;
integer zaehler;
zaehler = 0;
foreach(itemID, myAssembly.EnumUsedIDs())
{
var item = dom.GetObject(itemID);
if
(item.IsTypeOf(OT_CHANNEL))
{
var device = dom.GetObject(item.Device());
if ( (device.HssType() == "HM-Sec-SC" ) || (device.HssType() == "HM-Sec-RHS" ) )
{
if (item.State() == 0)
{
zaehler = zaehler + 1.00;
}
}
}
}
dom.GetObject("Anzahl-Fenster-offen").State(zaehler);
Klappt aber leider nicht, die Variable "Anzahl-Fenster-offen" bleibt immer bei 0.
Ist es möglich dass da noch ein Fehler drin ist?
Gruss
Ritschi
Re: Anzahl offene Fenster
Verfasst: 07.08.2015, 20:08
von Homoran
Hast du ein Gewerk "Verschluss", in dem alle deine Fenster sind?
Gruß
Rainer
Re: Anzahl offene Fenster
Verfasst: 07.08.2015, 20:16
von alchy
Abgesehen von dem durchaus berechtigen Frage nach dem Gewerk von Homoran.
1. Das Script gibt dir die Anzahl der geschlossenen Fenster aus, wenn meine müden Augen das richtig deuten.
2. es schaut nur nach HM-Sec-SC und HM-Sec-RHS
Alchy
Re: Anzahl offene Fenster
Verfasst: 07.08.2015, 20:28
von Ritschi
Ja, im Gewerk Verschluss habe ich alle HM-Sec-SC und HM-Sec-RHS.
Habe das Skript falsch gepostet.
Ich denke so wäre es richtig.
Allerdings müsse mir das Skript das ich zuvor gepostet habe ja noch eine Höhere Zahl geben, da ich nur ein Fenster im Moment offen habe.
Funktioniert allerdings immer noch nicht.