Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Let's Bastel LED Lampe steuern

    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

    Let's Bastel LED Lampe steuern

    This topic has been deleted. Only users with topic management privileges can see it.
    • Jey Cee
      Jey Cee Developer last edited by Jey Cee

      Im Discord hat @nox309 gefragt ob es eine Möglichkeit gibt die Let's Bastel LED Lampe mit ioBroker zu steuern.
      Da ich das ganz Interessant fand hab ich mir das mal angesehen und dieses Skript zum Steuern geschrieben.

      Die Lampe gibt ihren Status nicht zurück, was bedeutet wird sie von der Weboberfläche aus gesteuert weis ioBroker nichts davon.
      Außerdem muss man Prüfen ob die Lampe erreichbar ist oder nicht. Falls nicht muss das Skript neu gestartet werden.
      Die Überwachung kann per Ping mit Net-Tools oder Ping Adapter realisiert werden.

      Edit: Ich hab für die Verbindungsprüfung einen boolschen Datenpunkt vorgesehen. Wenn man den einträgt wird die Verbindung neu hergstellt wenn der Datenpunit von false auf true wechselt.

      Edit 1: Neue Version beinhaltet Error handling bei Fehlgeschlagenem Verbindungsversuch der zum Absturz der JavaScript instanz führt. Und die States bekommen jetzt ein ack = true wenn der Befehl vom Skript angenommen wurde.

      Hier ist das Skript:

      /* 
      Skript zum Steuern der "Let's Bastel LED Lampe"
       Version: 1.2.0
       Author: Jey Cee
       Date: 06.01.2023
      */
      
      /* 
      Vorraussetzungen: 
       - Modul "ws" muss in den Eistellungen der Javascript Adapter instanz eingetragen sein
       - setObject muss in den Einstellungen der Javascript Adapter instanz Aktiviert sein
      
      Einschränkungen:  
      - Die Lampe gibt keine Rückmeldung über ihren Zustand.
      */
      
      const ip = "192.168.0.245"                          // Hier die IP Adresse der Lampe angeben.
      const port = 81                                     // Nur ändern wenn es im code der Lampe geändert wurde.
      const baseId = "0_userdata.0.LetsBastelLEDLampe"    // Muss immer in 0_userdata.0 sein. 
      const alive = ""      // Datenpunkt zur Überwachung ob die Lampe noch erreichbar ist. Wenn nichts eingetragen wird gibt es keine Überwachung.
      
      /*-----------------------------------------------------------------------------------------------------------*/
      
      const WebSocket = require('ws');
      
      
      
      main();
      
      async function main() {
          let ws;
      
          // Objekte anlegen
          await createObjects();
      
          // Verbindung aufbauen
          ws = new WebSocket(`ws://${ip}:${port}`);
      
          if(alive !== ""){
              log("Verbindung Überwachen");
              // Neu verbinden wenn die Verbindung verloren wurde
              on({id: alive},
                  (obj) => {
                      if(obj.state.val === false) {
                          log("Verbindung verloren");
                          ws.terminate();
                          setState(`${baseId}.connected`, false);
                      } else if (obj.state.val === true) {
                          ws = new WebSocket(`ws://${ip}:${port}`);
                      }
                  })
          }
      
          ws.on("open",() => {
              setState(`${baseId}.connected`, true);
          });
      
          ws.on("close", () => {
              setState(`${baseId}.connected`, false);
          }) 
      
          ws.on("error", (error) => {
              log(error);
          })
      
          on({id: `${baseId}.on`, ack: false},
              (obj) => {
                  setState(`${baseId}.on`, {val: obj.state.val, ack: true});
                   ws.send('{"type":"control","value":0,"id":"on","date": ' + Date.now() + '}');
              })
      
          on({id: `${baseId}.off`, ack: false},
              (obj) => {
                  setState(`${baseId}.off`, {val: obj.state.val, ack: true});
                   ws.send('{"type":"control","value":1,"id":"off","date": ' + Date.now() + '}');
              })
      
          on({id: `${baseId}.dimDown`, ack: false},
              (obj) => {
                  setState(`${baseId}.dimDown`, {val: obj.state.val, ack: true});
                   ws.send('{"type":"control","value":3,"id":"dunkel","date": ' + Date.now() + '}');
              })
      
          on({id: `${baseId}.dimUp`, ack: false},
              (obj) => {
                  setState(`${baseId}.dimUp`, {val: obj.state.val, ack: true});
                   ws.send('{"type":"control","value":2,"id":"hell","date": ' + Date.now() + '}');
              })
      
          on({id: `${baseId}.flash`, ack: false},
              (obj) => {
                  setState(`${baseId}.flash`, {val: obj.state.val, ack: true});
                   ws.send('{"type":"function","value":1,"id":"FLASH","date": ' + Date.now() + '}');
              })
      
          on({id: `${baseId}.smooth`, ack: false},
              (obj) => {
                  setState(`${baseId}.smooth`, {val: obj.state.val, ack: true});
                   ws.send('{"type":"function","value":2,"id":"SMOOTH","date": ' + Date.now() + '}');
              })
      
          on({id: `${baseId}.fade`, ack: false},
              (obj) => {
                  setState(`${baseId}.fade`, {val: obj.state.val, ack: true});
                   ws.send('{"type":"function","value":3,"id":"FADE","date": ' + Date.now() + '}');
              })
      
          on({id: `${baseId}.rainbow`, ack: false},
              (obj) => {
                  setState(`${baseId}.rainbow`, {val: obj.state.val, ack: true});
                   ws.send('{"type":"function","value":4,"id":"Rainbow","date": ' + Date.now() + '}');
              })
      
          on({id: `${baseId}.push`, ack: false},
              (obj) => {
                  setState(`${baseId}.push`, {val: obj.state.val, ack: true});
                   ws.send('{"type":"function","value":5,"id":"Push","date": ' + Date.now() + '}');
              })
      
          on({id: `${baseId}.wave`, ack: false},
              (obj) => {
                  setState(`${baseId}.wave`, {val: obj.state.val, ack: true});
                   ws.send('{"type":"function","value":6,"id":"Wave","date": ' + Date.now() + '}');
              })
      
          on({id: `${baseId}.swipe`, ack: false},
              (obj) => {
                  setState(`${baseId}.swipe`, {val: obj.state.val, ack: true});
                   ws.send('{"type":"function","value":7,"id":"Swipe","date": ' + Date.now() + '}');
              })
      
          on({id: `${baseId}.cycles`, ack: false},
              (obj) => {
                  setState(`${baseId}.cycles`, {val: obj.state.val, ack: true});
                   ws.send('{"type":"function","value":8,"id":"Cycles","date": ' + Date.now() + '}');
              })
      
          on({id: `${baseId}.pictures`, ack: false},
              (obj) => {
                  setState(`${baseId}.pictures`, {val: obj.state.val, ack: true});
                   ws.send('{"type":"function","value":9,"id":"Pictures","date": ' + Date.now() + '}');
              })
      
          on({id: `${baseId}.random`, ack: false},
              (obj) => {
                  setState(`${baseId}.random`, {val: obj.state.val, ack: true});
                   ws.send('{"type":"function","value":10,"id":"Random","date": ' + Date.now() + '}');
              })
      
          on({id: `${baseId}.theater`, ack: false},
              (obj) => {
                  setState(`${baseId}.theater`, {val: obj.state.val, ack: true});
                   ws.send('{"type":"function","value":11,"id":"Theater","date": ' + Date.now() + '}');
              })
      
          on({id: `${baseId}.allRandom`, ack: false},
              (obj) => {
                  setState(`${baseId}.allRandom`, {val: obj.state.val, ack: true});
                   ws.send('{"type":"random","value":1,"id":"AllRandom","date": ' + Date.now() + '}');
              })
      
          on({id: `${baseId}.speed`, ack: false},
              (obj) => {
                  setState(`${baseId}.speed`, {val: obj.state.val, ack: true});
                   ws.send('{"type":"Slider","value":' + obj.state.val + ',"id":"Slider","date": ' + Date.now() + '}');
              })
      
          on({id: `${baseId}.color`, ack: false},
              (obj) => {
                  setState(`${baseId}.color`, {val: obj.state.val, ack: true});
                   ws.send('{"type":"color","value":' + obj.state.val + ',"date": ' + Date.now() + '}');
              })
      }
      
      
      async function createObjects() {
          // Geräte Objekt
          await setObject(baseId, {
              type: "device",
              common: {
                  name: "Lets Bastel LED Lampe",
                  desc: "https://www.youtube.com/watch?v=_dnkPRUN0KQ",
                  role: "",
                  icon: ""
              }
          })
      
          // Connected
          setObject(`${baseId}.connected`, {
              type: "state",
              common: {
                  name: "Verbunden",
                  role: "indicator",
                  type: "boolean",
                  read: true,
                  write: true,
                  def: false
              },
              native: {}
          })
      
          // An
          setObject(`${baseId}.on`, {
              type: "state",
              common: {
                  name: "Ein",
                  role: "button",
                  type: "boolean",
                  read: false,
                  write: true,
                  def: false
              },
              native: {}
          })
      
          // Aus
          setObject(`${baseId}.off`, {
              type: "state",
              common: {
                  name: "Aus",
                  role: "button",
                  type: "boolean",
                  read: false,
                  write: true,
                  def: false
              },
              native: {}
          })
      
          // Dunkler
          setObject(`${baseId}.dimDown`, {
              type: "state",
              common: {
                  name: "Dimmen Dunkler",
                  role: "button",
                  type: "boolean",
                  read: false,
                  write: true,
                  def: false
              },
              native: {}
          })
      
          // Heller
          setObject(`${baseId}.dimUp`, {
              type: "state",
              common: {
                  name: "Dimmen Heller",
                  role: "button",
                  type: "boolean",
                  read: false,
                  write: true,
                  def: false
              },
              native: {}
          })
      
          /*---- Effekte ----*/
          // Flash
          setObject(`${baseId}.flash`, {
              type: "state",
              common: {
                  name: "Effekt Flash",
                  role: "button",
                  type: "boolean",
                  read: false,
                  write: true,
                  def: false
              },
              native: {}
          })
      
          // Smooth
          setObject(`${baseId}.smooth`, {
              type: "state",
              common: {
                  name: "Effekt Smooth",
                  role: "button",
                  type: "boolean",
                  read: false,
                  write: true,
                  def: false
              },
              native: {}
          })
      
          // Fade
          setObject(`${baseId}.fade`, {
              type: "state",
              common: {
                  name: "Effekt Fade",
                  role: "button",
                  type: "boolean",
                  read: false,
                  write: true,
                  def: false
              },
              native: {}
          })
      
          // Rainbow
          setObject(`${baseId}.rainbow`, {
              type: "state",
              common: {
                  name: "Effekt Rainbow",
                  role: "button",
                  type: "boolean",
                  read: false,
                  write: true,
                  def: false
              },
              native: {}
          })
      
          // Push
          setObject(`${baseId}.push`, {
              type: "state",
              common: {
                  name: "Effekt Push",
                  role: "button",
                  type: "boolean",
                  read: false,
                  write: true,
                  def: false
              },
              native: {}
          })
      
          // Wave
          setObject(`${baseId}.wave`, {
              type: "state",
              common: {
                  name: "Effekt wave",
                  role: "button",
                  type: "boolean",
                  read: false,
                  write: true,
                  def: false
              },
              native: {}
          })
      
          // Swipe
          setObject(`${baseId}.swipe`, {
              type: "state",
              common: {
                  name: "Effekt swipe",
                  role: "button",
                  type: "boolean",
                  read: false,
                  write: true,
                  def: false
              },
              native: {}
          })
      
          // Cycles
          setObject(`${baseId}.cycles`, {
              type: "state",
              common: {
                  name: "Effekt Cycles",
                  role: "button",
                  type: "boolean",
                  read: false,
                  write: true,
                  def: false
              },
              native: {}
          })
      
          // Pictures
          setObject(`${baseId}.pictures`, {
              type: "state",
              common: {
                  name: "Effekt Pictures",
                  role: "button",
                  type: "boolean",
                  read: false,
                  write: true,
                  def: false
              },
              native: {}
          })
      
          // Random
          setObject(`${baseId}.random`, {
              type: "state",
              common: {
                  name: "Effekt Zufällig",
                  role: "button",
                  type: "boolean",
                  read: false,
                  write: true,
                  def: false
              },
              native: {}
          })
      
          // Theater
          setObject(`${baseId}.theater`, {
              type: "state",
              common: {
                  name: "Effekt Theater",
                  role: "button",
                  type: "boolean",
                  read: false,
                  write: true,
                  def: false
              },
              native: {}
          })
      
          // All Random
          setObject(`${baseId}.allRandom`, {
              type: "state",
              common: {
                  name: "Zufällig",
                  role: "button",
                  type: "boolean",
                  read: false,
                  write: true,
                  def: false
              },
              native: {}
          })
      
          // Slider
          setObject(`${baseId}.speed`, {
              type: "state",
              common: {
                  name: "Effekt Geschwindigkeit",
                  role: "level",
                  type: "number",
                  read: false,
                  write: true,
                  def: 500,
                  min: 10,
                  max: 1000
              },
              native: {}
          })
      
          // Color
          setObject(`${baseId}.color`, {
              type: "state",
              common: {
                  name: "Effekt Geschwindigkeit",
                  role: "state",
                  type: "number",
                  read: false,
                  write: true,
                  def: 3,
                  states: {
                      0: "Rot",
                      1: "Grün",
                      2: "Blau",
                      3: "Weiß",
                      4: "Rot 1",
                      5: "Grün 1",
                      6: "Blau 1",
                      7: "Rot 2",
                      8: "Grün 2",
                      9: "Blau 2",
                      10: "Rot 3",
                      11: "Grün 3",
                      12: "Blau 3",
                      13: "Rot 4",
                      14: "Grün 4",
                      15: "Blau 4"
                  }
              },
              native: {}
          })
      }
      
      da_Woody 1 Reply Last reply Reply Quote 2
      • da_Woody
        da_Woody @Jey Cee last edited by

        @jey-cee naja, schön, daß du dir die arbeit gemacht hast. allerdinx gibts da halt schon WLED, auch als adapter.
        was man in das dingens vom michl einbaut...
        https://www.youtube.com/watch?v=rrR0ZK5PIcI&t=6s vom OsLee540i

        liv-in-sky Jey Cee 2 Replies Last reply Reply Quote 1
        • liv-in-sky
          liv-in-sky @da_Woody last edited by

          @da_woody schaut ja nett aus, aber wielange hält man das aus, wenn diese lichter non-stop so durchblinken - wie bei ihm im video am schluß - kannst gleich den therapeuten anrufen und einen termin machen wegen plötzlich-unerklärbarer hyperaktivität 🙂

          da_Woody 1 Reply Last reply Reply Quote 1
          • Jey Cee
            Jey Cee Developer @da_Woody last edited by

            @da_woody sagte in Let's Bastel LED Lampe steuern:

            allerdinx gibts da halt schon WLED, auch als adapter.

            Das ist mir durchaus bewusst, benutze ich ja auch selbst.
            Aber das ist kein Grund das nicht zu machen.

            da_Woody 1 Reply Last reply Reply Quote 0
            • da_Woody
              da_Woody @liv-in-sky last edited by

              @liv-in-sky nuja, vor langer, langer zeit hats in der disco nicht genug blinken können... 😄
              muss ja nicht, kann aber.

              M 1 Reply Last reply Reply Quote 0
              • da_Woody
                da_Woody @Jey Cee last edited by

                @jey-cee sagte in Let's Bastel LED Lampe steuern:

                Aber das ist kein Grund das nicht zu machen.

                okido, klar, ist kein grund. ich dachte nur, weil das video doch schon einige jahre am buckel hat.

                1 Reply Last reply Reply Quote 0
                • M
                  Maxtor62 @da_Woody last edited by

                  @da_woody
                  wie werden alle älter👎 😊 😠

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate
                  FAQ Cloud / IOT
                  HowTo: Node.js-Update
                  HowTo: Backup/Restore
                  Downloads
                  BLOG

                  865
                  Online

                  31.9k
                  Users

                  80.2k
                  Topics

                  1.3m
                  Posts

                  4
                  7
                  496
                  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