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. ioBroker Allgemein
  4. Aqara Cube - Funktionstabelle - deConz

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

Aqara Cube - Funktionstabelle - deConz

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
aqara cube
8 Beiträge 2 Kommentatoren 1.7k Aufrufe 2 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.
  • JB_SullivanJ Offline
    JB_SullivanJ Offline
    JB_Sullivan
    schrieb am zuletzt editiert von
    #1

    Hat schon jemand eine Funktionstabelle für den Aqara Cube gefunden? Also so eine Tabelle wo die deConz Codes für alle Dreh/Kipp/Klopf und was weiß ich noch Bewegungen drin steht?

    ioBroker (since 2018) auf Intel Core i3-5005U NUC und Windwos10 Pro

    Jey CeeJ 1 Antwort Letzte Antwort
    0
    • JB_SullivanJ JB_Sullivan

      Hat schon jemand eine Funktionstabelle für den Aqara Cube gefunden? Also so eine Tabelle wo die deConz Codes für alle Dreh/Kipp/Klopf und was weiß ich noch Bewegungen drin steht?

      Jey CeeJ Online
      Jey CeeJ Online
      Jey Cee
      Developer
      schrieb am zuletzt editiert von
      #2

      @JB_Sullivan schau mal hier rein.

      Persönlicher Support
      Spenden -> paypal.me/J3YC33

      JB_SullivanJ 1 Antwort Letzte Antwort
      0
      • JB_SullivanJ Offline
        JB_SullivanJ Offline
        JB_Sullivan
        schrieb am zuletzt editiert von
        #3

        So etwas habe ich gesucht - Vielen Dank

        ioBroker (since 2018) auf Intel Core i3-5005U NUC und Windwos10 Pro

        1 Antwort Letzte Antwort
        0
        • Jey CeeJ Jey Cee

          @JB_Sullivan schau mal hier rein.

          JB_SullivanJ Offline
          JB_SullivanJ Offline
          JB_Sullivan
          schrieb am zuletzt editiert von
          #4

          @Jey-Cee

          Offensichtlich kennst du dich ja mit dem Cube ebenfalls ganz gut aus.

          Ich wollte gerne mit dem Cube meine Gartenbeleuchtung steuern. Dazu habe ich mir eine Logik Tabelle erstellt bei welcher Bewegung was passieren soll.

          scan0226.pdf

          Nun gab es ja hier im Forum irgend wann einmal dieses Java Skript zum steuern von Alexa via Cube.

          Ich dachte das ich dieses Skript dafür missbrauchen kann um Schalthandlungen durchzuführen. Leider kenne ich mich in JavaSkript gar nicht aus.

          Eigentlich wollte ich alles so einzeln schalten wie im PDF.

          Kannst du mir ggf. einen Hinweis geben, wie ich das anstellen muss? In dem Skript habe ich zwei Positionen geändert. Das schalten und abschalten funktioniert - IM BLOCK - aber die Schaltposition des Würfels ist mehr ein Zufallsprodukt.

          Wie muss ich das Skript verändern, damit ich alles einzeln schalten und vor allen Dingen auch den richtigen Seiten zuweisen kann? Aus der Formel werde ich nicht schlau, denn irgendwie muss ich ja auf die 1000er Werte von den deConz Datenpunkten kommen.

          /*
          Aqara Cube Skript
          Events: 
          {1}
          90 Grad
          180 Grad
          schieben
          hochwerfen & auffangen
          schütteln
          Taptap
          drehen 
          {1}
          */
           
          var CubeS = "deconz.0.Sensors.23.buttonevent", // Cube Switch
          	CubeR = "deconz.0.Sensors.24.buttonevent", // Cube Rotate
              switchVal,
              degree,
              elements = [],
              elementsInt= [],
              debug;
             
             
          // Sleep Funktion Experimental
          function sleep(milliseconds) {
          	var start = new Date().getTime();
          	for (var i = 0; i < 1e7; i++) {
          		if ((new Date().getTime() - start) > milliseconds){
          			break;
          		}
          	}
          }
           
           debug = 0; // DEBUG MODE: 0 = Aus, 1 = Aktionen anzeigen, 2 = Alles anzeigen
           
           
          on({id: CubeS, change: "any"}, function (obj) { 
           
               
               
              // Objekt in String wandeln, doppel Null entfernen und ergebnisse in Array elements schreiben.
          	switchVal = JSON.stringify(getState(CubeS).val);
          	elements = switchVal.split("00");
          	// Elemente des Arrays in Integerwerte konvertieren
          	for(var i=0; i<elements.length;i++) elementsInt[i] = parseInt(elements[i], 10);
               
              if (debug >= 2) { 
          	console.log("Original: " + getState(CubeS).val + " Element 1: " + elements[0] + " Element 2: " + elements[1]);
              }
          	var total = elementsInt[0] + elementsInt [1];
              if (debug >= 2) { 
          	console.log("Total: " + total);
              }
           
          	if (( elementsInt[0] + elementsInt [1] == 7 ) && ( elementsInt [1] !== 0 )) {
                 if (debug ==  1) { 
          		console.log("180 Grad" + " Seite: " + elementsInt[0] + " liegt oben.");
                 }
          		setState("sonoff.0.Garten_4CH_No2.POWER1"/*Wasserfall*/, true);
          		setState("sonoff.0.Garten_4CH_No2.POWER2"/*Glassteine*/, true);
                  setState("sonoff.0.Garten_4CH_No2.POWER3"/*Pflanzkoerbe*/, true);
                  setState("sonoff.0.Garten_4CH_No1.POWER1"/*Terrasse*/, true);
                  setState("sonoff.0.Garten_4CH_No1.POWER2"/*Pool*/, true);
                  setState("sonoff.0.Garten_4CH_No1.POWER3"/*50Prozent*/, true);
                  setState("sonoff.0.Garten_4CH_No1.POWER4"/*100Prozent*/, true);
                 // sleep(550);
                 
          	} else if ( elementsInt[0] + elementsInt [1] == 14) {
                 if (debug ==  1) { 
          		console.log("Geschüttelt");
                 }
          		setState("alexa2.0.Echo-Devices.G090U61091855EMG.Player.controlPause"/*Pause*/, true);
          	}
          	else if ( elementsInt[0] + elementsInt [1] == 15) {
          		sleep(0);
                  if (debug ==  1) { 
          		console.log("Geworfen");
                  }
          	if (getState("alexa2.0.Echo-Devices.G090U61091855EMG.Player.controlPlay"/*Main Zone Power State*/).val === false) {
                 
          		setState("alexa2.0.Echo-Devices.G090U61091855EMG.Player.controlPlay"/*Main Zone Power State*/,true);
                 
                 
          	}
          	else {
                     
          		setState("alexa2.0.Echo-Devices.G090U61091855EMG.online"/*Main Zone Power State*/,false);
          	}
                 
          }
          else if ( elementsInt[0] == elementsInt [1] )  {
                 if (debug ==  1) { 
          	console.log("TapTap" + " Seite: " + elementsInt[0] + " liegt oben.");
                 }
          	setState("alexa2.0.Echo-Devices.G090U61091855EMG.Player.controlPause"/*Play/Pause*/, true);
                 
                 
          }
          else if (( elementsInt [1] === 0 ) && ( elementsInt [0] <= 6 )) {
                 if (debug ==  1) { 
          	console.log("Schieben" + " Seite: " + elementsInt[0] + " liegt oben." );
                 }
                 setState("sonoff.0.Garten_4CH_No2.POWER1"/*Wasserfall*/, false);
          		setState("sonoff.0.Garten_4CH_No2.POWER2"/*Glassteine*/, false);
                  setState("sonoff.0.Garten_4CH_No2.POWER3"/*Pflanzkoerbe*/, false);
                  setState("sonoff.0.Garten_4CH_No1.POWER1"/*Terrasse*/, false);
                  setState("sonoff.0.Garten_4CH_No1.POWER2"/*Pool*/, false);
                  setState("sonoff.0.Garten_4CH_No1.POWER3"/*50Prozent*/, false);
                  setState("sonoff.0.Garten_4CH_No1.POWER4"/*100Prozent*/, false);
          }
          else if (( elementsInt [1] === 0 ) && ( elementsInt [0] <= 7 )) {
              if (debug ==  1) { 
              console.log("Cube Wakeup!");
              }
          }
          else if ( elementsInt [0] <= 6 ) {
                 if (debug ==  1) { 
          	console.log("90 Grad" + " Seite: " + elementsInt[0] + " liegt oben.");
                 }
          	setState("alexa2.0.Echo-Devices.G090U61091855EMG.Player.controlNext"/*Next*/, true);
                 
          }
             
             
           
               
          });
           
          on({id: CubeR, change: "ne"}, function (obj) { // nur bei änderung Triggern "ne" not equal
                  
                  
          var rotationVal = JSON.stringify(getState(CubeR).val); // Objekt in String konvertieren
           
             
                   
          // Schauen ob rotationVal negativ/positiv ist und nur die ersten beiden bzw. drei ziffern verwenden.
          if ( rotationVal.substr(0,1) == "-" ) {
                      
          	if (rotationVal.length == 6 ) {
          		degree = rotationVal.substr(0,4);
                          
          	}
          	else {
          		degree = rotationVal.substr(0,3);
                      
          	}
                      
          }
          else {
                      
          	if (rotationVal.length == 5 ) {
          		degree = rotationVal.substr(0,3);
                          
          	}
          	else {
          		degree = rotationVal.substr(0,2);
          	}
                      
                
          }
                  
                  
                 if (debug ==  1) {  
          console.log("gedreht: " + degree);
                 }
          // Volume auslesen
          var aMainVol = parseInt(getState("alexa2.0.Echo-Devices.G090U61091855EMG.Player.volume"/*Main Volume*/).val);
                  
          // Neues Volumen errechnen
          if (debug >= 2) { 
          console.log("Ergebnis: " + parseInt(degree) / 5);
          }
          if (parseInt(degree)  > 60) {
              if (debug >= 2) {
              console.log("Vol unterschied zu hoch, angepasst!");
              }
              degree = 60;
             
              
          }
           
          var newMainVol = (degree / 5) + aMainVol;
          if (debug >= 2) {
          console.log("Vol unterschied: " + (parseInt(degree) / 5));
          console.log("mainvol: " + aMainVol + " newMainVol: " + newMainVol);
          }
          // Neues Volumen an EchoDot senden
          setState("alexa2.0.Echo-Devices.G090U61091855EMG.Player.volume", newMainVol);
                  
          });
          

          ioBroker (since 2018) auf Intel Core i3-5005U NUC und Windwos10 Pro

          Jey CeeJ 1 Antwort Letzte Antwort
          0
          • JB_SullivanJ JB_Sullivan

            @Jey-Cee

            Offensichtlich kennst du dich ja mit dem Cube ebenfalls ganz gut aus.

            Ich wollte gerne mit dem Cube meine Gartenbeleuchtung steuern. Dazu habe ich mir eine Logik Tabelle erstellt bei welcher Bewegung was passieren soll.

            scan0226.pdf

            Nun gab es ja hier im Forum irgend wann einmal dieses Java Skript zum steuern von Alexa via Cube.

            Ich dachte das ich dieses Skript dafür missbrauchen kann um Schalthandlungen durchzuführen. Leider kenne ich mich in JavaSkript gar nicht aus.

            Eigentlich wollte ich alles so einzeln schalten wie im PDF.

            Kannst du mir ggf. einen Hinweis geben, wie ich das anstellen muss? In dem Skript habe ich zwei Positionen geändert. Das schalten und abschalten funktioniert - IM BLOCK - aber die Schaltposition des Würfels ist mehr ein Zufallsprodukt.

            Wie muss ich das Skript verändern, damit ich alles einzeln schalten und vor allen Dingen auch den richtigen Seiten zuweisen kann? Aus der Formel werde ich nicht schlau, denn irgendwie muss ich ja auf die 1000er Werte von den deConz Datenpunkten kommen.

            /*
            Aqara Cube Skript
            Events: 
            {1}
            90 Grad
            180 Grad
            schieben
            hochwerfen & auffangen
            schütteln
            Taptap
            drehen 
            {1}
            */
             
            var CubeS = "deconz.0.Sensors.23.buttonevent", // Cube Switch
            	CubeR = "deconz.0.Sensors.24.buttonevent", // Cube Rotate
                switchVal,
                degree,
                elements = [],
                elementsInt= [],
                debug;
               
               
            // Sleep Funktion Experimental
            function sleep(milliseconds) {
            	var start = new Date().getTime();
            	for (var i = 0; i < 1e7; i++) {
            		if ((new Date().getTime() - start) > milliseconds){
            			break;
            		}
            	}
            }
             
             debug = 0; // DEBUG MODE: 0 = Aus, 1 = Aktionen anzeigen, 2 = Alles anzeigen
             
             
            on({id: CubeS, change: "any"}, function (obj) { 
             
                 
                 
                // Objekt in String wandeln, doppel Null entfernen und ergebnisse in Array elements schreiben.
            	switchVal = JSON.stringify(getState(CubeS).val);
            	elements = switchVal.split("00");
            	// Elemente des Arrays in Integerwerte konvertieren
            	for(var i=0; i<elements.length;i++) elementsInt[i] = parseInt(elements[i], 10);
                 
                if (debug >= 2) { 
            	console.log("Original: " + getState(CubeS).val + " Element 1: " + elements[0] + " Element 2: " + elements[1]);
                }
            	var total = elementsInt[0] + elementsInt [1];
                if (debug >= 2) { 
            	console.log("Total: " + total);
                }
             
            	if (( elementsInt[0] + elementsInt [1] == 7 ) && ( elementsInt [1] !== 0 )) {
                   if (debug ==  1) { 
            		console.log("180 Grad" + " Seite: " + elementsInt[0] + " liegt oben.");
                   }
            		setState("sonoff.0.Garten_4CH_No2.POWER1"/*Wasserfall*/, true);
            		setState("sonoff.0.Garten_4CH_No2.POWER2"/*Glassteine*/, true);
                    setState("sonoff.0.Garten_4CH_No2.POWER3"/*Pflanzkoerbe*/, true);
                    setState("sonoff.0.Garten_4CH_No1.POWER1"/*Terrasse*/, true);
                    setState("sonoff.0.Garten_4CH_No1.POWER2"/*Pool*/, true);
                    setState("sonoff.0.Garten_4CH_No1.POWER3"/*50Prozent*/, true);
                    setState("sonoff.0.Garten_4CH_No1.POWER4"/*100Prozent*/, true);
                   // sleep(550);
                   
            	} else if ( elementsInt[0] + elementsInt [1] == 14) {
                   if (debug ==  1) { 
            		console.log("Geschüttelt");
                   }
            		setState("alexa2.0.Echo-Devices.G090U61091855EMG.Player.controlPause"/*Pause*/, true);
            	}
            	else if ( elementsInt[0] + elementsInt [1] == 15) {
            		sleep(0);
                    if (debug ==  1) { 
            		console.log("Geworfen");
                    }
            	if (getState("alexa2.0.Echo-Devices.G090U61091855EMG.Player.controlPlay"/*Main Zone Power State*/).val === false) {
                   
            		setState("alexa2.0.Echo-Devices.G090U61091855EMG.Player.controlPlay"/*Main Zone Power State*/,true);
                   
                   
            	}
            	else {
                       
            		setState("alexa2.0.Echo-Devices.G090U61091855EMG.online"/*Main Zone Power State*/,false);
            	}
                   
            }
            else if ( elementsInt[0] == elementsInt [1] )  {
                   if (debug ==  1) { 
            	console.log("TapTap" + " Seite: " + elementsInt[0] + " liegt oben.");
                   }
            	setState("alexa2.0.Echo-Devices.G090U61091855EMG.Player.controlPause"/*Play/Pause*/, true);
                   
                   
            }
            else if (( elementsInt [1] === 0 ) && ( elementsInt [0] <= 6 )) {
                   if (debug ==  1) { 
            	console.log("Schieben" + " Seite: " + elementsInt[0] + " liegt oben." );
                   }
                   setState("sonoff.0.Garten_4CH_No2.POWER1"/*Wasserfall*/, false);
            		setState("sonoff.0.Garten_4CH_No2.POWER2"/*Glassteine*/, false);
                    setState("sonoff.0.Garten_4CH_No2.POWER3"/*Pflanzkoerbe*/, false);
                    setState("sonoff.0.Garten_4CH_No1.POWER1"/*Terrasse*/, false);
                    setState("sonoff.0.Garten_4CH_No1.POWER2"/*Pool*/, false);
                    setState("sonoff.0.Garten_4CH_No1.POWER3"/*50Prozent*/, false);
                    setState("sonoff.0.Garten_4CH_No1.POWER4"/*100Prozent*/, false);
            }
            else if (( elementsInt [1] === 0 ) && ( elementsInt [0] <= 7 )) {
                if (debug ==  1) { 
                console.log("Cube Wakeup!");
                }
            }
            else if ( elementsInt [0] <= 6 ) {
                   if (debug ==  1) { 
            	console.log("90 Grad" + " Seite: " + elementsInt[0] + " liegt oben.");
                   }
            	setState("alexa2.0.Echo-Devices.G090U61091855EMG.Player.controlNext"/*Next*/, true);
                   
            }
               
               
             
                 
            });
             
            on({id: CubeR, change: "ne"}, function (obj) { // nur bei änderung Triggern "ne" not equal
                    
                    
            var rotationVal = JSON.stringify(getState(CubeR).val); // Objekt in String konvertieren
             
               
                     
            // Schauen ob rotationVal negativ/positiv ist und nur die ersten beiden bzw. drei ziffern verwenden.
            if ( rotationVal.substr(0,1) == "-" ) {
                        
            	if (rotationVal.length == 6 ) {
            		degree = rotationVal.substr(0,4);
                            
            	}
            	else {
            		degree = rotationVal.substr(0,3);
                        
            	}
                        
            }
            else {
                        
            	if (rotationVal.length == 5 ) {
            		degree = rotationVal.substr(0,3);
                            
            	}
            	else {
            		degree = rotationVal.substr(0,2);
            	}
                        
                  
            }
                    
                    
                   if (debug ==  1) {  
            console.log("gedreht: " + degree);
                   }
            // Volume auslesen
            var aMainVol = parseInt(getState("alexa2.0.Echo-Devices.G090U61091855EMG.Player.volume"/*Main Volume*/).val);
                    
            // Neues Volumen errechnen
            if (debug >= 2) { 
            console.log("Ergebnis: " + parseInt(degree) / 5);
            }
            if (parseInt(degree)  > 60) {
                if (debug >= 2) {
                console.log("Vol unterschied zu hoch, angepasst!");
                }
                degree = 60;
               
                
            }
             
            var newMainVol = (degree / 5) + aMainVol;
            if (debug >= 2) {
            console.log("Vol unterschied: " + (parseInt(degree) / 5));
            console.log("mainvol: " + aMainVol + " newMainVol: " + newMainVol);
            }
            // Neues Volumen an EchoDot senden
            setState("alexa2.0.Echo-Devices.G090U61091855EMG.Player.volume", newMainVol);
                    
            });
            
            Jey CeeJ Online
            Jey CeeJ Online
            Jey Cee
            Developer
            schrieb am zuletzt editiert von
            #5

            @JB_Sullivan sagte in Aqara Cube - Funktionstabelle - deConz:

            Offensichtlich kennst du dich ja mit dem Cube ebenfalls ganz gut aus.

            Eigentlich gar nicht.

            Ich hab jetzt nir kurz über das skript geschaut, aber sieht viel zu Kompliziert aus. Warum man da irgendwas berechnen soll ist mir vollkommen unklar, die Zahlen sind fix.

            Mach es dir einfach:

            on({id: idButtonEvents, change: 'any'}, 
                (obj) => {
                      switch(obj.state.val){
                           case 1001:
                              setState(licht1, true);
                           break;
                           case 2001:
                               //eine andere funktion
                           break;
                             //usw.
                       }
                   }
            }
            

            Das soll nur ein Schema Darstellen und der code ist am Smartphone entstanden.

            Persönlicher Support
            Spenden -> paypal.me/J3YC33

            JB_SullivanJ 1 Antwort Letzte Antwort
            0
            • Jey CeeJ Jey Cee

              @JB_Sullivan sagte in Aqara Cube - Funktionstabelle - deConz:

              Offensichtlich kennst du dich ja mit dem Cube ebenfalls ganz gut aus.

              Eigentlich gar nicht.

              Ich hab jetzt nir kurz über das skript geschaut, aber sieht viel zu Kompliziert aus. Warum man da irgendwas berechnen soll ist mir vollkommen unklar, die Zahlen sind fix.

              Mach es dir einfach:

              on({id: idButtonEvents, change: 'any'}, 
                  (obj) => {
                        switch(obj.state.val){
                             case 1001:
                                setState(licht1, true);
                             break;
                             case 2001:
                                 //eine andere funktion
                             break;
                               //usw.
                         }
                     }
              }
              

              Das soll nur ein Schema Darstellen und der code ist am Smartphone entstanden.

              JB_SullivanJ Offline
              JB_SullivanJ Offline
              JB_Sullivan
              schrieb am zuletzt editiert von
              #6

              @Jey-Cee

              Danke für den Hinweis. In der Zwischenzeit habe ich die Systematik hinter dem Code wohl verstanden und durch stumpfes Drag&Drop und Änderung der Datenpunkte wohl alles so eingetragen wie es für meine Wunschfunktion nötig ist.

              Allerdings habe ich in Zeile 200 wohl einen Klammerfehler rein gebastelt. Da ich nicht weiß wie die Klammersetzung in JavaSkript aussehen muss, tue ich mich extrem schwer den Ursprung des Fehler zu finden.

              Könntest du bitte nochmal einen Blick drauf werfen?

              /*
              Aqara Cube Skript
              Events: 
              {1}
              90 Grad
              180 Grad
              schieben
              hochwerfen & auffangen
              schütteln
              Taptap
              drehen 
              {1}
              */
               
              var CubeS = "deconz.0.Sensors.23.buttonevent", // Cube Switch
              	CubeR = "deconz.0.Sensors.24.buttonevent", // Cube Rotate
                  switchVal,
                  degree,
                  elements = [],
                  elementsInt= [],
                  debug;
                 
                 
              // Sleep Funktion Experimental
              function sleep(milliseconds) {
              	var start = new Date().getTime();
              	for (var i = 0; i < 1e7; i++) {
              		if ((new Date().getTime() - start) > milliseconds){
              			break;
              		}
              	}
              }
               
               debug = 2; // DEBUG MODE: 0 = Aus, 1 = Aktionen anzeigen, 2 = Alles anzeigen
               
               
              on({id: CubeS, change: "any"}, function (obj) { 
               
                   
                   
                  // Objekt in String wandeln, doppel Null entfernen und ergebnisse in Array elements schreiben.
              	switchVal = JSON.stringify(getState(CubeS).val);
              	elements = switchVal.split("00");
              	// Elemente des Arrays in Integerwerte konvertieren
              	for(var i=0; i<elements.length;i++) elementsInt[i] = parseInt(elements[i], 10);
                   
                  if (debug >= 2) { 
              	console.log("Original: " + getState(CubeS).val + " Element 1: " + elements[0] + " Element 2: " + elements[1]);
                  }
              	var total = elementsInt[0] + elementsInt [1];
                  if (debug >= 2) { 
              	console.log("Total: " + total);
                  }
               
              	//if (( elementsInt[0] + elementsInt [1] == 7 ) && ( elementsInt [1] !== 0 )) {
                    //if (debug ==  1) { 
              		//console.log("180 Grad" + " Seite: " + elementsInt[0] + " liegt oben.");
                     //}
              		//setState("deconz.0.Lights.1.on"/*Schreibtischlampe*/, true);
                      //}
              		
                  //sleep(550);
              
                   //Geschüttelt
                
                  else if ( elementsInt[0] + elementsInt [1] == 14) {
                     if (debug ==  1) { 
              		console.log("Geschüttelt");
                     }
              		setState("alexa2.0.Smart-Home-Devices.3d19d4d8-8a84-4bbf-bc28-25e56f2a833a.powerState"/*Alles AUS*/, true);
              }    
              
                  //Geworfen 
              
              
                  else if ( elementsInt[0] + elementsInt [1] == 15) {
              		sleep(0);
                      if (debug ==  1) { 
              		console.log("Geworfen");
                      }
              	    setState("sonoff.0.Garten_S55_3.POWER"/*SteckdoseOST*/, false);
              }
              
              //TapTap       
              
              else if ( elementsInt[0] + elementsInt [1] == 4)  {
                     if (debug ==  1) { 
              	console.log("TapTap" + " Seite: " + elementsInt[0] + " liegt oben.");
                     }
              	    setState("sonoff.0.Garten_4CH_No2.POWER1"/*Wasserfall*/, false);
                      setState("sonoff.0.Garten_4CH_No2.POWER2"/*Glassteine*/, false);
              }
              else if ( elementsInt[0] + elementsInt [1] == 6)  {
                     if (debug ==  1) { 
              	console.log("TapTap" + " Seite: " + elementsInt[0] + " liegt oben.");
                     }
              	    setState("sonoff.0.Garten_4CH_No1.POWER2"/*GabionePool*/, false);
                      setState("sonoff.0.Garten_S55_1.POWER"/*PoolSteckdose*/, false);
              }
              else if ( elementsInt[0] + elementsInt [1] == 8)  {
                     if (debug ==  1) { 
              	console.log("TapTap" + " Seite: " + elementsInt[0] + " liegt oben.");
                     }
              	    setState("sonoff.0.Garten_4CH_No2.POWER3"/*Pflanzkoerbe*/, false);
                      setState("deconz.0.Lights.1.on"/*SteckdosePflanzkoerbe*/, false);
              } 
              else if ( elementsInt[0] + elementsInt [1] == 10)  {
                     if (debug ==  1) { 
              	console.log("TapTap" + " Seite: " + elementsInt[0] + " liegt oben.");
                     }
              	    setState("sonoff.0.Garten_4CH_No1.POWER3"/*50Prozent*/, false);
              }
              else if ( elementsInt[0] + elementsInt [1] == 12)  {
                     if (debug ==  1) { 
              	console.log("TapTap" + " Seite: " + elementsInt[0] + " liegt oben.");
                     }
              	    setState("sonoff.0.Garten_4CH_No1.POWER4"/*100Prozent*/, false);
              }
              else if ( elementsInt[0] + elementsInt [1] == 2)  {
                     if (debug ==  1) { 
              	console.log("TapTap" + " Seite: " + elementsInt[0] + " liegt oben.");
                     }
                     setState("sonoff.0.Garten_4CH_No1.POWER1"/*Terrasse*/, true);
              }
              
              //Schieben      
              
              else if (( elementsInt [1] === 0 ) && ( elementsInt [0] <= 2 )) {
                     if (debug ==  1) { 
              	console.log("Schieben" + " Seite: " + elementsInt[0] + " liegt oben." );
                     }
                     setState("sonoff.0.Garten_4CH_No2.POWER2"/*Glassteine*/, true);
              }
              else if (( elementsInt [1] === 0 ) && ( elementsInt [0] <= 3 )) {
                     if (debug ==  1) { 
              	console.log("Schieben" + " Seite: " + elementsInt[0] + " liegt oben." );
                     }
                     setState("sonoff.0.Garten_S55_1.POWER"/*PoolSteckdose*/, true);
                    
              }
              else if (( elementsInt [1] === 0 ) && ( elementsInt [0] <= 4 )) {
                     if (debug ==  1) { 
              	console.log("Schieben" + " Seite: " + elementsInt[0] + " liegt oben." );
                     }
                     setState("deconz.0.Lights.1.on"/*SteckdosePflanzkoerbe*/, true);
              }
              else if (( elementsInt [1] === 0 ) && ( elementsInt [0] <= 6 )) {
                     if (debug ==  1) { 
              	console.log("Schieben" + " Seite: " + elementsInt[0] + " liegt oben." );
                     }
                     setState("sonoff.0.Garten_S55_3.POWER"/*SteckdoseOST*/, true);
              }
              
              //Aufwachen
              
              else if (( elementsInt [1] === 0 ) && ( elementsInt [0] <= 7 )) {
                  if (debug ==  1) { 
                  console.log("Cube Wakeup!");
                  }
              
              //90Grad
              
              
              else if ( elementsInt [0] = 4 ) {
                     if (debug ==  1) { 
              	console.log("90 Grad" + " Seite: " + elementsInt[0] + " liegt oben.");
                     }
              	    setState("sonoff.0.Garten_4CH_No1.POWER2"/*GabionePool*/, true);
                     
              }   
              else if ( elementsInt [0] = 5 ) {
                     if (debug ==  1) { 
              	console.log("90 Grad" + " Seite: " + elementsInt[0] + " liegt oben.");
                     }
              	    setState("sonoff.0.Garten_4CH_No2.POWER3"/*Pflanzkoerbe*/, true);
                     
              }   
              else if ( elementsInt [0] = 6 ) {
                     if (debug ==  1) { 
              	console.log("90 Grad" + " Seite: " + elementsInt[0] + " liegt oben.");
                     }
              	    setState("sonoff.0.Garten_4CH_No1.POWER3"/*50Prozent*/, true);
                     
              } 
              else if ( elementsInt [0] = 11 ) {
                     if (debug ==  1) { 
              	console.log("90 Grad" + " Seite: " + elementsInt[0] + " liegt oben.");
                     }
              	    setState("sonoff.0.Garten_4CH_No1.POWER4"/*100Prozent*/, true);
                     
              }
              else if ( elementsInt [0] = 2 ) {
                     if (debug ==  1) { 
              	console.log("90 Grad" + " Seite: " + elementsInt[0] + " liegt oben.");
                     }
              	    setState("sonoff.0.Garten_4CH_No1.POWER1"/*Terrasse*/, true);
                     
              }
              
              });
               
              on({id: CubeR, change: "ne"}, function (obj) { // nur bei änderung Triggern "ne" not equal
                      
                      
              var rotationVal = JSON.stringify(getState(CubeR).val); // Objekt in String konvertieren
               
                 
                       
              // Schauen ob rotationVal negativ/positiv ist und nur die ersten beiden bzw. drei ziffern verwenden.
              if ( rotationVal.substr(0,1) == "-" ) {
                          
              	if (rotationVal.length == 6 ) {
              		degree = rotationVal.substr(0,4);
                              
              	}
              	else {
              		degree = rotationVal.substr(0,3);
                          
              	}
                          
              }
              else {
                          
              	if (rotationVal.length == 5 ) {
              		degree = rotationVal.substr(0,3);
                              
              	}
              	else {
              		degree = rotationVal.substr(0,2);
              	}
                          
                    
              }
                      
                      
                     if (debug ==  1) {  
              console.log("gedreht: " + degree);
                     }
              // Volume auslesen
              var aMainVol = parseInt(getState("alexa2.0.Echo-Devices.G090U61091855EMG.Player.volume"/*Main Volume*/).val);
                      
              // Neues Volumen errechnen
              if (debug >= 2) { 
              console.log("Ergebnis: " + parseInt(degree) / 5);
              }
              if (parseInt(degree)  > 60) {
                  if (debug >= 2) {
                  console.log("Vol unterschied zu hoch, angepasst!");
                  }
                  degree = 60;
                 
                  
              }
               
              var newMainVol = (degree / 5) + aMainVol;
              if (debug >= 2) {
              console.log("Vol unterschied: " + (parseInt(degree) / 5));
              console.log("mainvol: " + aMainVol + " newMainVol: " + newMainVol);
              }
              // Neues Volumen an EchoDot senden
              setState("alexa2.0.Echo-Devices.G090U61091855EMG.Player.volume", newMainVol);
                      
              });
              
              

              ioBroker (since 2018) auf Intel Core i3-5005U NUC und Windwos10 Pro

              Jey CeeJ 1 Antwort Letzte Antwort
              0
              • JB_SullivanJ JB_Sullivan

                @Jey-Cee

                Danke für den Hinweis. In der Zwischenzeit habe ich die Systematik hinter dem Code wohl verstanden und durch stumpfes Drag&Drop und Änderung der Datenpunkte wohl alles so eingetragen wie es für meine Wunschfunktion nötig ist.

                Allerdings habe ich in Zeile 200 wohl einen Klammerfehler rein gebastelt. Da ich nicht weiß wie die Klammersetzung in JavaSkript aussehen muss, tue ich mich extrem schwer den Ursprung des Fehler zu finden.

                Könntest du bitte nochmal einen Blick drauf werfen?

                /*
                Aqara Cube Skript
                Events: 
                {1}
                90 Grad
                180 Grad
                schieben
                hochwerfen & auffangen
                schütteln
                Taptap
                drehen 
                {1}
                */
                 
                var CubeS = "deconz.0.Sensors.23.buttonevent", // Cube Switch
                	CubeR = "deconz.0.Sensors.24.buttonevent", // Cube Rotate
                    switchVal,
                    degree,
                    elements = [],
                    elementsInt= [],
                    debug;
                   
                   
                // Sleep Funktion Experimental
                function sleep(milliseconds) {
                	var start = new Date().getTime();
                	for (var i = 0; i < 1e7; i++) {
                		if ((new Date().getTime() - start) > milliseconds){
                			break;
                		}
                	}
                }
                 
                 debug = 2; // DEBUG MODE: 0 = Aus, 1 = Aktionen anzeigen, 2 = Alles anzeigen
                 
                 
                on({id: CubeS, change: "any"}, function (obj) { 
                 
                     
                     
                    // Objekt in String wandeln, doppel Null entfernen und ergebnisse in Array elements schreiben.
                	switchVal = JSON.stringify(getState(CubeS).val);
                	elements = switchVal.split("00");
                	// Elemente des Arrays in Integerwerte konvertieren
                	for(var i=0; i<elements.length;i++) elementsInt[i] = parseInt(elements[i], 10);
                     
                    if (debug >= 2) { 
                	console.log("Original: " + getState(CubeS).val + " Element 1: " + elements[0] + " Element 2: " + elements[1]);
                    }
                	var total = elementsInt[0] + elementsInt [1];
                    if (debug >= 2) { 
                	console.log("Total: " + total);
                    }
                 
                	//if (( elementsInt[0] + elementsInt [1] == 7 ) && ( elementsInt [1] !== 0 )) {
                      //if (debug ==  1) { 
                		//console.log("180 Grad" + " Seite: " + elementsInt[0] + " liegt oben.");
                       //}
                		//setState("deconz.0.Lights.1.on"/*Schreibtischlampe*/, true);
                        //}
                		
                    //sleep(550);
                
                     //Geschüttelt
                  
                    else if ( elementsInt[0] + elementsInt [1] == 14) {
                       if (debug ==  1) { 
                		console.log("Geschüttelt");
                       }
                		setState("alexa2.0.Smart-Home-Devices.3d19d4d8-8a84-4bbf-bc28-25e56f2a833a.powerState"/*Alles AUS*/, true);
                }    
                
                    //Geworfen 
                
                
                    else if ( elementsInt[0] + elementsInt [1] == 15) {
                		sleep(0);
                        if (debug ==  1) { 
                		console.log("Geworfen");
                        }
                	    setState("sonoff.0.Garten_S55_3.POWER"/*SteckdoseOST*/, false);
                }
                
                //TapTap       
                
                else if ( elementsInt[0] + elementsInt [1] == 4)  {
                       if (debug ==  1) { 
                	console.log("TapTap" + " Seite: " + elementsInt[0] + " liegt oben.");
                       }
                	    setState("sonoff.0.Garten_4CH_No2.POWER1"/*Wasserfall*/, false);
                        setState("sonoff.0.Garten_4CH_No2.POWER2"/*Glassteine*/, false);
                }
                else if ( elementsInt[0] + elementsInt [1] == 6)  {
                       if (debug ==  1) { 
                	console.log("TapTap" + " Seite: " + elementsInt[0] + " liegt oben.");
                       }
                	    setState("sonoff.0.Garten_4CH_No1.POWER2"/*GabionePool*/, false);
                        setState("sonoff.0.Garten_S55_1.POWER"/*PoolSteckdose*/, false);
                }
                else if ( elementsInt[0] + elementsInt [1] == 8)  {
                       if (debug ==  1) { 
                	console.log("TapTap" + " Seite: " + elementsInt[0] + " liegt oben.");
                       }
                	    setState("sonoff.0.Garten_4CH_No2.POWER3"/*Pflanzkoerbe*/, false);
                        setState("deconz.0.Lights.1.on"/*SteckdosePflanzkoerbe*/, false);
                } 
                else if ( elementsInt[0] + elementsInt [1] == 10)  {
                       if (debug ==  1) { 
                	console.log("TapTap" + " Seite: " + elementsInt[0] + " liegt oben.");
                       }
                	    setState("sonoff.0.Garten_4CH_No1.POWER3"/*50Prozent*/, false);
                }
                else if ( elementsInt[0] + elementsInt [1] == 12)  {
                       if (debug ==  1) { 
                	console.log("TapTap" + " Seite: " + elementsInt[0] + " liegt oben.");
                       }
                	    setState("sonoff.0.Garten_4CH_No1.POWER4"/*100Prozent*/, false);
                }
                else if ( elementsInt[0] + elementsInt [1] == 2)  {
                       if (debug ==  1) { 
                	console.log("TapTap" + " Seite: " + elementsInt[0] + " liegt oben.");
                       }
                       setState("sonoff.0.Garten_4CH_No1.POWER1"/*Terrasse*/, true);
                }
                
                //Schieben      
                
                else if (( elementsInt [1] === 0 ) && ( elementsInt [0] <= 2 )) {
                       if (debug ==  1) { 
                	console.log("Schieben" + " Seite: " + elementsInt[0] + " liegt oben." );
                       }
                       setState("sonoff.0.Garten_4CH_No2.POWER2"/*Glassteine*/, true);
                }
                else if (( elementsInt [1] === 0 ) && ( elementsInt [0] <= 3 )) {
                       if (debug ==  1) { 
                	console.log("Schieben" + " Seite: " + elementsInt[0] + " liegt oben." );
                       }
                       setState("sonoff.0.Garten_S55_1.POWER"/*PoolSteckdose*/, true);
                      
                }
                else if (( elementsInt [1] === 0 ) && ( elementsInt [0] <= 4 )) {
                       if (debug ==  1) { 
                	console.log("Schieben" + " Seite: " + elementsInt[0] + " liegt oben." );
                       }
                       setState("deconz.0.Lights.1.on"/*SteckdosePflanzkoerbe*/, true);
                }
                else if (( elementsInt [1] === 0 ) && ( elementsInt [0] <= 6 )) {
                       if (debug ==  1) { 
                	console.log("Schieben" + " Seite: " + elementsInt[0] + " liegt oben." );
                       }
                       setState("sonoff.0.Garten_S55_3.POWER"/*SteckdoseOST*/, true);
                }
                
                //Aufwachen
                
                else if (( elementsInt [1] === 0 ) && ( elementsInt [0] <= 7 )) {
                    if (debug ==  1) { 
                    console.log("Cube Wakeup!");
                    }
                
                //90Grad
                
                
                else if ( elementsInt [0] = 4 ) {
                       if (debug ==  1) { 
                	console.log("90 Grad" + " Seite: " + elementsInt[0] + " liegt oben.");
                       }
                	    setState("sonoff.0.Garten_4CH_No1.POWER2"/*GabionePool*/, true);
                       
                }   
                else if ( elementsInt [0] = 5 ) {
                       if (debug ==  1) { 
                	console.log("90 Grad" + " Seite: " + elementsInt[0] + " liegt oben.");
                       }
                	    setState("sonoff.0.Garten_4CH_No2.POWER3"/*Pflanzkoerbe*/, true);
                       
                }   
                else if ( elementsInt [0] = 6 ) {
                       if (debug ==  1) { 
                	console.log("90 Grad" + " Seite: " + elementsInt[0] + " liegt oben.");
                       }
                	    setState("sonoff.0.Garten_4CH_No1.POWER3"/*50Prozent*/, true);
                       
                } 
                else if ( elementsInt [0] = 11 ) {
                       if (debug ==  1) { 
                	console.log("90 Grad" + " Seite: " + elementsInt[0] + " liegt oben.");
                       }
                	    setState("sonoff.0.Garten_4CH_No1.POWER4"/*100Prozent*/, true);
                       
                }
                else if ( elementsInt [0] = 2 ) {
                       if (debug ==  1) { 
                	console.log("90 Grad" + " Seite: " + elementsInt[0] + " liegt oben.");
                       }
                	    setState("sonoff.0.Garten_4CH_No1.POWER1"/*Terrasse*/, true);
                       
                }
                
                });
                 
                on({id: CubeR, change: "ne"}, function (obj) { // nur bei änderung Triggern "ne" not equal
                        
                        
                var rotationVal = JSON.stringify(getState(CubeR).val); // Objekt in String konvertieren
                 
                   
                         
                // Schauen ob rotationVal negativ/positiv ist und nur die ersten beiden bzw. drei ziffern verwenden.
                if ( rotationVal.substr(0,1) == "-" ) {
                            
                	if (rotationVal.length == 6 ) {
                		degree = rotationVal.substr(0,4);
                                
                	}
                	else {
                		degree = rotationVal.substr(0,3);
                            
                	}
                            
                }
                else {
                            
                	if (rotationVal.length == 5 ) {
                		degree = rotationVal.substr(0,3);
                                
                	}
                	else {
                		degree = rotationVal.substr(0,2);
                	}
                            
                      
                }
                        
                        
                       if (debug ==  1) {  
                console.log("gedreht: " + degree);
                       }
                // Volume auslesen
                var aMainVol = parseInt(getState("alexa2.0.Echo-Devices.G090U61091855EMG.Player.volume"/*Main Volume*/).val);
                        
                // Neues Volumen errechnen
                if (debug >= 2) { 
                console.log("Ergebnis: " + parseInt(degree) / 5);
                }
                if (parseInt(degree)  > 60) {
                    if (debug >= 2) {
                    console.log("Vol unterschied zu hoch, angepasst!");
                    }
                    degree = 60;
                   
                    
                }
                 
                var newMainVol = (degree / 5) + aMainVol;
                if (debug >= 2) {
                console.log("Vol unterschied: " + (parseInt(degree) / 5));
                console.log("mainvol: " + aMainVol + " newMainVol: " + newMainVol);
                }
                // Neues Volumen an EchoDot senden
                setState("alexa2.0.Echo-Devices.G090U61091855EMG.Player.volume", newMainVol);
                        
                });
                
                
                Jey CeeJ Online
                Jey CeeJ Online
                Jey Cee
                Developer
                schrieb am zuletzt editiert von
                #7

                @JB_Sullivan sagte in Aqara Cube - Funktionstabelle - deConz:

                Allerdings habe ich in Zeile 200 wohl einen Klammerfehler rein gebastelt.

                Füg eine } nach

                setState("sonoff.0.Garten_4CH_No1.POWER1"/*Terrasse*/, true);
                

                ein.

                Persönlicher Support
                Spenden -> paypal.me/J3YC33

                1 Antwort Letzte Antwort
                0
                • JB_SullivanJ Offline
                  JB_SullivanJ Offline
                  JB_Sullivan
                  schrieb am zuletzt editiert von JB_Sullivan
                  #8

                  Vielen Vielen Dank - tatsächlich jetzt geht es :+1: :+1: :+1: :+1:
                  Kaum macht man es richtig funktioniert es :blush:

                  Edit: Hmm zumindest im Hinblick auf den Fehler der beim komplieren wegen der fehlenden Klammer aufgetreten ist.

                  Obwohl die Ergebnisse stimmig sind. Schaltet das Skript die States nicht um - muss ich noch mal ein bisschen suchen und mit dem funktionierenden Ursprungsskript quervergleichen.

                  Ist bestimmt auch wieder nur irgend eine Kleinigkeit.

                  ioBroker (since 2018) auf Intel Core i3-5005U NUC und Windwos10 Pro

                  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
                  FAQ Cloud / IOT
                  HowTo: Node.js-Update
                  HowTo: Backup/Restore
                  Downloads
                  BLOG

                  890

                  Online

                  32.6k

                  Benutzer

                  82.0k

                  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