Offene Fenster in String
Aus Wikimatic
Version vom 25. Mai 2015, 14:59 Uhr von Wanfried (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „== Fenster offen als String == Mit diesem Skript kann eine Meldung "Die Fenster x, y und z sind noch offen." zusammengebaut werden. Dazu werden alle Fensterko…“)
Fenster offen als String
Mit diesem Skript kann eine Meldung "Die Fenster x, y und z sind noch offen." zusammengebaut werden. Dazu werden alle Fensterkontakte im Gewerk "Fenster_Tueren" abgefragt. Das vordefinierte Gewerk "Verschluss" funktioniert manchmal nicht, da es ein verstecktes Objekt "Verschluss" gibt und dom.GetObject im Falle das zwei gleichnamige Objekte existieren nichts zurück liefert. Deshalb muss man das Gewerk umbenennen oder ein neues erstellen. Auf ähnliche Art und Weise können natürlich auch Türen usw. abgefragt werden. Dazu muss die if Bedingung mit dem HssType angepasst werden.
boolean firstWindow = true; string textReplace = "Fenster "; integer textReplaceLength = textReplace.Length(); string i; string list = ""; var sec=dom.GetObject("Fenster_Tueren"); string lastWindow = " unknown "; integer numberOfOpenWindows = 0; foreach(i,sec.EnumUsedIDs()) { var item=dom.GetObject(i); if(item.IsTypeOf(OT_CHANNEL)) { var dev=dom.GetObject(item.Device()); if((dev.HssType()=="HM-Sec-SCo") || (dev.HssType()=="HM-Sec-SC-2")) { var state=item.DPByHssDP("STATE"); if(state.Value()) { numberOfOpenWindows=numberOfOpenWindows+1; lastWindow = i; } } } } if (numberOfOpenWindows > 1) { list="Die Fenster "; } else { list="Das Fenster "; } sec=dom.GetObject("Fenster_Tueren"); foreach(i,sec.EnumUsedIDs()) { var item=dom.GetObject(i); if(item.IsTypeOf(OT_CHANNEL)) { var dev=dom.GetObject(item.Device()); if((dev.HssType()=="HM-Sec-SCo") || (dev.HssType()=="HM-Sec-SC-2")) { var state=item.DPByHssDP("STATE"); if(state.Value()) { string itemName = dev.Name().ToString(); ! entferne den textReplace if(itemName.Length() >= textReplaceLength) { itemName = itemName.Substr(textReplaceLength, itemName.Length() - textReplaceLength); } if (firstWindow == false) { if (i == lastWindow) { list=list+" und "; } else { list=list+", "; } } else { firstWindow = false; } list=list+itemName; } } } } if (numberOfOpenWindows > 1) { list=list+" sind noch offen ..."; } else { list=list+" ist noch offen ..."; } ! Wenn CUxD installiert ist und ein Enigma2 Empfänger vorhanden ist: string url="'http://x.x.x.x/web/message?text="; url=url+list+"&type=3&timeout=10'"; dom.GetObject("CUxD.CUX2801999:1.CMD_EXEC").State("wget -q -O - "#url);