Neues Modul: Rpi (Raspberry pi) Status anzeigen

2,638 views
Skip to first unread message

JoWiemann

unread,
Oct 3, 2012, 1:54:33 PM10/3/12
to fhem-...@googlegroups.com
Hallo,
 
habe heute meine Perl-Kenntnisse trainiert und dabei ist das Modul: 99_RpiUtils
 
Folgende Informationen werden angezeigt:
 

1. RpiCPUTemperature :
48.69 Grad
 
2. RpiCPUSpeed :
697.95 MHz
 
3. RpiUpTime :
4 Stunden
46 Minuten
30 Sekunden
 

4. RpiRAM :
RAM: 72.83%
Free: 49 MB
Used: 146 MB
Total: 184 MB
 
5. RpiSwap :
Swap: 1.01%
Free: 98 MB
Used: 1 MB
Total: 99 MB
 
6. RpiSD-Card :
Groesse: 7459.46 MB
Benutzt: 1554.06 MB
Verfuegbar: 5526.57 MB
 
7. RpiEthernet :
Received: 27.87 MB
Sent: 4.47 MB
Total: 32.34 MB
Das modul basiert auf den Routinen von Raspcontrol und benötigt folgende weitere sub (Am Besten in 99_myUtils anlegen):
 
# http://www.somacon.com/p114.php
# Perl trim function to remove whitespace from the start and end of the string
sub trim($)
{
   my $string = shift;
   $string =~ s/^\s+//;
   $string =~ s/\s+$//;
   return $string;
}
 
Herzliche Grüße
 
Jörg
99_RpiUtils.pm

Dr. Boris Neubert

unread,
Oct 3, 2012, 2:24:24 PM10/3/12
to fhem-...@googlegroups.com
Am 03.10.2012 19:54, schrieb JoWiemann:
> habe heute meine Perl-Kenntnisse trainiert und dabei ist das Modul:
> 99_RpiUtils
habe es bei contrib hinzugef�gt.

Gr��e
Boris

Dennis

unread,
Oct 3, 2012, 2:35:37 PM10/3/12
to fhem-...@googlegroups.com
Ist das Modul so Rpi spezifisch ? uptime / ifconfig / df / free ist ja Linux Standard, liesse sich das Modul ggf. so verallgemeinern das es 
für jedes Linux (Tuxradio etc.) passt ?

Lassen sich die Ergebnisse auch in ein FileLog bringen um daraus Plots zu bauen ?

Auf jedenfall ist das SysInfomodul eine tolle Idee !

Gruß Dennis
Message has been deleted

JoWiemann

unread,
Oct 3, 2012, 2:52:29 PM10/3/12
to fhem-...@googlegroups.com
Hallo Boris,
danke Dir. Leider muss ich Dich noch einmal bemühen, war leider noch ein kleiner Fehler drin. Sorry.
 
Herzliche Grüße
 
Jörg
 

Am Mittwoch, 3. Oktober 2012 20:24:28 UTC+2 schrieb Boris:
Am 03.10.2012 19:54, schrieb JoWiemann:
> habe heute meine Perl-Kenntnisse trainiert und dabei ist das Modul:
> 99_RpiUtils
habe es bei contrib hinzugef�gt.

Gr��e
Boris
99_RpiUtils.pm

JoWiemann

unread,
Oct 3, 2012, 2:56:13 PM10/3/12
to fhem-...@googlegroups.com
Hallo Dennis,
 
da ich noch eine Fritz!Box mit Freetz laufen habe, habe ich es dort einmal probiert. Leider funktioniert es dort nicht ohne Änderungen. Andere Linuxsysteme habe ich leider nicht zum prüfen da.
 
Die Werte für Logs zurückgeben zu können müsste ein Rückgabeparameter definiert werden, der Parametergesteuert den gewünschten Wert zurückgibt, oder direkt ins Log schreibt. Dafür fühle ich mich in Perl und Fhem noch nicht fit genug. Sorry.
 
Hertliche Grüße
 
Jörg

JoWiemann

unread,
Oct 3, 2012, 3:56:20 PM10/3/12
to fhem-...@googlegroups.com
Hallo,
 
habe nun ein paar Anpassung vorgenommen. Lauft jetzt auch auf einer Fritz!Box mit Freetz.
 
Grüße Jörg
99_RpiUtils.pm

Dennis

unread,
Oct 3, 2012, 4:00:13 PM10/3/12
to fhem-...@googlegroups.com
Cool ! Mein Tuxradio2 ist auf dem Postweg, sobald es eintrifft (und ich es zum laufen bekomme :-)) werde ich testen und berichten !

Gruß Dennis

Gerhard Pfeffer

unread,
Oct 4, 2012, 3:16:33 AM10/4/12
to fhem-...@googlegroups.com
Hej,

btw. /proc/cpuinfo ist nur solange gut, als du deine CPU nicht übertaktest.
Daher würde ich dir eher empfehlen, diesen Wert zu verwenden
(natürlich durch 1000 dividiert):
/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq

Greetz,
Gerhard
> --
> To unsubscribe from this group, send email to
> fhem-users+...@googlegroups.com

JoWiemann

unread,
Oct 4, 2012, 3:32:07 PM10/4/12
to fhem-...@googlegroups.com
Hallo Gerhard,
 
läuft leider nur unter root-Rechten. Über sudo bekomme ich aus Perl heraus keine Rückmeldung.
 
Grüße
 
Jörg

Dr. Boris Neubert

unread,
Oct 5, 2012, 2:40:16 AM10/5/12
to fhem-...@googlegroups.com
Hallo J�rg,

Am 03.10.2012 21:56, schrieb JoWiemann:
> Hallo,
>
> habe nun ein paar Anpassung vorgenommen. Lauft jetzt auch auf einer
> Fritz!Box mit Freetz.
>
> Gr��e J�rg
>
war das die neueste Version? Dann w�rde ich diese ins contrib legen.

Was h�ltst Du davon, daraus ein Modul zu machen, das in fhem integriert
ist? Also mit Readings, automatischer Aktualisierung, etc.? Du k�nntest
Dir an 59_Weather.pm ein Vorbild nehmen, wie man ein einfaches Device
implementiert, das automatisch zeitgesteuert die Readings aktualisiert.

Viele Gr��e
Boris

JoWiemann

unread,
Oct 5, 2012, 2:52:45 AM10/5/12
to fhem-...@googlegroups.com
Hallo Boris,
 
danke für die Anregung. Ich werde mir dann das Beispiel einmal ansehen und in der nächsten Zeit dran arbeiten.
 
Im Moment ist das die neueste Version.
 
Herzliche Grüße
 
Jörg

Am Freitag, 5. Oktober 2012 08:40:20 UTC+2 schrieb Boris:
Hallo J�rg,

Am 03.10.2012 21:56, schrieb JoWiemann:
> Hallo,
>  
> habe nun ein paar Anpassung vorgenommen. Lauft jetzt auch auf einer
> Fritz!Box mit Freetz.
>  
> Gr��e J�rg
>
war das die neueste Version? Dann w�rde ich diese ins contrib legen.

Was h�ltst Du davon, daraus ein Modul zu machen, das in fhem integriert
ist? Also mit Readings, automatischer Aktualisierung, etc.? Du k�nntest
Dir an 59_Weather.pm ein Vorbild nehmen, wie man ein einfaches Device
implementiert, das automatisch zeitgesteuert die Readings aktualisiert.

Viele Gr��e
Boris

Dr. Boris Neubert

unread,
Oct 5, 2012, 3:54:17 AM10/5/12
to fhem-...@googlegroups.com
Am 03.10.2012 21:56, schrieb JoWiemann:
>
> habe nun ein paar Anpassung vorgenommen. Lauft jetzt auch auf einer
> Fritz!Box mit Freetz.
>

im contrib eingecheckt.
bn

JoWiemann

unread,
Oct 5, 2012, 4:58:39 PM10/5/12
to fhem-...@googlegroups.com
Hallo,
 
habe nun noch einmal am Modul gearbeitet und es zunächst einmal modularisiert und umbenannt.
 
Umbennung 99_RpiUtils.pm nach SrvUtils.pm, da das Modul hoffentlich für fhem-Server universel einsetzbar werden soll.
 
Für die Ansicht im WebFrontend folgendes definieren:
 
define SrvValues weblink htmlCode {ShowSrvValues()}
attr SrvValues room RaspBerry
Um Log-Files zu schreiben können folgende Routinen aufgerufen werden:
 
Temperatur loggen:
 
define RPiTemp dummy
attr RPiTemp comment RaspberryPi Device Sensor
attr RPiTemp room hidden
 
define FileLog_RPiTemp FileLog /var/log/fhem/rpi_temp-%Y-%m.log RPiTemp
attr FileLog_RPiTemp logtype fht:Temp,text
attr FileLog_RPiTemp room hidden
 
define weblink_RPiTemp weblink fileplot FileLog_RPiTemp:temp4:CURRENT
attr weblink_RPiTemp label "RaspberryPi Temperatur: Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr weblink_RPiTemp room System
 
define at_RPiTemp at +*00:03 { fhem "trigger RPiTemp ".SrvTemp() }
attr at_RPiTemp room hidden
 
Ausgabe LogFile:
2012-10-05_22:09:42 RPiTemp T: 49.77  in Grad Celsius
#------------------------------------------------------------------------------------------------------------------------------------------------------
RAM loggen:
 
define RPiRam dummy
attr RPiRam comment RaspberryPi Device Sensor
attr RPiRam room hidden
 
define FileLog_RPiRam FileLog /var/log/fhem/rpi_ram-%Y-%m.log RPiRam
attr FileLog_RPiRam logtype text
attr FileLog_RPiRam room hidden
 
define at_RPiRam at +*00:03 { fhem "trigger RPiRam ".SrvRamSwap("R") }
attr at_RPiRam room hidden
 
Ausgabe LogFile:
2012-10-05_22:31:19 RPiSwap S: 0.00 F: 102.396 U: 0 T: 102.396 MB
 
S: = Swap; F: = Free; U: = Used; T: = Total   alles in MByte
 
#------------------------------------------------------------------------------------------------------------------------------------------------------
SWAP loggen:
define RPiSwap dummy
attr RPiSwap comment RaspberryPi Device Sensor
attr RPiSwap room hidden
 
define FileLog_RPiSwap FileLog /var/log/fhem/rpi_swap-%Y-%m.log RPiSwap
attr FileLog_RPiSwap logtype text
attr FileLog_RPiSwap room hidden
 
define at_RPiSwap at +*00:03 { fhem "trigger RPiSwap ".SrvRamSwap("S") }
attr at_RPiSwap room hidden
 
Ausgabe LogFile:
2012-10-05_22:34:15 RPiRam R: 35.37 F: 122.19 U: 66.88 T: 189.07
S: = Swap; F: = Free; U: = Used; T: = Total   alles in MByte
 
#------------------------------------------------------------------------------------------------------------------------------------------------------
Filesystemspeicher loggen:
define RPiFS dummy
attr RPiFS comment RaspberryPi Device Sensor
attr RPiFS room hidden
 
define FileLog_RPiFS FileLog /var/log/fhem/rpi_fs-%Y-%m.log RPiFS
attr FileLog_RPiFS logtype text
attr FileLog_RPiFS room hidden
 
define at_RPiFS at +*00:03 { fhem "trigger RPiFS ".SrvFileSystem() }
attr at_RPiFS room hidden
 
Ausgabe LogFile:
2012-10-05_22:40:16 RPiFS G: 7459.46 B: 1564.11 V: 5516.52
G: = Größe; B: = Benutzt; V: = Verfügbar   alles in MByte
#------------------------------------------------------------------------------------------------------------------------------------------------------
Netzwerktraffik loggen:
define RPiNetwork dummy
attr RPiNetwork comment RaspberryPi Device Sensor
attr RPiNetwork room hidden
 
define FileLog_RPiNetwork FileLog /var/log/fhem/rpi_lan-%Y-%m.log RPiNetwork
attr FileLog_RPiNetwork logtype text
attr FileLog_RPiNetwork room hidden
 
define at_RPiNetwork at +*00:03 { fhem "trigger RPiNetwork ".SrvNetwork() }
attr at_RPiNetwork room hidden
Ausgabe LogFile:
2012-10-05_22:40:16 RPiNetwork R: 1.35 S: 2.34 T: 3.69
R: = Received; S: = Send; T: = Total  alles in MByte
#------------------------------------------------------------------------------------------------------------------------------------------------------
 
Herzliche Grüße
 
Jörg
99_SrvUtils.pm

Rik

unread,
Oct 5, 2012, 5:51:05 PM10/5/12
to fhem-...@googlegroups.com
Hallo Jörg,

wenn ich versuche die Werte anzuzeigen....erhalte ich folgende Meldung:
Undefined subroutine &main::trim called at /usr/share/fhem/FHEM/99_SrvUtils.pm line 137.

Was sollte ich ändern?

Gruß

Rik

unread,
Oct 5, 2012, 6:03:01 PM10/5/12
to fhem-...@googlegroups.com
Hatte vergessen das:


# http://www.somacon.com/p114.php
# Perl trim function to remove whitespace from the start and end of the string
sub trim($)
{
   my $string = shift;
   $string =~ s/^\s+//;
   $string =~ s/\s+$//;
   return $string;
}

in die 99_Utils.pm einzufügen ;-).


Gruß

UliM

unread,
Oct 6, 2012, 9:22:45 AM10/6/12
to fhem-...@googlegroups.com
Hi,
mach ich dieses WE noch - checke dann trim, ltrim, rtrim nach 99_Utils.pm ein - siehe
https://groups.google.com/d/topic/fhem-users/gsrT746vFes/discussion

=8-)

Dennis

unread,
Oct 6, 2012, 2:31:10 PM10/6/12
to fhem-...@googlegroups.com
Hi,

ich habe das heute mit Tuxradio V2 ausprobiert:
- Temp wird nicht angezeigt, da kein Sensor vorhanden :-(
- CPUspeed,Uptime,RAM,Swap,Ethernet funktioniert
- Fileystem: Dort musste ich my @filesystems = qx(df /dev/root); auf
  my @filesystems = qx(df /) ändern da das /dev/root/ auf einer 10MB Partition liegt ;-)

Eine Anregung hätte ich noch:
Die Load_Average wäre noch interessant zu plotten: http://de.wikipedia.org/wiki/Load_Average#Programme_zum_Anzeigen_des_Load_Averages

Schöne Grüße ...

Dennis
Message has been deleted

AitschPi

unread,
Dec 15, 2012, 1:55:53 AM12/15/12
to fhem-...@googlegroups.com

Heute habe ich versucht, als erstes Zusatzmodul dieses hier in mein FHEM einzubinden - aber irgendwas mache ich falsch...

Das habe ich gemacht:
1. aus /contrib/RaspberryPi das Modul 99_RpiUtils.pm in den Modulpfad /FHEM kopiert

2. in der config fhem.cfg diese Zeilen eingefügt

define myRPiValues weblink htmlCode {ShowRpiValues()}
attr myRPiValues room Sonstiges

3. fhem neu gestartet (shutdown restart)

Aber leider kommt folgender Fehler:

Undefined subroutine &main::ShowRpiValues called at (eval 19) line 1.

Wo liegt mein Denkfehler??? Anleitungen oder Hilfestellungen habe ich nirgendwo gefunden. Ursprünglich hatte ich entsprechend dem Beitrag oben nicht ShowRpiValues sondern ShowSrvValues stehen, habe dann aber im Quelltext des Moduls nur das ShowRpiValues gefunden, was wohl an der Umbenennung liegt. Oder muss das Modul erst irgendwie initialisiert werden? Wenn ja: wo und wie?

JoWiemann

unread,
Dec 15, 2012, 6:24:35 AM12/15/12
to fhem-...@googlegroups.com
Hallo,
 
bitte versuch einfach mal beigefügte Version.
 
Grüße Jörg
99_RPiUtils.pm
Reply all
Reply to author
Forward
0 new messages