Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. Langer Tastendruck möglich?

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    473

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    394

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    979

Langer Tastendruck möglich?

Geplant Angeheftet Gesperrt Verschoben Visualisierung
28 Beiträge 3 Kommentatoren 1.3k Aufrufe 2 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • D Offline
    D Offline
    derrapf
    schrieb am zuletzt editiert von
    #17

    @mickym
    Vielen Dank auch an Paul
    Aber dann muss ich mal blöd fragen. (Vielleicht hab ich den Befehl bisher falsch verstanden)

    on(idTaste, function(dp) {
    }
    

    wird doch getriggert wenn ich einen Taster drücke bzw. wenn sich ein Datenpunkt ändert (z.B. von true auf false, oder von 20 auf 21 oder von "dings" auf "bums")

    Ein Taster kann auch ein VIS Widget sein.
    Bisher dachte ich dass "Taster" bedeutet dass beim Drücken des physischen-, als auch des VIS-Tasters ein Wert in einen Datenpunkt geschrieben, dieser also geändert wird. Das ist im Grunde eine Variablen-Zuweisung.
    Der Schalter wird also kurz gedrückt und dann wieder losgelassen.

    Wenn das oben funktionieren soll, dann müsste es zwei Trigger-Events für den "on-Befehl" geben: Einmal beim Drücken (Wert wird gesetzt, bzw. Timer läuft los) und dann nochmal beim Loslassen (Wert wird wieder geändert, Timer wird angehalten)

    Mir wäre jetzt aber nicht bekannt, dass beim Loslassen einer Taste dieses über einen on-Befehl in JS abgefangen werden könnte.
    Bin ich jetzt total auf dem Holzweg? Wo ist mein Denkfehler?
    Gruss Ralf

    mickymM paul53P 2 Antworten Letzte Antwort
    0
    • D derrapf

      @mickym
      Vielen Dank auch an Paul
      Aber dann muss ich mal blöd fragen. (Vielleicht hab ich den Befehl bisher falsch verstanden)

      on(idTaste, function(dp) {
      }
      

      wird doch getriggert wenn ich einen Taster drücke bzw. wenn sich ein Datenpunkt ändert (z.B. von true auf false, oder von 20 auf 21 oder von "dings" auf "bums")

      Ein Taster kann auch ein VIS Widget sein.
      Bisher dachte ich dass "Taster" bedeutet dass beim Drücken des physischen-, als auch des VIS-Tasters ein Wert in einen Datenpunkt geschrieben, dieser also geändert wird. Das ist im Grunde eine Variablen-Zuweisung.
      Der Schalter wird also kurz gedrückt und dann wieder losgelassen.

      Wenn das oben funktionieren soll, dann müsste es zwei Trigger-Events für den "on-Befehl" geben: Einmal beim Drücken (Wert wird gesetzt, bzw. Timer läuft los) und dann nochmal beim Loslassen (Wert wird wieder geändert, Timer wird angehalten)

      Mir wäre jetzt aber nicht bekannt, dass beim Loslassen einer Taste dieses über einen on-Befehl in JS abgefangen werden könnte.
      Bin ich jetzt total auf dem Holzweg? Wo ist mein Denkfehler?
      Gruss Ralf

      mickymM Offline
      mickymM Offline
      mickym
      Most Active
      schrieb am zuletzt editiert von
      #18

      @derrapf Genau das Skript wird nur beim Wechsel getriggert von true auf false oder umgekehrt.

      Nun frägt er ab:

      if(dp.state.val)
      

      wenn der Datenpunkt true ist, dann wird über

      zyklus = setInterval(function() {
               // Laustärke erhöhen
            }, 250);
      

      übder das Zyklus Objekt alle 250 ms ein Trigger /Timer gestartet und ausgeführt. Also kommen da die HTTP Befehle rein

      ist

      if(dp.state.val)
      

      der Datenpunkt falsch wird der Timer gelöscht, der alle 250 ms einen Trigger erzeugt.

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      1 Antwort Letzte Antwort
      0
      • D derrapf

        @mickym
        Vielen Dank auch an Paul
        Aber dann muss ich mal blöd fragen. (Vielleicht hab ich den Befehl bisher falsch verstanden)

        on(idTaste, function(dp) {
        }
        

        wird doch getriggert wenn ich einen Taster drücke bzw. wenn sich ein Datenpunkt ändert (z.B. von true auf false, oder von 20 auf 21 oder von "dings" auf "bums")

        Ein Taster kann auch ein VIS Widget sein.
        Bisher dachte ich dass "Taster" bedeutet dass beim Drücken des physischen-, als auch des VIS-Tasters ein Wert in einen Datenpunkt geschrieben, dieser also geändert wird. Das ist im Grunde eine Variablen-Zuweisung.
        Der Schalter wird also kurz gedrückt und dann wieder losgelassen.

        Wenn das oben funktionieren soll, dann müsste es zwei Trigger-Events für den "on-Befehl" geben: Einmal beim Drücken (Wert wird gesetzt, bzw. Timer läuft los) und dann nochmal beim Loslassen (Wert wird wieder geändert, Timer wird angehalten)

        Mir wäre jetzt aber nicht bekannt, dass beim Loslassen einer Taste dieses über einen on-Befehl in JS abgefangen werden könnte.
        Bin ich jetzt total auf dem Holzweg? Wo ist mein Denkfehler?
        Gruss Ralf

        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #19

        @derrapf sagte: Wenn das oben funktionieren soll, dann müsste es zwei Trigger-Events

        Es wird bei Änderung in beiden Richtungen (Drücken: false --> true / Loslassen: true --> false) getriggert.

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        D 1 Antwort Letzte Antwort
        0
        • paul53P paul53

          @derrapf sagte: Wenn das oben funktionieren soll, dann müsste es zwei Trigger-Events

          Es wird bei Änderung in beiden Richtungen (Drücken: false --> true / Loslassen: true --> false) getriggert.

          D Offline
          D Offline
          derrapf
          schrieb am zuletzt editiert von
          #20

          @paul53
          Ok!?
          Das ist mir dann irgendwie nie aufgefallen. D.h. meine ganzen on... Programmierungen laufen immer zweimal?
          Muss ich echt mal checken.
          Aber OK. Wenn das so ist müsste ich es hinbringen.
          Ich fang mal an zu basteln.

          Gruss Ralf

          mickymM D 2 Antworten Letzte Antwort
          0
          • D derrapf

            @paul53
            Ok!?
            Das ist mir dann irgendwie nie aufgefallen. D.h. meine ganzen on... Programmierungen laufen immer zweimal?
            Muss ich echt mal checken.
            Aber OK. Wenn das so ist müsste ich es hinbringen.
            Ich fang mal an zu basteln.

            Gruss Ralf

            mickymM Offline
            mickymM Offline
            mickym
            Most Active
            schrieb am zuletzt editiert von mickym
            #21

            @derrapf Das ist doch die Besonderheit bei dem Widget - dass Du es als Taster konfigurieren kannst.

            Wenn das oben funktionieren soll, dann müsste es zwei Trigger-Events für den "on-Befehl" geben: Einmal beim Drücken (Wert wird gesetzt, bzw. Timer läuft los) und dann nochmal beim Loslassen (Wert wird wieder geändert, Timer wird angehalten)

            Als Taster funktioniert es nicht wie ein Schalter oder Switch. Der Schaltet einmal von on auf off etc. Der Taster schalten true (on) solange DU gedrückt hälst und false(off) wenn Du loslässt. Deswegen musst DU ja zwingend dieses Widget nehmen, da nur dieses als Taster konfigurierbar ist.

            Es ist also wie bei einem physischen Taster- den Du drückst und der beim Loslassen wieder in die Grundposition springt und nicht wie bei Schalter der in der Position bleibt den Du zuletzt gedrückt hast.

            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

            D 1 Antwort Letzte Antwort
            0
            • mickymM mickym

              @derrapf Das ist doch die Besonderheit bei dem Widget - dass Du es als Taster konfigurieren kannst.

              Wenn das oben funktionieren soll, dann müsste es zwei Trigger-Events für den "on-Befehl" geben: Einmal beim Drücken (Wert wird gesetzt, bzw. Timer läuft los) und dann nochmal beim Loslassen (Wert wird wieder geändert, Timer wird angehalten)

              Als Taster funktioniert es nicht wie ein Schalter oder Switch. Der Schaltet einmal von on auf off etc. Der Taster schalten true (on) solange DU gedrückt hälst und false(off) wenn Du loslässt. Deswegen musst DU ja zwingend dieses Widget nehmen, da nur dieses als Taster konfigurierbar ist.

              Es ist also wie bei einem physischen Taster- den Du drückst und der beim Loslassen wieder in die Grundposition springt und nicht wie bei Schalter der in der Position bleibt den Du zuletzt gedrückt hast.

              D Offline
              D Offline
              derrapf
              schrieb am zuletzt editiert von
              #22

              @mickym @paul53
              Tatsache
              Eben schnell mal ausprobiert. Der Datenpunkt geht auf true, bleibt dort bis ich die Taste wieder loslassen und geht dann auf false.
              Dann mach ich das jetzt genau so mit dem Timer wie ihr das vorgeschlagen habt.
              Das ist super.
              Danke ihr beiden
              Gruss Ralf

              mickymM 1 Antwort Letzte Antwort
              0
              • D derrapf

                @mickym @paul53
                Tatsache
                Eben schnell mal ausprobiert. Der Datenpunkt geht auf true, bleibt dort bis ich die Taste wieder loslassen und geht dann auf false.
                Dann mach ich das jetzt genau so mit dem Timer wie ihr das vorgeschlagen habt.
                Das ist super.
                Danke ihr beiden
                Gruss Ralf

                mickymM Offline
                mickymM Offline
                mickym
                Most Active
                schrieb am zuletzt editiert von
                #23

                @derrapf Und wenn Du zwischen Long und Short Press nicht unterscheiden musst, kannst Du solange der Datenpunkt auf true ist Deine HTTP Requests über den Timer rausballern

                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                D 1 Antwort Letzte Antwort
                0
                • mickymM mickym

                  @derrapf Und wenn Du zwischen Long und Short Press nicht unterscheiden musst, kannst Du solange der Datenpunkt auf true ist Deine HTTP Requests über den Timer rausballern

                  D Offline
                  D Offline
                  derrapf
                  schrieb am zuletzt editiert von
                  #24

                  @mickym
                  Genau das ist der Plan. Beim Thema Lautstärkeregler muss ich das auch nicht.
                  Höchstens beim "spulen" kann man sich so was überlegen. Z.B. dass ein Shortpress nur Frame-weise vorwärts geht, oder sowas...
                  Gruss Ralf

                  1 Antwort Letzte Antwort
                  0
                  • D derrapf

                    @paul53
                    Ok!?
                    Das ist mir dann irgendwie nie aufgefallen. D.h. meine ganzen on... Programmierungen laufen immer zweimal?
                    Muss ich echt mal checken.
                    Aber OK. Wenn das so ist müsste ich es hinbringen.
                    Ich fang mal an zu basteln.

                    Gruss Ralf

                    D Offline
                    D Offline
                    derrapf
                    schrieb am zuletzt editiert von
                    #25

                    @derrapf
                    Leute das hat auf Anhieb funktioniert!
                    Ich bin begeistert!

                    Aber: Die zig http Requests werden scheinbar gepuffert (wahrscheinlich im Mediola Gateway).
                    D.h. dass der Lautstärkeregler sich noch weitergedreht hat nachdem ich schon längst die Taste losgelassen habe.
                    Da brauche ich ev. ne andere IR Sequenz, die den Regler nur ein paar Winkelsekunden weiterdreht.. Mal sehen. Aber grundsätzlich gehts.
                    Gruss Ralf

                    mickymM 1 Antwort Letzte Antwort
                    0
                    • D derrapf

                      @derrapf
                      Leute das hat auf Anhieb funktioniert!
                      Ich bin begeistert!

                      Aber: Die zig http Requests werden scheinbar gepuffert (wahrscheinlich im Mediola Gateway).
                      D.h. dass der Lautstärkeregler sich noch weitergedreht hat nachdem ich schon längst die Taste losgelassen habe.
                      Da brauche ich ev. ne andere IR Sequenz, die den Regler nur ein paar Winkelsekunden weiterdreht.. Mal sehen. Aber grundsätzlich gehts.
                      Gruss Ralf

                      mickymM Offline
                      mickymM Offline
                      mickym
                      Most Active
                      schrieb am zuletzt editiert von
                      #26

                      @derrapf Das Problem ist, dass das Gateway das nicht so schnell verarbeiten kann. Du musst halt die Zeit dann auf 500ms ggf. erhöhen. Das ist leider so, dass es nie so schnell wie auf einer richtigen Fernbedienung ist. Du musst halt mit den Zeiten rumspielen, was vom Gateway noch verarbeitet werden kann.

                      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                      D 1 Antwort Letzte Antwort
                      0
                      • mickymM mickym

                        @derrapf Das Problem ist, dass das Gateway das nicht so schnell verarbeiten kann. Du musst halt die Zeit dann auf 500ms ggf. erhöhen. Das ist leider so, dass es nie so schnell wie auf einer richtigen Fernbedienung ist. Du musst halt mit den Zeiten rumspielen, was vom Gateway noch verarbeitet werden kann.

                        D Offline
                        D Offline
                        derrapf
                        schrieb am zuletzt editiert von
                        #27

                        @mickym Stimmt, das ist auch noch eine Option. Da kann ich mal dran schrauben.
                        Hätte nicht gedacht, dass ich so schnell zum Erfolg komme. Danke nochmal.
                        Gruss Ralf

                        D 1 Antwort Letzte Antwort
                        0
                        • D derrapf

                          @mickym Stimmt, das ist auch noch eine Option. Da kann ich mal dran schrauben.
                          Hätte nicht gedacht, dass ich so schnell zum Erfolg komme. Danke nochmal.
                          Gruss Ralf

                          D Offline
                          D Offline
                          derrapf
                          schrieb am zuletzt editiert von
                          #28

                          @derrapf
                          So jetzt geht's
                          Habe 1000 ms verwendet. Das reicht locker.

                          Falls sich noch jemand für den Code interessiert:

                          var pfad                = "mediola.alexatrigger" + "."; // PFad unter dem in der Javascript-Instanz die Datenpunkte angelegt werden sollen:
                          
                          // Datenpunktnamen:
                          var idAmp_lauter            = pfad + "Amp_lauter";
                          var idAmp_leiser            = pfad + "Amp_leiser";
                          
                          var amp_Volup_Counter = null;
                          var amp_Voldown_Counter = null;
                          
                          // Datenpunkte anlegen:
                          // -----------------------------------------------------------------------------
                          createState(idAmp_lauter, 0, force_creation, {
                             name: "Amp_lauter",
                             SmartName: "Verstärker lauter",
                             desc: "Verstärker lauter",
                             type: 'number',
                             unit: '',
                             role: 'state'
                          });
                          
                          createState(idAmp_leiser, 0, force_creation,{
                             name: "Amp_leiser",
                             SmartName: "Verstärker leiser",
                             desc: "Verstärker lauter",
                             type: 'number',
                             unit: '',
                             role: 'state'
                          });
                          
                          
                          //-------------  Lauter -----------------------------------------------------
                          on({id: "javascript.0."+idAmp_lauter ,change:'any'}, function (obj) {
                             if(obj.state.val) {
                          
                                amp_Volup_Counter = setInterval(function() {
                                   // Laustärke erhöhen
                                   log("Amp lauter");
                                   mediolaRequest(idAlexaVerstaerker, str_langsam_lauter);
                                }, 1000);
                             } else clearInterval(amp_Volup_Counter);
                          });
                          
                          //-------------  Leiser -----------------------------------------------------
                          on({id: "javascript.0."+idAmp_leiser ,change:'any'}, function (obj) {
                             if(obj.state.val) {
                          
                                amp_Voldown_Counter = setInterval(function() {
                                   // Laustärke erhöhen
                                   log("Amp leiser");
                                   mediolaRequest(idAlexaVerstaerker, str_langsam_leiser);
                                }, 1000);
                             } else clearInterval(amp_Voldown_Counter);
                          });
                          

                          Die Funktion mediolaRequest sorgt für das Versenden der IR Code. Hier kann jeder natürlich jede beliebige anderes Funktion einbauen die bei ihm irgend was tun soll.

                          Gruss Ralf

                          1 Antwort Letzte Antwort
                          0

                          Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                          Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                          Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                          Registrieren Anmelden
                          Antworten
                          • In einem neuen Thema antworten
                          Anmelden zum Antworten
                          • Älteste zuerst
                          • Neuste zuerst
                          • Meiste Stimmen


                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          544

                          Online

                          32.8k

                          Benutzer

                          82.8k

                          Themen

                          1.3m

                          Beiträge
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                          ioBroker Community 2014-2025
                          logo
                          • Anmelden

                          • Du hast noch kein Konto? Registrieren

                          • Anmelden oder registrieren, um zu suchen
                          • Erster Beitrag
                            Letzter Beitrag
                          0
                          • Home
                          • Aktuell
                          • Tags
                          • Ungelesen 0
                          • Kategorien
                          • Unreplied
                          • Beliebt
                          • GitHub
                          • Docu
                          • Hilfe