Hallo zusammen,
ich nutze für die Lichtregelung im Kinderzimmer einen Präsenzmelder mit mehreren Kanälen. Zeitabhängig soll der Melder entweder eine helle oder eine gedimmte Beleuchtung einschalten. Dafür habe ich in SHNG eine Logik programmiert, die den einen oder den anderen Kanal sperrt. Nachts, wenn über einen Tastsensor ein Nachtobjekt auf 1 gesetzt ist, sind beide Kanäle gesperrt.
In der Theorie müsste es funktionieren. Die Logik gibt auch die richtigen Werte aus. Mein Problem ist aber, dass abends, wenn eigentlich gedimmtes Licht geschaltet werden soll, der "helle" Kanal nicht gesperrt wird, obwohl die Logik das richtige Ergebnis liefert. Offenbar wird einfach kein Telegramm auf den Bus gesendet, obwohl "enforce_updates: True" gesetzt ist.
Wenn ich allerdings am Tastsensor beide Kanäle über das Nachtobjekt einmal sperre und danach wieder freigebe, wird der richtige Kanal gesperrt bzw. freigeschaltet.
Hier weitere Details:
Logik:
Items:
Logeinträge beispielhaft:
dazugehörige Einträge im Gruppenmonitor der ETS:
ich nutze für die Lichtregelung im Kinderzimmer einen Präsenzmelder mit mehreren Kanälen. Zeitabhängig soll der Melder entweder eine helle oder eine gedimmte Beleuchtung einschalten. Dafür habe ich in SHNG eine Logik programmiert, die den einen oder den anderen Kanal sperrt. Nachts, wenn über einen Tastsensor ein Nachtobjekt auf 1 gesetzt ist, sind beide Kanäle gesperrt.
In der Theorie müsste es funktionieren. Die Logik gibt auch die richtigen Werte aus. Mein Problem ist aber, dass abends, wenn eigentlich gedimmtes Licht geschaltet werden soll, der "helle" Kanal nicht gesperrt wird, obwohl die Logik das richtige Ergebnis liefert. Offenbar wird einfach kein Telegramm auf den Bus gesendet, obwohl "enforce_updates: True" gesetzt ist.
Wenn ich allerdings am Tastsensor beide Kanäle über das Nachtobjekt einmal sperre und danach wieder freigebe, wird der richtige Kanal gesperrt bzw. freigeschaltet.
Hier weitere Details:
Logik:
Code:
#!/usr/bin/env python3 # o4lichsper1.py if sh.O4.NIGH() == True: sh.O4.LICH.SPER1(True) sh.O4.LICH.SPER2(True) elif sh.O4.NIGH() == False: if sh.TIME.PLAYTIME() == True: #Während der Spielzeit sh.O4.LICH.SPER1(False) sh.O4.LICH.SPER2(True) elif sh.TIME.PLAYTIME() == False: #außerhalb der Spielzeit, z.B. abends sh.O4.LICH.SPER1(True) sh.O4.LICH.SPER2(False)
Code:
O4: LICH: SPER1: #Sperre Melder 1 type: bool knx_dpt: 1 knx_send: 1/6/131 cache: yes enforce_updates: True visu_acl: rw SPER2: #Sperre Melder 2 type: bool knx_dpt: 1 knx_send: 1/6/132 cache: yes enforce_updates: True visu_acl: rw
Code:
2021-11-28 19:32:04 CET DEBUG __init__ logics.O4LICHSPER1 groupwrite telegram for: 1/6/131 - Value: True sent. -- (__init__.py:groupwrite:227) 2021-11-28 19:32:04 CET DEBUG __init__ logics.O4LICHSPER1 groupwrite telegram for: 1/6/132 - Value: False sent. -- (__init__.py:groupwrite:227) [..] 2021-11-28 19:37:04 CET DEBUG __init__ logics.O4LICHSPER1 groupwrite telegram for: 1/6/131 - Value: True sent. -- (__init__.py:groupwrite:227) 2021-11-28 19:37:04 CET DEBUG __init__ logics.O4LICHSPER1 groupwrite telegram for: 1/6/132 - Value: False sent. -- (__init__.py:groupwrite:227) [..] 2021-11-28 19:41:22 CET DEBUG __init__ plugins.knx.TCP_Client Set Item 'O4.NIGH' to value 'True' caller='knx', source='1.0.135', dest='10/5/131' -- (__init__.py:parse_telegram:454) 2021-11-28 19:41:22 CET DEBUG __init__ logics.O4LICHSPER1 groupwrite telegram for: 1/6/131 - Value: True sent. -- (__init__.py:groupwrite:227) 2021-11-28 19:41:22 CET DEBUG __init__ logics.O4LICHSPER1 groupwrite telegram for: 1/6/132 - Value: True sent. -- (__init__.py:groupwrite:227) [..] 2021-11-28 19:41:25 CET DEBUG __init__ plugins.knx.TCP_Client Set Item 'O4.NIGH' to value 'False' caller='knx', source='1.0.135', dest='10/5/131' -- (__init__.py:parse_telegram:454) 2021-11-28 19:41:25 CET DEBUG __init__ logics.O4LICHSPER1 groupwrite telegram for: 1/6/131 - Value: True sent. -- (__init__.py:groupwrite:227) 2021-11-28 19:41:25 CET DEBUG __init__ logics.O4LICHSPER1 groupwrite telegram for: 1/6/132 - Value: False sent. -- (__init__.py:groupwrite:227)
dazugehörige Einträge im Gruppenmonitor der ETS:
# | Zeit | Dienst | Flags | Prio | Quelladresse | Quellname | Zieladresse | Zielname | Rout | Typ | DPT | Info |
36025 | 28.11.2021 19:32:44,895 | vom Bus | Niedrig | 1.0.252 | IP-Tunnel 2 | 1/6/132 | O4.LICH.SPER2 | 5 | GroupValueWrite | 1.001 Schalten | $00 | Aus | |
37596 | 28.11.2021 19:37:45,254 | vom Bus | Niedrig | 1.0.252 | IP-Tunnel 2 | 1/6/132 | O4.LICH.SPER2 | 5 | GroupValueWrite | 1.001 Schalten | $00 | Aus | |
39075 | 28.11.2021 19:42:03,382 | vom Bus | Niedrig | 1.0.252 | IP-Tunnel 2 | 1/6/131 | O4.LICH.SPER1 | 5 | GroupValueWrite | 1.001 Schalten | $01 | Ein | |
39077 | 28.11.2021 19:42:03,404 | vom Bus | Niedrig | 1.0.252 | IP-Tunnel 2 | 1/6/132 | O4.LICH.SPER2 | 5 | GroupValueWrite | 1.001 Schalten | $01 | Ein | |
39108 | 28.11.2021 19:42:05,869 | vom Bus | Niedrig | 1.0.252 | IP-Tunnel 2 | 1/6/131 | O4.LICH.SPER1 | 5 | GroupValueWrite | 1.001 Schalten | $01 | Ein | |
39112 | 28.11.2021 19:42:05,944 | vom Bus | Niedrig | 1.0.252 | IP-Tunnel 2 | 1/6/132 | O4.LICH.SPER2 | 5 | GroupValueWrite | 1.001 Schalten | $00 | Aus |
Kommentar