Januar 15
Nachdem ich hier seit Ewigkeiten keine News mehr gepostet habe, nutze ich auch zur Abwechslung mal wieder meine private Website zur Mitteilung von aktuellen Inhalten. Zusätzlich habe ich die Bildergalerie um neue Bilder erweitert. Ist zwar immer noch nicht auf den neusten Stand, aber nun sind noch weitere Bilder von Konzerten und Ausflügen von Ende 2010, einige Bildern meiner Stuttgart-Tour sowie eine große Menge an Fotos vom Auto & Technik Museum in Sinsheim, dass ich vor meiner entgültigen Abreise aus Esslingen noch besucht hatte.
In den vergangenen Tagen war Never Shout Never auf Tour in Deutschland. Ein Act, der mich nicht wirklich interessierte - ein auf der Bühne rauchender Typ (Nichtraucherschutz? Vorbildfunktion?!), der mit seiner Band auf der Gitarre spielt, singt, bellt und damit junge Damen zum Kreischen bringt. Mich interessierte nur der Auftritt von Tonight Alive, einer Rockband aus Sidney. Zum ersten Mal in Europa wussten sie auch schon mal als Support-Act in Deutschland für gute Stimmung zu sorgen. Drei Videos der Band gibt's bei mir im YT-Channel, eines davon habe ich mal eingebunden:
Im Anschluss ans Konzert ist mir Jenna, die Sängerin von Tonight Alive, noch über den Weg gelaufen. Wie üblich hab ich mir ein Autogramm sowie ein Foto mit ihr gesichert (in der Galerie zu finden). Sehr sympatisch.
Januar 24
Schon lange ist Google aufgrund des Datenschutzes von Google Analytics in der Kritik. Es war auch die Sprache davon, dass die Nutzung ohne ausdrückliche Zustimmung des Besuchers rechtswidrig ist.
Doch für viele Website-Betreiber und somit auch für mich sind derartige Analysen ziemlich wichtig und ein Opt-In-Verfahren wäre nicht nur umständlich, sondern hinderlich bei der Datenerhebung. Ein Datenschutzhinweis beispielsweise im Impressum sollte wohl Pflicht sein.
Beim Herumsurfen habe ich entdeckt, dass Google inzwischen auch die Möglichkeit bietet, dass die IP-Adressen der Nutzer anonymisiert werden, indem der letzte IP-Block entfernt wird. Somit ist keine eindeutige Identifizierung mehr möglich und es können trotzdem noch Daten zur Analyse erhoben werden.
Dafür wird der nachfolgende Code eingebunden:
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-396223-2'])
_gaq.push(['_gat._anonymizeIp']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
Neu ist dabei die Zeile mit _gaq.push(['_gat._anonymizeIp']);, welche für die Anonymisierung sorgt. Weiteres dazu und auch den Code für die Nutzung des älteren Codes gibt es auf http://code.google.com/intl/de-DE/apis/analytics/docs/gaJS/gaJSApi_gat.html#_gat._anonymizeIp
Auf dieser Seite werden die IPs nur noch anonymisiert übertragen. Längerfristig wird auch ein Wechsel auf Piwik in Betracht gezogen.
Dezember 07
Nachdem im ersten Teil das Projekt und die damit verbundenen Herausforderungen bereits erklärt wurden, geht es in diesem Teil schon direkt los. In diesem Artikel beschreibe ich, wie die Sensordaten in die WMI übermittelt werden und wie diese anschließend mittels PHP-Script in die Datenbank geschrieben werden können. Alternativ ließe sich das sicher auch mit anderen Mitteln lösen, aber die PHP-Lösung funktioniert auf jeden Fall auch gut.
Teil 2: Systemdaten auslesen
Da sich in meinem Testsystem eine aquastream XT Ultra befindet, welche auch die Wassertemperatur auslesen kann, nutze ich zusätzlich zu AIDA64 eine zusätzliche Datenquelle. Über die Software aquasuite kann im Reiter „XML & Logdaten“ die Protokollierung und XML-Ausgabe eingestellt werden. In gewünschten Abständen wird dabei unter anderem die Wassertemperatur in der XML-Datei abgespeichert. Bei AIDA64 Extreme Edition (ehem. EVEREST Ultimate Edition) wird im Menüpunkt „Externe Applikationen“ der Einstellungen eingestellt, dass die Sensordaten in die WMI geschrieben werden. Im Menüpunkt „Updatefrequenz“ sollte für die Externe Applikationen auch ein relativ geringer Wert (z. B. 10 Sekunden) eingestellt sein, damit bei der Ausführung des Ausleseprozesses auch aktuelle Daten gespeichert werden.
Damit ist die Grundlage geschaffen, um überhaupt die Daten auslesen zu können. Als nächstes wird eine php-Datei erstellt, welche den Namen readdata.php erhalten hat. Für das Ermitteln der Daten habe ich zwei Funktionen angelegt.
function getSensorAquasuite(){
$xml = simplexml_load_file("aquasuite.xml");
$data[] = array('name' => 'TemperatureSensorWater','value' => $xml->aquastreamXtLogData->TemperatureSensorWater."");
return $data;
}
Die Funktion getSensorAquasuite() liest die aquasuite.xml ein, welche die Wassertemperatur enthält, und schreibt den Wert von TemperatureSensorWater in ein Array, welches anschließend zurückgegeben wird. Ein Array aus dem Grunde, damit später auch ggf. weitere Werte der Aquasuite als Sensordaten übermittelt werden können ohne außerhalb der Funktion Änderungen vornehmen zu müssen.
Doch das Interessante dürfte wohl die WMI sein. Was es damit genau auf sich hat, werde ich noch in einem separaten Artikel ausführlich erklären. In diesem Falle stellen wir uns einfach vor als wäre es eine Art Datenbank, welche die Temperaturdaten für uns parat hält. Der Code zum Auslesen sieht wie folgt aus:
function getSensorAIDA64(){
$wmi = new COM("winmgmts://localhost/root/WMI");
$sensorwerte = $wmi->ExecQuery("Select * from AIDA64_SensorValues");
foreach ( $sensorwerte as $wert ){
$data[] = array('name' => $wert->ID,'value' => $wert->Value);
}
return $data;
}
Zuerst wird OLE-kompatibles COM-Objekt erzeugt (siehe http://de3.php.net/manual/de/class.com.php), mit welche auf die WMI zugegriffen wird. Anschließend werden die Daten von der Klasse AIDA64_SensorValues ausgelesen und in einer Schleife in ein Array gespeichert und anschließend zurückgegeben. Außerhalb jeglicher Funktion werden bei mir nun die Daten aufgerufen und an die Funktion writeData() weitergeleitet.
include "config.inc";
$data['time'] = date('Y-m-d H:i').':00';
$data['sensor'] = getSensorAquasuite();
$data['sensor'] = array_merge($data['sensor'],getSensorAIDA64());
$data['sensor'][] = getCPULoad();
writeData($data);
Die Ausgabe von $data sieht gekürzt wie folgt aus:
Array
(
[time] => 2010-10-03 20:27:00
[sensor] => Array
(
[0] => Array
(
[name] => TemperatureSensorWater
[value] => 38.5
)
[1] => Array
(
[name] => SUSEDMEM
[value] => 2315
)
[2] => Array
(
[name] => TCC-1-4
[value] => 44
)
[3] => Array
(
[name] => SUPTIME
[value] => 03:48:46
)
[4] => Array
(
[name] => THDD3
[value] => 33
)
)
Die Verwertung der Daten wird dann im nächsten Teil erklärt.
//Update:
Nachdem EVEREST durch AIDA64 abgelöst wurde, habe ich auch die Funktionen entsprechend angepasst. Wer noch EVEREST nutzt, der kann die Daten weiterhin aus EVEREST_SensorValues auslesen, Nutzer von AIDA64 verwenden hierfür AIDA64_SensorValues
Tags:
Oktober 12
Seit gestern gibt es Probleme bei den QIP-Versionen (zumindest QIP Infium und QIP 2010 sind betroffen). Einige Nutzer erhalten die Meldung "You are using an older protocol version. Upgrade required."
Nutzer von QIP 2010 sollten sich auf http://new.qip.ru/woo/qip2010_4237.exe die vorübergehende Version herunterladen, bei der das Problem behoben sein soll.
Bei QIP Infium kann das Problem in den aktuellen Versionen leicht in den Einstellungen behoben werden. Hierzu ein einfaches Workaround für die Fehlerlösung:
- QIP starten
- Auf das ICQ-Symbol klicken (ggf. unten rechts auf "Show/hide protocols panel klicken, wenn das Icon nicht sichtbar ist)
- Den Eintrag "Network Settings" anklicken
- Haken bei "Use new authentication type" (unter Show password und Save password; bei einigen Versionen könnte der Text hinter dem Haken fehlen)
- Passwort neu eingeben
- Speichern
Und dann geht auch wieder das Einloggen mit QIP.
Tags:
Oktober 09
Hin und wieder kommen mir einige etwas andere Projekte als Homepages in den Sinn, welche etwas Entwicklungszeit Wert sind. Da diese Ansätze zumindest nicht im Großteil der Literatur wiederzufinden sind (und damit auf der Seite auch mal etwas Content kommt) dokumentiere ich die Entwicklung auf meiner Homepage.
Es soll kein komplettes Tutorial werden, sondern vielmehr für andere Entwickler als Inspiration und eventuell kleine Hilfestellung dienen. Daher sind Programmiererkenntnisse auf jeden Fall notwendig; und auch den vollständigen Code behalte ich lieber für mich. Im ersten Teil meines Projekttagebuchs stelle ich zunächst das Vorhaben und die damit verbundene Problematiken vor.
Teil 1: Die Idee
Eines meiner Projekte ist ein auf Windows laufendes, webbasiertes Monitoring System. Dieses System liest aktuelle Systemdaten, in meinem Fall Temperaturen, CPU-Last oder auch dem freien Arbeitsspeicher aus, schreibt die Werte regelmäßig in die Datenbank und gibt die Daten grafisch im Webbrowser aus. Somit kann auch von Außerhalb der Systemstatus eingesehen werden. Zudem sollen die aktuellen Daten auch auf dem Desktop angezeigt werden. Da meine Stärke nun mal bei PHP liegt, habe ich auch eben diese Entwicklungssprache für dieses Vorhaben ausgewählt. Bei den Anforderungen gibt es jedoch schon direkt mehrere „Probleme“:
- Wie lassen sich die Daten überhaupt ermitteln?
- Wie können die Werte in regelmäßigen Abständen mittels PHP-Script in die Datenbank geschrieben werden?
- Wie können die Daten grafisch ausgegeben werden
- Wie erfolgt die Anzeige auf dem Desktop?
Die Fragen werden in den nächsten Teilen nach und nach beantwortet.
Verwendetes System
In diesem Falle ist ein Windows-Betriebssystem (Windows ME oder höher) erforderlich, die Realisierung erfolgt auf einem Windows 7-Rechner. Für die programmiertechnische Umsetzung mit PHP ist ein Apache Webserver mit PHP und einer Datenbank (z. B. MySQL) notwendig. Die Ermittlung der Daten erfolgt übe die WMI (Windows Management Instrumentation). Jedoch lassen sich aktuelle Temperaturen damit nicht immer ohne weiteres auslesen. Aus diesem Grunde war für mich die Nutzung der kostenpflichtigen Software EVEREST Ultimate Edition von Lavalys unumgänglich. Die Software kann die Daten regelmäßig in die WMI-Speichern. Die Corporate Edition soll wohl auch eine Anbindung an SQL-Datenbanken bieten, kostet jedoch (da mindestens fünf Lizenzen gekauft werden müssen) auch etwas mehr.
Tags: