Aufgabe: Ich möchte eine Variable "Raumpraesenz" (b01) berechnen. Ist jemand im Raum, so soll Raumpraesenz=1 sein. Wenn eine Zeitlang keine Bewegung erkannt wurde, soll Raumpraesenz =0 sein. Es gibt mehrere BWM im Raum, die bei Bewegung 1 melden, ohne Bewegung 0. Es gibt Sitzsensoren, die bei Belegung 1 melden, sonst 0. Insgesamt gibt es in diesem Raum 7 solcher BWM/Sitzsensoren.
Ansatz:
[highlight=epc]
:begin BerechneRaumpraesenz7(S1,S2,S3,S4,S5,S6,S7,Praesen z, Sekunden)
:info $Wenn Schalter EIN sendet, ist Praesenz vorhanden. Wenn Schalter AUS sendet, bleibt die Praesenz noch Sekunden vorhanden, danach geht sie AUS.$ \\
$Gruppenadresse, auf der der Bewegungsmelder bei Bewegung EIN sendet, nach Ende der Nachlaufzeit AUS sendet.$ \\
$Gruppenadresse, unter der die Raumpraesenz hinterlegt wird. Das kann auch der Schaltaktor des Lichts sein.$ \\
$Zeit in Sekunden$
:shortinfo $Berechnet die Raumpraesenz anhand der EIN/AUS-Signale von BWM oder ähnlichem$
initga(S1)
initga(S2)
initga(S3)
initga(S4)
initga(S5)
initga(S6)
initga(S7)
if S1 or S2 or S3 or S4 or S5 or S6 or S7 then write(Praesenz, EIN) endif
if !S1 and after(!S1,Sekunden^000u64) and \\
!S2 and after(!S2,Sekunden^000u64) and \\
!S3 and after(!S3,Sekunden^000u64) and \\
!S4 and after(!S4,Sekunden^000u64) and \\
!S5 and after(!S5,Sekunden^000u64) and \\
!S6 and after(!S6,Sekunden^000u64) and \\
!S7 and after(!S7,Sekunden^000u64) then write(Praesenz, AUS) endif
:end
[/highlight]
Idee:
Praesenz darf nur aus gehen, wenn alle BWM aus sind. Daher
if !S1 and !S2 and !S3 ...
Praesenz soll erst ausgehen, wenn die Treppenhauszeit auch für den letzten BWM aus ist. Daher
if after(!S1,Sekunden^000u64) and ...
Aufruf des Macros:
BerechneRaumpraesenz7("EG WZ PM Theben co Präsenz-2/1/24","EG WZ Sessel-2/1/47","EG WZ Sofa S links-2/1/48","EG WZ Sofa S mitte-2/1/49","EG WZ Sofa SW-2/1/50","EG WZ Sofa W mitte-2/1/51","EG WZ Sofa W rechts-2/1/52","EG WZ Raumpraesenz-2/1/40",120)
Phänomen: Raumpaesenz für diesen Raum geht nicht mehr aus.
Verhalten: Gestern abend waren sicher einige Sensoren=1. Die Nacht war länger als 120s. Heute früh ist Raumpraesenz immer noch 1.
Was Nachts geschah:
user@wiregate415:/var/log$ cat eib.log.1.gz | gunzip | egrep "2/1/24|2/1/47|2/1/48|2/1/49|2/1/50|2/1/51|2/1/52|2/1/40" | tail -5 | eibdecode 2> /dev/null
2012-05-26 00:40:42.704,A_GroupValue_Write,1.1.112,EG WZ Raumpraesenz,01,1,DPT_Switch,1.001,0,low,6,T_DATA_ XXX_REQ,0
2012-05-26 00:41:18.492,A_GroupValue_Write,1.1.62,EG WZ PM Theben co Pr?senz,00,0,DPT_Switch,1.001,0,low,6,T_DATA_XXX_R EQ,0
2012-05-26 00:45:17.915,A_GroupValue_Write,1.1.62,EG WZ PM Theben co Pr?senz,01,1,DPT_Switch,1.001,0,low,6,T_DATA_XXX_R EQ,0
2012-05-26 00:45:18.009,A_GroupValue_Write,1.1.112,EG WZ Raumpraesenz,01,1,DPT_Switch,1.001,0,low,6,T_DATA_ XXX_REQ,0
2012-05-26 00:45:58.447,A_GroupValue_Write,1.1.62,EG WZ PM Theben co Pr?senz,00,0,DPT_Switch,1.001,0,low,6,T_DATA_XXX_R EQ,0
Aktueller Status:
Alle Sitzsensoren liefern 0 (nicht besetzt), der BWM liefert 0 (keine Bewegung)
Analyse:
Um 00:45:17.915 meldet der BWM Präsenz.
Um 00:45:18.009 wird Raumpraesenz zu 1 berechnet -> ok
Um 00:45:58.447 meldet der BWM keine Präsenz mehr.
Ich hätte nun gegen 00:47:58 erwartet, dass Raumpraesenz zu 0 berechnet wird.
Was mache ich falsch?
- EibStudio v2.300
- Firmwareversion EibPC: v2.300
- Patches: 2.300.ptc
Gruss, Joachim
Ansatz:
[highlight=epc]
:begin BerechneRaumpraesenz7(S1,S2,S3,S4,S5,S6,S7,Praesen z, Sekunden)
:info $Wenn Schalter EIN sendet, ist Praesenz vorhanden. Wenn Schalter AUS sendet, bleibt die Praesenz noch Sekunden vorhanden, danach geht sie AUS.$ \\
$Gruppenadresse, auf der der Bewegungsmelder bei Bewegung EIN sendet, nach Ende der Nachlaufzeit AUS sendet.$ \\
$Gruppenadresse, unter der die Raumpraesenz hinterlegt wird. Das kann auch der Schaltaktor des Lichts sein.$ \\
$Zeit in Sekunden$
:shortinfo $Berechnet die Raumpraesenz anhand der EIN/AUS-Signale von BWM oder ähnlichem$
initga(S1)
initga(S2)
initga(S3)
initga(S4)
initga(S5)
initga(S6)
initga(S7)
if S1 or S2 or S3 or S4 or S5 or S6 or S7 then write(Praesenz, EIN) endif
if !S1 and after(!S1,Sekunden^000u64) and \\
!S2 and after(!S2,Sekunden^000u64) and \\
!S3 and after(!S3,Sekunden^000u64) and \\
!S4 and after(!S4,Sekunden^000u64) and \\
!S5 and after(!S5,Sekunden^000u64) and \\
!S6 and after(!S6,Sekunden^000u64) and \\
!S7 and after(!S7,Sekunden^000u64) then write(Praesenz, AUS) endif
:end
[/highlight]
Idee:
Praesenz darf nur aus gehen, wenn alle BWM aus sind. Daher
if !S1 and !S2 and !S3 ...
Praesenz soll erst ausgehen, wenn die Treppenhauszeit auch für den letzten BWM aus ist. Daher
if after(!S1,Sekunden^000u64) and ...
Aufruf des Macros:
BerechneRaumpraesenz7("EG WZ PM Theben co Präsenz-2/1/24","EG WZ Sessel-2/1/47","EG WZ Sofa S links-2/1/48","EG WZ Sofa S mitte-2/1/49","EG WZ Sofa SW-2/1/50","EG WZ Sofa W mitte-2/1/51","EG WZ Sofa W rechts-2/1/52","EG WZ Raumpraesenz-2/1/40",120)
Phänomen: Raumpaesenz für diesen Raum geht nicht mehr aus.
Verhalten: Gestern abend waren sicher einige Sensoren=1. Die Nacht war länger als 120s. Heute früh ist Raumpraesenz immer noch 1.
Was Nachts geschah:
user@wiregate415:/var/log$ cat eib.log.1.gz | gunzip | egrep "2/1/24|2/1/47|2/1/48|2/1/49|2/1/50|2/1/51|2/1/52|2/1/40" | tail -5 | eibdecode 2> /dev/null
2012-05-26 00:40:42.704,A_GroupValue_Write,1.1.112,EG WZ Raumpraesenz,01,1,DPT_Switch,1.001,0,low,6,T_DATA_ XXX_REQ,0
2012-05-26 00:41:18.492,A_GroupValue_Write,1.1.62,EG WZ PM Theben co Pr?senz,00,0,DPT_Switch,1.001,0,low,6,T_DATA_XXX_R EQ,0
2012-05-26 00:45:17.915,A_GroupValue_Write,1.1.62,EG WZ PM Theben co Pr?senz,01,1,DPT_Switch,1.001,0,low,6,T_DATA_XXX_R EQ,0
2012-05-26 00:45:18.009,A_GroupValue_Write,1.1.112,EG WZ Raumpraesenz,01,1,DPT_Switch,1.001,0,low,6,T_DATA_ XXX_REQ,0
2012-05-26 00:45:58.447,A_GroupValue_Write,1.1.62,EG WZ PM Theben co Pr?senz,00,0,DPT_Switch,1.001,0,low,6,T_DATA_XXX_R EQ,0
Aktueller Status:
Alle Sitzsensoren liefern 0 (nicht besetzt), der BWM liefert 0 (keine Bewegung)
Analyse:
Um 00:45:17.915 meldet der BWM Präsenz.
Um 00:45:18.009 wird Raumpraesenz zu 1 berechnet -> ok
Um 00:45:58.447 meldet der BWM keine Präsenz mehr.
Ich hätte nun gegen 00:47:58 erwartet, dass Raumpraesenz zu 0 berechnet wird.
Was mache ich falsch?
- EibStudio v2.300
- Firmwareversion EibPC: v2.300
- Patches: 2.300.ptc
Gruss, Joachim
Kommentar