NEWS
RPI-Monitor - Uptime Format ändern
-
Nun, als Vorschlag könntest du den History Adapter benutzen. (Wahlweise SQL oder Influx). Der speichert die Datenpunkte. Diese kannst du dann mittels FLOT Diagramm visualisieren.
Beispiel eines Temperaturdiagrammes von mir.
Lg
Günther
<link_text text="http://uploads.tapatalk-cdn.com/2016111 ... 576794.png">http://uploads.tapatalk-cdn.com/20161110/47e0206284c079271fa39c5b17576794.png</link_text>" /> -
Ganz so ausführlich wollte ich es eigentlich nicht.
Habe eine kleine Statusübersicht des RPI Montors gebastelt, welche die Werte als Text ausgibt.
Bei der Uptime sollte dann z.B. so etwas herauskommen:
Raspi aktiv seit: 2 Tagen 7 Stunden 18 Minuten
Aktuell habe ich es halt nur so:
Raspi aktiv seit: 199080 Sekunden
und das ist leider zu unübersichtlich.
-
Alles klar, dann wirst du um ein kleines Script wohl nicht herumkommen.
Folgendes habe ich gefunden.
function umwandeln() { var tag,std,min,sek; var c=60; var d=24; { sek = parseInt(Sekunden_start.value); min = Math.floor(sek/c); sek = sek % c; std = Math.floor(min/c); min = min % c; tag = Math.floor(std/d); std = std % d; sekunden.value = sek; minuten.value = min; stunden.value = std; tage.value = tag; } }
In sekunden_start steht der Ausgangswert.
In sekunden, minuten, stunden, tage das Ergebnis.
Leider stehe ich erst ganz am Anfang mit Javascript. Ich bin mir sicher, da fehlt noch etwas um es vollständig lauffähig zu bekommen. Aber der prinzipielle Mechanismus zum Umrechnen ist vorhanden.
-
Habs mal probiert….
bekomme die Fehlermeldung "javascript.0 script.js.common.Skript2 compile failed: SyntaxError: missing ) after argument list"
Hab leider keine Ahnung von Javascript, daher etwas hilflos :?
Jemand eine Lösung?
-
Ich hab da mal was gebastelt ich denke das funktioniert, schön ist es bestimmt nicht ist aber auch mein erster Versuch :oops:
`var pfad = "Raspiobroker.Uptime."; var zeiten = ['tag','std','min','sek']; var format = ['tage','stunden','minuten','sekunden']; var tag,std,min,sek; var x = getState("rpi2.0.uptime.uptime").val; function umwandeln(x) { var c=60; var d=24; { sek = x; min = Math.floor(sek/c); sek = sek % c; std = Math.floor(min/c); min = min % c; tag = Math.floor(std/d); std = std % d; /*sekunden.value = sek; minuten.value = min; stunden.value = std; tage.value = tag;*/ for(var i=0;i<format.length;i++) {/createstate(pfad/+/format[i].tolowercase(),0,/name:/'raspiobroker/uptime/in/'/format[i],/desc:/'uptime/für/raspiobroker/zeiten[i],/type:/'value'});/setstate(pfad/'tage'.tolowercase(),tag);/'stunden'.tolowercase(),std);/'minuten'.tolowercase(),min);/'sekunden'.tolowercase(),sek);/}/umwandeln(x);/<e=""></format.length;i++)>`  [/i][/i][/i]
-
Habs mal probiert….
bekomme die Fehlermeldung "javascript.0 script.js.common.Skript2 compile failed: SyntaxError: missing ) after argument list"
Hab leider keine Ahnung von Javascript, daher etwas hilflos :?
Jemand eine Lösung? `
Hast du es hin bekommen? Steh jetzt vor dem selben problem wie Du.
Mir würden ja sogar die Tage reichen
Online seit xxx Tagen
Gruss Danyel
-
nimm doch das skriot von masterki die funktion kannst du ehh nicht nur so nutzen.. die muss noch aufgferufen werden
-
@ringdingringding:Hast du es hin bekommen? Steh jetzt vor dem selben problem wie Du. `
Ne ich hab's es anders gelöst. Hab auf dem Pi ein Script laufen welches mir regelmäßig Daten in ioBroker States schreibt und habe dafür den RPi-Monitor deinstalliert.
Mfg
Gesendet von meinem SM-G920F mit Tapatalk
-
@ringdingringding:Mir würden ja sogar die Tage reichen Online seit xxx Tagen `
Ich habe den Wert im Widget einfach durch 86.400 dividiert und auf eine Kommastelle angezeigt.Gruß
Rainer
-
Wo muss ich das mit dem dividieren eintragen? Hab das gestern nicht gefunden.
Danke und gruss
-
Habe jetzt keinen zugriff auf meine Installation.
kannst du mal einen screenshot der Konfigation des Widgets (ich meine ich hätte val basic) posten.
Sonst müssen wir das auf heute abend vertagen.
Gruß
Rainer
-
Heute abend reicht
Bin auch auf Arbeit
-
Hier:
Widget: basic numberDatenpunkt: Uptime
Konfiguration: erweiterte Einstellungen
Gruß
Rainer
-
Danke Rainer das hat geklappt.
Aber wie kommt man auf 1.157407407407407e-5????????
Was ist das?
Kannst Du mir das erklären für später mal wenn ich es brauche für irgendwas!?
Gruss Danyel
-
@ringdingringding:Aber wie kommt man auf 1.157407407407407e-5????????
Was ist das? `
Das ist 1/86400Man kann den Wert nicht durch 86400 teilen um aus eben so vielen Sekunden einen Tag zu errechnen, dann muss man ihn halt mit dem Kehrwert multiplizieren = 0,00001157407407407 oder in Exponentialschreibweise 1.157407407407407e-5
Gruß
Rainer
-
Dankööö
-
Für alle die es interessiert und ein anderes Format haben möchten (z.B. 6T 16:43). Ich verwende dabei eine eigenes neues Objekt, welches ich per Skript fülle alle 3 Minuten.
! ` > var pfad = "Systeminfos.ioBroker" + ".";
var cronStr = "*/3 * * * *";
var abfrage = "cat /proc/uptime | awk '{ printf "%dT %02d:%02d", $1/86400, $1/3600%24, $1/60%60 }'";
var idUptime = pfad + 'iobroker_Uptime';
createState(idUptime, "", {
name: 'Uptime',
desc: 'Uptime (abgefragt mit cat /proc/uptime)',
type: 'string',
unit: '',
role: 'value'
});
function abfrageUptime() {
exec(abfrage, function(err, stdout, stderr) {
if (err) {
log(err,"error");
return;
}
//log(stdout);
setStateDelayed(idUptime,stdout,100);
});
}
function abfragen() {
abfrageUptime();
}
// regelmässige Wiederholungen
// –---------------------------------------------------------------------------
schedule(cronStr, abfragen);
// main
// -----------------------------------------------------------------------------
function main() {
abfragen();
}
// Start Skript:
// -----------------------------------------------------------------------------
setTimeout(main, 500); `
mfg
Falk
-
Hallo Falk,
ich hab dein Skript mal zum Anlass genommen mich mit dem Skripten erstmalig (ausserhalb der CCU2) zu beschäftigen. Hab wohl noch ein grundsätzliches Problem.
Hab dein Skript nach einem ersten Hallo World Versuch mal mal per copy/past genommen und ausgeführt.
Allerdings bekomme ich in den Objekten kein Ergebnis? Ich she zwar den Neueintrag "Systeminfos.ioBroker", aber keine "Uptime"?
Der Error-Log gibt ebenfalls keine weiteren Auskünfte.
Anbei zwei Screenshots meines Skript Editors und der Objektansicht.
Was mach ich falsch?
Alexander
-
Fragt mich nicht warum,
hab heute Nachmittag mein Wandpanel aufgehängt und gerade mal nach Antworten geschaut, und wie ich so in meine Objektübersicht schaue:
Die Dubletten für javascript.0 und script.js sind jetzt ebenfalls weg?!
War wohl wieder zu ungeduldig…
Alexander
-
Huhu.
Kann man dieses Script auch so umschreiben, dass es die Sekunden aus dem Raspi Adapter zieht? Bzw noch andere Raspis abfragen? Habe 3 Raspis am laufen als Multihost und würde gerne die Uptime von jedem in vis darstellen. Stehe gerade irgendwie auf dem Schlauch und in Javascript bin ich leider auch nicht so gut bewandert.
MfG,
Tobi