Zitat von smai
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
Klingelsteuerung, automatische Klingelsperre
Einklappen
X
-
Passt immernoch was nicht. Sobald ich das Item Klingel.TasterSperre in den Items habe und smarthome service restarte funktioniert die Klingel gar nicht mehr. Wenn ich das Item wieder rausnehme funktioniert es sofort wieder.
Wenn ich die TasterSperre vom ETS Gruppenmonitor aus beschreibe mit Sperren, dann ist die Klingel aus und wenn ich sie beschriebe mit Freigeben geht sie wieder. Also ETS seitig alles gut.
Nur das Item verhindert, dass geklingelt werden kann wie es aussieht.
Kommentar
-
Zitat von Msinn Beitrag anzeigenWäre das ein Änderungswunsch an shNG?
Eigentlich wäre die Lösung ganz einfach: Wenn eval_trigger mit "sh." beginnt, wird dieses abgeschnitten und dann weiter wie bisher. So ist's auch rückwärtskompatibel.
patrickgoll beim Neustart wird wohl ebenfalls automatisch die 1 gesetzt.
Wird evtl. der autotimer auch beim Neustart aktiviert und die Klingel funktioniert 10 Sekunden nach dem Neustart wieder?
Du kannst versuchen, ob ein zusätzliches "init = 0" auf Klingel.TasterSperre etwas bringt (ich bin aber nicht sicher, ob damit auch das eval = 1 ausgelöst wird).
Eine weitere Lösung wäre noch, das 1 im eval nur zu setzen, wenn der Wert auch 1 ist (also nur beim Niederdrücken des Tasters) und ansonsten zu ignorieren. Das geht so:
Code:eval = 1 if value else None
Kommentar
-
Zitat von smai Beitrag anzeigenEigentlich wäre die Lösung ganz einfach: Wenn eval_trigger mit "sh." beginnt, wird dieses abgeschnitten und dann weiter wie bisher. So ist's auch rückwärtskompatibel.Viele Grüße
Martin
There is no cloud. It's only someone else's computer.
- Likes 1
Kommentar
-
Hi,
ich war schon länger nicht mehr am sh.py dran, aber so wie ich das sehe, muss es
Code:eval = 1 if value == 1 else 0 if value == 2 else None autotimer = 10 = 2
Beim Klingeltaster = gedrückt wird value = 1, da will man die Sperre setzen und der autotimer soll loslaufen.
Beim Klingeltaster = losgelassen wird value = 0, diese Null muss ignoriert werden, da sie sonst die Sperre zurücksetzen würde.
Nach 10 Sekunden läuft der autotimer ab, value = 2, dies setzt das Item auf 0 und die Sperre ist zurückgesetzt.
Gruß, Waldemar
Kommentar
-
Zitat von smai Beitrag anzeigenIch war mir nicht mehr bewusst, dass der autotimer auch das eval aufruft.
Ich bin mir nur nicht sicher, ob das init auch über eval läuft oder nicht. Je nachdem müsste es dann
Code:init = 0
Code:init = 2
Aber das kann patrickgoll ja ausprobieren...
Gruß, Waldemar
Kommentar
-
Zitat von mumpf Beitrag anzeigenDa bin ich mir sehr sicher
Zitat von mumpf Beitrag anzeigenAber das kann patrickgoll ja ausprobieren...
Kommentar
-
Hi zusammen,
danke für die Vorschläge. Leider hat das alles so nicht funktioniert. Ich habe unterdessen jedoch eine andere Lösung gefunden.
Ich habe die ETS Verknüpfung zwischen Binäreingang und Schaltausgang getrennt. Ich habe nun über die Logik Klingel meinen Gong an den Taster gebunden. Ergebnis also: jemand drückt. Logik schaltet den Gong an wartet 0.1 Sekunde und schaltet den Gong aus. So weit so gut, alles wie gehabt.
Dann habe ich eine 2. Logik definiert, die die erste Logik für 10 sekunden deaktiviert. Trick hierbei ist, dass ich für die Logik mit dem Gong den Taster als watch item genommen habe und für die Logik mit der Sperre das eigentliche Item des Gongs als watch Item. Somit triggert die erste Logik die 2. Logik und die 2. Logik deaktiviert die 1. Logik. Ganz einfach, oder?
Hier noch Code Auszüge:
Logic Klingel.py
Code:import os import time if sh.Zentral.Klingel.Klingeltaster() == False: sh.Zentral.Klingel(True) time.sleep(0.1) sh.Zentral.Klingel(False) os.system('sh /home/smarthome/klingel_mail.sh') sh.pushbullet.file("/tmp/klingel.jpg", body="Es hat geklingelt")
Code:import time Klingel = self._sh.return_logic('Klingel') Klingel.disable() time.sleep(10) Klingel.enable()
Code:[[Klingel]] type = bool enforce_updates = yes visu_acl = rw knx_dpt = 1 knx_listen = 14/0/0 knx_send = 14/0/0 knx_cache = 14/0/0 [[[Sperren]]] type = bool enforce_updates = yes visu_acl = rw knx_dpt = 1 knx_listen = 14/0/1 knx_send = 14/0/1 knx_cache = 14/0/1 alexa_name = "Klingelsperre" alexa_actions = turnOn turnOff alexa_item_turn_on = 0 alexa_item_turn_off = 1 alexa_description = "SmarthomeNG Gerät" [[[SperreTaster]]] type = bool enforce_updates = yes visu_acl = rw knx_dpt = 1 knx_listen = 14/0/2 knx_send = 14/0/2 knx_cache = 14/0/2 [[[Klingeltaster]]] type = bool enforce_updates = yes visu_acl = rw knx_dpt = 1 knx_listen = 14/0/3 knx_send = 14/0/3 knx_cache = 14/0/3
Kommentar
Kommentar