Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • 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. Skripten / Logik
  4. Shelly->ioBroker->Zigbee/Ikea Reaktionszeit

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

Shelly->ioBroker->Zigbee/Ikea Reaktionszeit

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
4 Beiträge 3 Kommentatoren 330 Aufrufe 3 Watching
  • Ä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.
  • H Offline
    H Offline
    huizhaecka
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich habe ein paar Led Panele von Ikea. Nun möchte ich die nicht über die IKEA Fernbedienung sondern über ein normales Schalterprogramm steuern. Der aktuelle Aufbau sieht folgendermaßen aus:

    • Doppeltaster ein einem Shelly 2PM Gen3 (als detached Switch)
    • dieser per MQTT an ioBroker angebunden
    • IKEA Panel per Zigbee USB Stick am ioBroker
    • Plattform: Raspi 4
      zur Steuerung habe ich ein Skript geschrieben (Javascript) mit folgendem Ablauf:
    • Trigger wenn sich der Schalterstatus ändert (Modus "gt", reagiert also nur auf die Änderung Aus->Ein)
    • Schleife die für eine halbe Sekunde überprüft, ob noch gedrückt ist, wenn vorher losgelassen wird -> einfacher Schaltbefehl ein/aus, das funktioniert.
    • wenn der Schalter an bleibt wird alle 30ms der Schalterzustand abgefragt und je nach Steuerrichtung die Helligkeit um eins erhöht oder verringert (per setState den Wert brightness der Lampe setzen)
    • bei Erreichen von Grenzwerten kehrt sich die Richtung um

    Grundsätzlich funktioniert das, allerdings läuft die Steuerung nach. Das heißt auch nach dem loslassen des Tasters ändert sich für eine gewisse Zeit (mehrere Sekunden) die Helligkeit. Ohne direktes Visuelles Feedback ist das natürlich nicht tauglich.
    Nun suche ich nach der Ursache.

    Mir scheint dass auf der Eingangsseite das Ganze im Takt läuft, die Schreibbefehle zum Helligkeitswechsel aber in einer Warteschlange stehen. jetzt kenne ich mich mit dem Timing bei Zigbee gar nicht aus. Praktisch wären das etwa 33 Befehle pro Sekunde.

    Praktisch ist des die Umsetzung eines Tastdimmers. Google hat mich leider nicht weitergeführt, vielleicht hat jemand schon was ähnliches gemacht und hat Tipps in welche Richtung ich suchen muss - oder ob es gar eine Sackgasse ist.

    geschildG AsgothianA 2 Antworten Letzte Antwort
    0
    • H huizhaecka

      Hallo zusammen,

      ich habe ein paar Led Panele von Ikea. Nun möchte ich die nicht über die IKEA Fernbedienung sondern über ein normales Schalterprogramm steuern. Der aktuelle Aufbau sieht folgendermaßen aus:

      • Doppeltaster ein einem Shelly 2PM Gen3 (als detached Switch)
      • dieser per MQTT an ioBroker angebunden
      • IKEA Panel per Zigbee USB Stick am ioBroker
      • Plattform: Raspi 4
        zur Steuerung habe ich ein Skript geschrieben (Javascript) mit folgendem Ablauf:
      • Trigger wenn sich der Schalterstatus ändert (Modus "gt", reagiert also nur auf die Änderung Aus->Ein)
      • Schleife die für eine halbe Sekunde überprüft, ob noch gedrückt ist, wenn vorher losgelassen wird -> einfacher Schaltbefehl ein/aus, das funktioniert.
      • wenn der Schalter an bleibt wird alle 30ms der Schalterzustand abgefragt und je nach Steuerrichtung die Helligkeit um eins erhöht oder verringert (per setState den Wert brightness der Lampe setzen)
      • bei Erreichen von Grenzwerten kehrt sich die Richtung um

      Grundsätzlich funktioniert das, allerdings läuft die Steuerung nach. Das heißt auch nach dem loslassen des Tasters ändert sich für eine gewisse Zeit (mehrere Sekunden) die Helligkeit. Ohne direktes Visuelles Feedback ist das natürlich nicht tauglich.
      Nun suche ich nach der Ursache.

      Mir scheint dass auf der Eingangsseite das Ganze im Takt läuft, die Schreibbefehle zum Helligkeitswechsel aber in einer Warteschlange stehen. jetzt kenne ich mich mit dem Timing bei Zigbee gar nicht aus. Praktisch wären das etwa 33 Befehle pro Sekunde.

      Praktisch ist des die Umsetzung eines Tastdimmers. Google hat mich leider nicht weitergeführt, vielleicht hat jemand schon was ähnliches gemacht und hat Tipps in welche Richtung ich suchen muss - oder ob es gar eine Sackgasse ist.

      geschildG Offline
      geschildG Offline
      geschild
      schrieb am zuletzt editiert von
      #2

      @huizhaecka Versuchs mal mit einer längeren Intervallzeit und einem höheren Increment. Ich steuere eine Aqara Lampe mit I=100ms/Step=2.

      1 Antwort Letzte Antwort
      0
      • H huizhaecka

        Hallo zusammen,

        ich habe ein paar Led Panele von Ikea. Nun möchte ich die nicht über die IKEA Fernbedienung sondern über ein normales Schalterprogramm steuern. Der aktuelle Aufbau sieht folgendermaßen aus:

        • Doppeltaster ein einem Shelly 2PM Gen3 (als detached Switch)
        • dieser per MQTT an ioBroker angebunden
        • IKEA Panel per Zigbee USB Stick am ioBroker
        • Plattform: Raspi 4
          zur Steuerung habe ich ein Skript geschrieben (Javascript) mit folgendem Ablauf:
        • Trigger wenn sich der Schalterstatus ändert (Modus "gt", reagiert also nur auf die Änderung Aus->Ein)
        • Schleife die für eine halbe Sekunde überprüft, ob noch gedrückt ist, wenn vorher losgelassen wird -> einfacher Schaltbefehl ein/aus, das funktioniert.
        • wenn der Schalter an bleibt wird alle 30ms der Schalterzustand abgefragt und je nach Steuerrichtung die Helligkeit um eins erhöht oder verringert (per setState den Wert brightness der Lampe setzen)
        • bei Erreichen von Grenzwerten kehrt sich die Richtung um

        Grundsätzlich funktioniert das, allerdings läuft die Steuerung nach. Das heißt auch nach dem loslassen des Tasters ändert sich für eine gewisse Zeit (mehrere Sekunden) die Helligkeit. Ohne direktes Visuelles Feedback ist das natürlich nicht tauglich.
        Nun suche ich nach der Ursache.

        Mir scheint dass auf der Eingangsseite das Ganze im Takt läuft, die Schreibbefehle zum Helligkeitswechsel aber in einer Warteschlange stehen. jetzt kenne ich mich mit dem Timing bei Zigbee gar nicht aus. Praktisch wären das etwa 33 Befehle pro Sekunde.

        Praktisch ist des die Umsetzung eines Tastdimmers. Google hat mich leider nicht weitergeführt, vielleicht hat jemand schon was ähnliches gemacht und hat Tipps in welche Richtung ich suchen muss - oder ob es gar eine Sackgasse ist.

        AsgothianA Offline
        AsgothianA Offline
        Asgothian
        Developer
        schrieb am zuletzt editiert von Asgothian
        #3

        @huizhaecka alle 30 ms ansteuern ist unsinnig. Nach zigbee Standard darf die Kommunikation zum Gerät mehrere 100 ms dauern. Es gibt pro Gerät immer nur eine ‘Aktive’ Kommunikation, die nächste beginnt erst wenn die vorherige beendet wurde. Der zigbee Adapter queued die Steuerbefehle intern und sendet sie nacheinander.
        Schau dir mal den DP brightness_move an. Wenn du da eine positive Zahl einträgst wird das Panel heller, negativ dunkler. Mit 0 beendest du das dimming. Die Größe der Zahl gibt an wie schnell das geht.

        Damit sollte dieser Ablauf gehen:

        let click_timeout=null;
        let reverse_intervall=null;
        const BM = ‘deine_zigbee_device_id’ + ‘brightness_move’;
        const PS =‘deine_zigbee_device_id’ + ‘state’;
        
        on([id:’deine_taster_id’, change:’ne’}, function(obj) {
          const panel = getState(PS).val;
          let switch=true;
          if (obj.state.val && panel) {
            click_timeout = setTimeout({
              switch=false;
              setState(‘zigbeepanelID.brigthness_move”, 10); // statt 10 kann ein Wert zwischen 1 und 50 gesetzt werden - je grösser der Wert desto schneller die Änderung.
              reverse_intervall = setInterval({
                setState(BM, -getState(BM).val);
              ],5000); // in ms: Zeit für einen dimmvorgang kann bis auf 2000 reduziert werden
            },500); // in ms: Zeit bis angenommen wird das gedimmt werden soll. Kann bis auf 200 reduziert werden.
          }
          else {
            clearInterval(reverse_Intervall);
            clearTimeout(click_timeout);
            setState(BM, 0);
            if (switch) setState(PS, !panel);
          }
        });
        

        Einziger Nachteil: der im iobroker dargestellte Wert für die Helligkeit wird mit Verzögerung aktualisiert, da er davon abhängt wann die Ikea Panels diesen melden. Deswegen macht es auch keinen Sinn vor dem dimmen den Wert abzufragen - er ist unter Umständen nicht aktuell.
        Es gibt eine Möglichkeit den Wert vom Gerät zu holen - das hab ich aber nicht im Kopf. Wenn Interesse besteht kann ich das am Abend nachliefern.

        A.

        ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
        "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

        H 1 Antwort Letzte Antwort
        0
        • AsgothianA Asgothian

          @huizhaecka alle 30 ms ansteuern ist unsinnig. Nach zigbee Standard darf die Kommunikation zum Gerät mehrere 100 ms dauern. Es gibt pro Gerät immer nur eine ‘Aktive’ Kommunikation, die nächste beginnt erst wenn die vorherige beendet wurde. Der zigbee Adapter queued die Steuerbefehle intern und sendet sie nacheinander.
          Schau dir mal den DP brightness_move an. Wenn du da eine positive Zahl einträgst wird das Panel heller, negativ dunkler. Mit 0 beendest du das dimming. Die Größe der Zahl gibt an wie schnell das geht.

          Damit sollte dieser Ablauf gehen:

          let click_timeout=null;
          let reverse_intervall=null;
          const BM = ‘deine_zigbee_device_id’ + ‘brightness_move’;
          const PS =‘deine_zigbee_device_id’ + ‘state’;
          
          on([id:’deine_taster_id’, change:’ne’}, function(obj) {
            const panel = getState(PS).val;
            let switch=true;
            if (obj.state.val && panel) {
              click_timeout = setTimeout({
                switch=false;
                setState(‘zigbeepanelID.brigthness_move”, 10); // statt 10 kann ein Wert zwischen 1 und 50 gesetzt werden - je grösser der Wert desto schneller die Änderung.
                reverse_intervall = setInterval({
                  setState(BM, -getState(BM).val);
                ],5000); // in ms: Zeit für einen dimmvorgang kann bis auf 2000 reduziert werden
              },500); // in ms: Zeit bis angenommen wird das gedimmt werden soll. Kann bis auf 200 reduziert werden.
            }
            else {
              clearInterval(reverse_Intervall);
              clearTimeout(click_timeout);
              setState(BM, 0);
              if (switch) setState(PS, !panel);
            }
          });
          

          Einziger Nachteil: der im iobroker dargestellte Wert für die Helligkeit wird mit Verzögerung aktualisiert, da er davon abhängt wann die Ikea Panels diesen melden. Deswegen macht es auch keinen Sinn vor dem dimmen den Wert abzufragen - er ist unter Umständen nicht aktuell.
          Es gibt eine Möglichkeit den Wert vom Gerät zu holen - das hab ich aber nicht im Kopf. Wenn Interesse besteht kann ich das am Abend nachliefern.

          A.

          H Offline
          H Offline
          huizhaecka
          schrieb am zuletzt editiert von
          #4

          @asgothian Danke! das wars schon, jetzt funktioniert es wie es soll.

          1 Antwort Letzte Antwort
          0
          Antworten
          • In einem neuen Thema antworten
          Anmelden zum Antworten
          • Älteste zuerst
          • Neuste zuerst
          • Meiste Stimmen


          Support us

          ioBroker
          Community Adapters
          Donate

          839

          Online

          32.4k

          Benutzer

          81.5k

          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