Schlagwort-Archive: software

Radiorecorder-Podcast im Selbstbau

podcastIch höre immer und überall Podcasts, also Mitschnitte interessanter Interviews, Radiosendungen und Hörspiele. Allerdings werden nicht alle Radiosendungen zum „zeitsouveränen Hören“ zum Herunterladen zur Verfügung gestellt. Das heißt, die einzige Chance, diese Sendungen zu hören, ist live vorm Radio zu sitzen.

Diesen Umstand konnte ich nicht auf mir sitzen lassen. Schließlich habe ich mit meinem Raspberry Pi einen ständig laufenden Computer, der die Sendungen aufnehmen und als Podcast zur Verfügung zu stellen kann.
Doch dazu mussten wieder mehrere Probleme gelöst werden:

Radiosendungen mitschneiden

Zuerst stellt sich das Problem, die Radiosendung aufzunehmen. Glücklicherweise hat mittlerweile jeder Radiosender einen Webstream, auf den man zugreifen kann. Mit dem Commandline-Tool Streamripper ist es möglich, diesen Stream mitzuschneiden und als mp3-File zu speichern. Folgender Befehl nimmt beispielsweise eine Stunde (3600 Sekunden) vom laufenden „Funkhaus Europa“-Programm auf und speichert es als „Testfile.mp3“ ab:

Damit mir die Files nicht die SD-Karte des Raspberry Pi zumüllen, werden diese auf dem USB-Stick an meinem Router abgespeichert. Die Fritzbox bietet die Möglichkeit, den Stick als Netzlaufwerk einzubinden (Samba-Server). Im Raspberry Pi habe ich dieses Netzlaufwerk gemountet und  speichere die mp3-Files im öffentlich zugänglich ab (auch da hilft die Fritzbox: per DynDNS  kann man eine feste Adresse einrichten und per Portweiterleitung auf den RaspPi hat man Zugriff auf die Daten).

Podcast erstellen

Da ich die Mitschnitte  aber mit meinem iPhone hören will, habe einen Podcast daraus gebastelt. Technisch gesehen ist eine Podcast ein RSS-Feed, der auf Medienfiles (z.B. mp3) verlinkt. Das heißt, dass ich automatisch ein XML-File generieren muss,  dass sich bei jeder neuen Aufnahme erneuert.
Dazu wird zu mit jeder gestarteten Aufnahme ein weiterer Eintrag in ein Logfile geschrieben. Aus diesem Logfile kann mit meinem Python-Skript dann das XML-File generiert werden (als Vorlage diente mir dieser RSS-Generator, den ich im Netz gefunden habe).
Zum besseren Handling kann man den Feed dann noch durch Feedburner jagen, um z.B. einen Passwortschutz hinzuzufügen oder um die maximale Kompatibilität mit allen Systemen zu garantieren.

Recorder Programmieren

Das letzte Problem besteht darin, den Recorder zu programmieren. Unix-basierende Systeme besitzen die Crontab, wo man Befehle eintragen kann, die zu bestimmten Zeitpunkten (Uhrzeit, Datum & Wochentag) ausgeführt werden sollen. Folgende hinzugefügte Zeile führt das Bash-Skript „recorder.sh“ jeden Samstag um 22:00 Uhr aus:

Dieses Skript führt dann die oben beschriebenen Punkte aus: Streamripper starten, Logfile schreiben & RSS-File updaten

In  meinem Github-Repository habe ich das fertige Ergebnis zur Wiederverwendung abgelegt (mit Installationsbeschreibung).

Le roi est mort, vive le roi


Ich habe beschlossen, meinen Blog, den bei Tumblr gehostet habe, zu schließen und ihn einen WordPress-Blog umzuwandeln der auf einem  Webserver liegt (RSS-Feed hier).

bulb

Das hat viele Vorteile. Der Größte ist, dass ich Herr meiner eigenen Daten bin und jede beliebige Anpassung durchführen kann (mehr zum Thema Eigenhosting kam übrigens kürzlich im Radio). Außerdem wird der Webserver atomstromfrei betrieben, was besser fürs Gewissen ist.

 Ich hatte noch kurz darüber nachgedacht, die Website auf meinem Raspberry Pi zu betreiben, habe den Plan aber wieder verworfen (RaspPi & Internetanschluss sind zu schwach auf der Brust).

Freut euch auf viele Basteleien und Beobachtungen!

Hacking Phocos CXN

image

Ich mag Daten. Ich kann Ewigkeiten damit verbringen, aus Zahlenkolonnen bunte Diagramme zu basteln, um mir und anderen Zusammenhänge zu visualisieren.

Deshalb kam für meine Solaranlage auch nur ein Laderegler in Frage, der seine Betriebsdaten über eine Datenschnittstelle zur Verfügung stellt. Beim Phocos CXN10 kann ich solche Betriebsdaten, wie z.B. die Batteriespannung, PV- und Laststrom, Ladezustand, uvm. über eine serielle Schnittstelle auslesen.

Um die Daten auszulesen, erwartet der Hersteller allerdings vom Anwender, dass er sich ein wahnsinnig teures Adapterkabel kauft, das mehr kostet als der Laderegler selbst. Deshalb beschloss ich, die Sache selbst in die Hand zu nehmen (Disclaimer: seid euch im klaren, dass man beim unvorsichtigen Herumbasteln das Gerät schnell zerstören kann).

Dabei waren mehrere Probleme zu lösen:

Problem 1: Die vierpolige Steckverbindung der Schnittstelle besitzt ein relativ selten genutztes Format. Nach mehreren Fehlkäufen diverser Batterie-Steckverbindern und anderen Kuriositäten bin ich letztendlich auf den passenden Stecker gestoßen: JST-Stecker

image

Problem 2: Serielle Schnittstelle ist nicht gleich serielle Schnittstelle. Zwar nutzen die meisten Geräte den UART-Standard zur Kommunikation, allerdings muss man immer auf den Spannungspegel achten. Der Phocos ist besonders hinterhältig. Statt für die Bezugsspannung (GND) den Minuspol der Batterie zu benutzen, benutzt er den Pluspol (+12V). Versorgt man nun das Auslesegerät (Arduino – s.u.) mit dem Lastausgang des Ladereglers und verbindet die Bezugsspannungen der beiden Geräte, gibt es einen Kurzschluss zwischen 0V und 12V. Glücklicherweise bemerkte ich diesen Fauxpas noch rechtzeitig, bevor eines der Geräte Schaden nahm (das Kabel war allerdings schon sehr verschmort).

Abhilfe schafft eine galvanische Trennung der seriellen Verbindung mit einem ADUM1201-Baustein:

image

Problem 3: Wie spreche ich überhaupt mit dem Phocos? Das ist das einfachste Problem gewesen. Der Arduino Uno, das Mikrocontroller-Board schlechthin, bietet mit der SoftwareSerial-Funktion die Möglichkeit, den Laderegler auszulesen, weiterzuverarbeiten (z.B. umrechnung der Daten, bilden von Mittelwerten, etc.) und über die USB-Schnittstelle weiter an die einen Computer, z.B. den Raspberry Pi, zu schicken.

image

Problem 4: Welche Sprache spricht der Phocos überhaupt? Das war schon ein wenig mehr kompliziert. Nach langer Recherche stieß ich in einem französischen LabView-Forum auf die Protokollbeschreibung der seriellen Schnittstelle. Darin steht, dass man dem Laderegler nur ein Leerzeichen schicken muss, dann fängt er an zu quatschen.
Das sieht dann z.B. so aus:

024 022 000 112 147 160 000 000 255 010 090 017 -002 -002 000 0000 0003 000 000

Diese Zahlen bedeuten z.B., dass die Batterie eine Spannung von 12,6V besitzt und gerade 73% “Füllstand” (SOC) hat.

Meinen kleinen Beispiel-Arduino-Sketch kann man hier betrachten (ohne Gewähr).