Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. tim3trick

    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

    T
    • Profile
    • Following 0
    • Followers 0
    • Topics 0
    • Posts 9
    • Best 1
    • Groups 1

    tim3trick

    @tim3trick

    Starter

    2
    Reputation
    16
    Profile views
    9
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    tim3trick Follow
    Starter

    Best posts made by tim3trick

    • RE: HabPanel Color Picker Problem

      Moin, ich hatte die Tage das gleiche Problem wie du, deswegen will ich hier mal meine Lösung beschreiben.
      Zuerst habe ich einen neuen Datenpunkt angelegt (bei mir unter: "javascript.0.Helper.WohnzimmerDecke.LampeHSV"), dann ein Script gebaut das den Datenpunkt überwacht, den Wert konvertiert und in den richtigen Datenpunkt überträgt.

      In Einzelschritten:

      • den Adapter "Script Engine" installieren
      • den Datenpunkt ("javascript.0.Helper.WohnzimmerDecke.LampeHSV" oder einen beliebigen anderen, völlig egal) anlegen
      • Ein neues Script (Blockly) anlegen, ich habe es mal "livingRoomHSVWatcher" genannt, auch hier ist der Name eigentlich egal...
        Dort habe ich dann folgende Funktionalität hinterlegt:
        2baf80cc-23a9-4e23-ab30-c851f7f4634f-image.png
      • Jetzt im VIS / HabPanel den colorpicker auf den Datenpunkt "javascript.0.Helper.WohnzimmerDecke.LampeHSV" gehen lassen und fertig.

      Die Erklärung ist recht trivial: Die Funktion convertHSVToHex bekommt den Wert wie er im Datenpunkt steht, d.h. wie er im ColorPicker ausgewählt wurde, konvertiert ihn in einen Hex-Wert und schreibt ihn in den Datenpunkt "xxxx.Color" der Lampe (ausserdem wird er ausgegeben, ich glaube das kann raus 😄 )

      Wichtig ist halt, dass, wenn du meinen "Code" übernehmen willst, bei dir die Datenpunkte anpasst, spätestens mein zigbee Datenpunkt wird für dich nicht gehen ^^

      Hier die exportierten Blöcke: lightConverter.xml

      PS: Ich antworte, trotz Warnung wegen "veraltet" auf den Artikel, weil er das erste Suchergebnis bei Google ist, wenn man nach genau jenem Problem sucht 🙂

      posted in Visualisierung
      T
      tim3trick

    Latest posts made by tim3trick

    • RE: [Gelöst] Berechnung + Telegram, falsche Werte

      Ein Timeout würde auch reichen, oder @paul53 ?

      posted in Blockly
      T
      tim3trick
    • RE: [Frage] Wie ist der richtiger Umgang mit Callbacks?

      Zuerst das was @OliverW sagt, wenn der callback ausgeführt werden soll, musst du das auch mit

      callback(); //Klammern!
      

      machen.

      Dann darfst du im Teil

          fetchStates(
              fetchObjects(
                  fetchConfiguration()
              )
          );
      

      Nicht die "aufgerufenen Funktionen" d.h. ihre Ergebnisse übergeben, sondern lediglich die Referenz auf die Funktion:

      // rufe die fetchObjects Funktion auf und übergebe ihr die Funktion fetchConfiguration als Callback
        fetchObjects(
          fetchConfiguration
        )
      

      Deine Dreier-Kette würde dann so aussehen:

          fetchStates(fetchObjects.bind(null, fetchConfiguration));
      

      Hier wird zuerst eine "virtuelle Methode" erstellt, die das gleiche tut wie fetchObjects, mit dem scope=null und dem vorausgefüllten Parameter callback = fetchConfiguration (das ist fachlich falsch, aber als Erklärung in Ordnung, denke ich).
      Diese "virtuelle Methode" wird als Callback der fetchStates Funktion übergeben.
      Jetzt wird zuerst fetchStates ausgeführt, (wenn du den oben genannten Fix gemacht hast) die auf fetchObjects "virtuelle Methode" und dann im Anschluss fetchConfiguration.

      Nichtsdestotrotz rate ich dir aber, entweder mit Promises oder direkt async / await zu arbeiten, die machen dir das Leben viel leichter.
      Änderst du deine Methoden wie folgt ab:

      function fetchConfiguration(callback) {
          console.log('Fetching configuration');
          return new Promise((resolve, reject) => {
            servConn.getObject('system.adapter.homehub.0', false, function (error, obj) {
                if (error) {
                  return reject(error);
                }
                console.log('Received configuration.');
                config['categories'] = obj['native']['categories'];
                resolve();
            });
          });
      }
      function fetchObjects(callback) {
          return new Promise((resolve, reject) => {
            console.log('Fetching objects');
            servConn.getObjects(function (err, _objects) {
              	if (err) {
                  return reject(err);
                }
                console.log('Received objects.');
                config['objects'] = _objects;
                resolve();
            });
          });
      }
      function fetchStates(callback) {
          return new Promise((resolve, reject) => {
            console.log('Fetching states');
            servConn.getStates(function (err, _states) {
                if (err) {
                  return reject(err);
                }
                console.log('Received states.');
                config['states'] = _states;
                config.initiated = true;
                resolve();
            });
          });
      }
      

      kannst du sie so zusammen setzen:

      fetchStates()
        .then(fetchObjects)
        .then(fetchConfiguration)
        .then(() => { console.log("Done") }) //or something useful
        .catch(console.error) //or something useful
      

      bzw.

      //für await ist noch etwas vorarbeit erforderlich, aber die spare ich hier und heute aus
      await fetchStates();
      await fetchObjects();
      await fetchConfiguration();
      

      was alles viel viel lesbarer ist (und dir die Callback Hell erspart)

      posted in Entwicklung
      T
      tim3trick
    • RE: (Gelöst) Zeichenkette in Zahl umwandeln (Aqara/Deconz/Vibrationssensor/Winkel)

      Oder wir schummeln und casten den Wert implizit mit (""+obj.state.val) der implizite Cast bei console scheint ja zu klappen

      posted in Blockly
      T
      tim3trick
    • RE: (Gelöst) Zeichenkette in Zahl umwandeln (Aqara/Deconz/Vibrationssensor/Winkel)

      @paul53 interessehalber, wieso nicht?

      posted in Blockly
      T
      tim3trick
    • RE: (Gelöst) Zeichenkette in Zahl umwandeln (Aqara/Deconz/Vibrationssensor/Winkel)

      @muckel sollte obj.state nicht gesetzt sein, nimmt er den Leerstring, splitted ihn nach Komma und nimmt das zweite Element des Arrays, um das nach Float zu Parsen. Es gibt aber kein zweites Element, entweder ist das schon der Fehler, oder zumindest ein potentieller Bug.

      Alternative: als "Else" nimmst du "0,0,0"

      posted in Blockly
      T
      tim3trick
    • RE: (Gelöst) Zeichenkette in Zahl umwandeln (Aqara/Deconz/Vibrationssensor/Winkel)

      @muckel Deine Funktion "etwas_tun" erzeugt den Wert und returned dann 1.
      Soll das so?

      posted in Blockly
      T
      tim3trick
    • RE: Erstes Widget erstellt, von unterwegs nutzbar?

      Ich gehe via (Open)VPN in mein Heimnetzwerk und öffne HabPanel (alternativ VIS) im Browser 🙂 - ich brauche das VPN aber auch aus anderen Gründen, deswegen war das für mich der einfachste Weg.

      Du kannst aber auch den Cloud Adapter installieren und einrichten. Dazu gibt es folgendes Tutorial. Das ist zwar eigentlich gedacht um via Alexa dem ioBroker Anweisungen zu geben, aber als "Nebeneffekt" hast du dein VIS / HabPanel / etc hinterher auch via Cloud verfügbar.

      posted in Visualisierung
      T
      tim3trick
    • RE: Welche Alternativen zu VIS gibt es?

      Wie wäre es mit HabPanel? Oder hab ich die Frage falsch verstanden?

      posted in Visualisierung
      T
      tim3trick
    • RE: HabPanel Color Picker Problem

      Moin, ich hatte die Tage das gleiche Problem wie du, deswegen will ich hier mal meine Lösung beschreiben.
      Zuerst habe ich einen neuen Datenpunkt angelegt (bei mir unter: "javascript.0.Helper.WohnzimmerDecke.LampeHSV"), dann ein Script gebaut das den Datenpunkt überwacht, den Wert konvertiert und in den richtigen Datenpunkt überträgt.

      In Einzelschritten:

      • den Adapter "Script Engine" installieren
      • den Datenpunkt ("javascript.0.Helper.WohnzimmerDecke.LampeHSV" oder einen beliebigen anderen, völlig egal) anlegen
      • Ein neues Script (Blockly) anlegen, ich habe es mal "livingRoomHSVWatcher" genannt, auch hier ist der Name eigentlich egal...
        Dort habe ich dann folgende Funktionalität hinterlegt:
        2baf80cc-23a9-4e23-ab30-c851f7f4634f-image.png
      • Jetzt im VIS / HabPanel den colorpicker auf den Datenpunkt "javascript.0.Helper.WohnzimmerDecke.LampeHSV" gehen lassen und fertig.

      Die Erklärung ist recht trivial: Die Funktion convertHSVToHex bekommt den Wert wie er im Datenpunkt steht, d.h. wie er im ColorPicker ausgewählt wurde, konvertiert ihn in einen Hex-Wert und schreibt ihn in den Datenpunkt "xxxx.Color" der Lampe (ausserdem wird er ausgegeben, ich glaube das kann raus 😄 )

      Wichtig ist halt, dass, wenn du meinen "Code" übernehmen willst, bei dir die Datenpunkte anpasst, spätestens mein zigbee Datenpunkt wird für dich nicht gehen ^^

      Hier die exportierten Blöcke: lightConverter.xml

      PS: Ich antworte, trotz Warnung wegen "veraltet" auf den Artikel, weil er das erste Suchergebnis bei Google ist, wenn man nach genau jenem Problem sucht 🙂

      posted in Visualisierung
      T
      tim3trick
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo