Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. Anzeige Status Docker Container

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    Anzeige Status Docker Container

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

      Ich betreibe den iobroker mit Andrés Docker Container buanet/iobroker.
      In meiner VIS wollte ich den Status der anderen laufenden Container sehen können:

      2020-03-21 15_38_57-Window-ESK01.png

      2020-03-21 15_39_34-Window-ESK01.png

      1. Script für SYNOLOGY-Aufgabenplaner
      Diese Zeile als benutzerdefiniertes Script im Aufgabenplaner einstellen:

      docker container ls --all --format "{{.Names}};{{.Image}};{{.Status}}" >/volume1/docker/prod/iobroker/iobroker-data/files/0_userdata.0/tmp/dockerinfo.txt
      

      Dabei den Ausgabepfad anpassen auf den Pfad der eigenen iobroker-Instanz. Sollte unter /0_userdata.0/ liegen, weil man die Datei sonst aus Javascript nicht ansprechen kann. Ich lasse diese Aufgabe alle 5 Minuten ausführen.

      2. Javascript im iobroker erstellen
      Hier in der Variable fn ebenfalls wieder den Pfad ggf. anpassen. Das Script liest den erstellten Text aus und füllt die beiden States DockerInfo.HTML1 und DockerInfo.HTML2

      /*  =====================================================================
          Docker Status auslesen
          ===================================================================== */
      
      // Konstanten / Vorbelegung
      const js  = 'javascript.0.Synology'; 
      const fn  = 'iobroker-data/files/0_userdata.0/tmp';
      const fs  = require('fs');
      
      // Docker-Info's
      createState(js+'.DockerInfo.HTML1',   { name: 'HTML-Ausgabe Format 1', role: 'value',  type: 'string'});                
      createState(js+'.DockerInfo.HTML2',   { name: 'HTML-Ausgabe Format 2', role: 'value',  type: 'string'});                
      
      /*  ============================================================================
          Function: Listen sortieren (aus BLOCKLY)
          ============================================================================ */
      
      function listsGetSortCompare(type, direction) {
        var compareFuncs = {
          "NUMERIC": function(a, b) {
              return parseFloat(a) - parseFloat(b); },
          "TEXT": function(a, b) {
              return a.toString() > b.toString() ? 1 : -1; },
          "IGNORE_CASE": function(a, b) {
              return a.toString().toLowerCase() > b.toString().toLowerCase() ? 1 : -1; },
        };
        var compare = compareFuncs[type];
        return function(a, b) { return compare(a, b) * direction; }
      }
      
      /*  ============================================================================
          Function: Docker-Liste lesen & verarbeiten
          ============================================================================ */
      
      function GetDockerInfo() {
      
          fs.readFile (fn+'/dockerinfo.txt', 'utf8',  function(error, data) {
              var ausgabe1 = [];
              var ausgabe2 = [];
      
              if(error) {
                  ausgabe1.push('Fehler beim Lesen!');
                  ausgabe2.push('Fehler beim Lesen!');
              }
              else {
                  ausgabe1.push('<table>'); 
                  var zeile = data.split('\n');                                   // Text in Zeilen aufteilen 
                  zeile = zeile.slice().sort(listsGetSortCompare("TEXT", 1));     // Nach Namen sortieren
                  for (var i in zeile) {                                          // Jede Zeile bearbeiten
                      var feld = zeile[i].split(';');                             // Elemente der Zeile sind durch ; getrennt
                      if (feld[2] != undefined)                                   // Wenn gefüllt
                      {
                          var css = 'down';                                       // CSS für inaktive Maschinen
                          if      (feld[2].substring(0,2)=='Up') css = 'up';      // CSS für aktive Maschinen
                          var machine = feld[0].replace('-','&#x2011;')           // Bindestrich ersten durch Bindestrich ohne Trennmöglichkeit
                          machine = '<span class="docker'+css+'">'+machine+' </span>';
                          ausgabe1.push('<tr><td>'+machine+'</td>'
                                      + '<td align="left"><span class=docker"'+css+'">'+feld[2]+'</span></td>'
                                      + '<td><span class="dockerimg">'+feld[1]+'</span></td></tr>');
                          ausgabe2.push(machine);
                      }
                  }
                  ausgabe1.push('</table>');          
              }
              setState(js+'.DockerInfo.HTML1',ausgabe1.join(''));
              setState(js+'.DockerInfo.HTML2',ausgabe2.join(''));
          });
          
      };
      
      GetDockerInfo();
      schedule('* * * * *', GetDockerInfo);                    // Jede Minute abrufen
      

      3. Anzeige im VIS
      Die beiden o.g. States können werden am besten mit dem Widget String (unescaped) in VIS angezeigt.
      In VIS unter CCS noch die gewünschten Farben & Formatierungen unterbringen:

      /*  ===========================================
          Formatierung DOCKER-Ausgabe
          =========================================== */   
      .dockerup  { color:LIME; }
      .dockererr { color:RED; }
      .dockerimg { color:DARKTURQUOISE; }
      

      Gruß, Ralf

      Glasfaser 1 Reply Last reply Reply Quote 1
      • Glasfaser
        Glasfaser @RK62 last edited by Glasfaser

        @RK62

        Gefällt mir die Idee , das fehlte mir noch bei meinen anderen Infos zu der Synology 👍

        Es mußte ein Ordner "tmp" in 0_userdata.0 erstellt werden mit den Rechten 0777 , sonst kommt "No such file or directory" bzw. es wurde nichts unter 0_userdata.0 geschrieben .

        Kann du es noch in Json umwandelt !?

        Hier mein Vis:

        1.JPG

        @Negalein etwas für dich 😉

        EDIT : Widget eingefügt

        [{"tpl":"tplHtml","data":{"g_fixed":true,"g_visibility":false,"g_css_font_text":true,"g_css_background":true,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","refreshInterval":"0","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html":"{javascript.0.Synology.Dockerzustand.DockerInfo.HTML1}","class":"mdui-table mdui-table-ascard-r250-l mdui-table-striped noSwipe"},"style":{"left":"590px","top":"28px","width":"478px","height":"279px","z-index":"100","background":"linear-gradient(0deg, #2c2a3f, #4f344c, #2c2a3f)","color":"#d7cec1","font-family":"Jura-DemiBold","font-size":"medium"},"widgetSet":"basic"}]
        

        Negalein 2 Replies Last reply Reply Quote 0
        • Negalein
          Negalein Global Moderator @Glasfaser last edited by

          @Glasfaser sagte in Anzeige Status Docker Container:

          etwas für dich

          definitiv. Danke für den Tipp

          Es mußte ein Ordner "tmp" in 0_userdata.0 erstellt werden mit den Rechten 0777

          Du meinst direkt im System?

          Glasfaser 1 Reply Last reply Reply Quote 0
          • Negalein
            Negalein Global Moderator last edited by Negalein

            @RK62 @Glasfaser

            Ich finde keinen Ordner 0_userdata.0

            root@iobroker:/opt/iobroker# cd iobroker-data
            root@iobroker:/opt/iobroker/iobroker-data# ls
            backup-objects  doorbird.0.snap.jpg  files  history  iobroker.json  node-red  objects.json  objects.json.bak  sonosCache  states.json  states.json.bak  tmp  zigbee_0
            root@iobroker:/opt/iobroker/iobroker-data# cd files
            root@iobroker:/opt/iobroker/iobroker-data/files# ls
            admin.admin                   harmony.admin                      icons-mfd-svg.admin                node-red.admin         synology.admin           vis-jqui-mfd.admin
            alexa2.admin                  history.admin                      icons-open-icon-library-png        openuv.admin           systeminfo.admin         vis-justgage.admin
            backitup.admin                hm-rega.admin                      icons-open-icon-library-png.admin  parser.admin           telegram.admin           vis-knob.admin
            bring.admin                   hm-rpc.admin                       icons-ultimate-png                 philips-tv.admin       terminal                 vis-map.admin
            cloud.admin                   hs100.admin                        icons-ultimate-png.admin           ping.admin             terminal.admin           vis-material.admin
            coronavirus-statistics.admin  hue.admin                          influxdb.admin                     places.admin           tr-064.admin             vis-materialdesign.admin
            daswetter.admin               ical.admin                         info.admin                         pollenflug.admin       tr-064-community.admin   vis-metro.admin
            denon.admin                   icons-addictive-flavour-png        iot.admin                          proxy.admin            trashschedule.admin      vis-players.admin
            devices.admin                 icons-addictive-flavour-png.admin  iqontrol                           radar.admin            upnp.admin               vis-plumb.admin
            discovery.admin               icons-fatcow-hosting               iqontrol.admin                     sayit.0                virtualpowermeter.admin  vis-rgraph.admin
            doorbird.admin                icons-fatcow-hosting.admin         iqontrol.meta                      scenes.admin           vis                      vis-timeandweather.admin
            dwd.admin                     icons-icons8                       javascript.admin                   simple-api.admin       vis.0                    vis-weather.admin
            email.admin                   icons-icons8.admin                 kodi                               smartmeter.admin       vis.admin                weatherunderground.admin
            enigma2.admin                 icons-material-png                 kodi.admin                         snmp.admin             vis-bars.admin           web
            fb-checkpresence.admin        icons-material-png.admin           meteoalarm.admin                   socketio.admin         vis-canvas-gauges.admin  web.admin
            feiertage.admin               icons-material-svg                 mihome.admin                       sonoff.admin           vis-colorpicker.admin    web-speedy.admin
            flot                          icons-material-svg.admin           mobile                             sonos.admin            vis-fancyswitch.admin    xbox.admin
            flot.admin                    icons-mfd-png                      mobile.admin                       sourceanalytix.admin   vis-google-fonts.admin   zigbee.admin
            fontui.admin                  icons-mfd-png.admin                mqtt.admin                         spotify-premium.admin  vis-history.admin
            fronius.admin                 icons-mfd-svg                      nina.admin                         synology               vis-hqwidgets.admin
            

            1 Reply Last reply Reply Quote 0
            • Glasfaser
              Glasfaser @Negalein last edited by Glasfaser

              @Negalein
              Ja im Verzeichniss , sonst wird die Textdatei nicht erstellt:


              2.JPG
              2.JPG

              Glasfaser 1 Reply Last reply Reply Quote 0
              • Glasfaser
                Glasfaser @Glasfaser last edited by Glasfaser

                @Glasfaser

                Du hast doch den gleichen Stand ( iobroker .... ) wie ich !?


                1.JPG

                Negalein 1 Reply Last reply Reply Quote 0
                • Negalein
                  Negalein Global Moderator @Glasfaser last edited by

                  @Glasfaser sagte in Anzeige Status Docker Container:

                  Du hast doch den gleichen Stand ( iobroker .... ) wie ich !?

                  Ja

                  objects - ioBroker (4).png

                  Glasfaser 1 Reply Last reply Reply Quote 0
                  • Glasfaser
                    Glasfaser @Negalein last edited by

                    @Negalein

                    Laut Forum wird erst der Ordner 0_userdata.0 erstellt wenn ein Datei darin geschrieben wird .
                    Suche noch ......

                    Negalein 1 Reply Last reply Reply Quote 0
                    • Negalein
                      Negalein Global Moderator @Glasfaser last edited by Negalein

                      @Glasfaser sagte in Anzeige Status Docker Container:

                      Laut Forum wird erst der Ordner 0_userdata.0 erstellt wenn ein Datei darin geschrieben wird .

                      Ok, Datei hab ich bestimmt noch nie dahin speichern lassen.

                      Nur DP sind angelegt.


                      objects - ioBroker (5).png

                      1 Reply Last reply Reply Quote 0
                      • Negalein
                        Negalein Global Moderator last edited by Negalein

                        @Glasfaser

                        Ich hab dieses Script gefunden, in dem eine Datei in 0_userdata.0 kopiert wird.

                        var sperre = false;  //verhindert das doppeltes Drücken das Script stoppt
                         
                        var timeout1, timeout2, timeout3;
                        var fs = require('fs');
                         
                        on({id: '0_userdata.0.Klingelstatus', val: true}, function (obj) {
                         
                          if(!sperre) {
                         
                            sperre = true;
                         
                             // Speichert das Bild beim Klingeln
                         
                            exec('wget --output-document /tmp/HaustuerKlingel.jpg \'http://192.168.7.163/api/v1/snap.cgi?chn=0\'');
                         
                            // Es wird 2000ms gewartet um das Speichern auszuführen
                         
                            timeout1 = setTimeout(function () {
                         
                         
                            }, 2000);
                         
                            }
                         
                            timeout2 = setTimeout(function() {
                         
                               sperre = false;
                         
                            }, 5000); //Zeit für Klingelsperre 1.Zeile
                         
                            timeout3 = setTimeout(function () {
                         
                                 const bild1 = fs.readFileSync('/tmp/HaustuerKlingel.jpg');
                         
                                 writeFile('0_userdata.0','HaustuerKlingel.jpg', bild1);
                         
                            }, 2000); 
                         
                        });
                        
                        

                        Kann ich einfach nur diesen für mich angepassten Teil nehmen und als Script speichern? Oder
                        fehlt da noch was aus obigem?

                        fs.readFileSync('/vis.0/Camsnapshotsprechanlage_0.jpg');
                         
                        writeFile('0_userdata.0','Camsnapshotsprechanlage_0.jpg', bild1);
                        

                        Glasfaser 2 Replies Last reply Reply Quote 0
                        • Glasfaser
                          Glasfaser @Negalein last edited by

                          @Negalein

                          Ja das ist das Script , habe ich auch gerade auf ...... wollte es versuchen zu kürzen , aber wenn du damit klar kommst

                          Laut Forum sollte man den Ordner 0_userdata.0 auch nicht selber erstellen , aber weiter Infos habe ich noch nicht gefunden

                          Negalein 1 Reply Last reply Reply Quote 0
                          • Negalein
                            Negalein Global Moderator @Glasfaser last edited by

                            @Glasfaser sagte in Anzeige Status Docker Container:

                            aber wenn du damit klar kommst

                            Ich versuchs mal nur mit den 2 Zeilen.
                            Mal sehn.

                            Wenn das nicht klappt, benötige ich deine Hilfe. 😉

                            1 Reply Last reply Reply Quote 0
                            • Negalein
                              Negalein Global Moderator last edited by Negalein

                              @Glasfaser

                              Und da bin ich wieder.

                              Script geht mit nur den 2 Zeilen sofort auf Gelb/Pause.

                              javascript.0	2020-03-21 20:39:49.707	error	(593) at Script.runInContext (vm.js:133:20)
                              javascript.0	2020-03-21 20:39:49.707	error	(593) at script.js.common.userdata:1:1
                              javascript.0	2020-03-21 20:39:49.707	error	(593) ReferenceError: fs is not defined
                              javascript.0	2020-03-21 20:39:49.707	error	(593) ^
                              javascript.0	2020-03-21 20:39:49.707	error	(593) fs.readFileSync('/vis.0/Camsnapshotsprechanlage_0.jpg');
                              javascript.0	2020-03-21 20:39:49.706	error	(593) script.js.common.userdata: script.js.common.userdata:1
                              

                              1 Reply Last reply Reply Quote 0
                              • Glasfaser
                                Glasfaser @Negalein last edited by Glasfaser

                                @Negalein
                                EDIT ... das geht so nicht ich suche noch !!!!

                                Negalein 1 Reply Last reply Reply Quote 0
                                • Negalein
                                  Negalein Global Moderator @Glasfaser last edited by Negalein

                                  @Glasfaser sagte in Anzeige Status Docker Container:

                                  Das Bild Camsnapshotsprechanlage_0.jpg bei vis.0 muß auch dort vorhanden sein !

                                  Ja, ist in vis.0 vorhanden.

                                  javascript.0	2020-03-21 20:47:42.655	error	(593) at Script.runInContext (vm.js:133:20)
                                  javascript.0	2020-03-21 20:47:42.654	error	(593) at script.js.common.userdata:2:4
                                  javascript.0	2020-03-21 20:47:42.654	error	(593) at ProtectFs.readFileSync (/opt/iobroker/node_modules/iobroker.javascript/lib/protectFs.js:23:36)
                                  javascript.0	2020-03-21 20:47:42.654	error	(593) at readFileSync (fs.js:343:35)
                                  javascript.0	2020-03-21 20:47:42.654	error	(593) at Object.openSync (fs.js:443:3)
                                  javascript.0	2020-03-21 20:47:42.654	error	(593) Error: ENOENT: no such file or directory, open '/vis.0/Camsnapshotsprechanlage_0.jpg'
                                  javascript.0	2020-03-21 20:47:42.654	error	(593) ^
                                  javascript.0	2020-03-21 20:47:42.654	error	(593) throw err;
                                  javascript.0	2020-03-21 20:47:42.653	error	(593) script.js.common.userdata: fs.js:114
                                  

                                  Im Javascript-Adapter muss nichts extra (Module, ...) aktiviert werden?

                                  Glasfaser 1 Reply Last reply Reply Quote 0
                                  • Glasfaser
                                    Glasfaser @Negalein last edited by

                                    @Negalein
                                    Nein du braucht kein Modul !!

                                    Ich habe grade Edit oben gemacht .. weil es so nicht geht . und du warst gerade schneller !

                                    Negalein 1 Reply Last reply Reply Quote 0
                                    • Negalein
                                      Negalein Global Moderator @Glasfaser last edited by

                                      @Glasfaser sagte in Anzeige Status Docker Container:

                                      Ich habe grade Edit oben gemacht .. weil es so nicht geht . und du warst gerade schneller !

                                      habs gerade gesehn 🙂

                                      Glasfaser 1 Reply Last reply Reply Quote 0
                                      • Glasfaser
                                        Glasfaser @Negalein last edited by Glasfaser

                                        @Negalein
                                        Einfach starten !

                                        
                                        var fs = require('fs');
                                        
                                        timeout1 = setTimeout(function () {
                                        
                                             exec('wget --output-document /tmp/carport2.jpg \'http://xxxx:xxxxx@192.168.178.51/streaming/channels/101/picture\''); 
                                        
                                           }, 2000);
                                        
                                        
                                        timeout2 = setTimeout(function () {
                                        
                                             const bild1 = fs.readFileSync('/tmp/carport2.jpg');
                                        writeFile('0_userdata.0','HaustuerKlingel.jpg', bild1); 
                                        
                                           }, 5000);
                                        
                                        

                                        Negalein 1 Reply Last reply Reply Quote 1
                                        • Negalein
                                          Negalein Global Moderator @Glasfaser last edited by

                                          @Glasfaser sagte in Anzeige Status Docker Container:

                                          Einfach starten !

                                          Super, Ordner wurde erstellt! 🙂 🙂

                                          1 Reply Last reply Reply Quote 0
                                          • Negalein
                                            Negalein Global Moderator @Glasfaser last edited by

                                            @Glasfaser sagte in Anzeige Status Docker Container:

                                            etwas für dich

                                            Wie hast du die Farbe (aktiv/inaktiv) eingestellt?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            868
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            docker javascript vis
                                            5
                                            44
                                            3137
                                            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