Hallo zusammen,
ich möchte euch mal meine endlich finale Hyperion Konfiguration präsentieren und euch näher erläutern, wie ich die doch sehr nervigen Problemchen in den Griff bekommen habe (Flackern etc.. dazu aber später mehr).
Fangen wir mal mit den Startparametern an; bei mir ist alles in der Datei ambi_on.sh verstaut. Diese sieht dann folgendermaßen aus:
#!/bin/bash
# Status LED an GPIO17 mit 5Hz blinken lassen
echo "0" > /sys/class/gpio/gpio17/value
sleep 0.2
echo "1" > /sys/class/gpio/gpio17/value
sleep 0.2
echo "0" > /sys/class/gpio/gpio17/value
sleep 0.2
echo "1" > /sys/class/gpio/gpio17/value
sleep 0.2
echo "0" > /sys/class/gpio/gpio17/value
sleep 0.2
echo "1" > /sys/class/gpio/gpio17/value
#Hyperion starten
sudo /usr/bin/hyperiond /etc/hyperion.config.json </dev/null >/dev/null 2>&1 &
sudo /usr/bin/hyperion-v4l2 -v NTSC --width 720 --height 480 --crop-left 5 --crop-top 8 --crop-right 7 --crop-bottom 13 -s 6 -t 0.2 </dev/null >/dev/null 2>&1 &
exit 0
Alles anzeigen
Als Erstes lasse ich kurz eine LED blinken, die auch optisch schon signalisiert, dass die Befehle zum Starten von Hyperion ausgeführt werden.
Wie ihr sehen könnt, starte ich hyperiond jedesmal separat, den Daemon habe ich deaktiviert habe.
Als Softwaregrabber bietet hyperion-v4l2 die beste Performance und auch die besten Parameter, deswegen verwende ich diesen anstatt mplayer(2). Mein ganzes System läuft mit knapp unter 30%, wobei da aber auch noch apache etc. mitwirken.
Mit dem NTSC Format bin ich eigentlich schon bei der größten Hürde; ich habe lange rumprobiert um diese Einstellungen zu erhalten. Mein Problem war einfach, das IMMER was abgeschnitten wurde und das Bild dann auch noch versetzt war. Egal welche Einstellungen oder Images ich mit Standart-PAL betrieben habe, mir gingen bei diesen immer 30cm rechts vom Bild weg, links dagegen nur 3cm verloren (oben und unten das gleiche), sodass ich einen Bildausschnitt von oben links hatte.
Mit dem NTSC Format hab ich jetzt nur noch 0,5cm, rundum sehr gleich (crop Werte fast alle <10px)
Der wirklich größte Vorteil für mich war allerdings das äußerst drastisch reduzierte Flackern der LEDs, das dürfen gerne auch mal diejenigen testen, die noch arge Probleme mit Flackern haben und hier auch mal ihre Erfahrungen mitteilen. Dadurch kann ich mit dem Smoothing auf so niedrige Werte gehen, das ganze System hat jetzt eine fast vernachlässigbare Reaktionszeit.
Die Hyperion Konfiguration hab ich mir durch langes rumschrauben an den Werten erarbeitet, ich hoffe mal, dass die noch andere gebrauchen können.
Es werden insgesamt 172 LEDs in Form von LPD8806 Streifen angestuert, die einzelnen LEDs hab ich mir mal im Folgenden gespart:
"device" :
{
"name" : "MyPi",
"type" : "lpd8806",
"output" : "/dev/spidev0.0",
"rate" : 1000000,
"colorOrder" : "brg"
},
"color" :
{
"transform" :
[
{
"id" : "default",
"leds" : "*",
"hsv" :
{
"saturationGain" : 1.0000,
"valueGain" : 0.6000
},
"red" :
{
"threshold" : 0.1100,
"gamma" : 1.9000,
"blacklevel" : 0.0000,
"whitelevel" : 0.6500
},
"green" :
{
"threshold" : 0.1100,
"gamma" : 1.8500,
"blacklevel" : 0.0000,
"whitelevel" : 0.9000
},
"blue" :
{
"threshold" : 0.1100,
"gamma" : 1.8000,
"blacklevel" : 0.0000,
"whitelevel" : 0.7800
}
}
],
"smoothing" :
{
"type" : "linear",
"time_ms" : 65,
"updateFrequency" : 30.0000
}
},
"framgrabber" :
{
"width" : 118,
"height" : 77,
"frequency_Hz" : 40.0
}
},
Alles anzeigen
Das sind die wesentlichen Inhalte, der Rest sollte eigentlich bei jedem in der oder anderen Weise ähnlich sein. Blackborder Erkennung habe ich deaktiviert, da ich sonst trotzdem noch den schwarzen Balken im Blickfeld hab und dieser durch den Ambi-Effekt noch verstärkt wird.
Zur Vollständigkeit gibts natürlich noch meine ambi_off.sh (noch nicht kommentiert), mit der ich Hyperion komplett beende:
#!/bin/bash
echo "0" > /sys/class/gpio/gpio17/value
sleep 0.2
echo "1" > /sys/class/gpio/gpio17/value
sleep 0.2
echo "0" > /sys/class/gpio/gpio17/value
sleep 0.2
echo "1" > /sys/class/gpio/gpio17/value
sleep 0.2
echo "0" > /sys/class/gpio/gpio17/value
sleep 0.2
echo "1" > /sys/class/gpio/gpio17/value
hyperion-remote --color black --priority 50 </dev/null >/dev/null 2>&1 &
# sudo killall mplayer
sudo killall hyperion-v4l2 &
sudo killall hyperiond &
exit 0
Alles anzeigen
Sollte eigentlich selbsterklärend sein; LED blinkt wieder, es wird kurz "schwarz" gesendet, damit alle LEDs definitv aus sind und dann werden die beiden Prozess von Hyperion beendet.
Als kleines Schmankerl hab ich mir noch ein kleines Skript geschrieben, das überprüft, ob Hyperion läuft und es startet, wenn es nicht läuft und umgekehrt, Ist für mich sehr praktisch, da man es so sehr easy auf einer Website verlinken kann. Das Skript heißt motionlight.button und liegt bei mir in /usr/bin, damit ich es von überall ohne den langen Pfad aufrufen kann. Inhalt der Datei sieht so aus:
#!/bin/bash
motion_status=`pgrep -c -x hyperiond`
if [ $motion_status -eq 0 ]
then
/var/www/motionlight/pages/ambi_scripts/sh/ambi_on.sh
echo "$(date): MotionLight wird gestartet"
else
/var/www/motionlight/pages/ambi_scripts/sh/ambi_off.sh
echo "$(date): MotionLight wird beendet"
fi
exit 0
Alles anzeigen
Ihr könnt hier gerne schreiben, ob und was ihr hilfreich findet, oder natürlich auch, wenn noch Fragen offen geblieben sind
Ich werde (wahrscheinlich) heute abend ein Video machen und das kurz hochladen, damit ihr sehen könnt, dass die Farben wirklich äußerst gut passen und das Ganze wirklich sehr flott reagiert.