Hi, an die leidgeplagten User!
Auch ich besitze seit Anfang März 2ß18 zwei der Durchgangssensoren "HmIP-SPDR" zur alternativen Anwesendheitserkennung
(statt WLAN & Co.) in unserem mehrstöckigen Haus.
All' die in den letzten Posts vorgeschlagenen Programme und Scripte habe ich auch schon durchgemacht, aber keine
befriedigende Lösung zum hoch- und runterzählen der Durchgänge erhalten.
Einzig die von "dtp" aufgezeigte Lösung in diesem Thread
viewtopic.php?f=19&t=42153#p419045 mit ein paar Anpassungen funktioniert momentan relativ gut bei uns.
Leider verhaspelen sich die Sensoren, trotz mehrfachen Anpassungen der Parameter, und zählen manchmal (wie auch schon
"adiozonkelz" berichtet hat) garnicht, doppelt oder in die falsche Richtung. Alles sehr ärgerlich
Ein Firmware-Update steht ja schon lange aus und auf der EQ-3 Webseite steht immer noch "... Demnächst"
Schau'mer mal, wann das endlich mal etwas wird!
Die internen Zähler "Durchgänge (L->R / R->L)" und "Überlauf" lassen sich nur durch ein entfernen des Deckels (Sabotage)
wieder aud "NULL" bzw. "NEIN" setzen, was aber nicht zwingend erforderlich ist und keinen positiveren Effekt hat.
Ab und zu kann es hilflich sein, die Programme kurz zu de- und dann wieder zu aktivieren (Häkchen setzen).
Anbei ein paar Screens und Beispiele, wie ich es zur Zeit umgesetzt habe:
(Diese SysVar hatte ich schon auch bei anderen Tests.
Scripte legen aber die SV auch selbst an. Eigenen SV-Namen in Zeile 6 und 17 "svCount = xxx" anpassen)
- Rein+Raus - Systemvariable.PNG (20.53 KiB) 2935 mal betrachtet
(Zählt die hereingehenden Person(en) von links nach rechts hoch)
Code: Alles auswählen
! Zähler bei Skriptaufruf um eins erhöhen
! Version 1.0, Autor: dtp
! Modifiziert by FBK2904
! Namen der verwendeten Systemvariablen
string svCount = "SV_EG_DuGaSe"; ! Zähler, obligatorisch
! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################
! +++++ Variablendeklaration +++++
integer count;
object svObject; object svObjectList;
! +++++ Systemvariablen erzeugen bzw. falls vorhanden, auslesen +++++
if(!svCount){svCount = "SV_EG_DuGaSe";}
svObject = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svCount);
if(!svObject){
svObjectList = dom.GetObject(ID_SYSTEM_VARIABLES); svObject = dom.CreateObject(OT_VARDP); svObjectList.Add(svObject.ID());
svObject.Name(svCount); svObject.DPInfo("Zähler"); svObject.Internal(false); svObject.Visible(true);
svObject.ValueType(ivtString); svObject.ValueSubType(istChar8859); svObject.ValueUnit(""); dom.RTUpdate(true);
}
! +++++ Anzahl der Durchgänge hochzählen +++++
count = (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svCount)).Value().ToInteger();
count = count + 1;
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svCount)).State(count).ToString(0);
(Zählt die herausgehenden Person(en) von rechts nach links bis "0" runter)
Code: Alles auswählen
! Zähler bei Skriptaufruf um eins verringern
! Version 1.0, Autor: dtp
! Modifiziert by FBK2904
! Namen der verwendeten Systemvariablen
string svCount = "SV_EG_DuGaSe"; ! Zähler, obligatorisch
! #####################################################################
! ##### ab hier bitte keine weiteren Einstellungen mehr vornehmen #####
! #####################################################################
! +++++ Variablendeklaration +++++
integer count;
object svObject; object svObjectList;
! +++++ Systemvariablen erzeugen bzw. falls vorhanden, auslesen +++++
if(!svCount){svCount = "SV_EG_DuGaSe";}
svObject = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svCount);
if(!svObject){
svObjectList = dom.GetObject(ID_SYSTEM_VARIABLES); svObject = dom.CreateObject(OT_VARDP); svObjectList.Add(svObject.ID());
svObject.Name(svCount); svObject.DPInfo("Zähler"); svObject.Internal(false); svObject.Visible(true);
svObject.ValueType(ivtString); svObject.ValueSubType(istChar8859); svObject.ValueUnit(""); dom.RTUpdate(true);
}
! +++++ Anzahl der Durchgänge runterzählen +++++
count = (dom.GetObject(ID_SYSTEM_VARIABLES).Get(svCount)).Value().ToInteger();
count = count - 1;
if(count <= 0){count = 0;}
(dom.GetObject(ID_SYSTEM_VARIABLES).Get(svCount)).State(count).ToString(0);
(Hier meine zuletzt und best passenden Parameter-Einstellungen)
Vielen Dank an "dtp" und an alle anderen Profis hier im Forum, für ihre tolle Unterstützung und manchmal
nervenaufreibendes Verständnis
Vielleicht kann einer von Euch "Script-Gurus" einem "Script-Legastheniker" noch sagen/beibringen, was in den
beiden Scripten geändert werden muss, damit es nicht automatisch die SV anlegt
.
Grüssle,
Frank