NEWS
ROCK64 - Pine64
-
Mein Rock64 ist heute angekommen und ich hatte keine Zeit ihn zu testen.
Mein Notebook wurde heute auch schon wieder mal getauscht und das brauche ich nächste Woche zum Arbeiten.
-
Die Problematik mit den Akkus hat mich bis von dem Kauf einer usv abgehalten.
Das sind leider meistens bleiakkus, die aufgrund des dauernd nahezu vollgeladenen Zustands relativ schnell in die Knie gehen. ` Ich habe dieses Jahr bei Voelkner einen Panasonic LC-R127R2PG für 14,80 gekauft. VdS zertifiziert und mit 6 bis 9 Jahren angegeben, speziell für USV mit dem Tricklebetrieb.
Als er in der USV war habe ich mir den Karton angesehen: LC-R127R2P (ohne G) stand da drauf. Dessen Datenblatt sagt nun "FOR STANDBY POWER SUPPLIES. EXPECTED TRICKLE DESIGN LIFE: 10 – 12 YEARS AT 20°C ACCORDING TO EUROBAT" Jetzt muß ich also in den nächsten 5 Jahren rausfinden, was wirklich drin ist
Aber Du siehst, mittlerweile sind die Pb Akkus schon gut auf die USVs abgestimmt.
Wenn Du aber eine neue APC kaufst, wirst Du wahrscheinlich eine 5-Jahre Variante bekommen.
Und eine 700VA ist bei 40W nicht schlecht dimensioniert. Falls Du noch ein NAS anschließt: So einstellen, daß die bei Netzausfall und Versorgung per USV nach einigen Minuten herunterfährt und NICHT wieder automatisch hochfährt.
Wenn Du noch mehr optimieren willst, eine USV kaufen, die den Netzausfall nicht nur per USB weitergibt, sondern per Ethernet. Oder eine Brück bauen, vielleicht gibts ja mal einen ioBroker Adapter dafür. Oder kann das bereits der "Network UPS Adapter"?
Wenn Du es ganz edel und praktisch haben möchtest: Mit einem Umschalter (Service Bypass Module), z.B. https://www.idealo.de/preisvergleich/Ma … walker+MBS kannst Du das problemlos umschalten und die USV warten. Ich bin zu geizig und habe die Niederspannungszuleitungen verfrickelt (Y-Leitung gabastelt) und versorge während Wartungsarbeiten die Niederspg aus anderen Netzteilen.
Allerdings würde ich lithium akkus vorziehen. ` Brauchst Du nicht und willst Du nicht. Vlies Pb Akkus sind optimiert, langlebig, gutmütig, sicher.
LiIon werden schon mal rein kalendarisch nicht so alt und sind teurer. Das gute Leistungsgewicht brauchst Du bei der USV nicht.
Falls Du aber doch sowas möchtest: https://www.banggood.com/DC-12V-2A-Mini … ntent=1087 ; https://www.banggood.com/5V2A-44W-UPS-U ... otproducts
@Homoran:Allerdings ist der pi mit yahm eine etage tiefer und der pi mit dem smartmeter noch eine tiefer. Mit einer usv bekomme ich also nicht das gesamte system überbrückt. ` Aus solchem Grunde habe ich im Besenschrank 2 Löcher durch die Decke gebohrt. Eines für USV-Netzleitung und eines für LAN.
@Homoran:Morgen hoffe ich dass ich etwas zeit habe und es nochmal versuche. Der port 9000 tauchte nicht auf, was mich hoffen lässt, allerdings störte mich das Aufhängen von putty immer nach einigen Minuten.
Zum glück ist gestern mein zweiter Rock64 gekommen mit 2x 32GB eMMC ` Viel Erfolg!
-
Viel Erfolg! `
Danke!Ich habe deinen Beitrag mit Interesse gelesen. Vieles davon habe ocj mir auch schon durch den Kopf gehen lassen, auch die Versorgung über POE.
Im Moment sind die baulichen Gegebenheiten sagen wir mal nicht optimal für eine zentrale usv. Nicht einmal für Infrastruktur wie Netzwerk und hausautomation.
Das hatte ich bereits einmal alles im Keller mit einem kleinen Serverschrank vorbereitet, ~~![](</s><URL url=)<link_text text="https://homematic-forum.de/forum/downlo ... &mode=view">https://homematic-forum.de/forum/download/file.php?id=16924&mode=view</link_text>" /> musste aber wieder umgebaut werden.
Am besten gefiel mir dein Satz
@klassisch:Brauchst Du nicht und willst Du nicht. `
Seit ich im Wohnmobil meine zwei Varta Solar 105Ah gegen 4 Zellen LiFeYPO4 200Ah ausgetauscht habe (bequem 260Ah bei 70%DoD) möchte ich Lithium nicht mehr missen. Da hängt ein 2kW Sinuswechselrichter dran, der ohne Probleme auch mal eine Senseo oder einen Mini-Elektrobackofen betreibt.
http://www.faktor.de/batterien-einzelze … eypo4.html
Gruß
Rainer~~
-
Was es alles gibt. Yttrium-Zellen! Respekt! Das ist natürlich eine ganz andere Liga als die 18650er Laptop-Zellen. Feine Sachen, die wll man natürlich schon….
Aber für den Preis einer (1) solcher Zellen bekommst Du drei (3) (dezentrale) APC 700. Und die Themen sind erst mal 5 Jahre abgehakt. Die ganz kleinen APCs empfehle ich nicht, da ist die Ruheleistung zu groß.
-
Was es alles gibt. Yttrium-Zellen! Respekt! Das ist natürlich eine ganz andere Liga als die 18650er Laptop-Zellen `
Famals waren sie noch nicht ganz so teuer. Ich glaube ich habe unter 800€ incl. Aller kleinteile wie Verbinder usw. bezahlt. Bei >7000 cyclen, 90% DOD, bis 3C Entladestrom und halbem Gewicht war die Investition zwar erst mal hoch, auf die Lebensdauer von Blei-Solarbatterien gerechnet aber schnell amortisiert, von den unterschiedlichen Leistungsdaten mal abgesehen. Außerdem liess sich der 4-Zeller 1:1 gegen die bleibazterie austauschen, da die Ladecharakteristik für blei bis 14,4v und 13.8v erhaltungsladung geht.Die 18650er sind so schlecht auch nicht, schließlich sind hunderte davon in Teslas verbaut.
Gruß
Rainer
-
BTT: Bin einen Schritt weiter.
Erneuter Versuch, diesmal ohne restore, hat auch nicht geklappt: NAND-SATA_INSTALL durchgeführt, dann alles weitere auf dem eMMC.
bis zur ioBroker installation keine Probleme, danach war der admin nicht erreichbar.
Alle Schritte aus "http://www.iobroker.net/docu/?page_id=3928&lang=de" durchgezogen und diesmal auch ein upload admin:
!
root@ioBroker-Rock64:/opt/iobroker# iobroker status iobroker is running ! root@ioBroker-Rock64:/opt/iobroker# iobroker upload admin got /opt/iobroker/node_modules/iobroker.admin/admin upload [2] admin.admin /opt/iobroker/node_modules/iobroker.admin/admin/words.js words.js application/javascript upload [1] admin.admin /opt/iobroker/node_modules/iobroker.admin/admin/index.html index.html text/html upload [0] admin.admin /opt/iobroker/node_modules/iobroker.admin/admin/admin.png admin.png image/png ! root@ioBroker-Rock64:/opt/iobroker# iobroker list instances system.adapter.admin.0 : admin - enabled, port: 8081, bind: 0.0.0.0, run as: admin system.adapter.discovery.0 : discovery - enabled ! root@ioBroker-Rock64:/opt/iobroker# ps -A | grep iobroker 1770 ? 00:00:06 iobroker.js-con ! root@ioBroker-Rock64:~# netstat -n -a -p TCP Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 1770/iobroker.js-co tcp 0 0 127.0.0.1:9001 0.0.0.0:* LISTEN 1770/iobroker.js-co ! root@ioBroker-Rock64:~# node -v v6.11.3 root@ioBroker-Rock64:~# npm -v 3.10.10 !
Alles ohne Erfolg. Beim netstat -n -a -p TCP fror jedoch putty jedoch schon wieder ein, die obige Meldung habe ich dann in der zweiten Session erhalten.
Nach der Fehlermeldung beim Befehl:
node node_modules/iobroker.admin/admin.js --logs module.js:471 throw err; ^ Error: Cannot find module '/root/node_modules/iobroker.admin/admin.js' at Function.Module._resolveFilename (module.js:469:15) at Function.Module._load (module.js:417:25) at Module.runMain (module.js:604:10) at run (bootstrap_node.js:389:7) at startup (bootstrap_node.js:149:9) at bootstrap_node.js:502:3
wollte ich über filezilla sehen, was mit dem angeblich fehlenden Modul auf sich hat, aber auch filezilla blieb dauernd beim einlesen der Verzeichnisse hängen.
Daraufhin habe ich alles neu gemacht (und dabei für eine Fehlereingrenzung den Fehler gemacht mehrere Faktoren zu verändern ).
-
aktuelles armbian heruntergeladen
-
auf 64GB SD-Karte geschrieben
-
eMMC durch Jumper deaktiviert
-
iobroker Installation komplett auf µSD-Karte durchgeführt
-
- alles funktioniert!
-
reboot
-
- nach drei sekunden Jumper entfernt
-
nand-sata-install ausgeführt
-
- klappt sogar von 64GB µSD auf 16GB eMMC!!!
-
reboot und µSD-Karte raus
-
ioBroker startet auch von eMMC!
-
per filezilla Verzeoichnis /opt/iobroker/backups angelegt
-
- letztes backup hereingeschoben
-
über Konsole iobroker stop und iobroker restore BackupName
-
iobroker start
-
- läuft immer noch!!
Im Moment werden die Instanzen nachinstalliert -> dauert nach bisherigen Erfahrungen eine gute Stunde.
Bis dann
Rainer
-
-
läuft im Moment stabil - mal sehen wie lange
Beim Screenshot war die CPU-Auslastung durch die Installation noch auf 24,4%. Das wird noch runtergehen. In den Bestzeiten lag sie unter 5%, im Moment bereits unter 20%. Der Wert unter /proc/stat ist ein Mittelwert über ??? und wird sehr langsam an die aktuelle Situation angepasst.Der Wert der über die Daten aus top ausgerechnet wir liegt gerade bei 2-3%!
Schön zu sehen ist hier auch der immer wieder verwechselte Unterschied zwischen MEM free und MEM available. Durch die ganzen Installationen war der ominöse freie Speicher auf 281MB gesunken, obwohl in Wirklichkeit noch 3049MB zur Verfügung stehen. (free steht aktuell bei 323 bei kaum geändertem available)
In der Tabelle rechts unten sieht man den Bedarf der einzelnen Prozesse. während der controller hier mit 5.7% Auslastung eines CPU-Kerns das Modul mit der höchsten CPU-Belastung ist, ist dies auf meinem Cubie wegen der langsameren I/O Vorgänge der history-Adapter mit ca. 20%! der hier gerade mal 1,5% benötigt.
Gruß
Rainer
-
Jetzt sitze ich vor meinem Pine64.
Welches OS sollte man nehmen? Im Moment habe ich ein debian drauf und boote von SD.
Wie komme ich an das emmc? Wie bekomme ich mein OS auf das emmc?
Vielen Dank
-
Wie bekomme ich mein OS auf das emmc? `
https://forum.pine64.org/showthread.php?tid=4924oder:
http://forum.iobroker.net/viewtopic.php … =80#p84462
Gruß
Rainer
-
Danke.
Den ersten Link lese ich dauernd und verstehe ihn nicht.
Was ist das mit Jumper stecken und wieder ziehen? Sonst stelle ich mich nicht so blöd an.
Das gleiche Problem werde ich doch bei Armbian auch haben?
-
Das gleiche Problem werde ich doch bei Armbian auch haben? `
Wie du das in dem oben verlinkten Beitag von mir gelesen hast, wirst du das bei dem ersten Versuch eben nicht haben.Bei weiteren schon, das habe ich ja später auch geschrieben.
Gruß
Rainer
-
läuft im Moment stabil - mal sehen wie lange
Rock64_revival.jpg
Beim Screenshot war die CPU-Auslastung durch die Installation noch auf 24,4%. Das wird noch runtergehen. In den Bestzeiten lag sie unter 5%, im Moment bereits unter 20%. Der Wert unter /proc/stat ist ein Mittelwert über ??? und wird sehr langsam an die aktuelle Situation angepasst.
Der Wert der über die Daten aus top ausgerechnet wir liegt gerade bei 2-3%!
Schön zu sehen ist hier auch der immer wieder verwechselte Unterschied zwischen MEM free und MEM available. Durch die ganzen Installationen war der ominöse freie Speicher auf 281MB gesunken, obwohl in Wirklichkeit noch 3049MB zur Verfügung stehen. (free steht aktuell bei 323 bei kaum geändertem available)
In der Tabelle rechts unten sieht man den Bedarf der einzelnen Prozesse. während der controller hier mit 5.7% Auslastung eines CPU-Kerns das Modul mit der höchsten CPU-Belastung ist, ist dies auf meinem Cubie wegen der langsameren I/O Vorgänge der history-Adapter mit ca. 20%! der hier gerade mal 1,5% benötigt.
Gruß
Rainer `
Hallo Rainer,
ich hab mal wieder ein paar Fragen
1.Wärst du so nett deine "Gauge-Widgets" zur Verfügung zu stellen?
2.Welche Datenpunkte nimmst du für das Diagram über den Speicherverbrauch der verschieden Adapter?
3.Welche Datenpunkte nimmst du für den Netzwerktraffic?
4.Könntest du auch die Tabelle mit den ioBroker-Prozessen zur Verfügung stellen.
Würde gern die Daten meines Rock64 auch Visualisieren.
Gruß
-
Hallo zusammen,
ich habe mir, nach den Berichten hier über die Platine, den Rock64 bestellt.
Ich bin gespannt, wie ich mich mit ihm anstelle. Vorher muss ich ihn aber erstmal bekommen.
Wie sind denn die Erfahrungen bezüglich der Lieferzeit. Ich habe schon was von 15-45 Tagen gelesen. Sollte das stimmen kann ich ja zwischen Mitte November und Ende Dezember mit dem Eintreffen rechnen…
Im Pine64-Forum habe ich eine Menge über die Installation auf eMMC gelesen. Insbesondere die Geschichte mit dem seriellen Kabel hat mich dabei immer wieder irritiert.
Sehe ich es richtig, dass (http://forum.iobroker.net/viewtopic.php?f=34&t=7019&start=80) die Installation über nand-sata-install funktioniert? Oder sollte ich bis zum Eintreffen des Rock64 noch mal einen USB-Seriell-Adapter ins Haus holen?
Irgendwie blicke ich da noch nicht ganz durch…
Kann man alternativ z.B. mit dem WinDiskImager direkt auf den eMMC schreiben, wenn man einen USB-eMMC-Adapter hat?
Vielen Dank für eure Hilfe!
Viele Grüße
Bene
-
Ich habe es mit einem neuen eMMC auch ohne irgendwelche Hilfsmittel mit nand-Sata-install geschafft.
Beim zweiten install klappt es tatsächlich nicht (so einfach).
Das kabel für die serielle konsole dient nur dazu den POST zu sehen, da dieser nicht auf HDMI ausgegeben wird.
Man muss auf jeden fall einen Jumper beim boot setzen und sobald er von der SD karte bootet diesen Jumper entfernen.
Das war mir zuviel Aufwand und ich habe mich auf gut glück an die Erfahrungen aus dem pine64 Forum gehalten: jumper stecken - strom an - 3 sec. Warten - Jumper weg!
Hat bei mir reproduziert geklappt.
Sinn des ganzen ist, dass beim Rock64 das eMMC bootvorrang hat. Bei gesetztem Jumper wird zwar von der SD karte gebootet, aber das eMMC nocht erkannt. Also muss man den Jumper für das booten setzen und danach sofort entfernen, damit auch das eMMC erkannt wird.
Lieferzeit beim ersten mal waren etwa 4 Wochen über Rotterdam, beim zweiten etwa drei Tage über Leipzig, wobei DHL express aber zusätzlich zur Einfuhrumsatzsteuer nochmal etwa 15€ "Kapitalauslagegebühren" erhoben hat
Gruß
Rainer
-
Es war nicht vergessen, nur jetzt endlich komme ich von meinem PC wieder ins Internet.
Ich hoffe, dass ich jetzt alles beantworten kann:
@Smartuser:Wärst du so nett deine "Gauge-Widgets" zur Verfügung zu stellen? `
s.u.Welche Datenpunkte nimmst du `
erst mal allgemein:
hier der komplette view:
! ````
passte leider nicht, daher als Anhang!Da sind einige gerechnete Daten drin, bei Bedarf bitte nach den Skripts/Blockly fragen. z.B. ~~@Smartuser:~~ > 3.Welche Datenpunkte nimmst du für den Netzwerktraffic? ` Blockly: >! ```` <xml xmlns="http://www.w3.org/1999/xhtml"><block type="on_ext" id="xrbmvIO/PN;%/.YQdjWG" x="87" y="38"><mutation items="1"></mutation> <field name="CONDITION">ne</field> <value name="OID0"><shadow type="field_oid" id="F{:[`LHAmM~=mf}G3e05"><field name="oid">rpi2.0.network.net_received</field></shadow></value> <statement name="STATEMENT"><block type="update" id="qT5NPeQr(uS|8Qnsbs+B"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.CubieNetReceived</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="math_arithmetic" id=":qLnK-H].8qXH.G3`U/O"><field name="OP">DIVIDE</field> <value name="A"><shadow type="math_number" id="o^|%^oXo(TWM*46xqtm8"><field name="NUM">1</field></shadow> <block type="math_arithmetic" id="{NZTMK@UQ]dKVdEkLb*)"><field name="OP">MINUS</field> <value name="A"><shadow type="math_number" id="{V(@*RwUGQkn;Q5oOjuZ"><field name="NUM">1</field></shadow> <block type="get_value" id="bX)m08(.JE%L~L52CKNz"><field name="ATTR">val</field> <field name="OID">rpi2.0.network.net_received</field></block></value> <value name="B"><shadow type="math_number" id="rKc{A(_PHQLo)znlgc+s"><field name="NUM">8192</field></shadow> <block type="get_value" id="CicpnUOm3we4(4ialV#R"><field name="ATTR">val</field> <field name="OID">javascript.0.CubieNetReceived_old</field></block></value></block></value> <value name="B"><shadow type="math_number" id="4XzpbA2:JR=[V-cvo1?K"><field name="NUM">-61440</field></shadow></value></block></value> <next><block type="update" id="GjM0fc^BM32;#Rk?}3QQ"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.CubieNetTransmit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="math_arithmetic" id="JKVM~;-@4,4yUDwJD!lo"><field name="OP">DIVIDE</field> <value name="A"><shadow type="math_number" id="o^|%^oXo(TWM*46xqtm8"><field name="NUM">1</field></shadow> <block type="math_arithmetic" id="q,q|I1z+:UK#.tZ!681j"><field name="OP">MINUS</field> <value name="A"><shadow type="math_number" id="{V(@*RwUGQkn;Q5oOjuZ"><field name="NUM">1</field></shadow> <block type="get_value" id="L3OqohqV!yS2V7.4dy~P"><field name="ATTR">val</field> <field name="OID">rpi2.0.network.net_send</field></block></value> <value name="B"><shadow type="math_number" id="rKc{A(_PHQLo)znlgc+s"><field name="NUM">8192</field></shadow> <block type="get_value" id="gHq.R#.u7}LE1x+)*[mV"><field name="ATTR">val</field> <field name="OID">javascript.0.CubieNetTransmit_old</field></block></value></block></value> <value name="B"><shadow type="math_number" id="Km^xL8;y*,N5ojOD^kTs"><field name="NUM">61440</field></shadow></value></block></value> <next><block type="update" id="0?+[Al#HE,.y)`WT-U{l"><mutation delay_input="true"></mutation> <field name="OID">javascript.0.CubieNetReceived_old</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="get_value" id="2#RNYI_]bR}O1-1@*n!`"><field name="ATTR">val</field> <field name="OID">rpi2.0.network.net_received</field></block></value> <next><block type="update" id="8;6j447ey??oUT)y8A27"><mutation delay_input="true"></mutation> <field name="OID">javascript.0.CubieNetTransmit_old</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="get_value" id="Wx0Ix3So2{ya^C]tz(Rb"><field name="ATTR">val</field> <field name="OID">rpi2.0.network.net_send</field></block></value></block></next></block></next></block></next></block></statement></block></xml>
Ich hoffe das war erstmal alles.
Gruß
Rainer
-
Und das skript zu den Prozessen von Ruhr70
! ```
`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 -pcpu | 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 + ianzDP], // ioBroker Prozess (COMMAND = Kommando, mit dem der Prozess gestartet wurde)
pid: arr[ 1 + ianzDP], // Prozess ID
cpu: parseFloat(arr[ 2 + ianzDP]), // aktueller CPU-Last in %
mem: parseFloat(arr[ 3 + ianzDP]), // aktueller Verbrauch physikalischer Speicher %
vmem: parseInt(arr[ 4 + ianzDP]), //
rss: parseInt(arr[ 5 + ianzDP]), // physikalische Speichernutzung
start: arr[ 8 + ianzDP], // Startzeitpunkt des Prozesses
time: arr[ 9 + ianzDP] // 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, Lerzeichen als Trennervar 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);`
! Gruß
! Rainer[/i][/i][/i][/i][/i][/i][/i][/i][/i] -
Und das skript zu den Prozessen von Ruhr70 `
Und was macht das Skript, wenn ich so quer reinfragen darf? -
Und was macht das Skript, wenn ich so quer reinfragen darf? `
Bei dir drücke ich da mal ein Auge zuDas Skript liest die Prozessornutzung der einzelnen ioBroker Instanzen und des js-controllers aus.
Gruß
Rainer
-
vielen Dank; ist das prozessorabhängig, oder liefe das auch auf meinem Orange Pi?
-
Muss zumindest auf allen Linux Installationen laufen.
Bis das Gegenteil bewiesen ist
Gruß
Rainer