Fheminfo Uptime von FHEM

Begonnen von AHA1805, 28 März 2014, 23:54:46

Vorheriges Thema - Nächstes Thema

AHA1805

Hallo

wäre es nicht interessant bei Fheminfo die Uptime von FHEM seit dem letzten Start zu sehen?



Gruß Hannes
AHA 1805 RIP 29.08.2016 --> RUHE IN FRIEDEN
In Gedanken Bei dir HANNES
Dein Bruder Gerd (Inputsammler) Vermisst dich Hannes (AHA1805)

rudolfkoenig

Warum nicht, z.Zt. kann man das nur indirekt auch aus dem Log rausfischen.
Der fheminfo Autor ist z.Zt. inaktiv und ich betreue das Modul komissarisch.
Wenn Du einen sinnvollen Patch anhaengst, dann kann ich das einbauen.

betateilchen

@Hannes: reichen Dir Sekunden oder welches Ausgabeformat stellst Du Dir vor?

(http://up.picr.de/17795240mu.png)

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Puschel74

Hallo,

Zitatxd, yh, zm

für Tage, Stunden, Minuten wäre was feines  ;)

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

betateilchen

ich habs ja fast befürchtet...

Wäre es so genehm?

(http://up.picr.de/17795963zs.png)

(http://up.picr.de/17795964jv.png)

(http://up.picr.de/17795965bj.png)

Ausserdem können (unabhängig von fheminfo) die Sekunden seit dem fhem-Start ermittelt werden, falls jemand die Zeit selbst formatieren möchte.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Puschel74

Hallo,

ZitatWäre es so genehm?
Jep, für mich würde das so reichen  8)
Danke.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

betateilchen

Vorgeschlagener Patch für fhem.pl und 98_fheminfo.pm:


Index: fhem.pl
===================================================================
--- fhem.pl (revision 5366)
+++ fhem.pl (working copy)
@@ -216,6 +216,8 @@
use vars qw($reread_active);
use vars qw($winService);       # the Windows Service object

+use vars qw($fhem_started);     # used for uptime calculation
+
my $AttrList = "verbose:0,1,2,3,4,5 room group comment alias ".
                 "eventMap userReadings";

@@ -480,6 +482,7 @@
   }
}
DoTrigger("global", "INITIALIZED", 1);
+$fhem_started = time;

$attr{global}{motd} .= "Running with root privileges."
         if($^O !~ m/Win/ && $<==0 && $attr{global}{motd} =~ m/^$sc_text/);
Index: FHEM/98_fheminfo.pm
===================================================================
--- FHEM/98_fheminfo.pm (revision 5366)
+++ FHEM/98_fheminfo.pm (working copy)
@@ -79,6 +79,8 @@
   my $sendStatistics = AttrVal("global","sendStatistics",undef);
   my $moddir   = $attr{global}{modpath}."/FHEM";
   my $uidFile  = $moddir."/FhemUtils/uniqueID";
+  my $upTime;
+     $upTime   = fhemUptime();

   if(defined($uniqueID) && $uniqueID eq $uidFile) {
     my $fh;
@@ -170,6 +172,7 @@
   $str .= sprintf("  Arch%*s: %s\n",5," ",$arch);
   $str .= sprintf("  Perl%*s: %s\n",5," ",$perl);
   $str .= sprintf("  uniqueID%*s: %s\n",0," ",$uniqueID);
+  $str .= sprintf("  upTime%*s: %s\n",3,"  ",$upTime);
   $str .= "\n";

   my $contModules;
@@ -366,6 +369,27 @@
   }
}

+sub fhemUptime {
+ my $diff = time - $fhem_started;
+ my ($d,$h,$m,$ret);
+
+ ($d,$diff) = _myDiv($diff,86400);
+ ($h,$diff) = _myDiv($diff,3600);
+ ($m,$diff) = _myDiv($diff,60);
+
+ $ret  = "";
+ $ret .= "$d days, " if($d >  1);
+ $ret .= "1 day, "   if($d == 1);
+ $ret .= sprintf("%02s:%02s:%02s", $h, $m, $diff);
+
+ return $ret;
+}
+
+sub _myDiv($$) {
+ my ($p1,$p2) = @_;
+ return (int($p1/$p2), $p1 % $p2);
+}
+
1;

=pod


Der Timestamp (epoche) steht damit fhemweit als neue Variable $fhem_started zur Verfügung und kann für eigene Berechnungen verwendet werden.

{time - $fhem_started}

liefert die Sekunden seit dem letzten fhem INITIALIZED.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

AHA1805

Zitat von: betateilchen am 29 März 2014, 12:18:38
ich habs ja fast befürchtet...

Wäre es so genehm?

(http://up.picr.de/17795963zs.png)

(http://up.picr.de/17795964jv.png)

(http://up.picr.de/17795965bj.png)

Ausserdem können (unabhängig von fheminfo) die Sekunden seit dem fhem-Start ermittelt werden, falls jemand die Zeit selbst formatieren möchte.

Super genauso hab ich mir das vorgestellt :-)

Hab mir das mal angeschaut, wie ich sowas machen könnte.

Aber die Idee die Zeit beim starten von fhem zu speichern ist fast die beste Idee.
Ich hatte überlegt, die fhem.log auszuwerten aber viel zu umständlich.

Gruß und Danke

Gesendet von Unterwegs mit Tapatalk 4

AHA 1805 RIP 29.08.2016 --> RUHE IN FRIEDEN
In Gedanken Bei dir HANNES
Dein Bruder Gerd (Inputsammler) Vermisst dich Hannes (AHA1805)

betateilchen

Zitat von: AHA1805 am 29 März 2014, 17:34:01
Aber die Idee die Zeit beim starten von fhem zu speichern ist fast die beste Idee.

Na mal sehen, was Rudi zu der Idee meint. Er wollte einen Patch haben, nun hat er einen 8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

AHA1805

Ich habe den patch gerade eingespielt und er funktioniert super.

Da ich nicht heraus gefunden habe mit welchem Tool ich die Files patchen kann,
habe ich die Änderungen manuell um die jeweiligen Änderungen ergänzt.

Mit welchem Tool werden die patches erstellt und anschließend die Files mit Hilfe des Patchfiles gepachted?

Hab ein paar gefunden
diff
Winmerge
dann habe ich noch was von git gelesen.

Welches Tool verwendet Ihr, dann kann ich es mir mal anschauen wie das funktioniert,
im Wiki habe ich nix gefunden.
Wenn ich es verstanden habe, kann ich ja einen Wiki Eintrag in der Sektion HOWTOS machen. (Denke das wäre es am besten aufgehoben)

Gruß und Danke
Hannes
AHA 1805 RIP 29.08.2016 --> RUHE IN FRIEDEN
In Gedanken Bei dir HANNES
Dein Bruder Gerd (Inputsammler) Vermisst dich Hannes (AHA1805)

betateilchen

Anwender sollten die Files nicht unbedingt selbst patchen, sondern warten, bis der zuständige Modulentwickler einen Vorschlag geprüft, ggf. kompatibel gemacht und offiziell eingebaut hat.

Aber um Deine Fragen zu beantworten:

Patches erstelle ich am schnellsten auf der Konsole mit "svn diff <fileName> > <patchFileName>" und das Tool zum Einspielen eines patches heißt - man glaubt es kaum - "patch" 8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig


AHA1805

Zitat von: betateilchen am 29 März 2014, 21:50:25

Patches erstelle ich am schnellsten auf der Konsole mit "svn diff <fileName> > <patchFileName>" und das Tool zum Einspielen eines patches heißt - man glaubt es kaum - "patch" 8)

Udo, danke für die Info :-)
Ist das ein Commandlinetool von Subversion?
... und gibt das auch als einzell Tool oder muss ich dafür das komplette SubVersion installieren?


Zitat von: rudolfkoenig am 30 März 2014, 08:59:25
Eingecheckt

Danke  Rudi :)
AHA 1805 RIP 29.08.2016 --> RUHE IN FRIEDEN
In Gedanken Bei dir HANNES
Dein Bruder Gerd (Inputsammler) Vermisst dich Hannes (AHA1805)

betateilchen

@Rudi: Danke!

@Hannes:

Da ich "svn" starte, ist das das "Hauptprogramm" und kein separates Tool. Es gibt aber auch standalone tools dafür, einige hattest Du ja schon genannt. Standard dürfte diff sein http://manpages.ubuntu.com/manpages/gutsy/de/man1/diff.1.html

Diff tools gibt es sogar online, da kann man auf einer Webseite zwei Dateien hochladen und erhält das diff als Antwort.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!