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. Off Topic
  4. Microcontroller
  5. Rotary encoder

NEWS

  • Der neue Monatsrückblick für Mai und Juni 2026 ist online!
    BluefoxB
    Bluefox
    8
    1
    1.1k

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    3.6k

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    6.2k

Rotary encoder

Geplant Angeheftet Gesperrt Verschoben Microcontroller
18 Beiträge 6 Kommentatoren 407 Aufrufe 6 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.
  • MartinPM Online
    MartinPM Online
    MartinP
    schrieb am zuletzt editiert von
    #9

    Muss man den Rotary Encoder eigentlich zwingend mit Tasmota erledigen, oder könnte man die i/o Signale des Encoders nicht an iobroker durchreichen lassen, wo dann die Drehrichtungserkennung und das Zählen der Pulse erfolgt? Platzproblemen im Programmspeicher des ESP könnte man aber auch ausweichen, indem man statt eines ESP8266 einen ESP32 mit ordentlich Speicher anschafft

    Intel(R) Celeron(R) CPU N3000 @1.04GHz 8G RAM 480G SSD * Virtualization : unprivileged lxc container on Proxmox * 6 GByte RAM für den iobroker Container * Remote-Access über Wireguard meiner Fritzbox

    1 Antwort Letzte Antwort
    0
    • P Offline
      P Offline
      peterfido
      schrieb am zuletzt editiert von
      #10

      ESP Easy soll das können. Jeden einzelnen Tick per mqtt senden wird doch viel zu träge. Hier hat jemand ein Projekt veröffentlicht.

      Gruß

      Peterfido

      1 Antwort Letzte Antwort
      0
      • S Online
        S Online
        Smigl
        schrieb am zuletzt editiert von
        #11

        Ok.
        Das bedeutet das der esp8266 wohl zu träge ist, die signale vom encoder zeitrelevant zu verarbeiten (schnell genug).
        Verstanden...
        Man müsste den encoder also per ttl verarbeiten und den aktuellen Wert an den esp durchreichen...
        Mit setzen des startwertes bei stromausfall und Begrenzung.
        Oder braucht das dann drei Pins an einem 8086 mit entsprechendem Programm?
        Bis jetzt löse ich das über 3 Taster mit Script...
        2 für up/down einer für on/off
        Wäre mit dem encoder eleganter/ hübscher...

        Ich glaube ich beerdige das Projekt encoder erst mal...

        1 Antwort Letzte Antwort
        0
        • geschildG Offline
          geschildG Offline
          geschild
          schrieb am zuletzt editiert von
          #12

          Der ESP8266 oder besser noch der ESP32 kann die Signale eines Encoders locker verarbeiten und das PWM Signal für die Leds generieren. Nur halt mit tasmota könte das tricky werden.

          1 Antwort Letzte Antwort
          0
          • P Offline
            P Offline
            peterfido
            schrieb am zuletzt editiert von peterfido
            #13

            Also Google spuckt eine Anleitung nebst Code für folgende Suchanfrage aus:

            tasmota script für rotary encoder, variable hoch/runterzählen und per mqtt senden
            

            Dann noch eine Erweiterung hinterher und das Grundgerüst steht:

            Erst senden, wenn der rotary encoder 500 ms nicht bewegt wurde
            
            Verwunden Sie Tasmota-Schalter (Switch) für die Impulse des Drehgebers und das Tasmota Scripting im Bereich Consoles -> Edit Script, um eine Variable beim Drehen zu verändern und per MQTT zu senden.1. GPIO-Konfiguration (Web-Oberfläche)Stellen Sie sicher, dass die Pins des Rotary Encoders (CLK und DT) als Schalter konfiguriert sind:Switch1 (Pin für CLK, z. B. GPIO12)Switch2 (Pin für DT, z. B. GPIO13)(Optional) Switch3 (Taster des Encoders, z. B. GPIO14)Setzen Sie in der Tasmota-Konsole folgende Befehle, um das Schalterverhalten zu entkoppeln:textSetOption98 1
            Verwende Code mit Vorsicht.2. Tasmota Script CodeFügen Sie diesen Code in den Editor für das Skript ein:text>D
            v=0
            old_v=0
            step=1
            min_v=0
            max_v=100
            
            >B
            v=50
            
            >S
            ; Auslesen der Switches (angenommen Switch1 = Pin A, Switch2 = Pin B)
            ; Wenn sich Switch1 ändert, wird die Richtung anhand von Switch2 ermittelt
            #sw1=sw[1]
            #sw2=sw[2]
            
            if chg(sw1)>0 then
              if sw2==1 then
                v += step
              else
                v -= step
              endif
              if v > max_v then
                v = max_v
              endif
              if v < min_v then
                v = min_v
              endif
            endif
            
            ; Wenn sich der Wert geändert hat, per MQTT senden
            if v != old_v then
              old_v = v
              mqttc [tele/rotary/RESULT] {"Count":%v%}
            endif
            
            >J
            ,"Rotary": {"Count": %v%}
            Verwende Code mit Vorsicht.3. Erklärung der Sektionen>D: Deklaration der Variablen (v für den Zähler, step für die Schrittweite, min_v/max_v als Limits).>B: Initialisierung (Startwert des Zählers beim Booten auf 50 gesetzt).>S: Die Hauptschleife prüft Flankenwechsel an Switch1 (sw[1]) und bestimmt über den Zustand von Switch2 die Richtung. Bei einer Änderung wird die Variable innerhalb der Grenzen angepasst und via mqttc direkt gesendet.>J: Optional – fügt den aktuellen Zählerstand in die regulären JSON-Telemetriedaten (SENSOR) von Tasmota ein.Soll der Drehgeber unendlich zählen (ohne min_v/max_v) oder möchten Sie den internen Taster nutzen, um den Zähler auf 0 zurückzusetzen?KI-Antworten können Fehler enthalten
            
            
            
            Erst senden, wenn der rotary encoder 500 ms nicht bewegt wurdeUm das Senden zu verzögern, nutzen wir einen Timer. Bei jeder Bewegung des Drehgebers wird der Timer auf 500 Millisekunden zurückgesetzt. Erst wenn der Timer abläuft (keine Bewegung mehr), wird die MQTT-Nachricht gesendet.Aktualisierter Tasmota-Skript-CodeErsetzen Sie Ihr bisheriges Skript durch diese Version:text>D
            v=0
            old_v=0
            step=1
            min_v=0
            max_v=100
            ; Timer-Variable (0 bedeutet Timer läuft nicht)
            t_send=0
            
            >B
            v=50
            
            >S
            #sw1=sw
            #sw2=sw
            
            ; Bewegung erkennen und Wert anpassen
            if chg(sw1)>0 then
              if sw2==1 then
                v += step
              else
                v -= step
              endif
              if v > max_v then
                v = max_v
              endif
              if v < min_v then
                v = min_v
              endif
              
              ; Wenn sich der Wert geändert hat, Timer auf 500 ms setzen (5 * 100 ms)
              if v != old_v then
                t_send = 5
              endif
            endif
            
            ; Der Tasmota-Sekundentakt (>S) läuft ca. alle 100ms
            ; Timer herunterzählen, wenn er aktiv ist
            if t_send > 0 then
              t_send -= 1
              ; Wenn der Timer genau jetzt abläuft (0 erreicht)
              if t_send == 0 then
                old_v = v
                mqttc [tele/rotary/RESULT] {"Count":%v%}
              endif
            endif
            
            >J
            ,"Rotary": {"Count": %v%}
            Verwende Code mit Vorsicht.Funktionsweise der Verzögerungt_send = 5: Die Sektion >S wird in Tasmota-Skripten standardmäßig alle 100 Millisekunden ausgeführt. Ein Wert von 5 entspricht daher genau einer Verzögerung von 500 ms.Dauer-Drehen: Wenn Sie den Encoder schnell drehen, wird t_send bei jedem Rastpunkt sofort wieder auf 5 gesetzt. Der Timer erreicht die 0 erst, wenn Sie 500 ms lang aufgehört haben zu drehen.MQTT-Schonung: Es wird pro Dreh-Vorgang nur noch ein einziges JSON-Paket über Ihr Netzwerk gesendet.Möchten Sie die Verzögerungszeit flexibel anpassen oder soll der aktuelle Wert während des Drehens zumindest auf einem angeschlossenen Display sofort sichtbar sein?
            
            

            Gruß

            Peterfido

            1 Antwort Letzte Antwort
            0
            • S Online
              S Online
              Smigl
              schrieb am zuletzt editiert von
              #14

              Gut. Ich werde am Wochenende mal testen und berichten.

              1 Antwort Letzte Antwort
              0
              • S Online
                S Online
                Smigl
                schrieb am zuletzt editiert von Smigl
                #15

                So, jetzt...
                Rotary Encoder und Wemos D1 auf Breadboard
                Einrichtung über:

                Tasmota Englisch über Tasmotizer tasmota.bin von Github, Timestamp 20260622 16:26
                WLAN einrichten (ohne MQTT!!!)
                Module type Generic (18)
                d1 Rotary B, d2 Rotary A, d5 Button, d6 PWM
                
                Backlog SetOption43 20; SetOption98 1
                
                Rule1
                   ON Rotary1#Pos1==1 DO ADD1 1 1 ENDON
                   ON Rotary1#Pos1==0 DO SUB1 1 1 ENDON
                   ON Var1#State DO Publish stat/%topic%/position %value% ENDON
                
                Rule1 1
                

                Ausgabe Console:

                14:09:41.351 MQT: stat/tasmota_C7CB70/RESULT = {"POWER":"OFF","Dimmer":55}
                14:09:42.620 MQT: stat/tasmota_C7CB70/RESULT = {"POWER":"OFF","Dimmer":60}
                14:09:45.196 MQT: stat/tasmota_C7CB70/RESULT = {"POWER":"OFF","Dimmer":65}
                14:09:47.024 MQT: stat/tasmota_C7CB70/RESULT = {"POWER":"OFF","Dimmer":70}
                14:09:52.483 MQT: stat/tasmota_C7CB70/RESULT = {"POWER":"OFF"}
                14:09:52.487 MQT: stat/tasmota_C7CB70/POWER = OFF
                14:09:58.606 MQT: stat/tasmota_C7CB70/RESULT = {"POWER":"OFF","Dimmer":65}
                14:10:02.117 MQT: stat/tasmota_C7CB70/RESULT = {"POWER":"OFF","Dimmer":60}
                14:10:03.588 MQT: stat/tasmota_C7CB70/RESULT = {"POWER":"OFF","Dimmer":55}
                14:10:05.535 MQT: stat/tasmota_C7CB70/RESULT = {"POWER":"OFF","Dimmer":50}
                14:10:09.830 MQT: stat/tasmota_C7CB70/RESULT = {"POWER":"OFF"}
                14:10:09.834 MQT: stat/tasmota_C7CB70/POWER = OFF
                14:10:17.557 MQT: stat/tasmota_C7CB70/RESULT = {"POWER":"ON"}
                14:10:17.559 MQT: stat/tasmota_C7CB70/POWER = ON
                

                POWER und Dimmer gehen entsprechend im iobroker mit...
                Eine LED lässt sich steuern und ein/ausschalten.
                Der erste große Erfolg.
                Jetzt erst mal das ganze entsprechend Dokumentieren und dann der zweite LED- Kanal und die zusätzlichen Taster.

                Schönen Sonntag noch.

                1 Antwort Letzte Antwort
                0
                • S Online
                  S Online
                  Smigl
                  schrieb am zuletzt editiert von
                  #16

                  Tja, der zweite Encoder geht irgendwie überhaupt nicht....
                  Nach dem zurück setzen ging immerhin der erste wieder.
                  Man muss wohl den ersten und den zweiten encoder irgendwie entkoppeln, da wohl ein automatisches koppeln der beiden in Tasmota eingebaut ist.
                  Ist wohl so wie bei den PWM ausgängen. 1 PWM für weiss, 3 PWM für RGB.

                  Ein einzelner Encoder geht übrigens auch ohne Rules inklusive iobroker.

                  ... weiter forschen.

                  1 Antwort Letzte Antwort
                  0
                  • S Online
                    S Online
                    Smigl
                    schrieb zuletzt editiert von
                    #17

                    Ja Nun, heute schon wieder 3 Stunden mit dem Encoder verbracht.
                    Ergebnis:

                    Tasmota 15.1.0, 2025.10.11 13:10:25 installiert.
                    Generic (18) mit d1 Rotary B1, d2 Rotary A1, d5 Button
                    SO98 1
                    
                    Rule1
                      on Rotary1#Pos1=1 do ADD1 5 endon
                      on Rotary1#Pos1=0 do SUB1 5 endon
                      ON Var1#State DO Publish stat/%topic%/Dimmer %var1% ENDON
                    
                    Rule1 1
                    
                    MQTT eingerichtet
                    

                    soweit, so gut....
                    In der Konsole dann folgendes verhalten beim Drehen des Encoders mit 1 Click pro Sekunde. erst 5 Clicks rechts, dann 5 Klicks links:

                    12:04:43.561 RUL: ROTARY1#POS1=1 performs 'ADD1 5'
                    12:04:43.571 MQT: stat/tasmota_C7CB70/RESULT = {"Add1":"5.000"}
                    12:04:43.602 RUL: VAR1#STATE performs 'Publish stat/tasmota_C7CB70/Dimmer 5.000'
                    12:04:43.607 MQT: stat/tasmota_C7CB70/Dimmer = 5.000
                    12:04:57.260 RUL: ROTARY1#POS1=1 performs 'ADD1 5'
                    12:04:57.267 MQT: stat/tasmota_C7CB70/RESULT = {"Add1":"10.000"}
                    12:04:57.294 RUL: VAR1#STATE performs 'Publish stat/tasmota_C7CB70/Dimmer 10.000'
                    12:04:57.301 MQT: stat/tasmota_C7CB70/Dimmer = 10.000
                    12:04:58.126 RUL: ROTARY1#POS1=0 performs 'SUB1 5'
                    12:04:58.134 MQT: stat/tasmota_C7CB70/RESULT = {"Sub1":"5.000"}
                    12:04:58.157 RUL: VAR1#STATE performs 'Publish stat/tasmota_C7CB70/Dimmer 5.000'
                    12:04:58.162 MQT: stat/tasmota_C7CB70/Dimmer = 5.000
                    

                    Ist das normal? Gibt es da einen Timeout?
                    Fragen über Fragen....

                    1 Antwort Letzte Antwort
                    0
                    • simonf04S Online
                      simonf04S Online
                      simonf04
                      schrieb zuletzt editiert von simonf04
                      #18

                      Vermutlich ist das dem 8266 echt zuviel jeden einzelnen click von 2 encodern per MQTT zu senden. Wenn er auch noch die ganzen rules verarbeiten muss.

                      Alternativ kann ich auch esphome Empfehlen: https://esphome.io/components/sensor/rotary_encoder/. Der haelt die Berechnung am esp und sendet dann nur den Endzustand z.B. zum iobroker.
                      Und firmware images sind deutclich schlanker als komplettes tasmota.

                      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

                      434

                      Online

                      33.0k

                      Benutzer

                      83.6k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2026
                      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