NEWS
[Vorstellung] Meine zweite Visualisierung
-
@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? -
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 verwendetenAchduje, in Blockly mal reingesehen aber keinen Plan wie sowas geht

W
ä
rst Du so nett... 
-
@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 verwendetenAchduje, 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); -
@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);@crunchip sagte in [Vorstellung] Meine zweite Visualisierung:
@Nashra vllt hilft dir sowas
Klasse, l
ä
uft, ich Danke dir 
-
@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 verwendetenAchduje, in Blockly mal reingesehen aber keinen Plan wie sowas geht

W
ä
rst Du so nett... 
-
-
@Kuddel
Hallo Kuddel,
Erst auch mal von mir ein Dankesch
ö
n f
ü
r so eine geniale Arbeit und das du, dass Projekt zur Verf
ü
gung gestellt hast.
Ich arbeite mich gerade durch das Briefkasten Skript und versuche zu verstehen, warum du mit post 0 falsch beginnt.
kannst du mir da den ablauf etwas schildern arbeite noch nicht so lange mit ioBroker aber versuche intensiv zu lernen da kommt nat
ü
rlisch so ein super projekt genau richtig.
Kannst du mir da den Ablauf etwas schildern arbeite noch nicht so lange mit ioBroker aber versuche intensiv zu lernen da kommt nat
ü
rlich so ein super Projekt genau richtig. -
@Kuddel
Hallo Kuddel,
Erst auch mal von mir ein Dankesch
ö
n f
ü
r so eine geniale Arbeit und das du, dass Projekt zur Verf
ü
gung gestellt hast.
Ich arbeite mich gerade durch das Briefkasten Skript und versuche zu verstehen, warum du mit post 0 falsch beginnt.
kannst du mir da den ablauf etwas schildern arbeite noch nicht so lange mit ioBroker aber versuche intensiv zu lernen da kommt nat
ü
rlisch so ein super projekt genau richtig.
Kannst du mir da den Ablauf etwas schildern arbeite noch nicht so lange mit ioBroker aber versuche intensiv zu lernen da kommt nat
ü
rlich so ein super Projekt genau richtig.@markus-now in meinem Briefkasten sitz ein Homematic Fensterkontakt, der ausl
ö
st, wenn der Postbote den Deckel vom Breifkasten
ö
ffnet.Dann wird das Datenobjekt "Post" auf wahr geschaltet (wahr = post eingeworfen).
Ebenso bekomme ich direkt eine Mail, dass die Post da ist.
Das Ganze ist in meinen Augen total simpel.
-
Mit dem Objekt stelle ich den aktuellen Status der Waschmaschine da;
0=aus
1=an
2=timer
3=fertig
@Kuddel
Hallo Kuddel,
erste einmal Daumen hoch f
ü
r die mega geile Arbeit.
ich m
ö
chte hier noch einmal einhaken (waschmaschine).
Dein Projekt habe ich importiert und habe mir aus der View Haushalt die Icons geschnappt. Wenn ich das jetzt richtig verstanden habe, soll ich zus
ä
tzlich noch ein Script unter Javascript.0 was anlegen. Was muss in dem Script drin stehen?
Sorry aber ich bin erst seit kurzem mit IObroker dran.
Gru
ß
Alero -
@Kuddel
Hallo Kuddel,
erste einmal Daumen hoch f
ü
r die mega geile Arbeit.
ich m
ö
chte hier noch einmal einhaken (waschmaschine).
Dein Projekt habe ich importiert und habe mir aus der View Haushalt die Icons geschnappt. Wenn ich das jetzt richtig verstanden habe, soll ich zus
ä
tzlich noch ein Script unter Javascript.0 was anlegen. Was muss in dem Script drin stehen?
Sorry aber ich bin erst seit kurzem mit IObroker dran.
Gru
ß
Alero@Alero damit der ioBroker den Status der Waschmaschine erkennt, ben
ö
tigst du zun
ä
chst eine Steckdose, die den aktuellen Verbrauch der Waschmaschine an den ioBroker
ü
bergibt.Anhand des Verbrauchs kannst du du dann per Skript einen Status definieren: an, fertig, aus
Hier ein Biespiel f
ü
r den Status "Aus"
SD_Waschmaschine ist der Name der Steckdose
SD_Waschmaschine-Messwert.Power ist der aktuelle Verbauch
waschmaschine ist das Datenobjekt mit dem aktuellen Status -
@markus-now in meinem Briefkasten sitz ein Homematic Fensterkontakt, der ausl
ö
st, wenn der Postbote den Deckel vom Breifkasten
ö
ffnet.Dann wird das Datenobjekt "Post" auf wahr geschaltet (wahr = post eingeworfen).
Ebenso bekomme ich direkt eine Mail, dass die Post da ist.
Das Ganze ist in meinen Augen total simpel.
@Kuddel sagte in [Vorstellung] Meine zweite Visualisierung:
@markus-now in meinem Briefkasten sitz ein Homematic Fensterkontakt, der ausl
ö
st, wenn der Postbote den Deckel vom Breifkasten
ö
ffnet.Dann wird das Datenobjekt "Post" auf wahr geschaltet (wahr = post eingeworfen).
Ebenso bekomme ich direkt eine Mail, dass die Post da ist.
Das Ganze ist in meinen Augen total simpel.
Das ganze funktioniert auch gut mit den Xiaomi Kontakten.
Ich habe das kleine Gegenst
ü
ck (den Magnet) noch aus dem Geh
ä
use genommen.
Dann in meiner Klappe vom Briefkasten eine kleine Nut gefr
ä
st und den Magneten dort eingelassen und mit 2k Kleber montiert.
H
ä
lt bombenfest und kostet nicht viel. -
@markus-now in meinem Briefkasten sitz ein Homematic Fensterkontakt, der ausl
ö
st, wenn der Postbote den Deckel vom Breifkasten
ö
ffnet.Dann wird das Datenobjekt "Post" auf wahr geschaltet (wahr = post eingeworfen).
Ebenso bekomme ich direkt eine Mail, dass die Post da ist.
Das Ganze ist in meinen Augen total simpel.
@Kuddel
Danke ich schaue mir das heute Abend, wenn ich nach Hause komme nochmal an.
Ich war ein bisschen irritiert, weil du am Anfang den, falls mit wert falsch getriggert hast.
(wenn ich mich richtig erinnere sitze gerate nicht vor ioBroker bin Arbeiten) -
@Alero damit der ioBroker den Status der Waschmaschine erkennt, ben
ö
tigst du zun
ä
chst eine Steckdose, die den aktuellen Verbrauch der Waschmaschine an den ioBroker
ü
bergibt.Anhand des Verbrauchs kannst du du dann per Skript einen Status definieren: an, fertig, aus
Hier ein Biespiel f
ü
r den Status "Aus"
SD_Waschmaschine ist der Name der Steckdose
SD_Waschmaschine-Messwert.Power ist der aktuelle Verbauch
waschmaschine ist das Datenobjekt mit dem aktuellen Status@Kuddel
Hi Kuddel,Jo die Steckdose mit Messwetrterfassung habe ich. HMIP-PSM
Dein Script habe ich auch importiert und meine Steckdose eingef
ü
gt. Was ich nicht verstehe ist das mit dem Javascript.0 wo du wohl sagst Waschmaschine an = 1 usw.Gru0
ß
Alero -
@Kuddel
Hi Kuddel,Jo die Steckdose mit Messwetrterfassung habe ich. HMIP-PSM
Dein Script habe ich auch importiert und meine Steckdose eingef
ü
gt. Was ich nicht verstehe ist das mit dem Javascript.0 wo du wohl sagst Waschmaschine an = 1 usw.Gru0
ß
Alero -
@Alero was genau verstehst du daran nicht ?
Den Datenpunkt verwende ich ja in meiner VIS:
Waschmaschine = 0 -> Kein Rahmen
Waschmaschine = 1 -> Rahmen Gelb + Icon blinken
Waschmaschine = 2 -> Rahmen Gr
ü
n + Icon blinken -
@Kuddel
Hi,ich meinen in deinem Blockly Script das:
javascript.0.haushalt.waschmaschine.
Hier handelt es sich doch um ein javascript,oder bin ich da auf dem Holzweg?
Steh hier auf dem Schlauch.
Gru
ß
Alero
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden

