Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread)

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread)

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

      @Siko @da_Woody @metaxa

      Soo... Ihr wollt wissen, woher die Datenpunkte für die Instanzen kommen - nun gut: Einige Datenpunkte sind total einfach unter system.adapter.[adaptername].[instanz] zu finden, aber das kennt ihr alle bestimmt.

      Screenshot 2021-07-31 135323.png

      Die Logeinträge bekomme ich aus dem Logparser, aber das ist bestimmt auch nicht das Problem.

      Screenshot 2021-07-31 135536.png

      Ihr wollt bestimmt wissen, woher ich die Versionen der installierte Adapter usw. haben... Dafür habe ich ein Javascript gebaut. Das Ding läuft bei mir 2 mal am Tag (02:35 und 14:35) und holt sich alle Daten aus dem Netz. Man muss nur noch die installierte Adaptern und den Host-Link angeben.

      const semver = require('semver');
      
      /** AB HIER BEARBEITEN */
      
      //Bezeichung der installierte Adaptern
      const installierteAdapter = ["js-controller", "admin", "info"];
      //Den richtigen Host angeben
      const controller = "system.host.prod-ioBroker";
      
      schedule("35 2,14 * * *", function () {    
          doIt();
      });
      
      /** AB HIER NICHTS MEHR MACHEN*/
      
      async function doIt(){
          await startInstanzenRead();
          await wait(10000);
          checkUpdate();
      }
      
      function getPosition(string, subString, index) {
        return string.split(subString, index).join(subString).length;
      }
      
      async function startInstanzenRead(){
          try {
              require("request")('https://raw.githubusercontent.com/ioBroker/ioBroker.repositories/master/sources-dist-stable.json', async function (error, response, result) {
                  const stableList = (function () { try {return JSON.parse(result);} catch(e) {return {};}})();            
                  installierteAdapter.forEach(async function(adapter) {
      
                      //stable version
                      createState("0_userdata.0.Instanzen.stable." + adapter, async function () {
                          setState("0_userdata.0.Instanzen.stable." + adapter, stableList[adapter]?stableList[adapter].version:"not stable", true);
                      });
                      
                      //latest version
                      try {
                          require("request")('https://api.npms.io/v2/package/iobroker.' + adapter, async function (error, response, result) {
                              const latestList = (function () { try {return JSON.parse(result);} catch(e) {return {};}})();
                              createState("0_userdata.0.Instanzen.latest." + adapter, async function () {
                                  setState("0_userdata.0.Instanzen.latest." + adapter, latestList.collected.metadata.version, true);
                              });
                          }).on("error", function (e) {console.error(e);});
                      } catch (e) { console.error(e); }
                      
      
                      //installed version
                      getObject (adapter === "js-controller" ? controller : 'system.adapter.' + adapter + '.0', async function (err, obj) {
                          createState("0_userdata.0.Instanzen.installiert." + adapter, async function () {
                              setState("0_userdata.0.Instanzen.installiert." + adapter, adapter === "js-controller" ? obj.common.installedVersion : obj.common.version, true);
                              //github version
                              let lastestLink;
                              if(adapter === "js-controller"){
                                  lastestLink = "https://raw.githubusercontent.com/ioBroker/ioBroker.js-controller/master/io-package.json";
                              }else{
                                  lastestLink = obj.common.extIcon;
                                  lastestLink = lastestLink.slice(0, getPosition(lastestLink, "/", 6) + 1);
                                  lastestLink = lastestLink + "io-package.json";
                              }
                              try {
                                  require("request")(lastestLink, async function (error, response, result) {
                                      const gitList = (function () { try {return JSON.parse(result);} catch(e) {return {};}})();
                                      createState("0_userdata.0.Instanzen.github." + adapter, async function () {
                                          setState("0_userdata.0.Instanzen.github." + adapter, gitList.common.version, true);
                                      });
                                  }).on("error", function (e) {console.error(e);});
                              } catch (e) { console.error(e); }   
                          });
                      });
      
                  });
              }).on("error", function (e) {console.error(e);});
          } catch (e) { console.error(e); }    
      };
      
      async function checkUpdate(){
      
          installierteAdapter.forEach(async function(adapter) {
              const installed = getState("0_userdata.0.Instanzen.installiert." + adapter).val;
              const stableVersion = getState("0_userdata.0.Instanzen.stable." + adapter).val;
              const latestVersion = getState("0_userdata.0.Instanzen.latest." + adapter).val;
              const githubVersion = getState("0_userdata.0.Instanzen.github." + adapter).val;
      
              //gibt es ein Update?
              if (installed != stableVersion && installed != latestVersion && installed != githubVersion) {
                  createState("0_userdata.0.Instanzen.installiert." + adapter + "-update", async function () {
                      setState("0_userdata.0.Instanzen.installiert." + adapter + "-update", '#009900', true);                
                      //welche Version kann installiert werden?
                      createState("0_userdata.0.Instanzen.installiert." + adapter + "-update-version", async function () {
                          let updateVersion = "";
                          try{semver.lt(installed, stableVersion) && (updateVersion = stableVersion)} catch (e) {}
                          if(updateVersion === ""){
                              try{semver.lt(installed, latestVersion) && (updateVersion = latestVersion)} catch (e) {}
                          }
                          if(updateVersion === ""){
                              try{semver.lt(installed, githubVersion) && (updateVersion = githubVersion)} catch (e) {}
                          }    
                          
                          setState("0_userdata.0.Instanzen.installiert." + adapter + "-update-version", updateVersion, true);
                      });
                  });
              } else {
                  createState("0_userdata.0.Instanzen.installiert." + adapter + "-update", async function () {
                      setState("0_userdata.0.Instanzen.installiert." + adapter + "-update", '', true);
                      createState("0_userdata.0.Instanzen.installiert." + adapter + "-update-version", async function () {
                          setState("0_userdata.0.Instanzen.installiert." + adapter + "-update-version", "", true);
                      });
                  });
              }
      
              //ist Adapter in eine nicht stable Version installiert?
              try{
                  if(semver.gt(installed, stableVersion)){
                      createState("0_userdata.0.Instanzen.installiert." + adapter + "-beta", async function () {
                          setState("0_userdata.0.Instanzen.installiert." + adapter + "-beta", true, true);
                      });
                  }else{
                      createState("0_userdata.0.Instanzen.installiert." + adapter + "-beta", async function () {
                          setState("0_userdata.0.Instanzen.installiert." + adapter + "-beta", false, true);
                      });
                  }
              } catch (e) { 
                  createState("0_userdata.0.Instanzen.installiert." + adapter + "-beta", async function () {
                      setState("0_userdata.0.Instanzen.installiert." + adapter + "-beta", true, true);
                  });
              }
              
          });
      
      }
      
      doIt();
      

      Alle Ergebnisse werden dann unter 0_userdata.0.Instanzen gepeichert:

      Screenshot 2021-07-31 140547.png

      da_Woody K ldittmar 3 Replies Last reply Reply Quote 5
      • da_Woody
        da_Woody @ldittmar last edited by

        @ldittmar 👍 ok, ich muss gestehn, mit dem logparser hab ich micht noch nicht wirklich beschäftigt...
        werd mich da wohl bissl schlau machen müssen. 🙄

        1 Reply Last reply Reply Quote 0
        • K
          Kueppert @ldittmar last edited by

          @ldittmar
          kannst du das Skript ggf noch als txt mit anhängen? Copy-Paste mit den Browsern macht bei dem einen oder anderen Probleme...mir zB ^^

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

            @kueppert mit chrome gibts eigentlich keine probs... FF fügt leerzeilen ein. bitteschön...
            instanzen.txt

            1 Reply Last reply Reply Quote 1
            • ldittmar
              ldittmar Developer @ldittmar last edited by

              @da_Woody @Kueppert @SiKo @metaxa

              Ich hatte ein Denkfehler im JS Code. Habe es oben gefixt - Es ging um die Versionsnummer des vorhandenen Updates. Jetzt stimmt alles 🙂 - hoffe ich 🤣

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

                @ldittmar öchl, hab jetzt mal alle instanzen eingetragen 🤕 , gestartet und bekomm:

                13:58:00.133	error	javascript.0 (440) script.js.common.iQontrol.Instanzen: TypeError: Cannot read property 'metadata' of undefined
                13:58:00.134	error	javascript.0 (440) at Immediate.<anonymous> (script.js.common.iQontrol.Instanzen:42:103)
                13:58:00.145	error	javascript.0 (440) script.js.common.iQontrol.Instanzen: TypeError: Cannot read property 'metadata' of undefined
                13:58:00.146	error	javascript.0 (440) at Immediate.<anonymous> (script.js.common.iQontrol.Instanzen:42:103)
                13:58:00.148	error	javascript.0 (440) script.js.common.iQontrol.Instanzen: TypeError: Cannot read property 'metadata' of undefined
                13:58:00.148	error	javascript.0 (440) at Immediate.<anonymous> (script.js.common.iQontrol.Instanzen:42:103)
                13:58:00.307	error	javascript.0 (440) script.js.common.iQontrol.Instanzen: TypeError: Cannot read property 'version' of undefined
                13:58:00.308	error	javascript.0 (440) at Immediate.<anonymous> (script.js.common.iQontrol.Instanzen:65:105)
                

                einträge sind aber vorhanden...
                ddcaab26-173c-42ac-9350-c705378fcc47-grafik.png

                ldittmar 1 Reply Last reply Reply Quote 0
                • ldittmar
                  ldittmar Developer @da_Woody last edited by

                  @da_woody Mein Hauptsystem läuft auf stable - da kommen keine Fehlermeldungen. Ich lasse mein Script mal auf dem Testsystem laufen und werde wahrscheinlich die gleiche Meldungen bekommen. Mit JS-Controller 3.3.x hat sich bestimmt was geändert... ich schaue mal nach 🙂

                  da_Woody 1 Reply Last reply Reply Quote 1
                  • da_Woody
                    da_Woody @ldittmar last edited by

                    @ldittmar kein stress, ist auch der einzige fehler. bei mir ist alles auf latest...
                    welches gerät verwendest du eigentlich zur anzeige? denk mal schalter...
                    uff, die ganzen logos muss ich ja auch reinoperieren...

                    ldittmar 1 Reply Last reply Reply Quote 0
                    • ldittmar
                      ldittmar Developer @da_Woody last edited by

                      @da_woody Jepp... sind Schalter und ja... die ganze Icons müssen noch rein. Aber das Kopieren der einzelnen Kacheln wird bald viel einfacher werden...

                      https://github.com/sbormann/ioBroker.iqontrol/issues/193

                      Dann wird es viel schneller gehen... 🙂

                      ldittmar81 created this issue in sbormann/ioBroker.iqontrol

                      closed Die Möglichkeit was zu Ersetzen beim Kopieren von Geräte #193

                      1 Reply Last reply Reply Quote 1
                      • da_Woody
                        da_Woody @ldittmar last edited by

                        @ldittmar sagte in Test Adapter iQontrol 1.8.x Vis:

                        Was ich noch gerne hätte, ist dass die aktuell installierte Adapter-Version auf dem Kachel angezeigt wird, aber nicht in INFO-A oder B, sondern irgendwo anders. Von mir aus unten rechts oder hinter der Bezeichnung. Egal... Hat jemand eine Idee?

                        hab gerade was probiert bei den ersten spielerien... state wird ja nicht gebraucht...
                        6d65856a-985f-469e-99e2-20edcd51a0b9-grafik.png
                        im badge die installierte version und im state die latest

                        s.bormann 1 Reply Last reply Reply Quote 0
                        • s.bormann
                          s.bormann Most Active @da_Woody last edited by

                          @da_woody sagte in Test Adapter iQontrol 1.8.x Vis:

                          @ldittmar sagte in Test Adapter iQontrol 1.8.x Vis:

                          Was ich noch gerne hätte, ist dass die aktuell installierte Adapter-Version auf dem Kachel angezeigt wird, aber nicht in INFO-A oder B, sondern irgendwo anders. Von mir aus unten rechts oder hinter der Bezeichnung. Egal... Hat jemand eine Idee?

                          hab gerade was probiert bei den ersten spielerien... state wird ja nicht gebraucht...
                          6d65856a-985f-469e-99e2-20edcd51a0b9-grafik.png
                          im badge die installierte version und im state die latest

                          Oder im Badge die latest, falls die größer ist, also die isntallierte?

                          da_Woody M 2 Replies Last reply Reply Quote 0
                          • da_Woody
                            da_Woody @s.bormann last edited by da_Woody

                            @s-bormann naja, kann man ja machen wie man will... 🙂

                            gibts eigentlich eine logo sammlung der adapter?

                            1 Reply Last reply Reply Quote 0
                            • M
                              muuulle @s.bormann last edited by

                              @s-bormann
                              Moin,
                              als ich las, dass JSON jetzt als Tabelle ausgeben werden kann, wollte ich direkt das Update machen. Leider findet iQontrol den Web Adapter nicht mehr. Jetzt auch bei 1.7.3 🤔

                              Hast du eine Idee, was ich machen kann?

                              Danke für einen Ansatz!

                              s.bormann 1 Reply Last reply Reply Quote 0
                              • s.bormann
                                s.bormann Most Active @muuulle last edited by s.bormann

                                @muuulle sagte in Test Adapter iQontrol 1.8.x Vis:

                                @s-bormann
                                Moin,
                                als ich las, dass JSON jetzt als Tabelle ausgeben werden kann, wollte ich direkt das Update machen. Leider findet iQontrol den Web Adapter nicht mehr. Jetzt auch bei 1.7.3 🤔

                                Hast du eine Idee, was ich machen kann?

                                Danke für einen Ansatz!

                                Nutzt Du Safari? Damit gehts aktuell nicht. (Betrifft nur das Backend zur Konfiguration, das FrontEnd sollte laufen).

                                M 1 Reply Last reply Reply Quote 0
                                • M
                                  muuulle @s.bormann last edited by

                                  @s-bormann
                                  Ok. Bis gestern hat’s aber noch funktioniert. Liegt’s an 14.7.1? 🤔

                                  s.bormann 1 Reply Last reply Reply Quote 0
                                  • s.bormann
                                    s.bormann Most Active @muuulle last edited by

                                    @muuulle sagte in Test Adapter iQontrol 1.8.x Vis:

                                    @s-bormann
                                    Ok. Bis gestern hat’s aber noch funktioniert. Liegt’s an 14.7.1? 🤔

                                    Genau kann ich es nicht sagen, aber der Fehler wurde hier https://forum.iobroker.net/post/624324 ebenfalls berichtet. Ich kam mit der Lösung damals leider nicht weiter, aber das admin-Team ist dran.

                                    M 1 Reply Last reply Reply Quote 1
                                    • M
                                      muuulle @s.bormann last edited by

                                      @s-bormann
                                      Kann ich nachvollziehen. Unter Firefox funktioniert es. Es kommt ein Hinweis, dass in Teilen der Admin Adapter in Version 5.06 erforderlich ist, aber bisher keine Einschränkungen festgestellt.

                                      Ich bin noch mit dem 4er Admin Adapter unterwegs 😬

                                      s.bormann 1 Reply Last reply Reply Quote 0
                                      • S
                                        SiKo @Peks200 last edited by

                                        Hi @peks-67

                                        hab das sehr ähnlich gelöst. Bin aber mit ein paar Kleinigkeiten noch nicht zufrieden. Würdest du dein Blockly Script zur Verfügung stellen?

                                        Gruß SiKo

                                        dslraser 1 Reply Last reply Reply Quote 0
                                        • dslraser
                                          dslraser Forum Testing Most Active @SiKo last edited by

                                          @siko sagte in Test Adapter iQontrol 1.8.x Vis:

                                          Hi @peks-67

                                          hab das sehr ähnlich gelöst. Bin aber mit ein paar Kleinigkeiten noch nicht zufrieden. Würdest du dein Blockly Script zur Verfügung stellen?

                                          Gruß SiKo

                                          Meinst Du das Blockly zur Bewässerung ?
                                          Hat er hier gepostet (Teile davon)

                                          https://forum.iobroker.net/post/655395

                                          S 1 Reply Last reply Reply Quote 0
                                          • S
                                            SiKo @dslraser last edited by

                                            @dslraser said in Test Adapter iQontrol 1.8.x Vis:

                                            @siko sagte in Test Adapter iQontrol 1.8.x Vis:

                                            Hi @peks-67

                                            hab das sehr ähnlich gelöst. Bin aber mit ein paar Kleinigkeiten noch nicht zufrieden. Würdest du dein Blockly Script zur Verfügung stellen?

                                            Gruß SiKo

                                            Meinst Du das Blockly zur Bewässerung ?
                                            Hat er hier gepostet (Teile davon)

                                            https://forum.iobroker.net/post/655395

                                            Danke! 🙂

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            478
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            app dark-mode iqontrol responsive vis visualisierung visualization widget
                                            295
                                            7633
                                            5788867
                                            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