Ankündigung

Einklappen
Keine Ankündigung bisher.

Logic Licht blinken lassen...

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

    Logic Licht blinken lassen...

    Hi Leute.. ich komm mit einer Logik nicht klar..

    ich will, wenn jemand klingelt, das bestimmt Lampen 3 mal blinken (großes Haus.. und wir hören nicht immer,
    wenn unten wer klingelt)

    folgendes hab ich und funktioniert nicht:

    Code:
    elif logic.name == 'Logic_Tuerklingel' and trigger['value'] == True:
        i = 0
        while i < 4:
            sh.KG.Hobbyraum.Bar(not sh.KG.Hobbyraum.Bar())
             sleep(1) 
             i += 1
        logger.info(logic.name + ' aktiv, Lightshow wegen Klingel 4x getriggert')
        exit()
    der Trigger Value ist auf True.. das hab ich über sh.cli getriggert..

    jemand einen Tipp ?

    Gruß Martin
    Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

    #2
    Hab das nochmal vereinfacht.. wird aber auch nicht ausgeführt..

    Code:
    elif logic.name == 'Logic_Tuerklingel':
        if trigger['value'] == True:
            sh.KG.Hobbyraum.Bar(False)
            logger.info(logic.name + ' aktiv, Blinken')
        exit()
    hier soll einfach wenn der Trigger auf True geht, das Licht im Keller ausgeschaltet werden.
    kann mir einer sagen wieso das nicht geht ??

    Gruß Martin
    Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

    Kommentar


      #3
      Probier' mal

      Code:
      sh.KG.Hobbyraum.Bar('off')

      Kommentar


        #4
        Hi DiMa,

        hab ich jetzt nicht probiert.. ich hab jetzt das.. und das funktioniert.. auch wenn es nicht schön ist und ich
        nicht weiß wieso die while schleife nicht funktioniert hat:

        Code:
        elif logic.name == 'Logic_Tuerklingel':
            if trigger['value'] == True:
                sh.KG.Hobbyraum.Bar(not sh.KG.Hobbyraum.Bar())
                time.sleep(1)
                sh.KG.Hobbyraum.Bar(not sh.KG.Hobbyraum.Bar())
                time.sleep(1)
                sh.KG.Hobbyraum.Bar(not sh.KG.Hobbyraum.Bar())
                time.sleep(1)
                sh.KG.Hobbyraum.Bar(not sh.KG.Hobbyraum.Bar())
                time.sleep(1)
                sh.KG.Hobbyraum.Bar(not sh.KG.Hobbyraum.Bar())
                time.sleep(1)
                sh.KG.Hobbyraum.Bar(not sh.KG.Hobbyraum.Bar())
                logger.info(logic.name + ' aktiv, Blinken')
            exit()
        was beim ersten Versuch gefehlt hat war auf jeden Fall das "time" beim sleep(1)

        Gruß Martin
        Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

        Kommentar


          #5
          Hi,

          zu wenig Informationen.

          https://knx-user-forum.de/forum/supp...fehlerbehebung

          Insbesondere ohne Log kann ich nichts sehen.

          Bis bald

          Marcus

          Kommentar


            #6
            Mensch Marcus... bau doch endlich einen Remote Wartungszugang ein, dann kannst du die Fehler remote bei den Leuten direkt beheben!
            Dieser Beitrag enthält keine Spuren von Sarkasmus... ich bin einfach so?!

            Kommentar


              #7
              Ungetestet sollte das doch aber mit korrektem time.sleep funktionieren?
              Täte mich mal interessieren was der logger sagt.

              Code:
              elif logic.name == 'Logic_Tuerklingel':
                  if trigger['value'] == True:
                      i = 0
                      while i < 7: #Anzahl der Durchläufe
                          sh.KG.Hobbyraum.Bar(not sh.KG.Hobbyraum.Bar())
                          time.sleep(1)
                          i += 1
                      logger.info(logic.name + ' aktiv, Blinken')
                  exit()
              Zuletzt geändert von JuMi2006; 16.03.2015, 19:22. Grund: Zu Ende getippt - zu schnell gesendet
              Umgezogen? Ja! ... Fertig? Nein!
              Baustelle 2.0 !

              Kommentar


                #8
                Hi Martin,

                was genau geht denn nicht? Blinkt das Licht nicht oder erscheint auch nix im Logger?

                Allerdings solltest Du IMHO nicht sleep() verwenden sondern eher überlegen ob Du das ganze nicht mit dem Scheduler lösen kannst.
                sleep() legt den Thread nämlich für die Zeit lahm und es kann nix anderes im gleichen Thread erledigt werden. Das könnte im ungünstigsten Fall dazu führen, das andere Dinge bei Dir nicht mehr ganz oder gar nicht funktionieren

                Gruß,
                Bernd


                Kommentar


                  #9
                  Hi Leute,

                  also mal alles was ich aktuell hab:
                  Logic.conf:
                  Code:
                  [Logic_Tuerklingel]
                      filename = simplelogics.py
                      watch_item = Allgemein.Tuerklingel
                  dann die logic.py: (so wie ich es jetzt eben umgesetzt hab... also mit sleep:
                  Code:
                      elif logic.name == 'Logic_Tuerklingel':    
                          if trigger['value'] == True:        
                              sh.KG.Hobbyraum.Bar(not sh.KG.Hobbyraum.Bar())        
                              time.sleep(1)        
                              sh.KG.Hobbyraum.Bar(not sh.KG.Hobbyraum.Bar())        
                              time.sleep(1)        
                              sh.KG.Hobbyraum.Bar(not sh.KG.Hobbyraum.Bar())        
                              time.sleep(1)        
                              sh.KG.Hobbyraum.Bar(not sh.KG.Hobbyraum.Bar())        
                              time.sleep(1)        
                              sh.KG.Hobbyraum.Bar(not sh.KG.Hobbyraum.Bar())        
                              time.sleep(1)        
                              sh.KG.Hobbyraum.Bar(not sh.KG.Hobbyraum.Bar())        
                              logger.info(logic.name + ' aktiv, Blinken')
                  dann noch die Items:
                  Code:
                  [Allgemein]
                       [[Tuerklingel]]
                           name = Tuerklingel
                           type = bool
                           knx_dpt = 1
                           knx_listen = 4/3/2
                        knx_send = 4/3/1
                  [KG]
                      [[Hobbyraum]]
                          name = Hobbyraum
                          sv_page = room
                          sv_img = scene_party.png
                          [[[Bar]]]
                              name = BarLicht
                              type = bool
                              visu_acl = rw
                              knx_dpt = 1
                              knx_listen = 0/0/8
                              knx_send = 0/0/8
                  Log ist jetzt aktuell schwer, da ich so viel Probiert hab und mal stand was drin, meistens aber nur
                  das ich mich mit den Leerzeichen bzw. Tabs vertan hab.. ein direkten Fehler konnte ich nicht rauslesen.

                  als ich die version mit dem i=0 ... while drin hatte ging das licht bei Betätigung des Triggers einmal
                  an, bzw. aus.. aber eben nicht 3 mal wie es sollte..

                  Nachdem das in dem Skript nur ein Ding von 3 bzw. 6 Sekunden ist und auch nur, wenn jemand klingelt
                  seh ich das nicht so eng.. aber wenns einen besseren Weg gibt, lass ich mich natürlich überzeugen !

                  Gruß Martin
                  Zuletzt geändert von bmx; 15.09.2017, 07:28.
                  Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                  Kommentar


                    #10
                    Hi Martin,

                    im Debuglog geht es nicht nur um Fehler. Dort steht viel mehr drin.
                    Wahrscheinlich liegt es bei Dir daran, das Dein Item kein enforce_updates gesetzt hat. Damit ist das Item "immer" true und Deine Logik wird nicht getriggert da sich der Wert des Items nicht ändert.
                    Aber ohne Debuglog gibt es von mir kein weiteres WoIstDerFehler-Raten.

                    Bis bald

                    Marcus
                    Zuletzt geändert von callidomus; 17.03.2015, 07:56.

                    Kommentar


                      #11
                      ahh.. ok.. hört sich plausibel an... Danke für den Tipp.. dann bau ich das heute nochmal um
                      und teste.. und dann gibts auch ganz sicher einen Logeintrag von mir, wenn was nicht geht.
                      Versprochen !!

                      Gruß Martin
                      Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                      Kommentar


                        #12
                        So.. ein bisschen getestet..

                        also ein Problem war bei mir der "neustart", den ich immer gemacht hab, dazu hab ich in diesem Thread was geschrieben
                        Nachdem ich nur den Service neu gestartet hab, gingen die Logiken auch.. (unter anderen findet er jetzt auch die DWD Logik !!!)

                        der Code von JuMi2006 funktioniert soweit .. hab noch den Wert von i auf 6 geändert, damit die Lampe den ursprünglichen
                        Wert wieder annimmt, aber ansonsten passt das !

                        Fehlerlog ist aktuell leer. (zumindest was das hier betrifft)

                        was habt ihr jetzt für Vorschläge wegen dem Sleep ?

                        Gruß Martin
                        Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                        Kommentar


                          #13
                          Hi, möchte auch ein Licht blinken lassen jedoch schaff ich es nicht, trotz der Beispiele.
                          Kann mir bitte jemand helfen.

                          Code:
                          [Info_Bewegung_GangWC_OG]
                              filename = Info_Bewegung_GangWC_OG.py
                              watch_item = OG.Info_Bewegung_GangWC_OG.OnOff
                          Code:
                          if sh.OG.Info_Bewegung_GangWC_OG() == 1:
                              sh.EG.deckenlicht_wohnzimmer.OnOff(not sh.EG.deckenlicht_wohnzimmer.OnOff())
                              time.sleep(1)
                              sh.EG.deckenlicht_wohnzimmer.OnOff(not sh.EG.deckenlicht_wohnzimmer.OnOff())
                              time.sleep(1)
                              sh.EG.deckenlicht_wohnzimmer.OnOff(not sh.EG.deckenlicht_wohnzimmer.OnOff())
                              time.sleep(1)
                              sh.EG.deckenlicht_wohnzimmer.OnOff(not sh.EG.deckenlicht_wohnzimmer.OnOff())
                              time.sleep(1)
                              sh.EG.deckenlicht_wohnzimmer.OnOff(not sh.EG.deckenlicht_wohnzimmer.OnOff())
                              time.sleep(1)
                              sh.EG.deckenlicht_wohnzimmer.OnOff(not sh.EG.deckenlicht_wohnzimmer.OnOff())
                          Zuletzt geändert von bmx; 15.09.2017, 07:24.

                          Kommentar


                            #14
                            Not ... gibt einen bool Wert (True oder False), jedoch nicht wie Du erwartest 1 oder 0
                            Viele Grüße
                            Martin

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

                            Kommentar


                              #15
                              Danke, kann ich dann das so schreiben?

                              Code:
                              if sh.OG.Info_Bewegung_GangWC_OG() == 1:
                                  sh.EG.deckenlicht_wohnzimmer.OnOff()==0
                                  time.sleep(1)
                                  sh.EG.deckenlicht_wohnzimmer.OnOff()==0
                                  time.sleep(1)
                                  sh.EG.deckenlicht_wohnzimmer.OnOff()==0
                                  time.sleep(1)
                                  sh.EG.deckenlicht_wohnzimmer.OnOff()==0
                                  time.sleep(1)
                                  sh.EG.deckenlicht_wohnzimmer.OnOff()==0
                                  time.sleep(1)
                                  sh.EG.deckenlicht_wohnzimmer.OnOff()==0
                              oder geht es besser?
                              Zuletzt geändert von bmx; 15.09.2017, 07:23. Grund: lesbarer so ...

                              Kommentar

                              Lädt...
                              X