Ankündigung

Einklappen
Keine Ankündigung bisher.

Lampen blinken lassen?

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

    Lampen blinken lassen?

    Hallo, ich bräuchte da noch mal etwas Hilfe...

    Hat jemand eine Idee wie ich eine Lampe (GAD-Item) solange im Sekundentakt blinken lassen kann bis ein anderes GAD-Item wieder auf Null gesetzt wird?

    Ich würde das ganze gerne, als Optische Visualisierung im Aussenbereich, bei Panik anwenden.

    Bis jetzt habe ich da einfach eine Logic, die 20x per For Schleife an/aus macht. Das gefällt mir aber nicht so.
    Hat da jemand eventuell eine tolle Idee?

    Grüße, Marc

    #2
    Gibt es Erfahrungen ob so ein Blinken dem Aktor / der Lampe schaden kann? ich hatte das auch mal überlegt, dann aber beschlossen dass dauernd strom an strom aus nicht das tollste ist

    Kommentar


      #3
      Hmmm.
      Heute ist ja fast alles LED und dem Aktor würde ich das zumuten.
      Und jetzt speziell für meinen Fall, also Panik, wo ich hoffe, dass ich das niemals brauchen werde, ist es eher unkritisch ob dann noch ein Leuchtmittel kaputt geht

      Kommentar


        #4
        müsste eigentlich mit
        Code:
        eval =not value if sh.x.y.panic() =1 else value
        cycle = 1
        gehen, wenn das item vom Typ bool ist. Statt "value" musst Du ggfls. sh.x.y.z() verwenden, in Abhängigkeit von Deiner item-Struktur.

        Gruß Wolfram

        Kommentar


          #5
          Hallo, erst einmal vielen Dank.
          Ist das richtig, dass ich das in der Logic.conf einfügen soll?
          Ist das den richtig, dass da auch eval funktioniert?

          Ich Test das morgen mal. Wäre ja super wenn das funktioniert!

          Marc

          Kommentar


            #6
            Die Idee war eigentlich, dies direkt in der items.conf unterzubringen, ohne eigene Logik.
            Ob "eval" auch in Logiken funktioniert, kann ich nicht sagen. Das habe ich noch nicht probiert.
            Die Funktion des eval selbst lässt natürlich in einer Logik definieren. Die Logik muss dann aber über ein item getriggert werden, das mit dem Attribut cycle regelmäßig aufgerufen wird.

            Gruß Wolfram

            Kommentar


              #7
              Mit einer Logik geht's, da bin ich mir sicher. Hab mir aber vorhin auch schon an einer eleganten Lösung über Items die Zähne ausgebissen. Direktes eval=not xyz() würde vermutlich zu schnell blinken. Ich bin dann bei der neuen Implementierung von autotimer gelandet: autotimer=2=not_self() im Zusammenhang mit einem Trigger-Item. Bin aber auch noch nicht ganz durch, da ich den 'Aus'-Schalter noch nicht gefunden habe ...

              Vermutlich irgendwas in Richtung autotimer = 2 = not (_self && sh.triggeritem()) - aber wenn ich versuche, da heute noch durchzusteigen, platzt mir der Kopf ...

              Alternativ über cycle und ein Hilfsitem, das dann wieder mit eval abgefragt wird ...

              /tom

              Kommentar


                #8
                Grad mal in der Pause ein bisschen gedanklich drauf rumgekaut - sowas in der Art hier könnte funktionieren:

                Code:
                [FONT=courier new][blink_item]   # hier Lampe anbinden
                    type = bool
                    cycle = 1
                    eval = (not(value) && sh.blink_switch())
                    # alternativ: eval = 1 if (sh.blink_switch() && value=0) else 0
                    enforce_updates = true
                
                [blink_switch] # hier Panic-Switch anbinden
                    type = bool
                    value = false[/FONT]
                Ist aber ungetestet und sicherlich auch noch nicht zu Ende gedacht - kann es erst heute Abend zu Hause testen ...

                /tom

                Kommentar


                  #9
                  Hallo, erst einmal vielen Dank für Eure Mühe!
                  Ich werde es dann heute Abend auch gleich mal bei mir testen.

                  Marc

                  Kommentar


                    #10
                    Habe es eben mal getestet. Es gibt aber einen Syntax Fehler.

                    Mit der Version so wie beschrieben:
                    2017-01-03 18:55:26 WARNING blink_item-eval Item blink_item: problem evaluating (not(value) && sh.blink_switch()): invalid syntax (<string>, line 1)

                    Mit der alternativen Version:
                    2017-01-03 19:01:12 WARNING blink_item-eval Item blink_item: problem evaluating 1 if (sh.blink_switch() && value=0) else 0: invalid syntax (<string>, line 1)

                    Bei der Lösung von Wolfram gibt es dann auch einen Syntax Fehler:
                    blink_item-eval Item blink_item: problem evaluating not sh.blink_item() if sh.EG.Raum7.Steckdosen.sd_nw() =1 else sh.blink_item(): invalid syntax (<string>, line 1)

                    Marc
                    Zuletzt geändert von schuma; 03.01.2017, 19:24.

                    Kommentar


                      #11
                      Hab mich grad rangesetzt, aber noch nicht geknackt. In dieser Version ist der eval-Fehler schon raus, es waren mal wieder Hochkommas erforderlich. Nur blinken tut immer noch nix, irgendwie 'cycled' der nicht. Gibt es da einen bekannten Bug?

                      Code:
                      [blink_item]
                          type = bool
                          cycle = 1   #1s
                          value = 0
                          eval = "1 if (sh.blink_item.switch()==1 and self()==0) else 0"
                          enforce_updates = true
                          eval_trigger = blink_item.switch | self
                          # hier über KNX Lampe anbinden
                      
                          [[switch]]
                              type = bool
                              value = 0
                              # hier über KNX Panic-Taster anbinden
                      Testitems in der Visu:

                      HTML-Code:
                          <div>    
                              {{ basic.flip('_blink.start_stop', 'blink_item.switch') }}&nbsp;&nbsp;{{ basic.symbol('_blink.blinker', 'blink_item') }}
                          </div>
                      /tom

                      Kommentar


                        #12

                        Emmmmm....
                        Gibt es überhaupt ein Cycle in den Items? Hatte ich bis jetzt noch nie irgendwo gesehen. Ok, heisst ja nichts, aber fragen wollte ich jetzt doch noch einmal.

                        Kommentar


                          #13
                          Schau mal hier unter 'cycle' ... oder die Doku ist falsch. Ich kenn es sonst eigentlich aber auch nur für Logiken. Oder es sind in der Doku die eval's der abhängigen Items gemeint, kann auch sein (könnte man mal testen).

                          Ich bleib trotzdem dran - andere spielen gern Sudoku, ich pfriemel halt gern an eval's rum. Jedem das Seine ...

                          /tom

                          p.s. Spätestens mit dem neuen autotimer sollte es gehen, der evaluiert erst im Moment des Aufrufs und 'kennt' Itemreferenzen.

                          Kommentar


                            #14
                            Würde dann soetwas funktionieren?

                            eval = value if sh.panic() = 1 else 0
                            cycle = 2 = 1
                            autotimer = 1 = 0

                            Damit würde das Blinken doch schon erledigt sein oder?
                            Nur wie bekommt man das dann wieder aus? Irgendwie läuft es dann ja immer noch wenn Panic 0 ist
                            Zuletzt geändert von schuma; 03.01.2017, 20:35.

                            Kommentar


                              #15
                              In etwas erweiterter Form schon durch, klappt nicht. Er will einfach nicht cyclen oder autotimern.
                              /tom

                              Kommentar

                              Lädt...
                              X