NEWS
Anzeige Status Docker Container
-
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: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('-','‑') // 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
-
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:
@Negalein etwas für dich
EDIT : Widget eingefügt
-
@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?
-
-
@Negalein
Ja im Verzeichniss , sonst wird die Textdatei nicht erstellt: -
-
@Glasfaser sagte in Anzeige Status Docker Container:
Du hast doch den gleichen Stand ( iobroker .... ) wie ich !?
Ja
-
Laut Forum wird erst der Ordner 0_userdata.0 erstellt wenn ein Datei darin geschrieben wird .
Suche noch ...... -
@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.
-
Ich hab dieses Script gefunden, in dem eine Datei in 0_userdata.0 kopiert wird.
Kann ich einfach nur diesen für mich angepassten Teil nehmen und als Script speichern? Oder
fehlt da noch was aus obigem?
-
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
-
@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.
-
-
@Negalein
EDIT ... das geht so nicht ich suche noch !!!! -
@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.
Im Javascript-Adapter muss nichts extra (Module, ...) aktiviert werden?
-
@Negalein
Nein du braucht kein Modul !!Ich habe grade Edit oben gemacht .. weil es so nicht geht . und du warst gerade schneller !
-
@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
-
@Negalein
Einfach starten ! -
@Glasfaser sagte in Anzeige Status Docker Container:
Einfach starten !
Super, Ordner wurde erstellt!
-
@Glasfaser sagte in Anzeige Status Docker Container:
etwas für dich
Wie hast du die Farbe (aktiv/inaktiv) eingestellt?