ESP8266 debuggen

Über diesen netten Chip habe ich bereits einen Artikel geschrieben. Lief problemlos, weil die Bauteile „zusammengepasst“ haben. Ich habe mir 2 Platinen gebastelt die Raumtemperatur und Feuchtigkeit messen. Den „Weg“ zu dieser Wetterstation habe ich auf Github abgelegt – vielleicht hilft es ja jemandem weiter

2015-10-30 20.08.48
Von oben
2015-10-30 20.09.01
Und von unten

Schwer motiviert habe ich mir noch ein paar Arduino Nanos und ESP8266 bestellt und damit hat erstmal nichts geklappt! Das ist im ersten Moment ärgerlich, hat aber auch den Vorteil, daß man sich näher mit der Materie auseinander setzen muß.

Den Chip auf Breadboards benutzen

Durch den geringen Abstand der Pins kann man den ESP8266 schlecht mit Breadboards verwenden. Deshalb mußt Du vor jeglicher Art von Bastelei einen Adapter löten um Dein Leben leichter zu machen.

Benötigt werden ein Stück Lochraster Platine, eine Buchsenleiste und eine Steckerleiste mit jeweils 8 Pins. Die Steckerleiste besteht aus einem Kunststoffteil und Pins. Ich habe den Kunststoffteil ganz nach oben gedrück und dann falsch herum eingelötet. Die Buchsen ganz normal einlöten und dann auf der Unterseite verbinden. Mangels Draht und Bock habe ich die Brücken mit dem Lötkolben gemacht. Das dauert keine 10 Minuten und der Komfortgewinn ist enorm!

adapter

Probleme mit der Spannungsversorgung

Die ESP’s laufen mit 3,3V. Der Arduino hat einen 3,3V Pin der je nach verbautem Spannungsregler nicht genügend Strom liefert (wie meine neuen Arduinos). Das Problem wird sichtbar wenn die LED’s am ESP8266 dunkler werden oder die Spannung zusammenbricht. Mit einem externen Spannungsregler wie dem. AMS1117 läßt sich das Problem beheben.

Übertragungsraten

Mein erster Satz ESP8266  hat mit einer Symbolrate 9600 Baud gearbeitet. Die nächste Charge mit 115200, Baud die schafft mein neuer Satz Nanos, aber nicht die Alten.

Laut diesem Post läßt sich die Baudrate mit einer aktuellen Firmware setzen. Muß ich unbedingt ausprobieren!

Firmware ist vom Hersteller angepasst

Der gesamte Bereich Firmware ist ungemein spannend. Der ESP8266 wurde von der Firma ESPRESSIF erfunden oder produziert oder kopiert. Mein 2. Satz Chips war von der Firma AI-Thinker, die eine eigene, leicht inkompatible Firmware auf die Geräte gespielt hat und die ich nicht will weil die Sketches nicht damit laufen!

Um angenehmer mit den Chips  rumzumachen habe ich mir einen USB TTL Konverter gekauft (kostet zwischen 3€ und 8€). An Software wird nur die unsägliche Arduino IDE benötigt. Konfiguration ist unter Linux nicht nötig. Einfach die Arduino IDE starten und den Serial Monitor öffnen. Hier solange mit der Baudrate spielen, bis man auf das Kommando AT ein OK zurückbekommt. Hier mal ein Auszug aus einem solchen seriellen Gespräch – meine Kommandos sind fett, die Antworten kursiv:

AT
OK
AT+GMR 
AT version:0.30.0.0(Jul 3 2015 19:35:49)
SDK version:1.2.0
Ai-Thinker Technology Co.,Ltd.
Build:1.2.0.A Aug 7 2015 17:21:44
OK

Dies ist die Antwort der inkompatiblen Firmware. Eine schöne Übersicht über Kommandos habe ich bei Iteadstudio gefunden.

Eine nette Anleitung um die Firmware loszuwerden gibt es im Wiki von mikrocontroller.net.

Zusammengefasst (und darum geht’s in dem Beitrag) braucht man das Esptool zum Flashen und eine aktuelle Firmware. Der Chip muß dazu auch besonders beschaltet werden. Ronny Simon von Simtronyx hat das auf seinem Blog sehr nett beschrieben. Wenn die Schaltung steht alle Serial Monitors schließen und kurz Masse an Reset legen. In das Verzeichnisse der Firmware wechseln und mit esptool flashen

ms@w530: /tmp/esp_iot_sdk_v0.9.5/bin$ sudo esptool.py -p /dev/ttyUSB2 write_flash 0x00000 boot_v1.2.bin 0x01000 at/user1.512.new.bin 0x3e000 blank.bin 0x7e000 blank.bin
Connecting...
Erasing flash...
Wrote 2048 bytes at 0x00000000 in 0.2 seconds (81.7 kbit/s)...
Erasing flash...
Wrote 211968 bytes at 0x00001000 in 20.5 seconds (82.7 kbit/s)...
Erasing flash...
Wrote 4096 bytes at 0x0003e000 in 0.4 seconds (85.6 kbit/s)...
Erasing flash...
Wrote 4096 bytes at 0x0007e000 in 0.4 seconds (85.6 kbit/s)...
 
Leaving...

Zumindest bei mir hat danach alles wirklich super funktioniert 🙂

Alternative Firmware

Ein paar ziemlich coole Leute bieten eine eine Firmware an, die das Ausführen von LUA Script ermöglicht. Eine Anleitung gibts hier. Eine einfache Möglichkeit um an angepasste Firmware zu gelangen ist dieser Build Service. 

 

Dies waren soweit meine Probleme mit dem netten Chip. Falls neue auftreten werde ich diesen Beitrag entsprechend erweitern.

Arduino mit Wlan Modul ESP8266

Vor ca. 9 Monaten hat mein Feedreader mir einen interessanten Artikel präsentiert. Er handelte von einem Elektronik-Modul namens ESP8266 der TCP/IP Kommunikation über WLAN mit Arduino Controllern ermöglicht. Low-Level Geschichten interessieren mich normalerweise nicht, weil es meist aufwändig und kostspielig war die Hardware ins Netz zu bringen- vor allem ohne Kabel. Dank der netten Ebay Händler aus Shenzhen bekommt man die Hardware für solche Unterfangen inzwischen unter 10€. Ich hatte das Teil sofort bestellt, aber habe es nie geschafft es in Betrieb zu nehmen weil immer was dazwischen kam und mir die Muße fehlte – bis vor ca. 1h. Warum meine ersten Versuche das Teil in Betrieb zu nehmen fehlschlugen kann ich leider nicht mehr sagen. Als ausgebildete Fachkraft bin ich zu 100% sicher die Schaltung 1:1 nachgebaut zu haben aber es wollte nicht klappen. Aufgrund solcher Gedächtnisslücken schreibe ich jetzt diesen Artikel:).

 

 

Auf der Website Instructables.com bin ich auf eine vergleichbare Anleitung gestoßen, die eine Verkabelung ohne Spannugnsteiler und Stützkondensator vorsieht und auf einmal hatte es funktioniert! In dem Tutorial dreht sich alles darum per Http Request Sensordaten von einem DS1820 Temperatursensor per HTTP auf eine recht interessante Seite namens Thingspeak zu übertragen. Ich habe den Code ein wenig angepasst, da ich weder die Hardware dafür besitze noch die Libraries einbinden wollte. Wenn Du das nachbauen möchtest benötigst Du einen Account auf der Seite und mußt den Präprozessor neben SSID und Passwort mit einen API-KEY für Thingspeak füttern.

#include
#include 
 
 
#define SSID "SSID"
#define PASS "PASSWORD"
#define IP "184.106.153.149" // thingspeak.com
String GET = "GET /update?key=[APIKEY]]&field1=";
SoftwareSerial monitor(10, 11); // RX, TX
 
void setup()
{
  monitor.begin(9600);
  Serial.begin(9600);
 
  sendDebug("AT");
  delay(5000);
  if(Serial.find("OK")){
    monitor.println("RECEIVED: OK");
    connectWiFi();
  }
}
 
void loop(){
 
  //float tempC = sensors.getTempCByIndex(0);
 
  char buffer[10];
  String tempF = dtostrf(989, 4, 1, buffer);
  updateTemp(tempF);
  delay(60000);
}
 
void updateTemp(String tenmpF){
  String cmd = "AT+CIPSTART=\"TCP\",\"";
  cmd += IP;
  cmd += "\",80";
  sendDebug(cmd);
  delay(2000);
  if(Serial.find("Error")){
    monitor.print("RECEIVED: Error");
    return;
  }
  cmd = GET;
  cmd += tenmpF;
  cmd += "\r\n";
  Serial.print("AT+CIPSEND=");
  Serial.println(cmd.length());
  if(Serial.find(">")){
    monitor.print(">");
    monitor.print(cmd);
    Serial.print(cmd);
  }else{
    sendDebug("AT+CIPCLOSE");
  }
  if(Serial.find("OK")){
    monitor.println("RECEIVED: OK");
  }else{
    monitor.println("RECEIVED: Error");
  }
}
void sendDebug(String cmd){
  monitor.print("SEND: ");
  monitor.println(cmd);
  Serial.println(cmd);
} 
 
boolean connectWiFi(){
  Serial.println("AT+CWMODE=1");
  delay(2000);
  String cmd="AT+CWJAP=\"";
  cmd+=SSID;
  cmd+="\",\"";
  cmd+=PASS;
  cmd+="\"";
  sendDebug(cmd);
  delay(5000);
  if(Serial.find("OK")){
    monitor.println("RECEIVED: OK");
    return true;
  }else{
    monitor.println("RECEIVED: Error");
    return false;
  }
}

Die Verdrahtung gestaltet sich sehr einfach und funktioniert mit meinem Arduino UNO- und dem Arduino NANO 328-Klon:

ESP8266 Arduino
TXD RXD
CH_PD VCC 3V3
VXX VCC 3V3
GND GND
RXD TXD

Die Pins auf dem WLAN Chip sind so belegt:

Bild von http://mcuoneclipse.com/2014/10/15/cheap-and-simple-wifi-with-esp8266-for-the-frdm-board/

Hier 2 Bilder die zeigen wie die PINS auf den Arduinos herausgeführt sind:

 

Der Arduino Nano mit 328 Mega Chip

uno

Tükisch waren 2 Dinge an der Geschichte:

  1. Nmap findet das Gerät nicht im Netzwerk. Ich bin der Sache noch nicht nachgestiegen, aber mit <ahref=“http://linux.die.net/man/8/arp“>arp ist es kein Problem. Das muß ich mir anschauen
  2. Der Arduino kann nur programmiert werden, wenn man das WLAN Modul spannungsfrei macht. Auch ein Trennen der Verbindungen WLAN Modul Arduino und Arduino PC erleichtert das übertragen…

In den kommenden Tagen werde ich wohl ein kleines Programm schreiben, daß auf Port 80 lauscht und entsprechenden POST Requests analoge und digitale Ports schaltet und Stati ausgibt. Auch eine Anbindung an mein Openhab wäre sehr nett…

Serielle Kommunikation über Bluetooth

Für ein kleines Projekt (Mobiltelefon steuert Arduino) habe ich mir ein HC-06 Bluetooth Modul für wenig Geld in China besorgt. Bluetooth habe ich nie gemocht, weil ich nie viel Freude daran hatte diese Gerätschaften unter Linux zu konfigurieren, aber der Preisunterschied zu Arduino WLAN Modulen hatte dann doch den Ausschlag gegeben:).
 Über GUI ließ sich das Gerät leider nicht konfigurieren, aber  mit den bluez-utils auf der Kommandozeile ließ sich das Problem rasch beheben.

Zuerst muß die MAC Adresse des Moduls in Erfahrung gebracht werden.

ms@debian:~/$ hcitool scan
Scanning ...
	0C:DF:A4:DE:01:54	S3350
	20:14:04:11:15:16	HC-06

Das File rfcomm.conf anpassen

root@debian:/# cat /etc/bluetooth/rfcomm.conf 
#
# RFCOMM configuration file.
#
 
rfcomm0 {
#	# Automatically bind the device at startup
	bind yes;
#
#	# Bluetooth address of the device
	device 20:14:04:11:15:16;
#	# RFCOMM channel for the connection
	channel	1;
#
#	# Description of the connection
	comment "HC-06";
}

Nun die Pin des Geräts (Default ist 1234) setzen – Mac Adresse am Besten per Tabulator vervollständigen
root@debian:/# sudo echo „20:14:04:11:15:16 1234“ >> /var/lib/bluetooth/08\:3E\:8E\:E5\:1C\:5E/pincodes

Und den Bluetooth Daemon neu starten.

root@debian:/# sudo /etc/init.d/bluetooth restart

Befehle an den Bluetooth Client senden

Strings kann man nun einfach an das Gerät redirecten
ms@debian:~$ echo „beep“ >/dev/rfcomm0

Ausgabe des Bluetooth Clients lesen

Einfach mit cat die Gerätedatei ausgeben

ms@debian:~$ cat /dev/rfcomm0
==Commands==
led on
led off
beep
beep_d [duration]
==Commands==
led on
led off
beep
beep_d [duration]

fin.

Debian Wheezy auf dem Raspberry Pi installieren

Seit etwa einem Jahr nutze ich einen Raspberry Pi um mir damit Filme und Serien anzuschauen.Läuft ganz gut und mit OpenElec etwas flüssiger in der Menüführung als Raspbmc.Wenn weitere Dienste laufen wird das Filmvergnügen leider ein wenig ausgebremst weshalb ich mir ein zweites Gerät zugelegt habe.Auf dem neuen Raspberry Pi soll nun Debian seine Dienste verrichten und mir als Pyload Server und digitales Tor zu meiner Bude via sshd dienen.

Ich habe keine Lust den Pi mit Monitor und Tastatur zu schmücken, deshalb wird das System als Image auf eine SD Karte geschrieben und gut ist.

Die Debian Version für den Pi nennt sich Raspbian und läßt sich auf der Homepage des Projekts downloaden.

Eine Variante von Debian für den Pi nennt sich Raspbian und läßt sich auf der Homepage des Projekts downloaden.

1. Image auf die SD Karte schreiben, Pi starten

Die Blocksize war in der offiziellen Anleitung leider falsch angegeben.

root@debian:/home/ms/Downloads# dd bs=1M if=2014-01-07-wheezy-raspbian.img of=/dev/mmcblk0
root@debian:/home/ms/Downloads# sync

Pi vom Stromnetz trennen, Karte einstecken. Wenn nur eine rote LED leuchtet ist etwas schief gegangen
Nun dem Pi ein wenig Zeit zum booten geben und per nmap nach neuen Geräten suchen

ms@debian:~$ nmap -sP 192.168.0/24

2. Initiale Konfiguration

Per SSH einloggen, Konfiguration ausführen

#default password raspberry
ms@debian:~/Downloads$ ssh pi@192.168.0.110
pi@raspberrypi ~ $ sudo raspi-config

Erstmal Vim und Screen installieren

pi@raspberrypi ~ $ sudo su
root@raspberrypi:/home/pi# apt-get update
root@raspberrypi:/home/pi# apt-get install vim screen

Swap anpassen

root@raspipy:/home/pi# echo "CONF_SWAPSIZE=512" > /etc/dphys-swapfile
root@raspipy:/home/pi# dphys-swapfile setup
want /var/swap=512MByte, checking existing: deleting wrong size file (104857600), generating swapfile ... of 512MBytes
root@raspipy:/home/pi# dphys-swapfile swapon

3. NFS Freigaben einrichten

Ich nutze für Dateifreigaben nur noch nfs, das ist schneller als Samba und man hält sich den M$ Mist aus dem Netz. Mußte den Daemon ein wenig anpassen (Kernel Version 3.10 vom 2014-01-07).

NEED_STATD auf YES setzen in /etc/init.d/nfs-common
Einmal alles bezüglich NFS neustarten oder rebooten.

Die Shares einrichten und mounten (die uninteressanten Dinge aus fstab habe ich entfernt):

root@raspipy:/home/pi# cat /etc/fstab
192.168.0.50:/media_movies /media/nfs_movies nfs auto,rw 0 0 
192.168.0.50:/media_serien /media/nfs_serien nfs auto,rw 0 0
192.168.0.50:/downloads /media/downloads nfs auto,rw 0 0
root@raspipy:/home/pi# mkdir /media/nfs_movies
root@raspipy:/home/pi# mkdir /media/nfs_serien
root@raspipy:/home/pi# mkdir /media/downloads
root@raspipy:/home/pi# mount -a

Das wars soweit mit der Einrichtung von Debian. Ich habe zusätzlich den Port 22 am Router auf den Pi weitergeleitet und in /etc/ssh/sshd_config Logins mit Passwort verboten. Demnächst gehts weiter mit der Einrichtung von Pyload oder was Anderem wenn es mir nicht taugt :).

Led Lampen mit WLAN Anbindung

Ein Thema das mich immer wieder fasziniert ist die Vernetzung von Gegenständen des Alltags. Meine Wohnzimmerlampe glänzt nicht nur durch hässliche Form sondern auch durch kaltes Licht und Quecksilber im Leuchtmittel. Deshalb ersetze ich nach und nach Kompaktleuchtstofflampen durch LED Lampen. Der Zufall brachte mich zu diesem Lampenset mit WLAN Anbindung (Affiliate) vom Hersteller LimitlessLED. Die Lampen passen in E27 Sockel, haben 6 Watt Leistung und können mit 230V ~  betrieben werden. Die Grundidee ist die Lampen via Smartphone oder auf anderen Wegen einzuschalten, die Farben zu ändern und dimmen.Neben den 3 Lampen werden eine Fernbedienung und was viel interessanter ist einem Controller mit dokumentierter API geliefert. Apps gibt es auch! Pro Fernbedienung und Controller kann man 4 Lampen steuern. Dabei kann man die Parameter Helligkeit, Farbe regeln.

2013-10-15 16.56.18

 

Impressionen

Inbetriebnahme

Lampen

Jede Lampe muß konfiguriert werden. Dabei spielt es keine Rolle, ob man sie der Fernbedienung oder in der App konfiguriert.

Lampe in Fassung drehen und binnen 2 Sekunden nach Anlegen von Spannung auf der Fernbedienung einen Kanal aktivieren – die Lampe ist nun dem entsprechenden Kanal zugewiesen. Die erfolgreiche Zuweisung  wird durch Blinken quittiert. Um die Lampe aus dem Kanal zu lösen innerhalb von 2 Sekunden nach dem Einschalten 5 mal den entsprechenden Kanal auf der Fernbedienung aktivieren.

Controller

Der Controller wird per Micro-USB Kabel mit Spannung versorgt. Ich nutze ein Ladegerät für Smartphones. Nach dem Booten sollte man ein WLAN mit der SSID milight finden. Nun kann man der Anleitung folgen oder was ich als angenehmer per Webinterface konfigurieren. Dazu ins eigene WLAN verbinden und http://192.168.0.100/home.html aufrufen – ob die IP immer die gleiche ist kann ich nicht sagen. Hier muß in den STA Interface Settings das eigene WLAN konfiguriert werden.

App

Momentan nutze ich die in der Anleitung vorgeschlagene App Es gibt auch noch eine puristischere Version mit
Anbindung an Tasker – die  ohne Anpassungen leider nicht läuft.

LED Lampen ansteuern

Beim Hersteller gibt es eine Dokumentation.  Die Beispiele sind leider ein wenig inkonsistent, da irgendwann die Portnummer von 50000 auf 8899 umgestellt wurde.

Die Lampen werden per UDP Kommandos gesteuert. Dabei werden immer 3 Byte übertragen.

Byte 1 ist das Kommando an welches immer der Suffix 0x00  0x55 angehängt werden muß.

In PHP kann mit diesen Zeilen alle Kanäle einschalten:

&lt;?php
define("CONTROLLER_IP", "192.168.0.100");
function executeCommand( $ip, $command, $suffix1=00, $suffix2='55'){
	fwrite(fsockopen("udp://$ip", 8899), chr(hexdec($command)) . chr(hexdec($suffix1)) . chr(hexdec($suffix2)));
}
 
executeCommand(CONTROLLER_IP, 42);

Wer php5-cli installiert hat kann das Script auch auf der Kommandozeile nutzen. Für Freunde der Bash gibt es auch ein Script (geklaut bei Smileytechadventures)

#!/bin/bash 
 
if [ -z "$1" ] ; then 
    echo "You must enter a parameter: "  
    echo "  e.g. $0 allon" 
    exit 1 
fi 
 
incmd="$1" 
ipaddress="192.168.0.201" 
portnum="50000" 
 
allon="\x35\00\x55" 
alloff="\x39\00\x55" 
zone1on="\x38\00\x55" 
zone1off="\x3B\00\x55" 
zone2on="\x3D\00\x55" 
zone2off="\x33\00\x55" 
zone3on="\x37\00\x55" 
zone3off="\x3A\00\x55" 
zone4on="\x32\00\x55" 
zone4off="\x36\00\x55" 
 
eval incmd=\$$incmd 
 
echo -n -e "$incmd" &gt;/dev/udp/"$ipaddress"/"$portnum"

Ein wenig Heimautomatisierung ist auch schnell betrieben. Dieses Skript prüft, ob die Sonne untergegangen ist und schaltet in diesem Fall alle Lampen ein.

#!/usr/bin/php
&lt;?php define("CONTROLLER_IP", "192.168.0.100"); define("ZEIT_FUER_BETT", "23:59"); function executeCommand( $ip, $command, $suffix1=00, $suffix2='55'){ fwrite(fsockopen("udp://$ip", 8899), chr(hexdec($command)) . chr(hexdec($suffix1)) . chr(hexdec($suffix2))); } function getIp(){ return file_get_contents("http://icanhazip.com/"); } function getLatLongByIp($ip){ $geoplugin = unserialize( file_get_contents('http://www.geoplugin.net/php.gp?ip='.$ip) ); if ( is_numeric($geoplugin['geoplugin_latitude']) &amp;&amp; is_numeric($geoplugin['geoplugin_longitude']) ) { $ret['lat']= $geoplugin['geoplugin_latitude']; $ret['lon']=$geoplugin['geoplugin_longitude']; return $ret; } } $ret= getLatLongByIp(getIp()); $dateSunset=date_sunset(time(), SUNFUNCS_RET_TIMESTAMP,$ret['lat'], $ret['lon'], 90, 1); $dateSunrise=date_sunrise(time(), SUNFUNCS_RET_TIMESTAMP, $ret['lat'], $ret['lon'], 90, 1); //Zu einer festen Uhrzeit ausschalten if(date("H:i")&gt;= date(ZEIT_FUER_BETT)){
echo "schlafen";
	executeCommand(CONTROLLER_IP, 41);
	exit;
}  
//Nach Sonnenuntergang und vor Aufgang
if ( time() &gt;=$dateSunset &amp;&amp; $dateSunset &gt;$dateSunrise){
 
	executeCommand(CONTROLLER_IP, 42);
}else {
	executeCommand(CONTROLLER_IP, 41);
}

Das kleine Skript fühlt sich auf kleinen Linuxrechnern im eigenen Netzwerk sehr wohl und sollte per Cronjob alle 1 Minuten angestoßen werden.

*/1 *    * * *   /home/pi/sunrise.php

Inzwischen habe ich die Lampen seit einer Woche in Betrieb und viel Spaß damit. Die Lichtausbeute ist ausreichend, der Stromverbrauch in Ordnung. Der Preis ist mit 99 EUR schon sehr happig, aber es macht auch sehr sehr viel Spaß Skripte für die Lampen zu schreiben.

Funktionierende Symlinks unter Windows erstellen

Ich schreibe momentan unter Windows 7 PHP Skripte die ich lokal mit WAMP laufen lasse. Aufgrund von Faulheit und Backupstrategien möchte ich PHP Projekte nicht im Webroot von WAMP erstellen. Es muß also ein Symlink her. Mit Bordmitteln funktioniert das leider nicht. „Verknüpfung erstellen“ aus  Kontextmenü  erstellt eine .lnk Datei die nichts bringt. Die Lösung des Problems nennt sich Junction. Die Executable fühlt sich in Ordnern wie C:\Windows\System32\ (Wollen Sie das wirklich hierher kopieren? ) recht wohl.

Symlinks lassen sich bequem auf dem Command Prompt erzeugen:

junction C:\wamp\www\bulb C:\Users\ms\owncloud\workspace_android_think_w7\wlan_bulbs

Und noch ein Rechner in der Bude – Raspberry Pi

Ich mag ja kleine Rechner mit und auch ohne Linux drauf, egal ob das Ding jetzt Pogoplug,Nslu2 oder mbed heißt. Inzwischen habe ich mehr Rechner – mit ARM Cpu am laufen als klassische x86. Deshalb habe ich das Erscheinen des Raspberry Pi sehr entspannt verfolgt. Es gibt hier einfach zuviele davon…

Meine Meinung änderte sich jedoch mit dem Erscheinen einer stabilen Version von Raspbmc, einer Linux Distribution mit der XBMC Software. Das wollte ich schon immer haben und wartete eigentlich nur auf den Hack der aktuellen AppleTV Generation.

Der Pi war schneller und für den Preis einer mittelschweren Zecherei  ~ 60 Eur hab ich nun so ein Teil, inklusive Netzteil, Gehäuse und Kühlrippen (wer’s denn braucht).

Gekauft habe ich beim PI3g Shop (kein subventionierter Link).

Die Installation ging leicht von der Hand – Image auf eine SD-Karte schreiben, rein in den Pi, Netzwerk dran, HDMI, Spannung anlegen und einen Kaffee trinken.

Kaffee grabben

Im Anschluss erstmal ein xvid und einen mkv (1080p DTS) Container getestet – läuft tadellos. Die ARD Mediathek ist einfach zu installieren und  läßt sich sehr gut bedienen. Youtube streikt, aber das scheint bekannt zu sein und leicht behebbar. Damit kann das Gerät schon mehr als mein jetziger Player, der mir in seiner Beschissenheit echt die Lust am Basteln geraubt hat. Bedienen tue ich den Spaß mit der Official XBMC Remote. Geht gut von der Hand. Um Texteingaben vom Mobiltelefon an das  Xbmc zu senden mußte ich Username + Passwort festelegen. Das manifestiert sich praktischerweise in einem .htaccess Zugriffsschutz, womit ich den Port sorgenlos in die Weiten des Netzes forwarden kann.  Per ssh kommt man per usr=pwd=raspberry auf den Rechner. Hier ein paar interessante Ausgaben:

 

pi@raspbmc:~$ uname -a
Linux raspbmc 3.6.11 #1 PREEMPT Sun Feb 3 04:42:21 UTC 2013 armv6l GNU/Linux
pi@raspbmc:~$ cat /etc/issue
Raspbmc by Sam Nazarko
http://www.raspbmc.com
pi@raspbmc:~$ cat /proc/cpuinfo
Processor       : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS        : 531.66
Features        : swp half thumb fastmult vfp edsp java tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xb76
CPU revision    : 7
 
Hardware        : BCM2708
Revision        : 000e
Serial          : 0000000063099a57
pi@raspbmc:~$ ssh
usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-e escape_char] [-F configfile]
           [-I pkcs11] [-i identity_file]
           [-L [bind_address:]port:host:hostport]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-R [bind_address:]port:host:hostport] [-S ctl_path]
           [-W host:port] [-w local_tun[:remote_tun]]
           [user@]hostname [command]

Ich habe noch die Skriptsprache meiner Wahl in der Cli Version installiert – dank Wheezy sogar in Version 5.4.4-12. Samba läuft bereits und gibt /home/pi sowie USB Laufwerke lesend wie schreibend frei.

Unterm Strich habe ich mit 0 Aufwand ein funktionierendes System zum Abspielen von Webinhalten und Sachen die ich aus dem Internet gezogen habe eingerichtet. Als Nächstes werde ich schauen, wie es mit DVB-* aussieht und ob die kleine Kiste auch noch Pyload schafft. Sehr interessant scheint webiopi damit lassen sich die I/O Pins des PI sehr leicht per Web ansteuern was sehr zum Basteln motiviert.

WDTV – Moviesheets

Das WDTV tut bei mir seinen Dienst. Es spielt Filme ab und macht sonst keine Probleme. Ich hatte nach der Anschaffung die Custom Firmware von B-rad installiert, mich aber weiter nicht damit beschäftigt, da ich irgendwie nach kürzester Zeit Kopfschmerzen bekomme wenn ich mich durch das Forum, Wiki oder die Dokumentation arbeite. Den absolut ekelhaften Hintergrund der GUI (zu sehen in dem Video unten) hatte ich sofort entfernt, doch Moviesheets oder die Youtube Funtkion habe ich bis heute nicht genutzt. Youtube funktioniert prinzipiell ganz gut, die Eingabe per Fernbedienung möchte ich mir jedoch nicht zumuten.

Inzwischen reizt die Moviesheets Option. Prinzipiell ist die Geschichte auch ganz einfach.

Es gibt 2 verschiedene Möglichkeiten statt einer Verzeichnissliste Bilder anzuzeigen. Zum einen gibt es ein zentrales Repository in dem die Bilder gehalten werden, alternativ können die Bilder auch im selben Ordner wie die Filme abgelegt werden. Auch ein hybrid Modus ist möglich / erforderlich. In der Theorie und im WDTV Wiki schaut das so aus:

 

 

 

 

 

 

 

Pro Film können 3 Bilder setzt werden

  • Thumbnails für die Videos
  • das Hintergrundbild
  • das Wallsheet (auf dem Screenshot ist der Antagonist von Deckard zu erkennen)

Am Besten gefällt mir der Gedanken mit dem zentralen Sheetrepository damit Ordnung herrscht. Leider hat die Sache einen Haken. Ich zitiere aus dem Wlxdtv Wiki:

Sheet Mode with central sheet repository
(MSHEETDIR=’/tmp/media/usb/sheets‘)
File Description
sheets folder
sheets/Blade.Runner.avi_sheet.sheet.jpg sheet mode file sheet
sheets/Blade.Runner-1982_sheet.sheet.jpg sheet mode folder sheet
Movies folder
Movies/Blade.Runner-1982 folder
Movies/Blade.Runner-1982/Blade.Runner.avi media file
Movies/Blade.Runner-1982/Blade.Runner.jpg file thumb
Movies/Blade.Runner-1982/folder.jpg folder thumb

Sieht nicht nur merkwürdig aus, sondern ist es auch. Das Verzeichniss Sheets für die Bilder kann frei gewählt werden. Bei mir liegt es auf einem USB Stick, der in dem WDTV steckt. Die Bilder die in der Tabelle in Movies liegen können auch nur im Verzeichniss Movies liegen. Wenn man also kleine Bilder für jeden Film sehen möchte muß man trotz Nutzung des Repositories  Bilder im gleichen Verzeichniss wie die Filme ablegen. Damit wird diese Repo-Geschichte in meinen Augen obsolet. Warum sollte ich mir einen 2. Ort schaffen, an dem (ich) ein Skript arbeiten muß.

Nun ja soweit so gut. Wenn ich nun die Bilder entsprechend benenne und im Ordner mit den Filmen ablege funktioniert der tolle Wall Modus. Leider auch in der Theorie. Ein äußerst bescheuerter Bug listet die Bilder auch im Video Modus auf. Das heißt wenn ich Thumbnail per Fernbedienung markiere und auf Ok drücke sehe ich das Bild im Großformat statt des Films -aaaaaaaahhhh. Mit Platten die an die WDTV angeschlossen sind besteht dieses Problem nicht. Nur wenn ich auf Netzfreigaben zugreife ist der Filter auf Filme nicht gesetzt. Ein wundervoller Bug in der Firmware der sich nicht umgehen lässt.

Im Wiki wird auf eine Anleitung mit dem charmanten Titel „Linksheets for Idiots“ hingewiesen, die es erforderlich macht jeden Film in einem seperaten Ordner zu halten. Anscheinend war auch der Autor der Anleitung ein  wenig minderbegabt…

Dieser Blogartikel fasst 2h Recherche im WDLXTV Dschungel zusammen. Dem Thema Skripts habe ich mich gar nicht erst angenommen da ich nicht bereit bin Chaos in meine Ordner zu bringen.Momentan denke ich noch über ein kleines Skript nach das großzügig Softlinks und Ordner erstellt. Wahrscheinlicher ist jedoch, daß ich noch ein oder zwei Firmware Versionen abwarten werde bevor ich mir die Moviesheets noch einmal anschaue. Schade eigentlich :(.

Ein wenig Heimkino

TV
Attribution-NonCommercial-NoDerivs License by Melissa Segal

Es scheint schier unmöglich Produktvorstellungen von Apple zu verpassen.Ungefähr zwei-, dreimal im Jahr steht Steve Jobs auf einer Bühne und zieht neue IPods, Phones oder Pads aus seiner Hose und so ziemlich jede Nachrichtenseite berichtet darüber. Bemerkenswert fand ich bei der aktuellen Vorstellung das überarbeitete Apple TV. Bei dem Gerät handelt es sich um eine sogenannte Set-Top-Box. Sinn und Zweck des Teils ist das Abspielen von Musik und vor allem bewegten Bildern. Das Gerät kommt ohne Lüfter und Festplatte aus. Sehr lobenswert ist das integrierte Netzteil. Der Preis ist mit 120€ auch mehr als OK. Leider kann das Gerät kein Full HD abspielen. Die Wiedergabe von Medien aus dem eigenen Netzwerk scheint nur via Airplay zu funktionieren. Die eigentliche Bestimmung des Geräts ist es glaube ich in Online Stores Medien zu erwerben oder zu mieten.

Auch wenn das Gerät nichts für mich ist, hat es mich dazu gebracht mir mal wieder Gedanken über mein Home Entertainment zu machen. Momentan sieht es bei mir so aus was den Datentransfer betrifft. Das Bild soll keine Netzwerk Topologie darstellen.

so siehts aus

Herzstück meines Systems ist mein Slug, ein kleiner Server der mir als NAS und Printserver dient. Das Teil ist nicht wirklich schnell, dafür funktioniert es tadellos. Um den Punkt Unterhaltung kümmert sich meine Nintendo Konsole mit Homebrew. Klingt merkwürdig, klappt aber ausgezeichnet. Mit dem Programm WiiMC „konsumiere“ ich Bilder, Musik und Filme, die auf meinem Slug liegen. Die Steuerung mit der Wii Fernbedienung ist ausgezeichnet. Man zeigt einfach auf den Bildschirm und wählt aus, was man sehen will. Einfacher geht es wirklich nicht. Leider hat die Wii keinen HDMI Ausgang. Darum bleibt mir der Konsum von HD Material verwehrt.

Da es inzwischen eine große Auswahl an HD Filmen gibt, will ich hier mal ein kleines Update machen. Ein PC unter dem Fernseher kommt für mich nicht in Frage und auf meiner X-Box kann ich leider kein Homebrew Zeug installieren . Abgesehen davon ist die 360 auch viel zu laut. Ein neues Gerät muß also her.

Ideal wäre eine Wii mit HD Ausgang. Leider wird es noch einige Jahre dauern, bis es sowas gibt. Ich brauche ein Gerät, das

  • Full HD wiedergeben kann
  • entsprechend einen VGA, DVI oder HDMI Ausgang hat
  • eine Netzwerkkarte oder WLAN Apdater besitzt
  • einigermaßen leise ist
  • 3,5mm Klinken oder Chinch Ausgang hat

Ein Laufwerk benötige ich nicht, da ich nur Sachen aus dem Netzwerk  anschaue und höre. Richtig cool wäre es, wenn man eine Linux Distribution darauf installieren kann. Damit wäre ich unabhängig von Firmware Updates des Herstellers und hätte das gute Gefühl ein weiteres Gerät mit ordentlichem Betriebssystem in meinem Haushalt zu haben.

Vor geraumer Zeit hatte ich schon einmal nach einer eierlegenden Wollmilchsau gesucht und sie nicht gefunden.

Das WD TV Live von der Firma Western Digital kommt meinen Wünschen noch am nächsten. Ich habe zwar schon recht viel Gemecker über die Firmware gehört und das WD bei der Pflege ein wenig faul ist, aber die von B-Rad angebotene Custom Firmware soll sehr gut sein.

Ich mach mich jetzt noch ein wenig schlau und bestell mir dann so ein tolles Gerät.

Wie konsumiert Ihr zuhause Filme? Habt Ihr ein ähnliches Gerät, vielleicht sogar das Gleiche oder funktioniert das bei Euch ganz anders?

Nachtrag

Ich hab gerade den Player von WD bestellt.. Wenn die Kiste da ist werde ich ein wenig damit spielen und an prominenter Stelle darüber berichten :).