Temperatur der Fritzbox als Plot

4,401 views
Skip to first unread message

Jogi

unread,
Dec 7, 2011, 6:47:48 AM12/7/11
to FHEM users
Hallo zusammen,

habe mit meinen beschränkten Möglichkeiten und viel probieren und
kopieren folgende Konfiguration erstellt. Als Ergebnis bekommt man ein
Logfile und einen Plot der FritzBox.

Und nicht schlagen: wenn ich noch mehr von Perl und fhem verstehe
mache ich es schöner. Wenn ich vorher eine Hilfe bekomme auch noch
schneller:-)

Für die fhem.cfg:

define FritzTemp dummy
define FritzTempLog FileLog ./log/FritzTemp-%Y.log FritzTemp
define FritzTemp_at at +*00:05:00 "(/bin/echo -n "`date '+%Y-%m-%d_%H:
%M:%S FritzTemp T:'` ">> ./log/FritzTemp-2011.log & /usr/bin/
ctlmgr_ctl r power status/act_temperature >> ./log/
FritzTemp-2011.log )"
attr FritzTempLog logtype jb_fritztemp:Plot,text


als jb_fritztemp.gplot
#
# Display the measured temp and the humidity.
# FileLog definition:
# define <filelogname> FileLog /var/log/fhem/hmsname-%Y.log
<hmsname>:T:.*
#
# Logfile record example:
# 2008-07-24_02:20:57 UGHygro T: 17.2 H: 77.6 Bat: ok

# Attribute 'small' is useful for gnuplot/-scroll only,
# if plotsize is less than 800,400
#set terminal png transparent small size <SIZE> crop

set terminal png transparent truecolor rounded medium size <SIZE>
enhanced

set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set ytics nomirror
set y2tics
#set ytics
set title '<L1>'
set grid xtics y2tics

set ylabel "Temperatur in C"
#FileLog 4:T\x3a:0:


plot \
"< awk '/T*/ {print $1, $3)}' <IN>" using 1:2 axes x1y1 title
'Temperatur' with lines

JoWiemann

unread,
Dec 11, 2011, 10:15:51 AM12/11/11
to FHEM users
Hallo Jogi,

habe Deine Idee auf einer 7170 ausprobiert. Leider erhalte ich für T:
nur eine 0. Welche FB setzt Du ein?

Grüße Jörg

Jogi

unread,
Dec 11, 2011, 2:49:28 PM12/11/11
to FHEM users
Hallo Jörg,

ich habe eine FB 7390. Wird denn bei dir in das Logfile etwas
vernünftiges geschrieben bzw. bekommst du auf der Konsole der Fritzbox
für den Befehl
" /usr/bin/ctlmgr_ctl r power status/act_temperature" eine Ausgabe?

Viele Grüße

Jogi

> > 'Temperatur' with lines- Zitierten Text ausblenden -
>
> - Zitierten Text anzeigen -

Peter Maier

unread,
Dec 13, 2011, 6:34:13 AM12/13/11
to FHEM users
Hallo Jörg und Jogi,

ich bin grundsätzlich ein Mensch der nach Synergien sucht.
Hier eine Lösung ohne viel Aufwand.


define FB_Temperature_sensor dummy
attr FB_Temperature_sensor comment Fritzbox device sensor
attr FB_Temperature_sensor room hidden

define FB_Temperature FileLog ./log/fhem/%Y-
%m_Temperatur_Fritzbox.log FB_Temperature_sensor
attr FB_Temperature logtype fht:Temp/Act,text
attr FB_Temperature room System_log

define FB_Temperature_link weblink fileplot
FB_Temperature:fht:CURRENT
attr FB_Temperature_link label "FritzBox temperature: Min
$data{min1}, Max $data{max1}, Last $data{currval1}"
attr FB_Temperature_link room System

define d_FB_Temperature at +*00:10:00 "(/bin/echo -n "`date '+%Y-%m-
%d_%H:%M:%S FB_Temperature FHZ:measured-temp:'` ">> ./log/fhem/`date +
%Y-%m`_Temperatur_Fritzbox.log & /usr/bin/ctlmgr_ctl r power status/
act_temperature >> ./log/fhem/`date +%Y-%m`_Temperatur_Fritzbox.log )"
attr d_FB_Temperature room System_timer


Ich habe übrigens eine Fritzbox 7270v2.

Gruss
Peter

SiberianHusky

unread,
Dec 18, 2011, 3:52:04 PM12/18/11
to fhem-...@googlegroups.com
Hi Peter,
ich hab dein Beispiel mal in meine .cfg übernommen und nach dem Entfernen von einigen CR/LF bekomme ich zumindest "nur" noch diese Fehlemeldung.

->> Broken definition: FB_Temperature:fht:CURRENT

Ich hab aber keine Idee was da falsch ist.

Ich hab ne FB7390

Gruß,
Thoralf

SiberianHusky

unread,
Dec 18, 2011, 4:51:32 PM12/18/11
to fhem-...@googlegroups.com
Hi Peter,
ich hab wieder was gelernt und das FHEM logfile gefunden ;-) 

folgender Eintrag könnte zum Thema passen
2011.12.18 21:50:35 1: define: Can't open ./log/fhem/2011-12_Temperatur_Fritzbox.log: No such file or directory
2011.12.18 21:50:35 3: Please define FB_Temperature first
2011.12.18 21:50:35 3: Please define FB_Temperature first
sh: can't create ./log/fhem/2011-12_Temperatur_Fritzbox.log: nonexistent directory

SiberianHusky

unread,
Dec 20, 2011, 4:51:36 PM12/20/11
to fhem-...@googlegroups.com
Hi, ich hab's jetzt  :-)
habe auf  http://fhem.de/fhem-5.1-fb7390.image umgestellt. 
anschließend musste ich noch die Pfade anpassen: unter ./log gibt's kein Unterverzeichnis /fhem/


define FB_Temp_Sensor dummy
attr FB_Temp_Sensor comment FritzBox Device Sensor
attr FB_Temp_Sensor room hidden

define FB_Temp FileLog ./log/%Y-%m_Temp_FB.log FB_Temp_Sensor
attr FB_Temp logtype fht:Temp/Act,text
attr FB_Temp room System_log

define FB_Temp_link weblink fileplot FB_Temp:fht:CURRENT
attr FB_Temp_link label "FritzBox Temperatur: Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr FB_Temp_link room System

define d_FB_Temp at +*00:10:00 "(/bin/echo -n "`date '+%Y-%m-%d_%H:%M:%S FB_Temp FHZ:measured-temp:'` ">> ./log/`date +%Y-%m`_Temp_FB.log & /usr/bin/ctlmgr_ctl r power status/act_temperature >> ./log/`date +%Y-%m`_Temp_FB.log )"
attr d_FB_Temp room System_timer


Gruß,
Thoralf

Echo

unread,
Feb 20, 2012, 5:36:35 AM2/20/12
to fhem-...@googlegroups.com
Moin Thoralf,
läuft dein FHEM als root oder als boxusr80?
Bei mir ist es letzterer und ich bekomme keine Temperaturwerte :-(

Gruß
René

jwk

unread,
Mar 13, 2012, 6:58:28 AM3/13/12
to FHEM users
FRITZ!Box Fon WLAN 7390
Firmware: FRITZ!OS 05.20
FHEM 5.2

Nach der Umstellung auf die Neue FritzBox / FHEM Firmware kann ich
mit "/usr/bin/ctlmgr_ctl r power status/act_temperature" die
Temperaturwerte nicht mehr auslesen. Somit wird auch keine Temepartur
ins LogFile geschrieben. Über Telnet bekomme ich die Temperatur
angezeigt.

...

Rudolf Koenig

unread,
Mar 13, 2012, 7:20:05 AM3/13/12
to fhem-...@googlegroups.com
> FHEM 5.2

Laeuft fhem evtl. als fhem user? Wenn letzteres, dann bitte den Abschnitt aus
startfhem auskommentieren, und mit root nochmal versuchen.

jwk

unread,
Mar 13, 2012, 7:55:41 AM3/13/12
to fhem-...@googlegroups.com
Habe aus startfhem folgendes herauskommentiert:

# let FHEM run as user boxusr80 by adding user fhem with uid of boxusr80
#id fhem > /dev/null 2>&1
#if [ "$?" -ne "0" ]; then
#  echo "user fhem does not exist. Adding it."
#  echo "fhem:any:1080:0:fhem:/home-not-used:/bin/sh" >>/var/tmp/passwd
#fi

# set file ownership
#chown -R boxusr80 ${home}/log
#chown -R boxusr80 ${home}/FHEM

#chown root ${home}/dfu-programmer
#chmod 4755 ${home}/dfu-programmer


und fhem neu gestartet: Keine Veränderung

Rudolf Koenig

unread,
Mar 13, 2012, 8:18:32 AM3/13/12
to fhem-...@googlegroups.com
> und fhem neu gestartet: Keine Ver�nderung

Ich meine es ist auch ein FB neustart notwendig, oder man loescht fhem aus
/etc/passwd vor startfhem.

jwk

unread,
Mar 14, 2012, 6:12:21 AM3/14/12
to FHEM users
Danke, Rudi, Eintrag ins LogFile klappt nach Neustart wieder.

Allerdings ergibt die Eingabe von "/usr/bin/ctlmgr_ctl r power status/
act_temperature" in der fhem Kommandoszeile noch immer kein Ergebnis.
Ich würde auch gern diese Temperatur im floorplan anzeigen. Allerdings
zeigt mein dafür definierter dummy "FritzTemp" nur state ???

Rudolf Koenig

unread,
Mar 15, 2012, 7:21:19 AM3/15/12
to fhem-...@googlegroups.com

define FritzTemp_at at +*00:05:00 "(/bin/echo -n "`date '+%Y-%m-%d_%H:
%M:%S FritzTemp T:'` ">> ./log/FritzTemp-2011.log & /usr/bin/
ctlmgr_ctl r power status/act_temperature >> ./log/
FritzTemp-2011.log )"


Evtl. kuerzer/lesbarer:

define FritzTemp_at at +*00:05 { fhem "trigger FritzTemp T:".`ctlmgr_ctl r power status/act_temperature` }

Das loggen wird dann vom oben definierten FileLog uebernommen (dafuer ist es ja schliesslich auch da), und man kann auch einfach notifies bauen, fuer den Fall dass es zu kalt/warm wird.

jwk

unread,
Mar 18, 2012, 6:06:14 AM3/18/12
to FHEM users
Bin etwas schlauer geworden, was das Auslesen von FB Werten macht,
auch dank Uli, dessen Sub in 99_myFoorplanList.pm die Werte sehr
schön im Floorplan anzeigt.

Ich hab nun eine sub (in 99_myUtile.pm) gebastelt, mit der die FB
Werte komfortabel in ein Logfile geschrieben werden, und dann als
gplot angezeigt werden:

sub
SaveFritzValuesInLogFile()
{
my %FritzValues =
(
"T" => int(`ctlmgr_ctl r power status/act_temperature`),
"G" => int(`/usr/bin/ctlmgr_ctl r power status/rate_sumact`),
"E" => int(`/usr/bin/ctlmgr_ctl r power status/rate_ethact`),
"U" => `/usr/bin/ctlmgr_ctl r power status/rate_usbhostact`
****add more values...
);

my $LogString = substr(`date '+%Y-%m-%d_%H:%M:%S FritzBox'`,0,-1);

my $tag ='';
my $value = '';

while (($tag, $value) = each(%FritzValues))
{
$LogString.=" ".$tag.": ".$value;
}

my $LogFile = ">>./log/FritzBox-".substr(`date '+%Y-%m'`,0,-1).".log";

open(LOG, $LogFile);
print LOG $LogString;
close (LOG);
return ($LogString);
}


und dazu values_fb.gplot:

#
# Display FritzBox Values
# FileLog definition:
## define FritzBoxTempLog FileLog ./log/FritzBox-%Y-%m.log
FritzBoxTemp
## attr FritzBoxTempLog room FritzBox7390

##define FritzBoxTemp_at at +*00:30:00 {SaveFritzValuesInLogFile()}

##attr FritzBoxTemp_at room FritzBox7390

##attr FritzBoxTempLog logtype text
##attr FritzBoxTempLog room FritzBox7390

##define fileplot_FritzBoxTemp weblink fileplot
FritzBoxTempLog:values_fb:CURRENT
##attr fileplot_FritzBoxTemp room FritzBox7390
# Logfile record example:
# 2012-03-18_10:43:11 FritzBox T: 35 G: 63 E: 53 U: 60

# Attribute 'small' is useful for gnuplot/-scroll only,
# if plotsize is less than 800,400
# set terminal png transparent small size <SIZE> crop

set terminal png transparent size <SIZE> crop

set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set ytics nomirror
set y2tics
#set ytics
set title '<TL>'
set grid xtics y2tics
set multiplot
set y2label "Temp / %"


#FileLog 4:T\x3a:0:
#FileLog 6:G\x3a:0:
#FileLog 8:E\x3a:0:
#FileLog 10:U\x3a:0:

plot \
"< awk '/T:/ {print $1, $4}' <IN>"\
using 1:2 axes x1y2 title 'Temperatur Grd' with lines lw 1
"< awk '/C:/ {print $2, $4}' <IN>"\
using 1:2 axes x1y2 title 'CPU %' with lines lw 1
"< awk '/P:/ {print $3, $4}' <IN>"\
using 1:2 axes x1y2 title 'Ethernet %' with lines lw 1
"< awk '/P:/ {print $3, $4}' <IN>"\
using 1:2 axes x1y2 title 'USB %' with lines lw 1


---
Dabei hatte ich so meine Mühe, die Parameter in .gplot zu setzen...

Jörg (JWK)

Aare07

unread,
Mar 18, 2012, 8:17:19 PM3/18/12
to fhem-...@googlegroups.com
Hallo jwk und Rudolf

Entschuldigt die Einsteigerfrage:
Der Perlcode in 99_myUtils.PM erschliesst sich mir als Anfänger, aber der Rest, in jwk's Codebeispiel ab  "und dazu values_fb.gplot: "  ist mir ein Rätsel.   
- das alles in fhem.cfg? 
- Haben die auskommentierten Zeilen # und ## noch für andere Verwendung?

Gibt es eine konsolidierte Fassung der Konfig, PM und ein Bild des resultierenden Plots und der Anzeige der Werte in Floorplan mit CSS, möglichst im Wiki ?
Würde mir als Einsteiger unendlich helfen.

Als Anregung:
Auch andere Posts wären viel lesbarar, wenn die funktionierende Config und Beispiel als ganzes ins Wiki wandern würde.   In den Groups sind sie später schwer zu finden, haben unkontrollierte Zeilenumbrüche oder sind kaum von den nicht funktionierenden Beispielen zu unterscheiden.
Wenn das Beispiel als Datei vorhanden würde ich die Arbeit das Wiki zu schreiben erledigen.

Danke für das komplette, funktionierende Beispiel.

Gruss
Aare

jwk

unread,
Mar 20, 2012, 7:15:24 AM3/20/12
to FHEM users
Hallo Aare,

Sorry, dass das nicht deutlich wurde:

Alles in values.gplot als Datei im FHEM Verzeichnis speichern (da sind
schon andere *.gplots...)
Dann alles im fhem.cfg speichern, was mit ## in values.gplot
auskommentiert ist.

Wenn es funktioniert, fühl dich frei, dass dann ins wiki einzutragen.

Jörg

Bernd

unread,
Dec 26, 2012, 4:56:25 AM12/26/12
to fhem-...@googlegroups.com
Was haltet Ihr von dieser Kurzfassung:
 
sub SaveFritzValuesInLogFile()
{
my $FritzValues = " W: " . int(`ctlmgr_ctl r wlan settings/active_stations`) .
 " T: " . int(`ctlmgr_ctl r power status/act_temperature`) .
 " G: " . int(`ctlmgr_ctl r power status/rate_sumact`) .
 " E: " . int(`ctlmgr_ctl r power status/rate_ethact`) .
 " U: " . int(`ctlmgr_ctl r power status/rate_usbhostact`) . "\n";
my $LogString = substr(`date '+%Y-%m-%d_%H:%M:%S FritzBox'`,0,-1) . $FritzValues;
Message has been deleted

Bernd

unread,
Dec 26, 2012, 6:06:50 AM12/26/12
to fhem-...@googlegroups.com
Dazu die kurze values_fb.gplot:
 
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set ytics nomirror
set y2tics
#set ytics
set title '<TL>'
set grid xtics y2tics
set multiplot
set ylabel "WLAN"

set y2label "Temp / %"
#FileLog 4:::
#FileLog 6:::
#FileLog 8:::
#FileLog 10:::
#FileLog 12:::
plot      "<IN>" using 1:4 axes x1y1 title 'WLAN active' with lines lw 1,
          "<IN>" using 1:6 axes x1y2 title 'Temperatur Grd' with lines lw 1,
          "<IN>" using 1:8 axes x1y2 title 'CPU %' with lines lw 1,
          "<IN>" using 1:10 axes x1y2 title 'Ethernet %' with lines lw 1,
          "<IN>" using 1:12 axes x1y2 title 'USB %' with lines lw 1

Bernd

unread,
Dec 26, 2012, 6:23:22 AM12/26/12
to fhem-...@googlegroups.com
Aber jetzt der Knaller:
 
Meine Fritzbox HAT KEINEN ENERGIEVERBRAUCH MEHR! 0% wird angezeigt... was habe ich denn jetzt angestellt?
 

Weiß jemand Rat? Neustart bringt nichts...
 

Rudolf Koenig

unread,
Dec 26, 2012, 6:48:51 AM12/26/12
to fhem-...@googlegroups.com
> my $LogString = substr(`date '+%Y-%m-%d_%H:%M:%S FritzBox'`,0,-1) .
> $FritzValues;
> my $LogFile = ">>./log/FritzBox-".substr(`date '+%Y-%m'`,0,-1).".log";
> open(LOG, $LogFile);
> print LOG $LogString;
> close (LOG);

Stattdessen haette ich lieber
DoTrigger("global", "FritzBox $FritzValues");
verwendet, dann koennte man das einfach auch in FileLog/notify/watchdog/etc
auswerten. Weiss es jemand, ob diese ctlmgr_ctl Funktionen sich verklemnmen
koennen? Das waere naemlich schlecht.

Btw. husch-husch ins forum.fhem.de, fhem-users wird in 5 Tagen auf read-only
gesetzt.

Gruss,
Rudi

Bernd Gewehr

unread,
Dec 26, 2012, 5:02:39 PM12/26/12
to fhem-...@googlegroups.com

Hallo!

Habe ich so umgesetzt. Nun erscheinen die Einträge zwar im Event log, aber nicht mehr im Filelog FritzboxTemplog.

Wie mache ich dann meinen Plot davon?
--
send via http://forum.fhem.de
Message has been deleted

Bernd Gewehr

unread,
Dec 27, 2012, 2:57:14 PM12/27/12
to fhem-...@googlegroups.com

Es fehlt natürlich noch die Plot-Definitionsdatei

## als values_fb.gplot speichern

Bernd Gewehr

unread,
Dec 27, 2012, 3:26:47 PM12/27/12
to fhem-...@googlegroups.com

OK, war keine gute Idee, das Device FritzBox für CallMonitor und das Temperaturplot gleichzeitig zu verwenden und dann nicht im gplot die Filterung auf die Zeilen mit T: Variablen usw vorzunehmen. Jedesmal, wenn jetzt ein Telefonat geführt wird, wird das Plot unterbrochen, das korrigiere ich noch...

Bernd Gewehr

unread,
Dec 27, 2012, 3:33:24 PM12/27/12
to fhem-...@googlegroups.com

So, hier die korrigierte values_fb.gplot:


set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set ytics nomirror
set y2tics
#set ytics
set title '<TL>'
set grid xtics y2tics
set multiplot
set ylabel "WLAN"
set y2label "Temp / %"

#FileLog 4:W\x3a::
#FileLog 6:T\x3a::
#FileLog 8:G\x3a::
#FileLog 10:E\x3a::
#FileLog 12:U\x3a::

plot "<IN>" using 1:4 axes x1y1 title 'WLAN active' with lines lw 1,
 "<IN>" using 1:6 axes x1y2 title 'Temperatur Grd' with lines lw 1,
          "<IN>" using 1:8 axes x1y2 title 'CPU %' with lines lw 1,
          "<IN>" using 1:10 axes x1y2 title 'Ethernet %' with lines lw 1,
          "<IN>" using 1:12 axes x1y2 title 'USB %' with lines lw 1

Stefan Hoffmann

unread,
Dec 29, 2012, 2:35:38 AM12/29/12
to fhem-...@googlegroups.com

Hallo zusammen,

ich muß aare07 Recht geben. Gerade für mich als Anfänger ist hier leider nicht mehr
ersichtlich was genau wo hingehört und was schlußendlich die letzte "lauffähige" Variante
ist. Also wenn sich jemand erbarmen könnte und die Posts nochmal zusammenfassen könnte
wäre mir sehr geholfen. Vielen Dank euch!

Gruß
Stefan
--
Es gibt immer Leute die meinen, sie seien schlauer als ich. Das Schlimmste ist, sie sind es auch.
--
sent via http://forum.fhem.de
Reply all
Reply to author
Forward
0 new messages