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. JavaScript
  5. State Ordner von zwei Lampen syncen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    14
    1
    381

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    606

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.8k

State Ordner von zwei Lampen syncen

Geplant Angeheftet Gesperrt Verschoben JavaScript
13 Beiträge 4 Kommentatoren 1.2k 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.
  • J jlssmt

    Wie soll das gehen ?

    Naja das weiß ich auch nicht :D Dachte vllt. an: zwei Datenpunkte zeigen auf eine Referenz und man ändert immer die Referenz.

    Weshalb geht es nicht ?

    ioBroker bzw. meine Lampen spinnen dann. Vmtl. checkt der Yeelight Adapter es nicht, wenn acht Datenpunkte gleichzeitig geändert werden.

    Verwende besser 8 einzelne Subscriptions, damit nicht bei jedem Trigger-Ereignis 8 Datenpunkte gesetzt werden müssen.

    Das hatte ich übersichtlichkeitshalber extra nicht gemacht. Denn wenn ichs in beide Richtungen will brauch ich 16 subscriptions.
    Aber ich versteh auch nicht ganz die Struktur von ioBroker. Wollte eig. ein foreach auf control oder so machen. Intuitiv hätte ich gedacht, control ist ein object, welches wiederum ein Array mit den Datenpunkten enthält. Leider ist dem nicht so, sondern es sind alles einzelne Objects...

    PS: einzeln geht alles. Aber ich find das schon sehr unschön mit 16 subscriptions pro Zimmer.

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

    @jlssmt sagte in State Ordner von zwei Lampen syncen:

    einzeln geht alles. Aber ich find das schon sehr unschön mit 16 subscriptions pro Zimmer.

    Hast du den alternativen Vorschlag mit dem $Selector gesehen ? (habe ich nachträglich hinzu gefügt)

    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

    J 1 Antwort Letzte Antwort
    1
    • paul53P paul53

      @jlssmt sagte in State Ordner von zwei Lampen syncen:

      einzeln geht alles. Aber ich find das schon sehr unschön mit 16 subscriptions pro Zimmer.

      Hast du den alternativen Vorschlag mit dem $Selector gesehen ? (habe ich nachträglich hinzu gefügt)

      J Offline
      J Offline
      jlssmt
      schrieb am zuletzt editiert von jlssmt
      #5

      @paul53

      Hab ich natürlich nicht gesehen :-D
      Den kannte ich nicht. Find ich geil. Genau für so ne Info hab ich die Frage gestellt. Danke :-)

      Edith: Werden ja trotzdem 8 Subscriptions erstellt. Weißt du zufällig auch ob viele Subscriptions Auswirkungen auf Performanz bzw. RAM hat? Gurk hier noch mit nem rpi3 rum und da läuft nicht nur ioBroker drauf :-D

      paul53P 1 Antwort Letzte Antwort
      0
      • J jlssmt

        @paul53

        Hab ich natürlich nicht gesehen :-D
        Den kannte ich nicht. Find ich geil. Genau für so ne Info hab ich die Frage gestellt. Danke :-)

        Edith: Werden ja trotzdem 8 Subscriptions erstellt. Weißt du zufällig auch ob viele Subscriptions Auswirkungen auf Performanz bzw. RAM hat? Gurk hier noch mit nem rpi3 rum und da läuft nicht nur ioBroker drauf :-D

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

        @jlssmt sagte:

        Werden ja trotzdem 8 Subscriptions erstellt. Weißt du zufällig auch ob viele Subscriptions Auswirkungen auf Performanz bzw. RAM hat?

        Ja, natürlich werden im Hintergrund 8 Subscriptions erstellt, die alle RAM verbrauchen. Die CPU-Last wird durch die Häufigkeit der Trigger-Ereignisse bestimmt und sollte kein Problem sein.

        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

        1 Antwort Letzte Antwort
        1
        • J jlssmt

          Wie soll das gehen ?

          Naja das weiß ich auch nicht :D Dachte vllt. an: zwei Datenpunkte zeigen auf eine Referenz und man ändert immer die Referenz.

          Weshalb geht es nicht ?

          ioBroker bzw. meine Lampen spinnen dann. Vmtl. checkt der Yeelight Adapter es nicht, wenn acht Datenpunkte gleichzeitig geändert werden.

          Verwende besser 8 einzelne Subscriptions, damit nicht bei jedem Trigger-Ereignis 8 Datenpunkte gesetzt werden müssen.

          Das hatte ich übersichtlichkeitshalber extra nicht gemacht. Denn wenn ichs in beide Richtungen will brauch ich 16 subscriptions.
          Aber ich versteh auch nicht ganz die Struktur von ioBroker. Wollte eig. ein foreach auf control oder so machen. Intuitiv hätte ich gedacht, control ist ein object, welches wiederum ein Array mit den Datenpunkten enthält. Leider ist dem nicht so, sondern es sind alles einzelne Objects...

          PS: einzeln geht alles. Aber ich find das schon sehr unschön mit 16 subscriptions pro Zimmer.

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

          @jlssmt sagte:

          mit 16 subscriptions pro Zimmer.

          Wenn die Synchronisation in beide Richtungen erfolgen soll, sollte man als Quelle des Triggers die Javascript-Instanz ausschließen, damit nicht unnötig gesendet wird.

          const jsi = 'system.adapter.javascript.' + instance;
          
          $('yeelight-2.0.bslamp2.control.*').on(function(dp) {
             if(dp.state.from != jsi) {
                let id = dp.id.replace('bslamp2', 'color');
                setState(id, dp.state.val);
             }
          });
          
          $('yeelight-2.0.color.control.*').on(function(dp) {
             if(dp.state.from != jsi) {
                let id = dp.id.replace('color', 'bslamp2');
                setState(id, dp.state.val);
             }
          });
          

          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

          J 1 Antwort Letzte Antwort
          1
          • J jlssmt

            Hallo zusammen,

            ich hab eine Frage:
            Ich würde gerne zwei Lampen vollständig synchronisieren, da sie im selben Raum sind.
            Es handelt sich um 2x Yeelight, aber ich glaube das spielt keine Rolle.

            Ich habe mir drei Lösungen überlegt:

            1. Ich synce über Subscriptions -> geht bei mir nicht -> siehe Code unten -> Performanz ist so vmtl. eh schlecht.
            2. Ich synce zwei States irgendwie ohne Subscription
            3. Ich synce irgendwie den ganzen Ordner "control" (das funktioniert dann aber vmtl. nur bei Yeelights, bzw. gleicher Struktur) -> bslamp.control = color.control

            Danke vorab!

            Anhang:

            5c5af313-46df-4905-815b-71415906c4f5-image.png

            on({
                id: new RegExp(
                    "yeelight-2.0\\.bslamp2\\.control\\.active_bright" + "|" +
                    "yeelight-2.0\\.bslamp2\\.control\\.color_mode" + "|" +
                    "yeelight-2.0\\.bslamp2\\.control\\.ct" + "|" +
                    "yeelight-2.0\\.bslamp2\\.control\\.hue" + "|" +
                    "yeelight-2.0\\.bslamp2\\.control\\.power" + "|" +
                    "yeelight-2.0\\.bslamp2\\.control\\.rgb" + "|" +
                    "yeelight-2.0\\.bslamp2\\.control\\.sat" + "|" +
                    "yeelight-2.0\\.bslamp2\\.control\\.set_scene"
                ),
                change: "ne"
            }, () => {
                setState("yeelight-2.0.color.control.active_bright", getState("yeelight-2.0.bslamp2.control.active_bright").val);
                setState("yeelight-2.0.color.control.color_mode", getState("yeelight-2.0.bslamp2.control.color_mode").val);
                setState("yeelight-2.0.color.control.ct", getState("yeelight-2.0.bslamp2.control.ct").val);
                setState("yeelight-2.0.color.control.hue", getState("yeelight-2.0.bslamp2.control.hue").val);
                setState("yeelight-2.0.color.control.power", getState("yeelight-2.0.bslamp2.control.power").val);
                setState("yeelight-2.0.color.control.rgb", getState("yeelight-2.0.bslamp2.control.rgb").val);
                setState("yeelight-2.0.color.control.sat", getState("yeelight-2.0.bslamp2.control.sat").val);
                setState("yeelight-2.0.color.control.set_scene", getState("yeelight-2.0.bslamp2.control.set_scene").val);
            });
            
            J Offline
            J Offline
            Jan1
            schrieb am zuletzt editiert von
            #8

            @jlssmt
            Da müsste doch ein DP zum synchron laufen genügen und am allereinfachsten geht das mit Blockly und dem Block:
            2f968002-b4f5-4d91-905e-dfcfd1ea3d8e-grafik.png
            Soll das ganze in beide Richtungen laufen,, einfach den Block doppelt und die DP tauschen.

            T 1 Antwort Letzte Antwort
            0
            • J Jan1

              @jlssmt
              Da müsste doch ein DP zum synchron laufen genügen und am allereinfachsten geht das mit Blockly und dem Block:
              2f968002-b4f5-4d91-905e-dfcfd1ea3d8e-grafik.png
              Soll das ganze in beide Richtungen laufen,, einfach den Block doppelt und die DP tauschen.

              T Nicht stören
              T Nicht stören
              ticaki
              schrieb am zuletzt editiert von ticaki
              #9

              @Jan1

              on(id1, id2);
              

              Und mit Änderungen ist es der selbe Code der schon oben gepostet wurde.

              on({id: 'Object ID 1', change: "ne"}, function (obj) {
                setState('Object ID 2', obj.state.val);
              });
              

              Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

              Spenden

              J 1 Antwort Letzte Antwort
              1
              • T ticaki

                @Jan1

                on(id1, id2);
                

                Und mit Änderungen ist es der selbe Code der schon oben gepostet wurde.

                on({id: 'Object ID 1', change: "ne"}, function (obj) {
                  setState('Object ID 2', obj.state.val);
                });
                
                J Offline
                J Offline
                Jan1
                schrieb am zuletzt editiert von
                #10

                @ticaki
                Nur dass ich mit Blockly nicht mal tippen muss ;-)

                1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @jlssmt sagte:

                  mit 16 subscriptions pro Zimmer.

                  Wenn die Synchronisation in beide Richtungen erfolgen soll, sollte man als Quelle des Triggers die Javascript-Instanz ausschließen, damit nicht unnötig gesendet wird.

                  const jsi = 'system.adapter.javascript.' + instance;
                  
                  $('yeelight-2.0.bslamp2.control.*').on(function(dp) {
                     if(dp.state.from != jsi) {
                        let id = dp.id.replace('bslamp2', 'color');
                        setState(id, dp.state.val);
                     }
                  });
                  
                  $('yeelight-2.0.color.control.*').on(function(dp) {
                     if(dp.state.from != jsi) {
                        let id = dp.id.replace('color', 'bslamp2');
                        setState(id, dp.state.val);
                     }
                  });
                  
                  J Offline
                  J Offline
                  jlssmt
                  schrieb am zuletzt editiert von
                  #11

                  @paul53 said in State Ordner von zwei Lampen syncen:

                  Wenn die Synchronisation in beide Richtungen erfolgen soll, sollte man als Quelle des Triggers die Javascript-Instanz ausschließen, damit nicht unnötig gesendet wird.

                  Habe ich verstanden und ergänzt, danke. Werd es testen und melde mich, wenns Probleme gibt, die ich selbst nicht lösen kann. Bisher siehts aber gut aus.

                  //

                  @Jan1 said in State Ordner von zwei Lampen syncen:

                  Nur dass ich mit Blockly nicht mal tippen muss ;-)

                  Ich denke wir müssen jetzt keine Grundsatzdiskussion "Blockly vs. Plain JS" lostreten ;-)

                  J 1 Antwort Letzte Antwort
                  0
                  • J jlssmt

                    @paul53 said in State Ordner von zwei Lampen syncen:

                    Wenn die Synchronisation in beide Richtungen erfolgen soll, sollte man als Quelle des Triggers die Javascript-Instanz ausschließen, damit nicht unnötig gesendet wird.

                    Habe ich verstanden und ergänzt, danke. Werd es testen und melde mich, wenns Probleme gibt, die ich selbst nicht lösen kann. Bisher siehts aber gut aus.

                    //

                    @Jan1 said in State Ordner von zwei Lampen syncen:

                    Nur dass ich mit Blockly nicht mal tippen muss ;-)

                    Ich denke wir müssen jetzt keine Grundsatzdiskussion "Blockly vs. Plain JS" lostreten ;-)

                    J Offline
                    J Offline
                    Jan1
                    schrieb am zuletzt editiert von
                    #12

                    @jlssmt
                    Nö, weil ich von Java Script kein Plan habe und das mit Blockly, wie Du schon erkannt hast es der selbe Code ist und ich eben schneller klicke als tippe :-)

                    1 Antwort Letzte Antwort
                    0
                    • J Offline
                      J Offline
                      jlssmt
                      schrieb am zuletzt editiert von jlssmt
                      #13

                      @Jan1 said in State Ordner von zwei Lampen syncen:

                      Nö, weil ich von Java Script kein Plan habe und das mit Blockly, wie Du schon erkannt hast es der selbe Code ist und ich eben schneller klicke als tippe :-)

                      Ich habs ja nicht umsonst in das JavaScript Forum und nicht ins Blockly Forum gepostet ;-)

                      @paul53
                      Zu früh gefreut :-D Meine Bedside Lamp 2 oder der Yeelight Adapter hat einen Bug, den ich vorher nicht gesehen hatte.
                      bslamp2 schaltet (warum auch immer) ab und an den value power auf false, geht aber nicht aus. Die zweite Lampe dann natürlich schon... Paar sec später geht der value dann wieder auf true und die zweite Lampe wieder an.
                      Sehr weird das ganze und so für mich keine Lösung.
                      Rot rechts ist die "from" Spalte. Kommt also nicht von JS sondern vom Adapter/ der Lampe...
                      1268e427-91c1-45d4-b5cb-95dc283240bc-image.png

                      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

                      723

                      Online

                      32.6k

                      Benutzer

                      81.9k

                      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