NEWS
[Vorstellung] Meine zweite Visualisierung
-
@Kuddel sagte in [Vorstellung] Meine zweite Visualisierung:
VIS-Export 10.05.19:
Hallo, ist das jetzt als Projekt zu importieren?
-
@sigi234 ja genau. leider ohne Icons. habe noch keinen weg gefunden, das alles in einem Paket hoch zu laden
-
@Kuddel sagte in [Vorstellung] Meine zweite Visualisierung:
@sigi234 ja genau. leider ohne Icons. habe noch keinen weg gefunden, das alles in einem Paket hoch zu laden
Ok, erfolgreich importiert, ABER du musst die Passwörter bei den Kameras unbedingt rausnehmen bzw. sofort ändern!
-
@Kuddel sagte in [Vorstellung] Meine zweite Visualisierung:
-> Leider wieder ohne Icons da das Paket sonst 16 MB groß wäre
Wenn du möchtest, kann ich dir auf meinem Webserver einen FTP zur Verfügung stellen.
-
@sigi234 habs gerade im Export geändert.
Danke für den Hinweis
-
@Negalein habe gerade erfolgreich einen Workaround testen können.
Habs auf Seite 1 hinzugefügt
-
Wie bekomme ich die Grafiken flot angezeigt?
-
@sigi234 die Grafik selber muss man sich natürlich in Flot zusammen bauen.
Voraussetzung ist natürlich, das der Wert, der grafisch dargestellt werden soll, per History.Adapter geloggt wird.
Hier ein Beisoiel für die CPU Auslastung vom ioBroker:
Dann am ende alles makieren und im VIS Wisget einfügen:
-
Aha......ok dachte die sind dabei.....
-
@sigi234 leider nein, Ist ja ein VIS-Export, kein Flot-Export.
Ich könnte natürlich jetzt für alle meiner Graphen die Links posten, ich weiß nur nicht, ob die dann auch bei euch funzen.
-
@Kuddel sagte in [Vorstellung] Meine zweite Visualisierung:
@sigi234 leider nein, Ist ja ein VIS-Export, kein Flot-Export.
Ich könnte natürlich jetzt für alle meiner Graphen die Links posten, ich weiß nur nicht, ob die dann auch bei euch funzen.
Das geht, man muss sie aber anpassen .........
Nicht alle aber eines um das Design zu erhalten............
-
@Kuddel sagte in [Vorstellung] Meine zweite Visualisierung:
@sigi234 ja genau. leider ohne Icons. habe noch keinen weg gefunden, das alles in einem Paket hoch zu laden
Habe gerade dein Projekt importiert (nach deiner Vorgehensweise).
Leider funktioniert das nicht.
Er meldet, dass die vis-view.json nicht gefunden wird.
Sie ist aber im neuen Zip enthalten. -
@Negalein komisch. bei mir hat es funktioniert
-
@Kuddel sagte in [Vorstellung] Meine zweite Visualisierung:
@Negalein komisch. bei mir hat es funktioniert
Ich mach jetzt nochmal einen Download.
Die Datei ohne den Icons funktioniert auch nicht.Wie groß ist die bei dir?
-
@Negalein habe gerade beide Datein neu heruntergeladen.
- Import ohne Icons: Funzt
- Neues Archiv mit VIS und Icons erstell und importiert: Funzt auch
-
@Kuddel sagte in [Vorstellung] Meine zweite Visualisierung:
@Negalein habe gerade beide Datein neu heruntergeladen.
- Import ohne Icons: Funzt
- Neues Archiv mit VIS und Icons erstell und importiert: Funzt auch
dürfte beim Download was schief gegangen sein.
Jetzt hat es geklappt. -
Hallo @Kuddel
zu Ram in Prozent finde ich leider keinen Datenpunkt im Info-Adapter.
Wie hast Du das gemacht? -
@Nashra das habe ich eben per Blocky aus den Daten vom Info Adapter errechnet. Man benötigt ja nur gesamt RAM und aktuell verwendeten
-
@Kuddel sagte in [Vorstellung] Meine zweite Visualisierung:
@Nashra das habe ich eben per Blocky aus den Daten vom Info Adapter errechnet. Man benötigt ja nur gesamt RAM und aktuell verwendeten
Achduje, in Blockly mal reingesehen aber keinen Plan wie sowas geht
Wärst Du so nett... -
@Nashra vllt hilft dir sowas
var pfad = "Systeminfos.ioBroker.Prozesse" + "."; // Pfad in dem die Datenpunkte angelegt werden // Datenpunktnamen: var idProzesse = pfad + 'ioBroker_Prozesse'; var idMemAll = pfad + 'ioBroker_Speicher_gesamt'; var idAnzProzesse = pfad + 'ioBroker_Anzahl_Prozesse'; var idCpuAll = pfad + 'ioBroker_CPU_Gesamt'; var idMemPercent = pfad + 'ioBroker_Speicher_prozentual'; var idInstanzenEinmal = pfad + 'ioBroker_Instanzen_einmal_aktiv'; // regelmässige Wiederholungen der Abfrage var cronStr = "*/2 * * * *"; var abfrage = 'ps -A aux --sort -pmem | grep " [i]o.*"'; // ----------------------------------------------------------------------------- createState(idProzesse, "", { name: 'ioBroker laufende Prozesse Objekt', desc: 'ioBroker laufende Prozesse Objekt, Speicherverbrauch', type: 'string', unit: '', role: 'object' }); createState(idMemAll, 0, { name: 'ioBroker Speicherverbrauch gesamt', desc: 'ioBroker Speicherverbrauch gesamt (RSS)', type: 'number', unit: 'MB', role: 'value' }); createState(idAnzProzesse, 0, { name: 'ioBroker Anzahl Prozesse', desc: 'ioBroker Anzahl aktiver Prozesse', type: 'number', unit: '', role: 'value' }); createState(idCpuAll, 0.0, { name: 'ioBroker CPU-Last gesamt', desc: 'ioBroker CPU-Last gesamt', type: 'number', unit: '%', role: 'value' }); createState(idMemPercent, 0.0, { name: 'Speicherverbrauch prozentual', desc: 'Speicherverbrauch prozentual', type: 'number', unit: '%', role: 'value' }); createState(idInstanzenEinmal, true, { name: 'keine Instanzen doppelt aktiv', desc: 'jeder aktive ioBroker Prozess ist nur einmal aktiv', type: 'boolean', unit: '', role: 'value' }); // ----------------------------------------------------------------------------- function doppelteProzesse(arr) { var mehrfacheProzesse = []; var anzProzesse = (arr.length); var anzProzessAktiv = 0; for (var i = 0; i < anzProzesse; i++) { if (mehrfacheProzesse.indexOf(arr[i].command) == -1) { anzProzessAktiv = zaehleProzesse(arr,arr[i].command); if (anzProzessAktiv > 1) { log("Prozess: " + arr[i].command+", mehrfach aktiv: " + anzProzessAktiv +" mal","warn"); mehrfacheProzesse.push(arr[i].command); mehrfacheProzesse.push(anzProzessAktiv); } } } return mehrfacheProzesse; } function zaehleProzesse(arr,command) { var count = 0; var anzProzesse = (arr.length); for (var i = 0; i < anzProzesse; i++) { if(arr[i].command === command) { count++; } } return count; } function writeJson(json) { return JSON.stringify(json); // JSON in String umwandeln, damit das JSON in einem Datenpunkt geschrieben werden kann } function getMemAbsolut(json) { var anzProzesse = (json.length); var mem = 0; for (var i = 0; i < anzProzesse; i++) { mem = mem + json[i].rss; } return mem; } function getCpu(json) { var anzProzesse = (json.length); var cpu = 0.0; for (var i = 0; i < anzProzesse; i++) { cpu = cpu + json[i].cpu; } return cpu; } function getMem(json) { var anzProzesse = (json.length); var mem = 0.0; for (var i = 0; i < anzProzesse; i++) { mem = mem + json[i].mem; } return mem; } function createArrayJson(arr) { var jsonArr = []; var anzDP = 11; // Anzahl Datenreihen in der Abfrage var anzProzesse = (arr.length-1)/anzDP; for (var i = 0; i < anzProzesse; i++) { jsonArr.push({ command: arr[10 + i*anzDP], // ioBroker Prozess (COMMAND = Kommando, mit dem der Prozess gestartet wurde) pid: arr[ 1 + i*anzDP], // Prozess ID cpu: parseFloat(arr[ 2 + i*anzDP]), // aktueller CPU-Last in % mem: parseFloat(arr[ 3 + i*anzDP]), // aktueller Verbrauch physikalischer Speicher % vmem: parseInt(arr[ 4 + i*anzDP]), // rss: parseInt(arr[ 5 + i*anzDP]), // physikalische Speichernutzung start: arr[ 8 + i*anzDP], // Startzeitpunkt des Prozesses time: arr[ 9 + i*anzDP] // bisher verbrauchte CPU Zeit }); } return jsonArr; } function abfrageConsole() { exec(abfrage, function(err, stdout, stderr) { if (err) { log(err,"error"); return; } stdout = stdout.replace(/\n+/g, " "); // neue Zeile gegen Leerzeichen ersetzen stdout = stdout.split(/ +/g); // array erstellen, Leerzeichen als Trenner var anzProzesse = (stdout.length-1) / 11; //log(stdout); //log("Anzahl laufender ioBroker Prozesse: " + anzProzesse); var jsonArr = createArrayJson(stdout); var mem = Math.floor(getMemAbsolut(jsonArr)/1024); var cpu = Math.floor(getCpu(jsonArr)*10)/10; var memPercent = Math.floor(getMem(jsonArr)*10)/10; var doppeltArr = doppelteProzesse(jsonArr); if(doppeltArr.length === 0) { setState(idInstanzenEinmal,true); } else { setState(idInstanzenEinmal,false); } setState(idProzesse ,writeJson(jsonArr)); setState(idMemAll ,mem); setState(idAnzProzesse ,anzProzesse); setState(idCpuAll ,cpu); setState(idMemPercent ,memPercent); }); } function abfragen() { abfrageConsole(); } // regelmässige Wiederholungen // ----------------------------------------------------------------------------- schedule(cronStr, abfragen); // main // ----------------------------------------------------------------------------- function main() { abfragen(); } // Start Skript: // ----------------------------------------------------------------------------- setTimeout(main, 500);