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

  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread)

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.3k

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

Geplant Angeheftet Gesperrt Verschoben Tester
appdark-modeiqontrolresponsivevisvisualisierungvisualizationwidget
7.6k Beiträge 296 Kommentatoren 7.0m Aufrufe 201 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 Peks200

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

    @s-bormann said in Test Adapter iQontrol 1.8.x Vis:

    @peks-67 sagte in Test Adapter iQontrol 1.8.x Vis:

    Hi zusammen,

    ich bastle mir gerade eine automatisierte Bewässerung.

    Nun möchte ich natürlich die Startzeit in iQontrol festlegen um welche Uhrzeit bewässert werden soll.
    Funktioniert soweit auch schon. Nur wollte ich frage ob es in iQontrol möglich ist die Uhrzeit mit einem Slider oder Rad oder ähnlichen einzustellen.
    Aktuell muss ich die Zeit von Hand eingeben und auf Absenden klicken.

    Der Datenpunkt ist als state / Time festgelegt.

    Vllt. hatte das Thema ja schon jemand. Finden konnte ich im Forum allerdings nichts :blush:

    a365b4f0-2a65-444f-914d-fed9ab346831-image.png

    Hi, mit der aktuellen Version sollte Date, Time und Durations eigentlich gehen. Es gibt ein eigenes Gerät dafür.

    B32CEBD6-CA74-4F28-BF3C-14E6118A4AB7.jpeg

    https://github.com/sbormann/ioBroker.iqontrol#-date-and-time

    VG!

    Moin,
    bitte beachten, dass der max. Wert des Datenpunkts der Zeit nicht beschränkt ist. Ansonsten funktioniert das nicht und der Wert des Datenpunkts wird auf 1 gesetzt.

    Gruß

    Sehr geil und so einfach umzustellen DANKE :grinning:

    61ebe85e-4ad1-4300-baab-046fe075cedc-image.png

    @SiKo

    Ich nutze das Gardena System. Habe die Steuerung jetzt aber komplett über Blockly Scripte und Datenpunkte gelöst da mir die Gardena eigene App nicht wirklich zusagt.
    Für meine drei Bewässerungskreise sieht das im iQontrol nun so aus.
    fb55320f-9a3c-4f42-96f9-14f62162fd66-image.png

    Wenn ich auf das Bewässerungsicon gehe kommt das Fenster:
    5bba2c25-b80b-4bc9-a845-435cf8212af6-image.png

    Und wenn ich auf Automatik gehe kommt dieses:

    Hier ist dann alles einstellbar :)
    554edabf-bf2d-4631-8b6e-8e0b235e8309-image.png

    C Offline
    C Offline
    Cino
    schrieb am zuletzt editiert von
    #5545

    @peks-67 sieht top aus. Sowas könnte ich für meine Poolpumpe gebrauchen. Gerade läuft das alles mit den Timern noch über die Shelly App

    IOB@RPI4
    Shelly, Zigbee, ebus

    S 1 Antwort Letzte Antwort
    0
    • C Cino

      @peks-67 sieht top aus. Sowas könnte ich für meine Poolpumpe gebrauchen. Gerade läuft das alles mit den Timern noch über die Shelly App

      S Offline
      S Offline
      SiKo
      schrieb am zuletzt editiert von
      #5546

      @cino
      geht auch mit Shelly: https://forum.iobroker.net/post/654895

      C 1 Antwort Letzte Antwort
      0
      • S SiKo

        @cino
        geht auch mit Shelly: https://forum.iobroker.net/post/654895

        C Offline
        C Offline
        Cino
        schrieb am zuletzt editiert von
        #5547

        @siko und die Zeit ist einfach eine Variable die im Blockly als Ausschaltverzögerung dient?

        Und für die Wochentage einfach eine Variable setzen und mit einer Und Verknüpfung auf die Switch Variable vom Shelly? Ist das so richtig?

        Ich habe es gestern mit ach und krach gerade mal geschafft in blockly eine Lampe durch einen Bewegungsmelder zuschalten.

        IOB@RPI4
        Shelly, Zigbee, ebus

        1 Antwort Letzte Antwort
        0
        • P Peks200

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

          @peks-67 sagte in Test Adapter iQontrol 1.8.x Vis:

          Ich nutze das Gardena System. Habe die Steuerung jetzt aber komplett über Blockly Scripte und Datenpunkte gelöst da mir die Gardena eigene App nicht wirklich zusagt.
          Für meine drei Bewässerungskreise sieht das im iQontrol nun so aus.

          Welches Gardena Systen nutzt Du ?

          Ich nutze das Gardena Gateway mit Irrigation Control und V3 Ventilbox.
          Lässt sich über den Adapter "smartgarden"
          im iobroker steuern.

          dslraserD Offline
          dslraserD Offline
          dslraser
          Forum Testing Most Active
          schrieb am zuletzt editiert von dslraser
          #5548

          @peks-67 sagte in Test Adapter iQontrol 1.8.x Vis:

          Ich nutze das Gardena Gateway mit Irrigation Control und V3 Ventilbox.
          Lässt sich über den Adapter "smartgarden"
          im iobroker steuern.

          Ah okay, das nutze ich auch.
          Ich habe das auch über Blockly laufen, allerdings nicht über Uhrzeiten gesteuert.
          Ich habe mir Deine Screenshots nochmal genauer angesehen und verstehe jetzt auch was Du mit automatik meinst. Da Du für die einzelnen Kreise unterschiedliche Zeiten hast funktioniert das ja auch. (Gehen ja immer max 2 Kreise gleichzeitig)
          Ich hatte für mich einen etwas anderen Ansatz. Ich habe vier Ventile drann und kann die entweder einzeln steuern, oder alle nacheinander.
          Z.B. Gesamtlaufzeit soll 80 Minuten sein, dann läuft alles brav nacheinander jeweils 20 Minuten.
          Vielleicht kannst Du mal hier

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

          Deine Blocklys posten, das wäre interessant für mich.
          (mein Blockly habe ich auch etwas angepasst, da Gardena die max Laufzeiten der Ventile erhöht hat, das waren mal max 59 Minuten)
          Bei meiner Variante funktioniert die Steuerung sowohl über die Gardena App, oder über iQontrol. Es wird immer ä, wenn gewünscht in beiden angezeigt. Meine Frau nimmt die App, ich nehme lieber iQontrol.

          Screenshot_20210723-145427_Chrome.jpg

          1 Antwort Letzte Antwort
          0
          • S Offline
            S Offline
            SiKo
            schrieb am zuletzt editiert von
            #5549

            @cino Ich fülle per VIS/Blockly den Shelly Datenpunkt "Auto Off" somit ist sicher auch wenn sich mal das Script aufhängen würde, das der Shelly stopt.
            Ich nutze dazu einen eigenen Datenpunkt für Minuten und nehme das mit 60 mal und trage das dann bei Shelly ein.

            85d4fcba-9751-431d-80b9-bf8a54df4d89-image.png

            1 Antwort Letzte Antwort
            0
            • M Offline
              M Offline
              meerkat
              schrieb am zuletzt editiert von
              #5550

              Hi an alle,
              man kann für das Media Element ja so schön die Sender hinterlegen
              3659c344-137b-429a-b15c-1dc0a1af5271-image.png
              und das alles über die Eigenschaft RemoteChannels pflegen. 85aee5af-92c1-4cbd-b866-eb1650827cef-image.png

              Kann man das Array auch irgendwie kopieren oder da auch einen Datenpunkt hinterlegen? Habe mehrere Alexa´s und nicht wirklich Lust, bei jedem neuen Sender alle Geräte durchzugehen.

              Gruß

              da_WoodyD ldittmarL 2 Antworten Letzte Antwort
              0
              • M meerkat

                Hi an alle,
                man kann für das Media Element ja so schön die Sender hinterlegen
                3659c344-137b-429a-b15c-1dc0a1af5271-image.png
                und das alles über die Eigenschaft RemoteChannels pflegen. 85aee5af-92c1-4cbd-b866-eb1650827cef-image.png

                Kann man das Array auch irgendwie kopieren oder da auch einen Datenpunkt hinterlegen? Habe mehrere Alexa´s und nicht wirklich Lust, bei jedem neuen Sender alle Geräte durchzugehen.

                Gruß

                da_WoodyD Online
                da_WoodyD Online
                da_Woody
                schrieb am zuletzt editiert von
                #5551

                @meerkat wenn ich dich richtig verstehe, dann kopier doch das gerät in den raum wo soll und ändere dort die daten der schnepfe...

                gruß vom Woody
                HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                1 Antwort Letzte Antwort
                0
                • S Offline
                  S Offline
                  SiKo
                  schrieb am zuletzt editiert von
                  #5552

                  Hallo,
                  hat jemand von euch sein Auto mit eingebunden.
                  hab noch keine genaue Vorstellung wie ich diese Infos am Besten visualisieren könnte.

                  a2eb29cb-d818-4eaa-968b-02cef8681c56-image.png

                  1 Antwort Letzte Antwort
                  0
                  • s.bormannS Offline
                    s.bormannS Offline
                    s.bormann
                    Most Active
                    schrieb am zuletzt editiert von
                    #5553

                    Habe mal das schlechte Wetter im Urlaub genutzt :)
                    Beim FLOT-Widget kann man nun die Achsen konfigurieren:
                    9cd1851e-6db4-4012-9f6e-33b939fedddd-image.png

                    1.8.1 (2021-07-28)

                    • (sbormann) Some design-adjustments for react-ui.
                    • (sbormann) Keep track of ioBroker object changes in admin.
                    • (sbormann) Fixed crash if active view has no devices.
                    • (sbormann) Removed old conn.js from admin.
                    • (Einstein2002, sbormann) Added HomematicIP-Thermostat.
                    • (sbormann) Enhanced max-height of dialog.
                    • (sbormann) Fixed up, down and stop button for blinds.
                    • (sbormann) Changed some log messages.
                    • (sbormann) Enhanced FLOT-Chart-Widget to set axis options.
                    ldittmarL 1 Antwort Letzte Antwort
                    8
                    • s.bormannS s.bormann

                      Habe mal das schlechte Wetter im Urlaub genutzt :)
                      Beim FLOT-Widget kann man nun die Achsen konfigurieren:
                      9cd1851e-6db4-4012-9f6e-33b939fedddd-image.png

                      1.8.1 (2021-07-28)

                      • (sbormann) Some design-adjustments for react-ui.
                      • (sbormann) Keep track of ioBroker object changes in admin.
                      • (sbormann) Fixed crash if active view has no devices.
                      • (sbormann) Removed old conn.js from admin.
                      • (Einstein2002, sbormann) Added HomematicIP-Thermostat.
                      • (sbormann) Enhanced max-height of dialog.
                      • (sbormann) Fixed up, down and stop button for blinds.
                      • (sbormann) Changed some log messages.
                      • (sbormann) Enhanced FLOT-Chart-Widget to set axis options.
                      ldittmarL Offline
                      ldittmarL Offline
                      ldittmar
                      Developer
                      schrieb am zuletzt editiert von
                      #5554

                      Hi,

                      ich bin gerade dabei meine Instanzen ins iQontrol zu packen:

                      29-07-_2021_15-30-12.png

                      Dabei werden Adapter die aktualisiert werden können grün dargestellt, CPU und RAM werden angezeigt und oben ein Badge mit Anzahl der Logmeldungen (warn/error)

                      Wenn man es öffnet...

                      29-07-_2021_15-33-05.png

                      ...kann man Adapter ein-/ausschalten, Logeinträge löschen, die aktuellen Versionen (installiert, stable, latest und auf Github) sehen und die letzten 100 Logeinträge (warn/error) lesen.

                      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?

                      Und wenn ich schon dabei bin: Hat jemand noch eine Idee man noch als Info oder Funktion zu den Instanzen hinzufügen kann? Ich will mein Template fertig machen, bevor ich alle Instanzen hinzufüge :smirk:

                      S da_WoodyD 2 Antworten Letzte Antwort
                      2
                      • da_WoodyD Online
                        da_WoodyD Online
                        da_Woody
                        schrieb am zuletzt editiert von
                        #5555

                        @ldittmar mir fällt im mom nichts besseres ein, als eventuell Badge für die Version zu nehmen, oder CPU und RAM in InfoA als Arrey zu packen, dann wäre InfoB frei für Version.

                        gruß vom Woody
                        HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                        ldittmarL 1 Antwort Letzte Antwort
                        0
                        • M meerkat

                          Hi an alle,
                          man kann für das Media Element ja so schön die Sender hinterlegen
                          3659c344-137b-429a-b15c-1dc0a1af5271-image.png
                          und das alles über die Eigenschaft RemoteChannels pflegen. 85aee5af-92c1-4cbd-b866-eb1650827cef-image.png

                          Kann man das Array auch irgendwie kopieren oder da auch einen Datenpunkt hinterlegen? Habe mehrere Alexa´s und nicht wirklich Lust, bei jedem neuen Sender alle Geräte durchzugehen.

                          Gruß

                          ldittmarL Offline
                          ldittmarL Offline
                          ldittmar
                          Developer
                          schrieb am zuletzt editiert von ldittmar
                          #5556

                          @meerkat Das wäre wirklich gut, denn ich habe 9 Alexas schon fetig eingestellt und es wäre echt cool, wenn ich diese Arrays einfach rein pasten könnte. Und nochmal kurz die Frage: Wie hast du das gemacht, dass man auf dem Button klickt und Alexa darauf reagiert bzw den richtigen Sender auswählt?

                          dslraserD M 2 Antworten Letzte Antwort
                          0
                          • da_WoodyD da_Woody

                            @ldittmar mir fällt im mom nichts besseres ein, als eventuell Badge für die Version zu nehmen, oder CPU und RAM in InfoA als Arrey zu packen, dann wäre InfoB frei für Version.

                            ldittmarL Offline
                            ldittmarL Offline
                            ldittmar
                            Developer
                            schrieb am zuletzt editiert von
                            #5557

                            @da_woody Ja... ich habe es jetzt so gelöst, dass ich die CPU in den "Weiteren Infos" gepackt habe und dafür die aktuell installierte Version in Info A rein. Dann habe ich noch den ERROR Icon missbraucht um anzuzeigen, falls ein Adapter nicht auf Stable läuft (hab ein paar Adapter, die auf Latest laufen). Ich wollte noch, bei möglichen Updates, dass die mögliche Version noch angezeigt wird. Diese würde ich dann auch zu Info A packen, nur dass das Feld meistens leer ist, denn meistens sind die Adapter Uptodate. Es müsste also so sein, dass wenn der Wert eines Feldes leer ist, die Info nicht angezeigt wird.

                            30-07-_2021_16-42-54.png

                            Aber so langsam wirds... :-)

                            da_WoodyD 1 Antwort Letzte Antwort
                            1
                            • ldittmarL ldittmar

                              Hi,

                              ich bin gerade dabei meine Instanzen ins iQontrol zu packen:

                              29-07-_2021_15-30-12.png

                              Dabei werden Adapter die aktualisiert werden können grün dargestellt, CPU und RAM werden angezeigt und oben ein Badge mit Anzahl der Logmeldungen (warn/error)

                              Wenn man es öffnet...

                              29-07-_2021_15-33-05.png

                              ...kann man Adapter ein-/ausschalten, Logeinträge löschen, die aktuellen Versionen (installiert, stable, latest und auf Github) sehen und die letzten 100 Logeinträge (warn/error) lesen.

                              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?

                              Und wenn ich schon dabei bin: Hat jemand noch eine Idee man noch als Info oder Funktion zu den Instanzen hinzufügen kann? Ich will mein Template fertig machen, bevor ich alle Instanzen hinzufüge :smirk:

                              S Offline
                              S Offline
                              SiKo
                              schrieb am zuletzt editiert von
                              #5558

                              @ldittmar schick gemacht 👍.
                              Hab versucht das ähnlich abzubilden.
                              Habe aber nicht alle Informationen gefunden. Oder zumindest nicht in der Form.
                              Über welche Datenpunkte gehst du hier?

                              1 Antwort Letzte Antwort
                              0
                              • ldittmarL ldittmar

                                @meerkat Das wäre wirklich gut, denn ich habe 9 Alexas schon fetig eingestellt und es wäre echt cool, wenn ich diese Arrays einfach rein pasten könnte. Und nochmal kurz die Frage: Wie hast du das gemacht, dass man auf dem Button klickt und Alexa darauf reagiert bzw den richtigen Sender auswählt?

                                dslraserD Offline
                                dslraserD Offline
                                dslraser
                                Forum Testing Most Active
                                schrieb am zuletzt editiert von dslraser
                                #5559

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

                                dass man auf dem Button klickt und Alexa darauf reagiert bzw den richtigen Sender auswählt?

                                ich habe mir eigene Datenpunkte als Button angelegt, die sind wiederum in iot eingefügt. Ich schalte meine Sender über zwei VU. iQontrol als Fernbedienung und Alexa als Sprachbedienung zum Sender schalten (auch Lautstärke/Menüs der VU's usw)

                                Bildschirmfoto 2021-07-30 um 16.48.14.png

                                Bildschirmfoto 2021-07-30 um 16.48.25.png

                                Bildschirmfoto 2021-07-30 um 16.48.41.png

                                Bildschirmfoto 2021-07-30 um 17.01.51.png

                                Bildschirmfoto 2021-07-30 um 16.56.07.png

                                Alexa, schalte a. r. d. an

                                oder

                                Alexa, a. r. d. an reicht auch

                                schalten übernimmt ein Blockly. Das Blockly unterscheidet welche Alexa angesprochen wurde (Wohnzimmer oder Schlafzimmer) und schaltet dann das dazugehörige Gerät (VU) in diesem Raum. Ich möchte z.B. nicht, das einer im Gästezimmer sagt: Alexa, a. r. d. an und dann alle Geräte umschalten würden.

                                EDIT: ich sehe gerade Du meinst Alexa Sender, oder ? Das Prinzip ginge da auch, nur Du schreibst über ein Script/Blockly in den Alexa2 Adapter.

                                1 Antwort Letzte Antwort
                                2
                                • ldittmarL ldittmar

                                  @da_woody Ja... ich habe es jetzt so gelöst, dass ich die CPU in den "Weiteren Infos" gepackt habe und dafür die aktuell installierte Version in Info A rein. Dann habe ich noch den ERROR Icon missbraucht um anzuzeigen, falls ein Adapter nicht auf Stable läuft (hab ein paar Adapter, die auf Latest laufen). Ich wollte noch, bei möglichen Updates, dass die mögliche Version noch angezeigt wird. Diese würde ich dann auch zu Info A packen, nur dass das Feld meistens leer ist, denn meistens sind die Adapter Uptodate. Es müsste also so sein, dass wenn der Wert eines Feldes leer ist, die Info nicht angezeigt wird.

                                  30-07-_2021_16-42-54.png

                                  Aber so langsam wirds... :-)

                                  da_WoodyD Online
                                  da_WoodyD Online
                                  da_Woody
                                  schrieb am zuletzt editiert von
                                  #5560

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

                                  die CPU in den "Weiteren Infos" gepackt habe und dafür die aktuell installierte Version in Info A rein

                                  warum dann nicht CPU und RAM ins InfoB Array? wird sanft hin und her geblendet...
                                  die idea mit dem Error hab ich auch in der linse gehabt... mir ist aber nicht ganz klar, wo du die infeos alle her hast...
                                  denk aber mal, wenn dein template ready ist, wirst du uns das vorstellen... ;)

                                  gruß vom Woody
                                  HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                                  metaxaM 1 Antwort Letzte Antwort
                                  1
                                  • da_WoodyD da_Woody

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

                                    die CPU in den "Weiteren Infos" gepackt habe und dafür die aktuell installierte Version in Info A rein

                                    warum dann nicht CPU und RAM ins InfoB Array? wird sanft hin und her geblendet...
                                    die idea mit dem Error hab ich auch in der linse gehabt... mir ist aber nicht ganz klar, wo du die infeos alle her hast...
                                    denk aber mal, wenn dein template ready ist, wirst du uns das vorstellen... ;)

                                    metaxaM Offline
                                    metaxaM Offline
                                    metaxa
                                    schrieb am zuletzt editiert von
                                    #5561

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

                                    @ldittmar ......
                                    wenn dein template ready ist, wirst du uns das vorstellen...

                                    :+1: :+1: :+1: :+1:

                                    1 Antwort Letzte Antwort
                                    1
                                    • ldittmarL Offline
                                      ldittmarL Offline
                                      ldittmar
                                      Developer
                                      schrieb am zuletzt editiert von ldittmar
                                      #5562

                                      @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_WoodyD K ldittmarL 3 Antworten Letzte Antwort
                                      5
                                      • ldittmarL 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_WoodyD Online
                                        da_WoodyD Online
                                        da_Woody
                                        schrieb am zuletzt editiert von
                                        #5563

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

                                        gruß vom Woody
                                        HAPPINESS is not a DESTINATION, it's a WAY of LIFE!

                                        1 Antwort Letzte Antwort
                                        0
                                        • ldittmarL 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

                                          K Offline
                                          K Offline
                                          Kueppert
                                          schrieb am zuletzt editiert von
                                          #5564

                                          @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 ^^

                                          UDM Pro, Intel NUC - ioBroker in Proxmox-VM, PiHole+Grafana&Influx+TasmoAdmin in LXCs, Raspberry Pi3 (als CCU), Zigbee-Stick Sonoff, Synology DS918+

                                          da_WoodyD 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

                                          712

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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