Digitale Ladedruck- und Öltemperaturanzeige
Ich habe beim Aufräumen meiner Festplatte die Pläne für ein Projekt wiedergefunden, das ich letztes Jahr für mein Auto erstellt habe. Es handelt sich um eine kleine Schaltung, die den aktuellen Ladedruck sowie die Öltemperatur auf einem LC-Display anzeigt. Ermittelt wird der Ladedruck von einem MPX4250AP-Sensor, der einen Bereich von ca. -1 bis +2,5Bar Druck messen kann. Die Temperatur des Öls von -50 bis +150°C stellt ein ST-20M-Sensor fest. Verarbeitet und umgerechnet werden die erfassten Daten von einem PIC16F818 Microcontroller. Als Anzeige kommt ein DOGM162 zum Einsatz.
Fertig zusammengebaut und mit einer Blende für das Display sieht das Ganze dann so aus: 
Falls jemand das Ganze nachbauen möchte, hier gibt es es alles Nötige (Schaltplan, Layout, Bauteilliste, Software) dazu. Um die Software auf den PIC zu bekommen empfehle ich die Programmiergeräte von sprut.de.
Ein kleiner Hinweis: die Software enthält einen Bug der dafür sorgt das Öltemperaturen von unter 0°C nicht richtig dargestellt werden. Ansonsten läuft die Anzeige bei mir seit einem Jahr völlig problemlos.
Hier gibt es noch ein kurzes Video wie die Anzeige fertig verbaut in meinem Auto ihren Dienst tut.
Howto: Minecraft Overviewer Karte erstellen
Seit ein paar Wochen bin ich dem Minecraft-Fieber erlegen. Für den eigenen Server musste dann natürlich auch eine schicke Karte der Welt her. Die Wahl fiel auf den Minecraft-Overviewer, der eine Karte mithilfe der Google Maps API generiert.
In diesem Howto möchte ich nun kurz erklären wie man das Ganze auf einem Linux System (hier Ubuntu 10.10) einrichtet.
Zuerst installieren wir die nötige Software:
sudo apt-get install python2.6 python2.6-dev python-imaging python-numpy build-essential
Dann laden wir das Overviewer Paket herunter:
wget -O Minecraft-Overviewer.tar.gz http://github.com/overviewer/Minecraft-Overviewer/tarball/master
Das Paket entpacken und den C-Renderer Kompilieren:
tar -xzvf Minecraft-Overviewer.tar.gz cd overviewer-Minecraft-Overviewer-VERSION python2.6 setup.py build
Nun passen wir noch die overviewerConfig.js im Ordner "overviewer_core/data/web_assets" mit dem Editor unserer Wahl an und ersetzen die letzte Zeile:
var mapTypeData = {maptypedata};
mit dem folgenden (um die Karte bei Tag und Nacht zu sehen):
var mapTypeData = [{'label': 'Day', 'path': 'tiles'}, {'label': 'Night', 'path': 'night'}];
Jetzt brauchen wir die Minecraft Texturen aus dem MC Client. Diese befinden sich in der Datei minecraft.jar im Minecraft Verzeichnis. (C:\Users\BENUTZER\AppData\Roaming\.minecraft\bin\)
Die Datei platzieren wir hier:
~/.minecraft/bin/
Abschließend rendern wir die Karte im Tag- und Nacht-Modus:
python2.6 overviewer.py --rendermodes=normal,night /home/USER/minecraft_server/WORLDNAME/ /AUSGABE/PFAD/map/
Fertig! Die Karte liegt nun bereit und kann im gewählten Ausgabeverzeichnis bewundert werden.
UPDATE 23.10.11: angepasst auf neuste Overviewer-Version
XBox360 HDMI autoreboot fix
Ich bin seit ein paar Tagen glücklicher Besitzer einer neuen XBox360 Slim und einem 24" FullHD TFT von Acer. Die beiden Geräte arbeiten über ein HDMI-Kabel soweit prima zusammen, doch mit dem Ton hatte ich so meine Probleme. Ich wollte den Sound gern über einen Verstärker ausgeben, der leider keinen optischen Eingang hat. Also habe ich mir bei eBay einen AV-Adapter gekauft, um die Verbindung per Chinchkabel herstellen zu können. Soweit so gut, wenn bei eingestecktem Adapter die XBox nicht ständig neustarten würde, wenn man am TFT zwischen HDMI und DVI umschaltet (XBox & PC).
Wie üblich brachte ein Ausflug zu Google Aufschluss über die Ursache: Im AV-Stecker fehlen zwei Verbindungen zwischen vier Pins. Ohne diese Brücken ist die XBox der Meinung auf dem AV-Ausgang ein Videosignal ausgeben zu müssen, wenn der HDMI-Ausgang nicht genutzt wird. Darum rebootet sie dann einfach spontan. Die fehlenden Verbindungen lassen sich nach dem Öffnen des Steckers (mit einem Schraubenzieher vorsichtig aufhebeln) mit zwei kleinen Lötbrücken zwischen den Pins 18+20, sowie 22+24 herstellen.
ffmpeg auf Debian Lenny mit libx264 und libfaac
Um Videos direkt auf meinem Server konvertieren zu können habe ich mich Heute mal damit beschäftigt ffmpeg selbst zu kompilieren. Wichtig war dabei die Unterstützung des aac Audiocodes und des h264 Videocodes, damit die Videos mit dem JW Player abgespielt werden können. Ein paar Googleexkursionen ergaben dafür recht schnell die Lösung:
Die Quellen für die benötigten Bibliotheken zu /etc/apt/sources.list hinzufügen:
deb http://www.debian-multimedia.org sid main non-free
Paketquellen aktualisieren und Key importieren:
apt-get update apt-get install debian-multimedia-keyring
Dann die Pakete installieren:
apt-get install libmp3lame-dev libvorbis-dev libfaac-dev libfaad-dev libxvidcore4-dev libxvidcore-dev libx264-dev
Die neuste ffmpeg Version herunterladen:
svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
Schließlich ffmpeg kompilieren:
cd ffmpeg ./configure --enable-gpl --enable-postproc --enable-libvorbis --enable-libx264 --enable-libfaad --enable-nonfree --enable-libmp3lame --enable-libfaac --enable-libxvid --enable-pthreads --disable-debug --prefix=/usr make make install
Fertig! Nun sollte ffmpeg einsatzbereit sein. Ein Beispiel für die Konvertierung eines Videos sieht dann wie folgt aus:
ffmpeg -i input.avi -vcodec libx264 -r 25 -b 2048k -bt 512k -s 1024x768 -vpre hq -acodec libfaac -ab 128k -ar 44100 -ac 2 -y output.mp4
Mit C# YouTube Videos downloaden
YouTube Videos lassen sich recht einfach direkt als .flv oder .mp4 herunterladen und dann in ein belibiges Format umkonvertieren. Dabei möchte man das Ausgangsmaterial natürlich in möglichst hoher Qualität bekommen. Doch wie erkennt man die bestmögliche Qualistufe aus einem C# Programm heraus? Dazu nutzt man einfach die WebClient-Klasse um die entsprechende YouTube-Seite einmal zu requesten. Daraus lassen sich dann mittels einiger Regex-Anweisungen die benötigten Informationen filtern. Erforderlich ist zum einen die normale YouTubeID, sowie eine interne ID und ein Parameter für die gewünschte Qualität. Finden lassen sich diese Daten folgendermaßen:
string youtubeurl = "http://www.youtube.com/watch?v=I1qHVVbYG8Y";
string getUrl = "http://www.youtube.com/get_video.php?video_id={0}&t={1}";
Regex _titleRegex = new Regex("'VIDEO_TITLE': '(.+)',");
Regex _qualiRegex = new Regex("\"fmt_map\": \"([0-9]{2})");
Regex _idRegex = new Regex("\",\\s*\"t\":\\s*\"([^\"]+)");
WebClient client = new WebClient();
string rawHtml = client.DownloadString(youtubeurl);
Match title = _titleRegex.Match(rawHtml);
Match id = _idRegex.Match(rawHtml);
Match quali = _qualiRegex.Match(rawHtml);
string videotitle = title.Groups[1].Value;
string videoid = youtubeurl.Substring(youtubeurl.IndexOf("?v=") + 3);
string id2 = id.Groups[1].Value.Replace("%3D", "=");
string dlurl = string.Format(getUrl, videoid, id2);
string fileext = "flv";
if (rawHtml.Contains("'IS_HD_AVAILABLE': true")) // 1080p/720p
{
dlurl += "&fmt=" + quali.Groups[1].Value;
fileext = "mp4";
}
else
{
dlurl += "&fmt=" + quali.Groups[1].Value;
if (quali.Groups[1].Value == "18") // Medium
fileext = "mp4";
else if (quali.Groups[1].Value == "17") // Mobile
fileext = "3gp";
}
byte[] data = client.DownloadData(new Uri(dlurl));
File.WriteAllBytes("C:\\" + videotitle + "." + fileext), data);
Mehr Infos zu den YouTube Codecs gibts hier.
Munin Plugin für Teamspeak 3 Server
Der erste (hoffentlich) nützliche Post in diesem Blog: Ein Plugin für das Monitoring Tool Munin. Nach der Umstellung meines Teamspeakservers auf die neue 3er Version funktionierte leider die Benutzerstatistik nicht mehr, die ich im 5 Minuten Takt von Munin erstellen lasse. Ein Googleausflug brachte keine Abhilfe, also hab ich eben selbst ein kleines Perlscript zusammen geschustert.
Das Script fragt über das Perl Modul Net::Telnet für jeden eingetragenen virtuellen Server die Anzahl der Benutzer beim TS3-Server ab und gibt sie für Munin verständlich wieder aus. Nicht mehr aber auch nicht weniger
Herraus kommen dann hübsche Graphen wie dieser hier:
Und hier gibt es das ganze Plugin zum Download: teamspeak_user
UPDATE 18.11.10: v0.4 ist online
Hilfe ich habe einen Blog!
Nun ist es also so weit: ich habe meinen eigenen Blog! Die Idee dahinter ist allerdings nicht die Außenwelt mit super interessanten Dingen über mich zu beglücken, sondern ich werde hier in unregelmäßigen Abständen kurze Code-Schnipsel, Skripte und was mir sonst noch so über den Weg läuft veröffentlichen. Ich denke dabei hauptsächlich an einfache Hilfen für irgendwelche Probleme für deren Lösung ich stundenlag Google bemühen musste und die sich im Nachhinein als leicht zu beheben heraus gestellt haben. Vielleicht kann ich dem Einen oder Anderen ja dann mit diesem Blog bei seiner Problemlösung helfen. Außerdem kann ich selbst dann hier nachschlagen, falls ich wieder vergessen habe wie sich Funktion X von Software Y nochmal richtig benutzen ließ
Ganz kurze Info zu meiner Person: Ich heiße Tim Wulkau, bin 27, gelernter Kommunikationselektroniker Fachrichtung Funktechnik und studiere zur Zeit an der FH Flensburg Technische Informatik. Ich programmiere hobbymäßig C#, PHP, HTML und Javascript, sowie ein wenig Assembler. Außerdem administriere ich schon seit ettlichen Jahren den Linuxserver auf dem neben so einigen anderen Diensten auch diese Seite läuft.