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. [Vorschlag] Abfrage OPPLE 6fach Taster Zigbee Deconz

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

[Vorschlag] Abfrage OPPLE 6fach Taster Zigbee Deconz

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascriptmultimediascenes
1 Beiträge 1 Kommentatoren 413 Aufrufe 1 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.
  • P Offline
    P Offline
    pix
    schrieb am zuletzt editiert von pix
    #1

    Hallo,

    habe kürzlich einen AQARA OPPLE 6fach Taster via Phoscon Stick und Deconz-Adapter eingebunden. Es besteht die Möglichkeit, jede der 6 Tasten auf langen Klick und Release, Einfachklick, Doppel- und dreifachen Klick abzufragen. Das sind sehr viele Möglichkeiten, die man kaum im Kopf behalten kann.

    Um den Code übersichtlicher zu halten, habe ich mich entschieden, nur den Datenpunkt "buttonpressed" zu überwachen. Er wird vom Deconz-Adapter mit einer 4stelligen Zahl, bestehend aus Tastennummer und Code für die Art des Klicks beschrieben. Dieser Code ist die Basis für die Zuordnung in einem Objekt "taster6fach" (Wohnzimmer 6fach Taster).

    Mir ist aufgefallen, dass das Javascript viel besser lesbar ist, wenn ich den auszuführenden Code direkt in das Objekt (hier unter "Aktion") schreibe. IF-Abfragen und die Switch()-Funktion sind da nicht so übersichtlich.

    Der 6fach Taster soll im Wohnzimmer einige Szenen steuern (via scene-Adapter) und die SONOS Lautstärke hoch- / runtertasten (Funktion am Anfang des Skripts). Die Funktion "tv_szene()" prüft, ob es hell ist und schaltet dann den TV ohne weiteres Ambientlicht ein. Das kann der Szenenadapter (noch) nicht.

    Weiterhin wird jede Aktion geloggt und über eine globale Funktion ("tvtext()") auf dem LGTV angezeigt.

    Viel Spaß beim Ausprobieren!
    Pix

    
     ---------------------     Taster Aqara Opple 6fach Zigbee über Deconz
    | °                   |    links:  1x Kugel Billy AN (DIREKT Phoscon)
    |                     |    rechts: 1x Kugel Billy AUS (DIREKT Phoscon), 3x alle Zigbee Wohnung aus (DIREKT Phoscon) + Szene Alles aus
     ---------------------     
    |                     |    links:  1x TV Szene an
    |                     |    rechts: 1x TV Szene aus
     ---------------------     
    |                     |    links:  2x Sonos WZ lauter, 3x Audio Ausgang Kopfhörer Bluetooth
    |                     |    rechts: 2x Sonos WZ leiser, 3x Audio Ausgang Optisch Sonos
     --------------------- 
    ID: deconz.0.Sensors.7.buttonpressed
    Bedienung wird über TV Info angezeigt
    */
    
    
    // SONOS STEUERUNG (LAUTSTÄRKE)
    function sonosVolume(richtung) {  
       const sonos_ip = "10_0_10_35"; // Sonos Playbar
       const idSonos_root = "sonos.0.root." + sonos_ip;
       let volume_ist = parseInt(getState(idSonos_root + ".volume"/*volume*/).val);
       
       if (richtung == "lauter") {
           if (getState(idSonos_root + ".muted"/*muted*/).val) setState(idSonos_root + ".muted"/*muted*/,false); // falls MUTE eingeschaltet war, MUTE ausschalten
           setState(idSonos_root + ".volume"/*volume*/, parseInt(volume_ist + Math.ceil(volume_ist/5),10), function() {
               log("Sonos 20% lauter - jetzt " + getState(idSonos_root + ".volume"/*volume*/).val);
           });
       }
       else if (richtung == "leiser") {
           setState(idSonos_root + ".volume"/*volume*/, parseInt(volume_ist - Math.ceil(volume_ist/5),10), function() {
               log("Sonos 20% leiser - jetzt " + getState(idSonos_root + ".volume"/*volume*/).val);
           }); 
       }
    }
    
    // DEFINITION TASTEN
    // Taster 6fach
    const idWZ6fach_button = "deconz.0.Sensors.7.buttonpressed";
    const taster6fach = {
       // --------- OBEN --------
       1001 : {"taste": "oben links langer Druck ENDE",
               "info": "",
               "aktion": ""
       },
       1002 : {"taste": "oben links einfach",
               "info": "Kugel Billy EIN (Phoscon direkt)",
               "aktion": ""
       },
       1003 : {"taste": "oben links langer Druck",
               "info": "",
               "aktion": ""
       },
       1004 : {"taste": "oben links zweifach",
               "info": "Wohnzimmer alle Lichter EIN",
               "aktion": function() {
                   setState("scene.0.licht_wohnzimmer", true, function() {
                       log("Szene <Wohnzimmer Licht EIN> gestartet");
                   });
               }
       },
       1005 : {"taste": "oben links dreifach",
               "info": "",
               "aktion": ""
       },
    
       2001 : {"taste": "oben rechts langer Druck ENDE",
               "info": "",
               "aktion": ""
       },
       2002 : {"taste": "oben rechts einfach",
               "info": "Kugel Billy AUS (Phoscon direkt)",
               "aktion": ""
       },
       2003 : {"taste": "oben rechts langer Druck",
               "info": "",
               "aktion": ""
       },
       2004 : {"taste": "oben rechts zweifach",
               "info": "Wohnzimmer alle Lichter AUS",
               "aktion": function() {
                   setState("scene.0.licht_wohnzimmer", false, function() {
                       log("Szene <Wohnzimmer Licht AUS> gestartet");
                   });
               }
       },
       2005 : {"taste": "oben rechts dreifach",
               "info": "Alle Lichter AUS",
               "aktion": function() {
                   setState("scene.0.licht_alles_aus", true, function() {
                       log("Szene <LICHT ALLES AUS> gestartet");
                   });
               }
       },
       // --------- MITTE --------
       3001 : {"taste": "Mitte links langer Druck ENDE",
               "info": "",
               "aktion": ""
       },
       3002 : {"taste": "Mitte links einfach",
               "info": "TV Szene ein",
               "aktion": function() {
                   tv_szene();
               }
       },
       3003 : {"taste": "Mitte links langer Druck",
               "info": "",
               "aktion": ""
       },
       3004 : {"taste": "Mitte links zweifach",
               "info": "",
               "aktion": ""
       },
       3005 : {"taste": "Mitte links dreifach",
               "info": "",
               "aktion": ""
       },
    
       4001 : {"taste": "Mitte rechts langer Druck ENDE",
               "info": "",
               "aktion": ""
       },
       4002 : {"taste": "Mitte rechts einfach",
               "info": "TV aus",
               "aktion": function() {
                   setState("scene.0.tv_schalten", false, function() { 
                       log("Szene <TV_schalten> ausgeschaltet"); 
                   });
               }
       },
       4003 : {"taste": "Mitte rechts langer Druck",
               "info": "",
               "aktion": ""
       },
       4004 : {"taste": "Mitte rechts zweifach",
               "info": "",
               "aktion": ""
       },
       4005 : {"taste": "Mitte rechts dreifach",
               "info": "",
               "aktion": ""
       },
       // --------- UNTEN --------
       5001 : {"taste": "unten links langer Druck ENDE",
               "info": "",
               "aktion": ""
       },
       5002 : {"taste": "unten links einfach",
               "info": "TV MUTE (toggle)",
               "aktion": ""
       },
       5003 : {"taste": "unten links langer Druck",
               "info": "",
               "aktion": ""
       },
       5004 : {"taste": "unten links zweifach",
               "info": "Sonos WZ LAUTER",
               "aktion": function() {
                   sonosVolume("lauter");
               }
       },
       5005 : {"taste": "unten links dreifach",
               "info": "Audio Ausgang Kophörer Bluetooth",
               "aktion": function() {
                   setState("lgtv.0.states.soundOutput", 7, function() {
                       log("TV Audio auf Bluetooth geschaltet --- TEST");
                   });
               }
       },
    
       
       6001 : {"taste": "unten rechts langer Druck ENDE",
               "info": "",
               "aktion": ""
       },
       6002 : {"taste": "unten rechts einfach",
               "info": "TV MUTE (toggle)",
               "aktion": ""
       },
       6003 : {"taste": "unten rechts langer Druck",
               "info": "",
               "aktion": ""
       },
       6004 : {"taste": "unten rechts zweifach",
               "info": "Sonos WZ LEISER",
               "aktion": function() {
                   sonosVolume("leiser");
               }
       },
       6005 : {"taste": "unten rechts dreifach",
               "info": "Audio Ausgang Optisch",
               "aktion": function() {
                   setState("lgtv.0.states.soundOutput", 1, function() {
                       log("TV Audio auf optischen Ausgang geschaltet");
                   });
               }
       }
    }
    
    // STEUERUNG
    on({
       id: idWZ6fach_button, // ändert Inhalt in Tastennummer + Code für Anzahl Klicks
       change: "ne"
    }, function (obj) {
       let code = obj.state.val;
       let ausgabe = "6fach Taster, ";
       if (obj.state.val > 0 && obj.state.val !== undefined && obj.state.val !== null ) {
           if (taster6fach[code].info.length <= 0) {
               log(ausgabe + taster6fach[code].taste + " - kein Datenpunkt verknüpft");
           } else {
               log(ausgabe + taster6fach[code].taste + " " + taster6fach[code].info);
               tvtext(ausgabe + taster6fach[code].taste + " " + taster6fach[code].info);  // globale Funktion
               // HINTERLEGTE AKTION STARTEN
               if (taster6fach[code].aktion) taster6fach[code].aktion(); // Wenn Aktion hinterlegt
           }       
       }
    });
    
    

    ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

    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

    797

    Online

    32.6k

    Benutzer

    82.1k

    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