Ankündigung

Einklappen
Keine Ankündigung bisher.

Doppelklick-Abfrage in den Plugins möglich

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [wiregate] Doppelklick-Abfrage in den Plugins möglich

    Hallo zusammen,

    hat jemand eine Idee, wie man mit einem Wiregate-Plugin einen Doppelklick auf einen Taster abfragen kann?

    Insbesondere geht hier die Frage an Makki, ob das überhaupt zuverlässig realisierbar ist, da ja doch immer wieder mal im Zusammenhang mit Plugins mögliche Verzögerungen von ca. 1s auftaucht, was im Fall eines Doppelklicks ja doch zu lange ist.

    Einen möglichen Ansatz könnte ich mir so vorstellen:

    GA sendet das erste mal, Script "A" läuft, setzt eine globale Variable $status "running" und macht einen Delay von einer Sekunde.

    GA sendet ein zweites mal innerhalb einer Sekunde (also den Doppelklick), Script "A" läuft erneut und fragt die Variable $status ab, falls diese auf running steht, wird eine zweite globale Variable geschrieben (z.B. $doppelklick = 1)

    Jetzt beendet das erstausgeführte Script den Delay und fragt den Wert $doppelklick ab. Ist dieser 1, wird eine entsprechende Aktion ausgeführt, sowie alle Variablen zurückgesetzt.

    Soweit die Theorie.

    Ich habe es selbst noch nicht ausprobiert, würde dies aber bei Gelegenheit machen, wenn grundsätzlich die Meinung besteht, dass das ganze zuverlässig laufen könnte.
    Eine Frage hierbei wäre natürlich, ob die Plugins multithreaded abgearbeitet werden oder nacheinander (falls nacheinander wäre ja die oben beschriebene Variante nicht machbar).

    Vielleicht hat jemand auch noch eine bessere Idee wie man das umsetzen könnte.

    Viele Grüße
    Christian
    Viele Grüße
    Christian

    #2
    So weit ich weiß: hintereinander.

    Ungetestet würde ich es so versuchen:
    Plugin an die GA binden. Wenn ein Write ankommt aktuelle Zeit mit gespeichertem Zeitstempel vergleichen, ob kleiner Doppelklick-Schwellwert - wenn ja, dann Doppelklick-Aktion durchführen.
    Dann aktuelle Zeit in dem Zeitstempel ablegen.
    Fertig.
    TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

    Kommentar


      #3
      Die Plugins haben mindestens () eine Schwäche: kein exaktes Timing.

      Wäre prinzipiell möglich, das problem ist, das ganze läuft in einer einzigen Schleife - sequentiell;
      Zeitbasiert mit einer Auflösung von 1sek, eventbasiert (IP, KNX subscribe) sofort.
      wenn sich da aber jetzt ein anderes Plugin "dazwischenmogelt", das 3sek für was auch immer braucht: ists essig.
      (das Problem dürfte aber nebenbei auch auf sämtlichen anderen mir bekannten Systemen bestehen, es ist halt nur so, das man Plugins mit beliebigem Inhalt - der auch mal richtig dauern kann - machen könnte..)

      time() liefert übrigens Standardmässig millisekunden (Time::HiRes), so wie Chris schrieb, schnell genug ist es sicher aber wiegesagt: mit Restrisko..

      Also konkret sowas ähnliches wie (untested!):
      Code:
      if (time() - $plugin_info{$plugname.'_merker'} < 0.5) {# 500ms
          # Doppelklick
          knx_write(whatever);
      }
      $plugin_info{$plugname.'_merker'} = time();
      Makki

      P.S.: Die einzig mir bekannte KNX-Variante wo der 1-4x mehrfachklick wirklich schön&direkt im Gerät zu machen ist ist: ABB US/U 2.2 / 4.2
      EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
      -> Bitte KEINE PNs!

      Kommentar


        #4
        Zitat von makki Beitrag anzeigen
        P.S.: Die einzig mir bekannte KNX-Variante wo der 1-4x mehrfachklick wirklich schön&direkt im Gerät zu machen ist ist: ABB US/U 2.2 / 4.2
        Das hat man nun davon, wenn man die schönen B.IQs verbaut hat .

        Aber Spaß beiseite, ich werde (spätestens am Wochenende) versuchen, Eure Ideen auszutesten, und werde bei Erfolg natürlich berichten.

        Danke schon mal und viele Grüße
        Christian
        Viele Grüße
        Christian

        Kommentar


          #5
          Bitte nicht hauen.
          Aber im EIBPC gehts Klasse!
          [highlight=epc]
          DoppelKlick=0
          if event(TasteGA) and (TasteGA==TasteWert) then DoppelKlick=DoppelKlick+1 endif
          if after(DoppelKlick==1, 800u64) and DoppelKlick==1 then write(Klick1GA,Klick1Wert) endif
          if after(DoppelKlick==1, 800u64) and DoppelKlick==2 then write(Klick2GA,Klick2Wert) endif
          if after(DoppelKlick==1, 1000u64) then DoppelKlick=0 endif
          [/highlight]

          *duckundwech*
          Gruß
          Volker

          Wer will schon Homematic?

          Kommentar


            #6
            Hat das bis jetzt mal jemand umgesetzt?
            Wäre sehr an ner Lösung interresiert

            Kommentar


              #7
              hatte hier nicht schonmal jemand angefangen 1-10 tastimpulse in verschiedene aktionen umzusetzen?
              mir ist so...
              Derzeit zwischen Kistenauspacken und Garten anlegen.
              Baublog im Profil.

              Kommentar


                #8
                Ich hoffe ja immer noch makki bringt den "Editor2.0" von mir aus auch mit Pyton. Dann aber gleich richtig mit multithreading oder besser noch multitasking

                *Duckundweg*
                Gruss Patrik alias swiss

                Kommentar


                  #9
                  Hallo zusammen,

                  für einen Doppelklick gibts doch ein Plugin:
                  https://knx-user-forum.de/forum/supp...wiregate/16360

                  Kann auch 3-9 fach Klick ;-)

                  Das Plugin kann aber "nur" einfache Telegramme auswerten
                  z. B. 2x Ein innerhalb einer gewissen Zeit und danach eine definierte Totzeit

                  Leider geht das nicht mit UM. Wenn da jedmand etwas gefunden hat wär ich auf jeden Fall interessiert, da meine Taster meistens mit UM arbeiten.

                  Gruß
                  Sascha

                  Kommentar


                    #10
                    Klasse, genau das hab ich gesucht, läuft nur ist es nich gerade Echtzeit, aber Hauptsache es geht

                    Kommentar


                      #11
                      UM sollte doch auch Problemlos sein, einfach den Telegramminhalt 0/1 ignorieren..

                      @swiss: mit 2.0 mach ich gleich weiter wenns weniger als 50 ungelesene Threads und weniger als 50 offene andere Tasks sind

                      Makki
                      EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                      -> Bitte KEINE PNs!

                      Kommentar

                      Lädt...
                      X