Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [Vorschlag] Abfrage OPPLE 6fach Taster Zigbee Deconz

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Vorschlag] Abfrage OPPLE 6fach Taster Zigbee Deconz

    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      pix last edited by pix

      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
             }       
         }
      });
      
      

      1 Reply Last reply Reply Quote 0
      • First post
        Last post

      Support us

      ioBroker
      Community Adapters
      Donate

      868
      Online

      31.9k
      Users

      80.1k
      Topics

      1.3m
      Posts

      javascript multimedia scenes
      1
      1
      348
      Loading More Posts
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes
      Reply
      • Reply as topic
      Log in to reply
      Community
      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
      The ioBroker Community 2014-2023
      logo