Ankündigung

Einklappen
Keine Ankündigung bisher.

Klingelsteuerung, automatische Klingelsperre

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

    Klingelsteuerung, automatische Klingelsperre

    Hallo zusammen,

    ich habe eine besondere Herausforderung zu meistern. Es gibt immer mal wieder Menschen, die gerne viel klingeln an der Haustüre. Also nicht einmal Ding Dong, so wie normale Menschen das machen sondern so zwischen 5-10 mal pro Sekunde.

    Nun habe ich den Vorteil, dass mein "Klingeltaster" auf einen Binäreingang geht und dann via ETS einfach auf einem Schaltausgang die Klingel triggert. Also drücken, Ding loslassen Dong.

    Mein Schaltausgang hat auch eine Sperrfunktion. Bedeutet, dass ich also eine GA angelegt habe samt Item mit dem ich über die Visu den Schaltausgang sperren kann für zum Beispiel Migräne, Baby schläft, etc.. Also beim Drücken des Tasters kein Ding und kein Dong.

    Nun zum eigentlichen Problem. Was ich gerne nun realisieren würde (autotimer?) wäre, dass wenn jemand am Klingeltaster drückt es einmal Ding und Dong macht und dann ein Autotimer für 10 Sekunden die Klingelsperre aktiviert und danach wieder abschaltet. So wäre jedem Einhalt geboten, der den Knopf mehr als einmal drücken muss aus persönlichen Gründen oder möglicherweise zwanghafter Störung oder sowas.

    Das i-Pünktchen wäre dann noch, wenn ich im selben Zug eine Logik für 10 Sekunden anhalten könnte. Denn ich habe noch eine Logik, die mit der Webcam ein Bild macht und mir das per Mail und Pushbullet schickt, sobald es klingelt. Das wäre super wenn ich da dann auch nur noch ein Bild bekomme anstatt die 10 Bilder, weil sich jemand nicht im Griff hat.

    Hat jemand von euch eine Idee, wie man sowas realisieren kann?

    Hier, was ich habe:

    Items Auszug:
    Code:
    [Zentral]
     [[Klingel]]
      type = bool
      visu_acl = ro
      knx_dpt = 1
      knx_listen = 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"
    Pushbullet/Mail Logik:

    Code:
    import os
    if sh.Zentral.Klingel() == False:
     os.system('sh /home/smarthome/klingel_mail.sh')
     sh.pushbullet.file("/tmp/klingel.jpg", body="Es hat geklingelt")
    /home/smarthome/klingel_mail.sh

    Code:
    curl "http://IPvonMeinerCamera/picture/1/current/?_username=nichtveröffentlicht&_signature=geheim" > /tmp/klingel.jpg
    echo "An der Türe hat es geklingelt." | mutt -e "set from=AbsenderAdresseWirdHierNichtErwähnt\@gmx.de" -e "set smtp_url=\"smtp://AbsenderAdresseWirdHierNichtErwähnt\@gmx.de@mail.gmx.net\"" -e "set smtp_pass=\"supergeheim,leider\"" -s "Es hat geklingelt" -a "/tmp/klingel.jpg" -- meineEmailAdresseDieIhrNichtBekommt@gmx.de
    Zuletzt geändert von patrickgoll; 15.10.2017, 16:54.

    #2
    Zitat von patrickgoll Beitrag anzeigen
    Was ich gerne nun realisieren würde (autotimer?) wäre, dass wenn jemand am Klingeltaster drückt es einmal Ding und Dong macht und dann ein Autotimer für 10 Sekunden die Klingelsperre aktiviert und danach wieder abschaltet.
    Versuch es mal so:

    Code:
    import os
    if sh.Zentral.Klingel() == False:
    os.system('sh /home/smarthome/klingel_mail.sh')
    sh.pushbullet.file("/tmp/klingel.jpg", body="Es hat geklingelt")
    
    [B][COLOR=#0000FF]# Klingel fuer 10 Sekunden sperren
    sh.Zentral.Klingel.Sperren(1)
    sh.Zentral.Klingel.Sperren.timer('10', 0)[/COLOR][/B]
    Siehe auch http://smarthomeng.de/v1_3/items.html

    Gruß,
    Henning

    Kommentar


      #3
      Ach ja und wirf mal das
      knx_listen = 14/0/1 bei der Sperre raus, das ist überflüssig, knx_cache beinhaltet knx_listen.

      Kommentar


        #4
        Hi Henning und danke für den Vorschlag.
        Das funktioniert dann so 1 von 10 mal gut. Die meiste Zeit jedoch sperrt die Logik aber wohl den Ausgang bevor der einmal klingeln konnte. Außerdem würde bei der Lösung eine Manuelle Sperre auch aufgehoben werden. Also wenn ich das so mache und sagen wir mal die Klingel gesperrt habe kann jemand klingeln, warten und dann doch klingeln, weil die Sperre aufgehoben wurde. Das könnte man möglicherweise mit einem if Statement abfangen.

        Bei der Idee wird allerdings wieder nicht berücksichtigt, dass durch den Binäreingang obwohl die Klingel kein Ding Dong macht die Bilder trotzdem geschickt werden. Also auch die Logik selbst muss 10 Sekunden anhalten.

        Hat jemand noch eine Idee, wie man das noch zuverlässiger machen kann?
        Zuletzt geändert von patrickgoll; 05.10.2017, 12:17.

        Kommentar


          #5
          Sperrst du mit 14/0/1 den Klingelaktor oder den Taster? Wenn du den Taster sperrst, sollte das doch funktionieren.

          Kommentar


            #6
            Ich sperre damit den Ausgang der den Klingeltrafo an und wieder ausmacht. Somit bekomme ich das Eingangssignal noch mit klingele aber einfach nicht. Vorteil davon ist, dass ich trotzdem noch eine Benachrichtigung auf das Handy bekomme, dass es geklingelt hat, obwohl das Baby nicht wach wird, weil die Klingel nicht geklingelt hat.
            Verstehst du was ich meine?

            Kommentar


              #7
              Zitat von ratzi82 Beitrag anzeigen
              Ach ja und wirf mal das
              knx_listen = 14/0/1 bei der Sperre raus, das ist überflüssig, knx_cache beinhaltet knx_listen.
              Gilt das für alle Items? Ich führe auf 1500 Zeilen listen und cache immer doppelt. Und ich habe noch irgendwo init gesehen. Was ist damit?

              Kommentar


                #8
                Mhm, ich sehe das Problem.
                Offensichtlich öffnet dein Aktor den Kontakt, sobald er eine Sperre bekommt. Kannst du das evtl. im Aktor parametrieren?

                Mit knx_cache brauchst du weder listen noch init.

                Und bei der Sperre brauchst du wahrscheinlich auch kein enforce_updates.

                Kommentar


                  #9
                  Ja das kann ich in der Tat. Bei "Sperre Verhalten" kann ich einstellen nach Gedächtnisprotokoll auf: "unverändert, schließen, öffnen". Dann gibt es auch noch eine 2. Einstellung. Das habe ich grade nicht im Kopf aber die Auswahlmöglichkeiten sind die gleichen.

                  Siehst du da einen Verbesserungsvorschlag bzw. kann ich das so tweaken, dass meine Vorstellung umgesetzt werden kann?

                  Kommentar


                    #10
                    Es kommt wohl etwas auf die genauen Umstände an.
                    Wie wird der Ausgang genau gesteuert? Bei Taster drücken = Aktor ein, Tatser loslassen = Aktor aus oder wird der Aktor eingeschaltet beim drücken und schaltet sich dann z.B. per Treppenlichtfunktion aus?

                    Im zweiten Fall könnte "unverändert" funktionieren.
                    Andernfalls kannst du je nach Aktor auch parametrieren, dass sich die Sperre nur auf das Einschalten bezieht aber nicht auf das Ausschalten. Auch dann müsste "unverändert" funktionieren.

                    Nachtrag:
                    Gegen das automatische Entsperren wenn vorher gesperrt war hilft:
                    Code:
                    import os
                    if sh.Zentral.Klingel() == False:
                      os.system('sh /home/smarthome/klingel_mail.sh')
                      sh.pushbullet.file("/tmp/klingel.jpg", body="Es hat geklingelt")
                    
                      # Klingel fuer 10 Sekunden sperren
                      if !sh.Zentral.Klingel.Sperren():
                        sh.Zentral.Klingel.Sperren(1)
                        sh.Zentral.Klingel.Sperren.timer('10', 0)

                    Kommentar


                      #11
                      Also parametriert ist, dass Drücken an und loslassen aus ist. Keine Treppenhausfunktion. Danke für das if Statement.
                      Wenn ich nun noch die korrekte Parametrierung hinbekomme sodass es zuverlässig wenigstens einmal klingelt und wenn ich dann noch die Logic ausgesetzt bekomme für 10 Sekunden sind wir am Ziel.

                      Kommentar


                        #12
                        Dass es bei dieser Kombination nicht funktioniert, überrascht mich etwas.
                        Die Logik prüft ja auf sh.Zentral.Klingel() == False, also auf Loslassen. Das heisst, das Klingeln wäre sowieso schon beendet, wenn die Sperre gesetzt wird.

                        Verstehe ich die andere Anforderung so richtig:
                        Wenn die Sperre normal gesetzt ist, willst du Mail und Pushbullet trotzdem auslösen. Wenn sie allerdings durch die 10-Sekunden gesetzt wurde, dann sollen auch Mail und Pushbullet gesperrt sein?

                        Dann brauchst du wohl ein drittes Item, um diese beiden Zustände zu unterscheiden (dafür brauchst du Sperre in der Logik evtl. nicht).
                        Am einfachsten sperrst du damit einfach den Taster für 10 Sekunden, so ist diese "Wiederholsperre" komplett unabhängig vom gesperrten Aktor.

                        Das sieht dann etwa so aus (14/0/xy ist die GA um den Taster zu sperren):
                        Code:
                        [Zentral]
                         [[Klingel]]
                          type = bool
                          visu_acl = ro
                          knx_dpt = 1
                          knx_listen = 14/0/0
                           [[[Sperren]]]
                           type = bool
                           visu_acl = rw
                           knx_dpt = 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
                           knx_dpt = 1
                           knx_send = 14/0/xy
                           eval_trigger = sh.Zentral.Klingel
                           eval = 1
                           autotimer = 10 = 0

                        Kommentar


                          #13
                          Hey das sieht doch mal vielversprechend aus. Sobald ich wieder daheim bin und Luft zum Atmen finde werde ich das genau so ausprobieren. Ich denke du hast hier die Lösung präsentiert. Danke schon mal dafür "fine sir".

                          Kommentar


                            #14
                            Also das funktioniert nicht so richtig muss ich leider berichten.
                            Ich kann den Binäreingang sperren und dann geht auch der Klingeltaster nicht mehr. Das passt soweit.

                            Allerdings geht der Eval Trigger inkl. Autotimer nicht so richtig. Wenn ich den Taster drücke wird das leider nicht geschrieben. Busmonitor bleibt auch still. Also weiterhin klingeln bis zum Sandnimmerleinstag. Muss hinter das sh.Zentral.Klingel noch ein ()? oder fehlt noch was?
                            was bedeutet eval = 1?
                            Parametriert habe ich die Freigabefunktion des Binärausganges auf "Sperren = 1, Freigeben = 0".
                            Verhalten bei Beginn der Sperre = keine Reaktion und am Ende auch keine Reaktion

                            Beim Binärausgang habe ich:
                            0 = Freigeben, 1 = Sperren
                            Verhalten bei Beginn der Sperre und auch bei Ende der Sperre beides mal "keine Änderung des Schaltzustandes".

                            Habe ich etwas falsch gemacht? Schaltaktor ist: Jung Schaltaktor 16 fach / Jalousieaktor 8-fach Bestellnummer 2316.16REGHE und Binäreingang ist Jung Binäreingang 8fach 12v-48v 2128REG

                            Code:
                            [[Klingel]]
                              type = bool
                              visu_acl = ro
                              knx_dpt = 1
                              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_send = 14/0/2
                               eval_trigger = sh.Zentral.Klingel
                               eval = 1
                               autotimer = 10 = 0
                            Was übrigens auch nicht geht ist die Unterscheidung bei Alexa, dass aus = 1 und an = 0 bedeutet. Komisch, ist aber so. Nicht tragisch allerdings.

                            Kommentar


                              #15
                              Mein Fehler: Beim eval_trgger darf kein sh. vor dem Namen stehen, also nur eval_trigger = Zentral.Klingel
                              Ich falle da immer wieder rein, weil es im Widerspruch zum eval selbst und den Logiken steht.

                              Das eval = 1 bewirkt, dass beim drücken 1 gesetzt wird, aber beim loslassennicht wieder eine 0 (bzw. wieder die 1)
                              Zuletzt geändert von smai; 05.10.2017, 20:10.

                              Kommentar

                              Lädt...
                              X