Seite 39 von 40
Re: Anzahl offene Fenster
Verfasst: 23.04.2021, 13:02
von Baxxy
Avatar2102 hat geschrieben: ↑21.04.2021, 15:49
Hallo zusammen,
Hallo zurück...
Vorab:
Deinen Scriptausschnitt zu sehen ist zwar hilfreich, aber trotzdem relativ nutzlos da nicht ersichtlich ist in welches "Gesamtscript" er gehört.
Muss man als "Hilfswilliger" erstmal den gesamten Thread durchstöbern um das (hoffentlich) richtige Originalscript zu finden ist das nicht gerade motivationsfördernd. Für die Zukunft also bitte wenigstens auf das "Originalscript" verlinken.
Zum Problem:
Ich gehe jetzt von folgendem Alchy - Script aus...
Code: Alles auswählen
! alle Fenstersensoren / HMW-Sen-SC-12-DR / Winmatic / Keymatic / Funk-Neigungssensor in einem bestimmten Gewerk/ Favoriten u.a. durchsuchen
! und Ausgabe in Variable oder per pushover, telegram oder per Mail oder Ansage Home24 Mediaplayer
! v1.42 (c) by Alchy
! https://homematic-forum.de/forum/viewtopic.php?f=26&t=25517&p=301186#p301186
Avatar2102 hat geschrieben: ↑21.04.2021, 15:49
Ich verstehe hier nicht, warum der Status vom DLD (1 = zu) korrekt erfasst wird,
Das hast du doch in deinem Scriptabschnitt so zugewiesen.
Avatar2102 hat geschrieben: ↑21.04.2021, 15:49
der DLD aber trotzdem mitgezählt und aufgelistet wird?
So wie ich das sehe zählt das Script alle abgefragten Geräte die ungleich "0" zurückliefern als "OFFEN".
Das ist bei deinem HmIP-DLD ein Problem denn der sendet ja (so deine Deklarationen stimmen) die "1" wenn der Status GESCHLOSSEN ist.
(1 ist ungleich 0 und somit wird der HmIP-DLD auch im GESCHLOSSENEN Zustand als OFFEN gezählt.)
Workaround:
Ich würde den zurückgegebenen Status des HmIP-DLD im Script manipulieren.
(ungetestet da kein HmIP-DLD verfügbar)
Code: Alles auswählen
if ( ( devType == "HmIP-DLD") && ( chType == "DOOR_LOCK_STATE_TRANSMITTER") ) { choice = true; var status = ch.DPByHssDP("LOCK_STATE").Value() -1;
if (status == -1 ) { status_new = " unbekannt "; }
if (status == 0 ) { status_new = " zu "; }
if (status == 1 ) { status_new = " offen "; }
}
Hiermit wird aber der HmIP-DLD auch als OFFEN angezeigt wenn dessen Status UNBEKANNT ist.
Re: Anzahl offene Fenster
Verfasst: 24.04.2021, 07:48
von Avatar2102
Hallo Baxxy,
zuerst mal vielen lieben Dank an Dich, dass Du Dich meinem Problem angenommen hast.
Deinen Scriptausschnitt zu sehen ist zwar hilfreich, aber trotzdem relativ nutzlos da nicht ersichtlich ist in welches "Gesamtscript" er gehört.
Sorry, ich ging davon aus, dass es hier grundsätzlich um Alchy´s Script geht. In Zukunft werde Deinen Ratschlag jedoch beherzigen und immer aufs Script verweisen, welches meine Grundlage war.
So wie ich das sehe zählt das Script alle abgefragten Geräte die ungleich "0" zurückliefern als "OFFEN".
Offensichtlich reichten meine Skills nicht aus, um das zu erfassen. Daher hatte ich auch nicht verstanden, warum der DLD weiter gelistet wird, obwohl doch der Zustand korrekt als "ZU" erkannt wurde (ja ja, aber der Status war "1" und nicht "0"). Hätte ich den DLD nur mit der Hand bewegt (Status unbekannt = "0") und dann das Script getestet, hätte es mir auffallen können.
Workaround
Natürlich funktioniert nach dieser Erkenntnis Dein vorgeschlagener Workaround einwandfrei, der mir persönlich vollkommen reicht.
Daher an dieser Stelle vielen Dank für Deine Mühe, die Erläuterung und den Script-Vorschlag.
LG
Re: Anzahl offene Fenster
Verfasst: 24.04.2021, 09:41
von Baxxy
Schön das es funktioniert!
Durch Deine Vorlage war das Problemchen recht leicht zu finden.
Avatar2102 hat geschrieben: ↑24.04.2021, 07:48
Offensichtlich reichten meine Skills nicht aus, um das zu erfassen.
Mach Dir nichts draus, das ging mir Anfangs auch oft so.
Ich versuche es mal zu erklären:
Hier...
Code: Alles auswählen
if (ONLYOPEN == "yes") {
if (status) { ... }
} else { ... }
Das erste
if sollte selbsterklärend sein.
Das zweite
if prüft die Scriptvariable "status" auf Plausibilität. Alles was plausibel ist (ungleich "0") wird gelistet.
Zur leichteren Verständlichkeit könnte man das zweite
if ind diesem Script auch wie folgt schreiben:
Hoffe das war einigermaßen korrekt beschrieben und verständlich.
Grüße
Baxxy
Re: Anzahl offene Fenster
Verfasst: 21.03.2023, 16:37
von 411er
Hallo Zusammen,
ich nutze das Alchy Script
! alle Fenstersensoren / HMW-Sen-SC-12-DR / Winmatic / Keymatic / Funk-Neigungssensor in einem bestimmten Gewerk/ Favoriten u.a. durchsuchen
! und Ausgabe in Variable oder per pushover, telegram oder per Mail oder Ansage Home24 Mediaplayer
! v1.42 (c) by Alchy
!
viewtopic.php?f=26&t=25517&p=301186#p301186
und würde gerne einzelne Sensoren ausschließen. Ich habe scheinbar nicht richtig durchdrungen, wie hierbei durchsucht wird. Denn er wirft mir einen Türkontakt aus, zu den Fensterkontakten. Das stört dann doch in der Übersicht.
Ich habe die Reed Kontakte auf dem DRI32, also das Script um
if ( ( devType == "HmIPW-DRI32") ) { choice = true; var status = ch.DPByHssDP("STATE").Value();
if (status == 0 ) { status_new = " zu ";}
if (status == 1 ) { status_new = " offen "; }
erweitert.
Was kann ich nun tun, damit ich Türkontakte hierbei bei der Suche ausschließe?
Besten Dank!
Re: Anzahl offene Fenster
Verfasst: 22.03.2023, 17:44
von alchy
411er hat geschrieben: ↑21.03.2023, 16:37
und würde gerne einzelne Sensoren ausschließen. Ich habe scheinbar nicht richtig durchdrungen, wie hierbei durchsucht wird. Denn er wirft mir einen Türkontakt aus, zu den Fensterkontakten.
Das Script bearbeitet die Sensoren, welche du in eines dieser "Gruppen" , (Räumme, Favoriten, Gewerke) steckst.
Entfernst du also den Türkontakt aus der angegebenen "Gruppe" wird er auch nicht ausgegeben.
Alchy
Re: Anzahl offene Fenster
Verfasst: 23.03.2023, 11:32
von 411er
alchy hat geschrieben: ↑22.03.2023, 17:44
411er hat geschrieben: ↑21.03.2023, 16:37
und würde gerne einzelne Sensoren ausschließen. Ich habe scheinbar nicht richtig durchdrungen, wie hierbei durchsucht wird. Denn er wirft mir einen Türkontakt aus, zu den Fensterkontakten.
Das Script bearbeitet die Sensoren, welche du in eines dieser "Gruppen" , (Räumme, Favoriten, Gewerke) steckst.
Entfernst du also den Türkontakt aus der angegebenen "Gruppe" wird er auch nicht ausgegeben.
Alchy
Hallo Alchy,
danke!
Oh man
direkt die gefühlt erste Zeile im Script überlesen (hatte das vor einiger Zeit angefangen und schon wieder alles vergessen).
Danke für die Antwort und entschuldige die "blöde" Frage
Re: Anzahl offene Fenster
Verfasst: 23.03.2023, 19:14
von alchy
Es gibt keine blöden Fragen
kann ja mal passieren das man was überliest
Alchy
Re: Anzahl offene Fenster
Verfasst: 25.10.2023, 15:05
von ingranu
Hallo zusammen
Seit Jahren benutze Ich dieses wunderbare Script welches sehr gut funktioniert.
Nun habe ich einen neuen Fenster Sensor gekauft, Typ: HmIP-SWDM-2
Kann man diese in das Script aufnehmen, so dass diese auch erkannt werden?
Code: Alles auswählen
! alle Fenstersensoren und HMW-Sen-SC-12-DR in einem bestimmten Gewerk/ Favoriten u.a. durchsuchen
! und Ausgabe in Variable oder per pushover oder per Mail oder Ansage Home24 Mediaplayer
! v1.35 (c) by Alchy
! https://homematic-forum.de/forum/viewtopic.php?f=26&t=25517&start=60#p301186
Re: Anzahl offene Fenster
Verfasst: 30.10.2023, 15:49
von ingranu
Keine Unterstützung ?
Re: Anzahl offene Fenster
Verfasst: 01.11.2023, 21:25
von alchy
Das sind doch Fensterkontakte - da bin ich doch mal gespannt, was sich EQ-3 da wieder Lustiges ausgedacht hat.
Ich habe diese Geräte nicht und suche mir das auch nicht zusammen.
Script ausführen unter Script testen, im Script Executer oder sonst etwas was dafür möglich ist.
ABER
Statt
GERÄTENAME in der ersten Zeile, trägst du den GERÄTENAMEN eines deiner HmIP-SWDM-2 ein.
Code: Alles auswählen
!Kanäle und Datenpunkte eines Gerätes ausgeben
object oDevice = dom.GetObject("GERÄTENAME");
string sDevId;string sChnId;string sDPId;
WriteLine("Gerät \t Kanal \t Datenpunkt\n");
WriteLine(oDevice.Name()#"\t" #oDevice.Address() #"\t"#oDevice.HssType() );
foreach(sChnId, oDevice.Channels())
{
object oChannel = dom.GetObject(sChnId);
WriteLine("\t" # oChannel.Name() # "\t" # oChannel.HssType());
foreach(sDPId, oChannel.DPs().EnumUsedIDs())
{
object oDP = dom.GetObject(sDPId);
string sName = oDP.Name();
WriteLine("\t\t"#sName# "\t" #" Wert: "#oDP.Value());
}
WriteLine("");
}
Alchy