Hi, ich habe diese Script für mich angepasst.
Es ist genau das was ich gesucht habe. Brauche vorerst keine push, Telegramm oder sonstige Nachrichten. Ich will bei Bedarf einfach sehen ob und welche Fenster/Türen offen sind.
Den Tipp von 'alchy' mit dem KlarnamenBug musste ich durchführen (finde ich zwar etwas Skurril aber es passt zu Homematic).
Das Script läuft, die Variable "SV_offene_Fenster" wird befüllt aber ... leider nur zum Teil!
Hier das Programm "offene Fenster"
Code: Alles auswählen
var sec=dom.GetObject("Verschluss");
integer c;
string i;
string list="Offene Fenster/Türen:\n";
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")
{
var state=item.DPByHssDP("STATE");
if(state.Value())
{
c=c+1;
list=list#dev.Name()# "\n ";
}
}
}
}
if(c==0)
{
list="Alle Fenster/Türen geschlossen!";
}
WriteLine(list);
dom.GetObject("SV_offene_Fenster").State(list);
Was passiert:
Ich habe vorerst 6 von 13 optischen Funk-Kontakten HM-Sec-SCo im Einsatz.
Bis zu 5 dieser Funk-Kontakte werden problemlos in die Systemvariable übernommen und angezeigt, wenn geöffnet.
Der 6te, wobei die Reihenfolge egal ist, wird - ich sag mal - verschluckt und nicht in die Systemvariable übenommen.
- Status.PNG (16.43 KiB) 5131 mal betrachtet
Erst wenn ich das Script manuell ausführe, wobei ich das Script im Scripteditor ausführen muss, das Ausführen des Programmes ändert nichts, befüllt die Systemvariable auch mit dem 6en offenen Fenster-Kontakt.
- Fenster_scr_out.PNG (11.8 KiB) 5131 mal betrachtet
Manuelles Ausführen führt zum richtigen Ergebnis.
- Status2.PNG (17.32 KiB) 5131 mal betrachtet
Ich habe schon alles erdenkliche ausprobiert, Zeilenumbruch "\n" entfernt, einen beliebigen Text am Ende angefügt, die erste Textzeile entfernt .... immer das Gleiche: Ab 5 geöffneten Fenster wird dann das 6te nicht mehr ausgegeben (ohne manuellem Zutun).
Ich hoffe jemand in der Community hat eine Idee
Vielen Dank
Gruß
clear