Ankündigung

Einklappen
Keine Ankündigung bisher.

Klingelsteuerung, automatische Klingelsperre

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #16
    Zitat von smai Beitrag anzeigen
    Mein Fehler: Beim eval_trgger darf kein sh. vor dem Namen stehen, ...
    Ich falle da immer wieder rein, weil es im Widerspruch zum eval selbst und den Logiken steht.
    Wäre das ein Änderungswunsch an shNG?
    Viele Grüße
    Martin

    There is no cloud. It's only someone else's computer.

    Kommentar


      #17
      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


        #18
        Zitat von Msinn Beitrag anzeigen
        Wäre das ein Änderungswunsch an shNG?
        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.
        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
        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).

        Kommentar


          #19
          Zitat von smai Beitrag anzeigen
          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.
          So würde ich das auch implementieren. Ich nehm das mal mit auf die Wunschliste.
          Viele Grüße
          Martin

          There is no cloud. It's only someone else's computer.

          Kommentar


            #20
            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
            heissen. Andernfalls wird die Sperre nie zurückgesetzt.

            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
            OpenKNX www.openknx.de

            Kommentar


              #21
              Ja, klingt vernünftig.
              Ich war mir nicht mehr bewusst, dass der autotimer auch das eval aufruft. Aber ich glaube du hast recht.

              Kommentar


                #22
                Zitat von smai Beitrag anzeigen
                Ich war mir nicht mehr bewusst, dass der autotimer auch das eval aufruft.
                Da bin ich mir sehr sicher (die Verhaltensbeschreibung von patrickgoll spricht auch dafür).
                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
                heißen, wenn eval beim init nicht ausgeführt wird oder
                Code:
                init = 2
                falls der eval ausgeführt wird.
                Aber das kann patrickgoll ja ausprobieren...

                Gruß, Waldemar
                OpenKNX www.openknx.de

                Kommentar


                  #23
                  Zitat von mumpf Beitrag anzeigen
                  Da bin ich mir sehr sicher
                  Ich unterdessen auch.

                  Zitat von mumpf Beitrag anzeigen
                  Aber das kann patrickgoll ja ausprobieren...
                  Genau, etwas kann er ja auch machen

                  Kommentar


                    #24
                    patrickgoll

                    Funktioniert es jetzt mit den genannten Lösungsvorschlägen?

                    Gruß,
                    Henning

                    Kommentar


                      #25
                      Ich kam leider nicht mehr dazu jetzt am Wochenende zu testen. Ich teste es sobald ich kann und poste hier ein Update.

                      Kommentar


                        #26
                        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")
                        Logic Klingelsperre.py
                        Code:
                        import time
                        Klingel = self._sh.return_logic('Klingel')
                        Klingel.disable()
                        time.sleep(10)
                        Klingel.enable()
                        items Auszug
                        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

                        Lädt...
                        X