Windows - CPU Temperatur und Co mit FHEM: Unterschied zwischen den Versionen

Aus FHEMWiki
KKeine Bearbeitungszusammenfassung
 
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt)
Zeile 1: Zeile 1:
(von kleene 1503)
(von kleene 1503)


Hier mal eine Möglichkeit, wie man auf Windows-Systemen die CPU-,
Hier mal eine Möglichkeit, wie man auf Windows-Systemen die CPU-, HDD-, und andere Temperaturen / Systemdaten in FHEM anzeigen und grafisch darstellen kann.
HDD-, und andere Temperaturen / Systemdaten in FHEM anzeigen und
grafisch darstellen kann.


Voraussetzungen:
Voraussetzungen:
- Cygwin installiert
- Cygwin installiert
- SpeedFan installiert
- SpeedFan installiert
- Einen WIRKLICH Unix fähigen Editor. Vergesst hierbei Wordpad und
- Einen WIRKLICH Unix fähigen Editor. Vergesst hierbei Wordpad und Notepad!!! Ich nutze Proton (ist kostenlos und frei verfügbar). Bei Proton müsst ihr UNBEDINGT darauf achten, dass ihr unter „Datei -> Zeilenumbruchformat“ auf Unix umstellt. Sonst sucht ihr wie ich zwei Wochen nach einem Fehler wo eigentlich gar keiner ist. Das Umstellen unter Syntaxschema auf Unix Shell ist hilfreich aber kein muss.
Notepad!!! Ich nutze Proton (ist kostenlos und frei verfügbar). Bei
Proton müsst ihr UNBEDINGT darauf achten, dass ihr unter „Datei ->
Zeilenumbruchformat“ auf Unix umstellt. Sonst sucht ihr wie ich zwei
Wochen nach einem Fehler wo eigentlich gar keiner ist. Das Umstellen
unter Syntaxschema auf Unix Shell ist hilfreich aber kein muss.
 
 
Auf die Installation von Cygwin werde ich hier nicht eingehen. Dazu
gibt es genug im www.


Laufen tut das ganze bei mir auf Windows 7 Home Premium 64bit.
Laufen tut das ganze bei mir auf Windows 7 Home Premium 64bit.
== Installiert Cygwin ==
== Installiert Cygwin ==
Auf die Installation von Cygwin werde ich hier nicht eingehen. Dazu gibt es genug im www.
== Installiert SpeedFan ==
== Installiert SpeedFan ==
- Um später Leerzeichen in den Pfadangaben zu vermeiden, habe ich nach
* Um später Leerzeichen in den Pfadangaben zu vermeiden, habe ich nach der Installation von SpeedFan einfach den kompletten Installationsordner direkt nach C: kopiert. Im Klartext heißt das, aus <code>C:\Programme (x86)\SpeedFan\</code> wurde bei mir <code>C:\SpeedFan\</code>.
der Installation von SpeedFan einfach den kompletten
* SpeedFan selbst habe ich so eingerichtet, dass er mir das Logfile MIT Header schreibt. Das Logfile von SpeedFan findet ihr direkt in dem Installationsordner von SpeedFan.
Installationsordner direkt nach C: kopiert. Im Klartext heißt das, aus
„C:\Programme (x86)\SpeedFan\wurde bei mir „C:\SpeedFan\.
 
- SpeedFan selbst habe ich so eingerichtet, dass er mir das Logfile
MIT Header schreibt. Das Logfile von SpeedFan findet ihr direkt in dem
Installationsordner von SpeedFan.
 
 


== Script zum bearbeiten des SpeedFan Logfiles und speichern eines FHEM tauglichen Logfiles erstellen ==
== Script zum bearbeiten des SpeedFan Logfiles und speichern eines FHEM tauglichen Logfiles erstellen ==
- Die Logfiles von SpeedFan sind noch nicht FHEM tauglich. Also müssen
- Die Logfiles von SpeedFan sind noch nicht FHEM tauglich. Also müssen wir uns die Files mit Hilfe eines kleinen Scriptes in ein FHEM taugliches Format umwandeln. Dieses Script sieht bei mir wie folgt aus:
wir uns die Files mit Hilfe eines kleinen Scriptes in ein FHEM
taugliches Format umwandeln. Dieses Script sieht bei mir wie folgt
aus:


<nowiki>#!/bin/sh
<pre>#!/bin/sh
date=`date +"%Y-%m-%d_%H:%M:%S"`
date=`date +"%Y-%m-%d_%H:%M:%S"`
log="/cygdrive/c/fhem/tmp/system.log"
log="/cygdrive/c/fhem/tmp/system.log"
Zeile 49: Zeile 29:
     | sed '$!d' \
     | sed '$!d' \
     | sed "s/^/$date /" &gt;&gt; $log
     | sed "s/^/$date /" &gt;&gt; $log
#</nowiki>
#</pre>
Erklärung:
Erklärung:


!/bin/sh &lt;- sollte klar sein
* <code>!/bin/sh</code> &lt;- sollte klar sein
 
* <code>date=`date +"%Y-%m-%d_%H:%M:%S"`</code> &lt;- sollte auch klar sein
date=`date +"%Y-%m-%d_%H:%M:%S"` &lt;- sollte auch klar sein
* <code>log="/cygdrive/c/fhem/tmp/system.log"</code> &lt;- /cygdrive sagt unserem PC, dass wir Cygwin nutzen (um es mal grob auszudrücken); /c/fhem/tmp/system.log ist der Pfad wo unser fertiges und FHEM taugliches logfile später gespeichert werden soll.
 
* <code>cat /cygdrive/c/SpeedFan/SFLog*.csv \</code> &lt;- sagt unserem script, wo das SpeedFan Logfile liegt, das wir bearbeiten wollen.
log="/cygdrive/c/fhem/tmp/system.log" &lt;- /cygdrive sagt unserem PC,
* <code>| grep "" \</code> &lt;- liest das komplette SpeddFan Logfile ein.
dass wir Cygwin nutzen (um es mal grob auszudrücken); /c/fhem/tmp/
* <code>| sed '/Seconds/d' \</code> &lt;- Entfernt die komplette Zeile in der das Wort Seconds vorkommt was in unserem Fall der Header des SpeedFan Logfiles ist.
system.log ist der Pfad wo unser fertiges und FHEM taugliches logfile
* <code>| sed 's/[\t]/ /g' \</code> &lt;- Entfernt alle Tabs aus dem Speedfan Logfile.
später gespeichert werden soll.
* <code>| sed 's/ \+/ /g' \</code> &lt;- Entfernt alle Leerzeichen aus dem SpeedFan Logfile.
 
* <code>| sed '$!d' \</code> &lt;- kopiert immer nur die letzte Zeile des SpeedFan Logfiles und kopiert uns diese samt Datum mit
cat /cygdrive/c/SpeedFan/SFLog*.csv \ &lt;- sagt unserem script, wo das
* <code>| sed "s/^/$date /" &gt;&gt; $log</code> in unser FHEM taugliches Logfile.
SpeedFan Logfile liegt welches wir bearbeiten wollen.
 
| grep "" \ &lt;- liest das komplette SpeddFan Logfile ein.
 
 
| sed '/Seconds/d' \ &lt;- Entfernt die komplette Zeile in der das Wort
Seconds vorkommt was in unserem Fall der Header des SpeedFan Logfiles
ist.
 
| sed 's/[\t]/ /g' \ &lt;¬- Entfernt alle Tabs aus dem Speedfan Logfile.
 
| sed 's/ \+/ /g' \ &lt;- Entfernt alle Leerzeichen aus dem SpeedFan
Logfile.
 
| sed '$!d' \ &lt;- kopiert immer nur die letzte Zeile des SpeedFan
Logfiles und kopiert uns diese samt Datum mit
 
| sed "s/^/$date /" &gt;&gt; $log in unser FHEM taugliches Logfile.
 
 
Dieses Script speichert ihr nun als system.sh in eurem Cygwin Home
Ordner.


Übrigens: Wenn man sich mit dem "sed" Kommando auseinandersetzt, kann man so
Dieses Script speichert ihr nun als <code>system.sh</code> in eurem Cygwin Home Ordner.
auch Logfiles von anderen Windowsprogrammen zum Temperatur- und
Systemdaten auslesen wunderbar in ein FHEM taugliches Format bringen.  


Übrigens: Wenn man sich mit dem "sed" Kommando auseinandersetzt, kann man so auch Logfiles von anderen Windowsprogrammen zum Temperatur- und Systemdaten auslesen wunderbar in ein FHEM taugliches Format bringen.




Zeile 94: Zeile 51:
- Erstellt euch eine .bat mit folgendem Inhalt:
- Erstellt euch eine .bat mit folgendem Inhalt:


<nowiki>@echo off</nowiki>
<pre>@echo off
<nowiki>C:
C:
chdir C:\cygwin\bin</nowiki>
chdir C:\cygwin\bin
<nowiki>bash --login -i ./system.sh</nowiki>
bash --login -i ./system.sh</pre>
und speichert diese als system.bat in eurem fhem Ordner.
und speichert diese als <code>system.bat</code> in eurem fhem Ordner.
 
 


== Aufrufen der system.bat durch FHEM ==
== Aufrufen der system.bat durch FHEM ==
- Erstellt in eurer fhem.cfg folgenden Eintrag:
- Erstellt in eurer fhem.cfg folgenden Eintrag:


<nowiki>define SystemDaten at +*00:02:00 { fhem `system`}</nowiki>
<pre>define SystemDaten at +*00:02:00 { fhem `system`}</pre>
Dieser Eintrag startet alle 2 Minuten die Datei system.bat welche
Dieser Eintrag startet alle 2 Minuten die Datei system.bat, das wiederum das Script system.sh ausführt.
wiederum das Script system.sh ausführt.
 
Wenn ihr es so wie ich gemacht habt, sollte nun innerhalb der nächsten
2 Minuten) in dem Ordner „C:\fhem\tmp\“ ein Logfile namens system.log
auftauchen welches alle nötigen Daten enthält und FHEM tauglich ist.
 


Wenn ihr es so wie ich gemacht habt, sollte nun innerhalb der nächsten 2 Minuten) in dem Ordner „C:\fhem\tmp\“ ein Logfile namens systemlos auftauchen, das alle nötigen Daten enthält und FHEM tauglich ist.


== Plot Datei erstellen ==
== Plot Datei erstellen ==
- Als Vorlage habe ich die Datei cpulog.gplot aus dem FHEM Ordner
- Als Vorlage habe ich die Datei <code>cpulog.gplot</code> aus dem FHEM Ordner genommen. Wichtig ist hier für uns der untere Teil ab set ylabel. Der obere Teil kann bleiben wie er ist.
genommen. Wichtig ist hier für uns der untere Teil ab set ylabel. Der
obere Teil kann bleiben wie er ist.


Wir müssen uns nun Überlegen, was wir uns anzeigen lassen wollen. In
Wir müssen uns nun Überlegen, was wir uns anzeigen lassen wollen. In diesem Fall nehmen wir mal die Temperaturen von Core 0 und Core 1.
diesem Fall nehmen wir mal die Temperaturen von Core 0 und Core 1.


Als erstes sehen wir uns noch einmal das SpeedFan Logfile an welches
Als erstes sehen wir uns noch einmal das SpeedFan Logfile an, das bei mir folgendermaßen aussieht:
bei mir folgendermasen aussieht:


Seconds    HD0    Core 0    Core 1
<blockquote><code>Seconds    HD0    Core 0    Core 1
71180    34.0    36.0    34.0
71180    34.0    36.0    34.0</code></blockquote>


Core 0 und 1 ist also an 3. und 4. Stelle nach Seconds.
Core 0 und 1 ist also an 3. und 4. Stelle nach Seconds.
Zeile 133: Zeile 79:
Nun sehe ich mir unser erstelltes system.log Logfile an:
Nun sehe ich mir unser erstelltes system.log Logfile an:


2012-03-19_22:33:15 71180 34.0 36.0 34.0
<blockquote><code>2012-03-19_22:33:15 71180 34.0 36.0 34.0</code></blockquote>


Wir haben also vor dem Wert für Seconds noch das Datum und die Uhrzeit
Wir haben also vor dem Wert für Seconds noch das Datum und die Uhrzeit und den Temperaturwert für Core 0 und 1 finden wir nun an der 4. und 5. Stelle. Wichtig ist, dass ihr Leerzeichen nicht mit zählt.
und den Temperaturwert für Core 0 und 1 finden wir nun an der 4. und
5. Stelle. Wichtig ist, dass ihr Leerzeichen nicht mit zählt.


Gehen wir nun zurück zur Datei cpulog.gplot und Tragen folgendes ein:
Gehen wir nun zurück zur Datei cpulog.gplot und tragen folgendes ein:


<nowiki>set ylabel "Temperatur in C"
<pre>set ylabel "Temperatur in C"
set y2label "Temperatur in C"</nowiki>
set y2label "Temperatur in C"
<nowiki>#FileLog 4::0:
#FileLog 4::0:
#FileLog 5::0:</nowiki>
#FileLog 5::0:
<nowiki>plot "&lt;IN&gt;" using 1:4 title 'Temperatur Core 0' with lines,\
plot "&lt;IN&gt;" using 1:4 title 'Temperatur Core 0' with lines,\
  "&lt;IN&gt;" using 1:5 title 'Temperatur Core 1' with lines</nowiki>
  "&lt;IN&gt;" using 1:5 title 'Temperatur Core 1' with lines</pre>


Erklärung:
Erklärung:
* <code>set ylabel "Temperatur in C"</code> &lt;- Ist die linke, senkrechte Bezeichnung des Plot-Fensters.
* <code>set y2label "Temperatur in C"</code> &lt;- Ist die rechte, senkrechte Bezeichnung des Plot-Fensters.
* <code>FileLog 4::0:</code> &lt;- liest die 4 Stelle unseres Logfiles aus.
* <code>FileLog 5::0:</code> &lt;- liest die 5. Stelle unseres Logfiles aus.
* <code>plot "&lt;IN&gt;" using 1:4</code> &lt;- zeigt die 4. Stelle unseres Logfiles im Plot-Fenster.
* <code>title 'Temperatur Core 0' with lines</code> &lt;- Zeigt im Plot-Fenster den Titel unserer Linie.
* <code>,\</code> &lt;- Sagt FHEM das noch eine weitere Linie kommt.


set ylabel "Temperatur in C" &lt;- Ist die linke, senkrechte Bezeichnung
Speichert dies nun Beispielsweise als <code>core01.gplot</code>
des Plot-Fensters.
 
set y2label "Temperatur in C" &lt;- Ist die rechte, senkrechte
Bezeichnung des Plot-Fensters.
 
FileLog 4::0: &lt;- liest die 4 Stelle unseres Logfiles aus.
 
FileLog 5::0: &lt;- liest die 5. Stelle unseres Logfiles aus.
 
plot "&lt;IN&gt;" using 1:4 &lt;- zeigt die 4. Stelle unseres Logfiles im Plot-
Fenster.
title 'Temperatur Core 0' with lines &lt;- Zeigt im Plot-Fenster den
Titel unserer Linie.
 
,\ &lt;- Sagt FHEM das noch eine weitere Linie kommt.
 
 
Speichert dies nun Beispielsweise als core01.gplot
 
 


== Plot in FHEM anzeigen lassen ==
== Plot in FHEM anzeigen lassen ==
- Nun Tragen wir in unserer fhem.cfg folgendes ein:
- Nun tragen wir in unserer fhem.cfg folgendes ein:


define SystemLog FileLog C:/fhem/tmp/system.log SystemDaten
<pre>define SystemLog FileLog C:/fhem/tmp/system.log SystemDaten
attr SystemLog logtype core01
attr SystemLog logtype core01
define Sys weblink fileplot SystemLog:core01:CURRENT</pre>


define Sys weblink fileplot SystemLog:core01:CURRENT
Wenn alles geklappt hat, solltet ihr nun die Temperaturen grafisch in FHEM dargestellt bekommen.
 
 
Wenn alles geklappt hat, solltet ihr nun die Temperaturen grafisch in
FHEM dargestellt bekommen.
 


Ich übernehme keine Garantie. Kann nur sagen, dass es bei mir so
Ich übernehme keine Garantie. Kann nur sagen, dass es bei mir so geklappt hat. Ich hoffe ich kann dem einen oder anderen damit helfen oder wenigstens einen Denkanstoß geben.
geklappt hat. Ich hoffe ich kann dem einen oder anderen damit helfen
oder wenigstens einen Denkanstoß geben.


Es gibt bestimmt noch elegantere Lösung allerdings habe ich für
Es gibt bestimmt noch elegantere Lösung; allerdings habe ich für Windows bis jetzt noch nichts gefunden.
Windows bis jetzt noch nichts gefunden.


(von kleene 1503)
(von kleene 1503)
[[Kategorie:HOWTOS]]
[[Kategorie:HOWTOS]]

Aktuelle Version vom 12. August 2014, 21:31 Uhr

(von kleene 1503)

Hier mal eine Möglichkeit, wie man auf Windows-Systemen die CPU-, HDD-, und andere Temperaturen / Systemdaten in FHEM anzeigen und grafisch darstellen kann.

Voraussetzungen: - Cygwin installiert - SpeedFan installiert - Einen WIRKLICH Unix fähigen Editor. Vergesst hierbei Wordpad und Notepad!!! Ich nutze Proton (ist kostenlos und frei verfügbar). Bei Proton müsst ihr UNBEDINGT darauf achten, dass ihr unter „Datei -> Zeilenumbruchformat“ auf Unix umstellt. Sonst sucht ihr wie ich zwei Wochen nach einem Fehler wo eigentlich gar keiner ist. Das Umstellen unter Syntaxschema auf Unix Shell ist hilfreich aber kein muss.

Laufen tut das ganze bei mir auf Windows 7 Home Premium 64bit.

Installiert Cygwin

Auf die Installation von Cygwin werde ich hier nicht eingehen. Dazu gibt es genug im www.

Installiert SpeedFan

  • Um später Leerzeichen in den Pfadangaben zu vermeiden, habe ich nach der Installation von SpeedFan einfach den kompletten Installationsordner direkt nach C: kopiert. Im Klartext heißt das, aus C:\Programme (x86)\SpeedFan\ wurde bei mir C:\SpeedFan\.
  • SpeedFan selbst habe ich so eingerichtet, dass er mir das Logfile MIT Header schreibt. Das Logfile von SpeedFan findet ihr direkt in dem Installationsordner von SpeedFan.

Script zum bearbeiten des SpeedFan Logfiles und speichern eines FHEM tauglichen Logfiles erstellen

- Die Logfiles von SpeedFan sind noch nicht FHEM tauglich. Also müssen wir uns die Files mit Hilfe eines kleinen Scriptes in ein FHEM taugliches Format umwandeln. Dieses Script sieht bei mir wie folgt aus:

#!/bin/sh
date=`date +"%Y-%m-%d_%H:%M:%S"`
log="/cygdrive/c/fhem/tmp/system.log"
cat /cygdrive/c/SpeedFan/SFLog*.csv \
    | grep "" \
    | sed '/Seconds/d' \
    | sed 's/[\t]/ /g' \
    | sed 's/ \+/ /g' \
    | sed '$!d' \
    | sed "s/^/$date /" >> $log
#

Erklärung:

  • !/bin/sh <- sollte klar sein
  • date=`date +"%Y-%m-%d_%H:%M:%S"` <- sollte auch klar sein
  • log="/cygdrive/c/fhem/tmp/system.log" <- /cygdrive sagt unserem PC, dass wir Cygwin nutzen (um es mal grob auszudrücken); /c/fhem/tmp/system.log ist der Pfad wo unser fertiges und FHEM taugliches logfile später gespeichert werden soll.
  • cat /cygdrive/c/SpeedFan/SFLog*.csv \ <- sagt unserem script, wo das SpeedFan Logfile liegt, das wir bearbeiten wollen.
  • | grep "" \ <- liest das komplette SpeddFan Logfile ein.
  • | sed '/Seconds/d' \ <- Entfernt die komplette Zeile in der das Wort Seconds vorkommt was in unserem Fall der Header des SpeedFan Logfiles ist.
  • | sed 's/[\t]/ /g' \ <- Entfernt alle Tabs aus dem Speedfan Logfile.
  • | sed 's/ \+/ /g' \ <- Entfernt alle Leerzeichen aus dem SpeedFan Logfile.
  • | sed '$!d' \ <- kopiert immer nur die letzte Zeile des SpeedFan Logfiles und kopiert uns diese samt Datum mit
  • | sed "s/^/$date /" >> $log in unser FHEM taugliches Logfile.

Dieses Script speichert ihr nun als system.sh in eurem Cygwin Home Ordner.

Übrigens: Wenn man sich mit dem "sed" Kommando auseinandersetzt, kann man so auch Logfiles von anderen Windowsprogrammen zum Temperatur- und Systemdaten auslesen wunderbar in ein FHEM taugliches Format bringen.


.bat erstellen zum ausführen der .sh – Datei

- Erstellt euch eine .bat mit folgendem Inhalt:

@echo off
C:
chdir C:\cygwin\bin
bash --login -i ./system.sh

und speichert diese als system.bat in eurem fhem Ordner.

Aufrufen der system.bat durch FHEM

- Erstellt in eurer fhem.cfg folgenden Eintrag:

define SystemDaten at +*00:02:00 { fhem `system`}

Dieser Eintrag startet alle 2 Minuten die Datei system.bat, das wiederum das Script system.sh ausführt.

Wenn ihr es so wie ich gemacht habt, sollte nun innerhalb der nächsten 2 Minuten) in dem Ordner „C:\fhem\tmp\“ ein Logfile namens systemlos auftauchen, das alle nötigen Daten enthält und FHEM tauglich ist.

Plot Datei erstellen

- Als Vorlage habe ich die Datei cpulog.gplot aus dem FHEM Ordner genommen. Wichtig ist hier für uns der untere Teil ab set ylabel. Der obere Teil kann bleiben wie er ist.

Wir müssen uns nun Überlegen, was wir uns anzeigen lassen wollen. In diesem Fall nehmen wir mal die Temperaturen von Core 0 und Core 1.

Als erstes sehen wir uns noch einmal das SpeedFan Logfile an, das bei mir folgendermaßen aussieht:

Seconds HD0 Core 0 Core 1 71180 34.0 36.0 34.0

Core 0 und 1 ist also an 3. und 4. Stelle nach Seconds.

Nun sehe ich mir unser erstelltes system.log Logfile an:

2012-03-19_22:33:15 71180 34.0 36.0 34.0

Wir haben also vor dem Wert für Seconds noch das Datum und die Uhrzeit und den Temperaturwert für Core 0 und 1 finden wir nun an der 4. und 5. Stelle. Wichtig ist, dass ihr Leerzeichen nicht mit zählt.

Gehen wir nun zurück zur Datei cpulog.gplot und tragen folgendes ein:

set ylabel "Temperatur in C"
set y2label "Temperatur in C"
#FileLog 4::0:
#FileLog 5::0:
plot "<IN>" using 1:4 title 'Temperatur Core 0' with lines,\
 "<IN>" using 1:5 title 'Temperatur Core 1' with lines

Erklärung:

  • set ylabel "Temperatur in C" <- Ist die linke, senkrechte Bezeichnung des Plot-Fensters.
  • set y2label "Temperatur in C" <- Ist die rechte, senkrechte Bezeichnung des Plot-Fensters.
  • FileLog 4::0: <- liest die 4 Stelle unseres Logfiles aus.
  • FileLog 5::0: <- liest die 5. Stelle unseres Logfiles aus.
  • plot "<IN>" using 1:4 <- zeigt die 4. Stelle unseres Logfiles im Plot-Fenster.
  • title 'Temperatur Core 0' with lines <- Zeigt im Plot-Fenster den Titel unserer Linie.
  • ,\ <- Sagt FHEM das noch eine weitere Linie kommt.

Speichert dies nun Beispielsweise als core01.gplot

Plot in FHEM anzeigen lassen

- Nun tragen wir in unserer fhem.cfg folgendes ein:

define SystemLog FileLog C:/fhem/tmp/system.log SystemDaten
attr SystemLog logtype core01
define Sys weblink fileplot SystemLog:core01:CURRENT

Wenn alles geklappt hat, solltet ihr nun die Temperaturen grafisch in FHEM dargestellt bekommen.

Ich übernehme keine Garantie. Kann nur sagen, dass es bei mir so geklappt hat. Ich hoffe ich kann dem einen oder anderen damit helfen oder wenigstens einen Denkanstoß geben.

Es gibt bestimmt noch elegantere Lösung; allerdings habe ich für Windows bis jetzt noch nichts gefunden.

(von kleene 1503)