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
-
Ja. Eigentlich wollte ich den schon als ich frisch eingestiegen war mal anbringen, weil es mich damals sehr verwirrt hatte. Aber ich habe es wieder vergessen.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:
Allerdings hat dies eine Nebenwirkung, dass wegen dem None immer Warnings geloggt werden. Diese können aber ignoriert werden. (So war es zumindest in früheren SHNG-Versionen. Ich bin nicht sicher, ob die Warnings in 1.3 entfernt sind, war mal ein Thema).Code:eval = 1 if value else None
Kommentar
-
So würde ich das auch implementieren. Ich nehm das mal mit auf die Wunschliste.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
heissen. Andernfalls wird die Sperre nie zurückgesetzt.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
-
Da bin ich mir sehr sicher (die Verhaltensbeschreibung von patrickgoll spricht auch dafür).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
heißen, wenn eval beim init nicht ausgeführt wird oderCode:init = 0
falls der eval ausgeführt wird.Code:init = 2
Aber das kann patrickgoll ja ausprobieren...
Gruß, Waldemar
Kommentar
-
Ich unterdessen auch.Zitat von mumpf Beitrag anzeigenDa bin ich mir sehr sicher
Genau, etwas kann er ja auch machenZitat 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
Logic Klingelsperre.pyCode: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")
items AuszugCode: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