"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Red's christmas coding project

The Red Guy 24.12.2004 - 15:02 1736 9
Posts

The Red Guy

Untitled
Avatar
Registered: Jul 2001
Location: Transdanubia
Posts: 3121
Hi!

Jedes Jahr über die Weihnachtsfeiertag nehme ich mir ein kleines Coding-Projekt vor. Letztes Jahr war es meine <a href="http://www.ntsearch.com/search.php?q=website&v=56">website</a> (http://www.theredguy.org). Folgend möchte ich mein heuriges Thema vorstellen.


Titel: Red's Temperature Project

Thema

Infos und Temperaturen (CPU, MB) sollen von meinem Rechner ausgelesen und auf meine Webseite (http://www.theredguy.org) gepostet werden. Daten sollen near Realtime sein.


Vorgaben

- Webseite ist auf php/mysql basis und steht bei einem Provider. Ist nur über Inet erreichbar.

- Mein Rechner läuft auf <a href="http://www.ntsearch.com/search.php?q=Windows&v=56">Windows</a> XP und vorerst sollen nur Windows-Systeme unterstützt werden (win9x und trash nicht).

- Da Lokal sicher ein Tool benötigt wird, soll dieses in c# gecoded werden, weil ich es einfach üben will.


Grundsätzlicher Plan

Ich habe mir natürlich schon gedanken gemacht und folgendes Konzept aufgestellt.

PC mit speziellem Tool ---- periodischer HTTP Aufruf mit Daten ----> Apache/mySQL Speicherung in DB <--- Abruf der Daten dynamisch mit PHPgeneriert ---- Client

Eine Graphik kommt noch.

Es gibt also 3 Dinge, die man schreiben muss:

Tool am PC
- Ich dachte entweder an ein Progamm oder an ein Service. Beides hat Vor- und Nachteile.
- Das Tool wird periodisch (Zeit einstellbar?) eine php-Seite und Daten hinschicken.
- Daten sind das Login meiner Webseite, ein Key(um einfaches cheaten zu vermeiden), diverse Temps.
- Temperaturen kann ich im Moment von ASUS Mainboards mit installiertem PC Probe auslesen.

PHP Script zur Aufnahme der Daten
Ist das geringste Problem. Es wird einfach die Daten in die DB eintragen. DB Modell wird noch aufgestellt. Eventuell mache ich ein Limit wieviel Einträge pro PCs in der DB sein können (100 oder so).

PHP Script für statistische und aktuelle Wiedergabe der Daten
- Soll die aktuellen Werte anhand des Insertion Datums ausgeben.
- Eine Temperaturkurve wäre auch nett.
- Ich dachte auch an Tresholds, dh. wenn die CPU unter Last steht und die Temp steigt, wird das durch Änderung der Schriftfarbe dargestellt. Farbverlauf von blau bis rot.
- Wenn der letzte Eintrag älter als 5 Minuten ist, steht "System offline" dort.
- Da man das ganze auf Multiuser und Multisystem ausbauen könnte, könnte man ein Temp-Ranking sowie den Coolsten PC und den HotRod ausgeben. Alles relativ aktuell.


Technische Fragen meiner Seite

- Temps kann ich bei meinem PC einfach mittels ASUS Probe dlls auslesen. Jedoch wäre etwas generisches Interessanter. Ausserdem muss ich im Moment eine ganze Reihe an dlls in mein Runtime Verzeichnis kopieren, da die dlls sich sonst untereinander nicht finden. Habt ihr da eine gute Idee, wie man Temperaturen (CPU/Mainboard/Speicher) generisch auslesen kann?

- Soll das Tool ein Service oder eine Applikation(sys-tray) sein?

- Gibts eine einfache kleine Verschlüsselung, die ich hardcoded machen könnte, die sich sowohl in c# als auch in php realisieren lässt ? Stichwort performance unter php.

- Neben username, rechnername, cpu temp, mb temp und mem temp würdet ihr gerne noch andere Infos dort sehen wollen ? Wenn ja welche?

- Vorerst code ich das ganze mal für mich alleine. Wenn ich aber das Gefühl habe, es läuft schon ganz gut, möchte dann jemand etwas beta-testen?


Soweit mal der Start. Die Idee ist mir gestern in der Nacht während des Schlafes gekommen. Obiges ist erstes Brainstorming und ein paar Zeilen Testcode. Ich will garnicht hören, dass es das schon gibt (auch wenn es mir im Moment nicht bekannt ist), denn es geht mir hauptsächlich darum, dass Coden nicht zu verlernen.


Seid ihr am Fortschritt des Projekts interessiert?


PS: Sollte das ganze mal stable funktionieren, wäre es eigentlich ein lustiges feature für oc.at oder? :)


EDIT:

Erster Screenshot: click to enlarge
Bearbeitet von The Red Guy am 27.12.2004, 17:42

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25423
temps auslesen ist keinesfalls leicht.

eventuell könnte dir motherboard monitor hier aushelfen. samurize realisiert die tempausgabe ebenfalls so.

ich wünsch dir auf alle fälle viel glück :)
falls du von oc.at seite etwas dafür brauchst, dann melde dich bei mir.

spunz

Super Moderator
Super Moderator
Avatar
Registered: Aug 2000
Location: achse des bösen
Posts: 11241
für windows gibts leider keine brauchbaren tools wie lmsensors oder mbmon :(

motherboard monitor kann mit nem hack per snmp angesprochen werden, möglicherweise gibts auch andere möglichkeiten direkt an die daten zu kommen.

die grafische auswertung ist kinderleicht => http://www.rrdtool.org (auch für windows), php oder mysql ist dazu nicht nötig. rrdtool speichert die daten in *.rrd datenbanken und kann die werte im gif/png format ausgeben. die fertigen bilder kannst du im gewünschten zeitraum (zb 5min) mit ftp/sftp/scp auf deinen webserver hochladen.

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25423
gewisse teile eines programmes auslagern find ich ja ok, aber als programmierer gehts eigentlich darum, dass mans möglichst selber macht.

The Red Guy

Untitled
Avatar
Registered: Jul 2001
Location: Transdanubia
Posts: 3121
In der Tat ist der Knackpunkt das Auslesen der Temperaturen. Ich habe schon einige Zeit gesucht, aber leider nichts gefunden.

Ich werde weiter suchen, ansonsten arbeite ich vorerst mit ASUS Probe und baue die universelle Lösung später.

Danke fürs erste!

spunz

Super Moderator
Super Moderator
Avatar
Registered: Aug 2000
Location: achse des bösen
Posts: 11241
Zitat von The Red Guy
In der Tat ist der Knackpunkt das Auslesen der Temperaturen. Ich habe schon einige Zeit gesucht, aber leider nichts gefunden.

Ich werde weiter suchen, ansonsten arbeite ich vorerst mit ASUS Probe und baue die universelle Lösung später.

Danke fürs erste!

nett wäre ein kleines tool welches über die konsole die aktuelle temp der cpu/hdd, ram, cpu,.. ausgibt und alternativ als service diese via wmi/snmp/wwi übers netzwerk bereitstellt.

The Red Guy

Untitled
Avatar
Registered: Jul 2001
Location: Transdanubia
Posts: 3121
Ich habe mich vorerst für eine Lite-Variante entschieden, damit zumindest kurzfristig das Proof of Concept klappt.

Der Knackpunkt ist einfach das Temperatur-Auslesen. Hmonitor war ein guter Tipp. Wenn dieses Tool installiert ist, kann man Counters vom Performance-Monitor auslesen. Allerdings geht das nur in der Pro Version und die ist kostenpflichtig. :(

Es soll angeblich eine Möglichkeit geben, die Infos über ACPI Funktionien abzufragen, allerdings habe ich weder ein Stückchen Code dafür gefunden noch ist sichergestellt, dass hier etwas brauchbares zurückkommt. Vorraussetzung ist ausserdem, dass ACPI im BIOS aktiviert ist.

Derzeit bin ich soweit, dass mein kleines Tool die Temps von CPU und Mainboard ausgibt und periodisch mit login info an http://www.theredguy.org schickt. Dort werden die Werte nach Authentifizierung in die DB geschrieben und der Status zurückgegeben. Das Tool kann diese Status-Infos auch schon auswerten.

Screenshots von den first fruits kann ich am Abend schicken.

Über 800 views und nur spunz und mat die antworten. :eek:

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4452
Zitat
Über 800 views und nur spunz und mat die antworten. :eek:

Bei einem nichts-aussagendem Topic muss jeder der sich fuers Forum interessiert reinschauen nur um mal zu wissen um was geht .. also bitte ja ;)

The Red Guy

Untitled
Avatar
Registered: Jul 2001
Location: Transdanubia
Posts: 3121
Zitat von Rektal
Bei einem nichts-aussagendem Topic muss jeder der sich fuers Forum interessiert reinschauen nur um mal zu wissen um was geht .. also bitte ja ;)

Das nennt man "aggressives Marketing". :D

The Red Guy

Untitled
Avatar
Registered: Jul 2001
Location: Transdanubia
Posts: 3121
Screenshot ist im ersten posting.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz