Ambilight met Raspberry PI en Philips HUE

Creëer meeslepende ervaringen door je Philips Hue lampen te synchroniseren met je muziek, films en games.

Ambilight met Raspberry PI en Philips HUE

Wat heb je nodig

Hardware

  • Raspberry Pi 3 model B
  • Sd-kaart voor Raspberry Pi
  • USB video grabber (STK1160 – EasyCap TV Capture)
  • Philips Hue Verlichting
  • inclusief Philips HUE bridge (of diyhue)
  • inclusief Philips HUE lampen (of diyhue ondersteunde lamp)
  • Tafellamp (2 stuks), wij gebruiken Ikea ‘TORSBO’
  • HDMI splitter
  • HDMI naar RCA adapter
  • RCA videokabel

Software

Voor dit project heb je een aantal programma’s nodig. Voordat je begint dien je de programma’s te downloaden en te installeren, voor zover je dat nog niet al eens eerder hebt gedaan.

  • Voor het kopiëren van bestanden kun je WinSCP gebruiken
  • Voor ssh toegang tot je Raspberry PI kun je Putty gebruiken. (klik op putty.exe in de lijst)
  • Voor het formateren van je SD-kaart kun je SDFormatter gebruiken
  • Voor de iso-image wegschrijven op je SD-kaart kun je Win32DiskImager gebruiken
  • Als teksteditor kun je (optioneel) Notepad++ downloaden

Daarnaast heb je onderstaande twee programma’s nodig.

  • Philips HUE app voor iOS of Android op je mobiele telefoon. Ga hiervoor naar de Android Play store of Apple App store.
  • Daarnaast dien je de OSMC disk image te downloaden. Kies het bestand met de naam “OSMC for RPI2 / RPi3” welke je onderaan op deze pagina kunt vinden onder het kopje diskimages.

In gebruik nemen van de Philips HUE bridge en lampen

Stap 1

Plaats de twee Philips HUE lampen aan weerszijde van je televisie. Sluit vervolgens de Philips HUE bridge middels een ethernetkabel aan op je thuisnetwerk. Hierna installeer je de Philips HUE app op je iOS of Android mobiele telefoon. Controleer of je de twee Philips HUE lampen via de Philips HUE app kunt bedienen

De lightID achterhalen, statisch IP instellen en gebruikersnaam aanmaken

Stap 2

De volgende stap is om de lightID van je twee Philips HUE lampen te achterhalen, de Philips HUE bridge een statisch IP-adres (output IP) te geven en voor de Philips HUE bridge een gebruikersnaam (username) aan te maken.

“lightID”

Open je Philips HUE app op je iOS of Android mobiele telefoon en noteer de nummers naast elke lamp.

“output” IP

Open middels je browser naar 192.168.2.254 en log in op je KPN ExperiaBox. Ga naar Home en klik “Meer” onder het kopje LAN_instellingen. In de lijst van apparaten, zie je de naam “Philips-hue”. Noteer het IP-adres en klik vervolgens op de naam “Philips-hue”. Zet nu de optie ” Vast IP adres bij DHCP binding” op Aan.

“username”

Ga naar https://developers.meethue.com en volg de stappen bij “Getting started”. Wanneer je alle stappen hebt gevolgd heb je een verbinding met je Philips HUE bridge kunnen maken. Noteer de 32 karakter “username”

Verbind de HDMI reciever met de Raspberry PI

Stap 3

Plaats de HDMI splitter tussen je Reciever en je Tv. Plaats de HDMI naar  RCA adapter in de HDMI Splitter. Neem de RCA videokabel en sluit deze  aan op de USB video-grabber (gele-connector) en verbind vervolgens de  USB Video-grabber middels de usb-connecter op de Raspberry PI.

Raspberry PI installeren

Stap 4

Als eerste gaan we de OSMC software op een SD-kaart zetten

  1. Unzip de Raspberry PI disk image
  2. Plaats de SD-kaart in je computer
  3. Start het programma SDFormatter
  4. Selecteer de juiste stationsnaam van de SD-kaart
  5. Selecteer de optie “Quick format”.
  6. Klik op Format
  7. Start het programma Win32DiskImager
  8. Selecteer de Raspberry PI disk image en juiste stationsnaam van je SD-kaart
  9. Selecteer “Write” om de disk image op SD-kaart weg te schrijven

Als tweede haal je de SD-kaart uit je computer en stop deze in je Raspberry PI. En vervolgens sluiten we de Raspberry PI aan.

  1. Verbind de Raspberry PI met een ethernetkabel aan je netwerk
  2. Verbind de Raspberry PI met een HDMI kabel op een PC-monitor
  3. Sluit een USB-toetsenboard en USB-muis aan op de Raspberry PI
  4. Sluit de USB-videograbber aan op de Raspberry PI
  5. Sluit de 5V voeding aan op de Raspberry PI

Alles zou nu aangesloten moeten zijn. Nu kun je de Raspberry Pi aanzetten. Wanneer de Raspberry Pi is opgestart controleren we de internetconnectie. Ga naar SYSTEM - system info en noteer je IP-adres, je hebt deze later nodig.

Videograbber controleren

Stap 5

In deze stap gaan we de werking van de videograbber controleren. We beginnen met Putty. Maak verbinding met je Raspberry Pi.

  • Type het ip-adres van je Raspberry Pi.
  • Klik op Open.
  • Je krijgt een scherm waarin je een gebruikernaam moet invoeren, gebruik hiervoor osmc en druk op enter.
  • Nu wordt om een wachtwoord gevraagd, gebruik hiervoor osmc en druk op enter.
  • Nu gaan we alle usb-poorten controleren, type hiervoor Isusb en druk op enter. Je dient in de lijst van usb-apparaten de videograbber tegen te komen. (note: mogelijk ondersteund Openelec het commando Isusb niet. Ga er dan vanuit dat alle USB apparaten correct werken).

Hyperion applicatie configureren

Stap 6

De software die gebruikt wordt om het Ambilight effect te genereren komt van Hyperion, een gratis open-source Ambilight software. Het is redelijk eenvoudig op te zetten en komt zelfs met een Java applicatie (die wij overigens niet gebruiken) voor een eenvoudige installatie en configuratie. Kijk op de website van Hyperion voor meer uitleg over de werking van deze applicatie. Nu dient de Hyperion applicatie ingesteld te worden om uw Philips Hue lampen te kunnen aansturen. We beginnen met Putty. Maak verbinding met je Raspberry Pi.

  • Type het ip-adres van je Raspberry Pi.
  • Klik op Open.
  • Je krijgt een scherm waarin je een gebruikernaam moet invoeren, gebruik hiervoor root en druk op enter.
  • Nu wordt om een wachtwoord gevraagd, gebruik hiervoor openelec en druk op enter.
  • Ga nu met het commando cd naar /storage/.config/
  • Open nu met het commando vi het bestand hyperion.config.json

Pas vervolgens het bestand hyperion.config.json aan. Een stap voor stap uitleg vind je hieronder.

Opmerking:
Wanneer je een aanpassing aan het hyperion.config.json bestand doet, controleer dan altijd of er geen ‘,’ mist!”
“device” sectie

Om de Philips HUE bridge te kunnen aansturen, dien je het “type” in te stellen op “philipshue”, geef je bij “output” het IP-adres van je Philips HUE bridge en bij “username” vul je het 32-karakter gebruikersnaam in. Bij “lightIds” geef je de nummers op van je twee lampen. De “lightIds” kunnen worden verkregen via je Philips HUE bridge onder de volgende URL: http://192.168.2.xxx/api/your-32-character-username-goes-here/lights/

voorbeeld, "device" sectie:

"device" :
{
"name"       : "MyPi",
"type"       : "philipshue",
"output"     : "192.168.2.xxx",
"username"   : "your-32-character-username-goes-here",
"colorOrder" : "rgb",
"switchOffOnBlack" : false,
"lightIds"   : [1,2]
}

“framegrabber” sectie

De Philips HUE bridge snelheid is beperkt tot 10-30 verzoeken per seconden. Vanwege deze beperking dient de framegrabber snelheid ingesteld te worden op 20 / aantal lampen. Dus bij twee lampen is dat 10.0Hz

voorbeeld, "framegrabber" sectie

"framegrabber" :
{
"width" : 64,
"height" : 64,
"frequency_Hz" : 10.0
},
...

“smoothing” sectie

Om Ambilight werkend te krijgen hebben wij “smooting” ingesteld op “linear”. De instelling “smooting” maakt kleurovergangen iets geleidelijker. “type”: het afvlakkingstype dat wordt gebruikt “time_ms”: de tijd die wordt gebruikt om afbeeldingen in ms te verzamelen. Hoe hoger de waarde, hoe “langer” de afvlakking zal zijn. “updateFrequency”: de frequentie van de uitgangsupdate naar de leds in Hz “updateDelay”: de vertraging van de output naar leds (in periodes van afvlakking (1 / Hz))

voorbeeld, "smoothing" sectie:

"smoothing" :
{
"type"            : "linear",
"time_ms"         : 100,
"updateFrequency" : 10.0000,
"updateDelay"     : 0
}
Note: Mogelijk dat in andere configuraties “smooting” ingesteld moet worden op “none” of dat je de “updateFrequency” op een lager getal moet zetten.
“leds” sectie

In dit onderdeel stel je het detectiegebied per lamp in. Hyperion noemt het hscan/vscan. Aan de hand van onderstaande tekening wordt duidelijk welk gebied per lamp gescand wordt.

voorbeeld, "leds" sectie:

"leds" :
[
{
"index" : 0,
"hscan" : { "minimum" : 0.8000, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.2000, "maximum" : 0.8000 }
},
{
"index" : 1,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.2000 },
"vscan" : { "minimum" : 0.2000, "maximum" : 0.8000 }
}
],
BELANGRIJK: De lamp ‘index’ van je eerste lamp is 0!

“blackborderdetector” sectie

In dit onderdeel stel je “blackborderdetector” in. De “blackborderdetector” helpt bij een zwarte rand / balken te negeren, als uw tv-beeldverhouding niet overeenkomt met de beeldverhouding (voorbeeld: 4: 3 inhoud of 21: 9 op een 16: 9 tv)

voorbeeld, "blackborderdetector" sectie:

"blackborderdetector" :
{
"enable" : true,
"threshold" : 0.01,
"mode" : "default"
},

“effects” sectie

Wanneer de Raspberry PI opstart, zal er een lichteffect worden getoond. Zorg dat het pad naar de effecten goed staat ingesteld.

voorbeeld, "effects" sectie:

"effects" :
{
"paths" :
[
"/storage/hyperion/effects"
]
},

“bootsequence” sectie

Wanneer de Raspberry PI opstart, zal er een lichteffect worden getoond. In de “bootsequence” sectie bepaal je welk effect daadwerkelijk wordt toegepast. Je kunt het effect aanpassen en de tijdsduur. Pas het effect naar eigen inzicht aan.

voorbeeld, "bootsequence" sectie:

"bootsequence" :
{
"effect" : "Rainbow mood",
"duration_ms" : 6000
},

“grabber-v4l2” sectie

Zorg dat je een compatible USB video grabber (STK1160 – EasyCap TV Capture) gebruikt. “device”: het pad van het systeemapparaat dat wordt gebruikt “input”: de invoer die wordt gebruikt “standard”: wij kiezen PAL “width”: de breedte van het beeld (-1: geen wijziging, gebruikt de maximale waarde) “height”: de hoogte van het beeld (-1: geen verandering, gebruikt de maximale waarde) “frameDecimation”: de factor die wordt gebruikt om de resolutie te verlagen voordat deze wordt gebruikt van hyperion (bespaart CPU) “sizeDecimation”: de factor die wordt gebruikt om de resolutie te verlagen voordat deze van hyperion wordt gebruikt (bespaart CPU) “priority”: het prioriteitskanaal van de v4l2-grabber (lagere-waarde resulteert in HOGERE prioriteit!) “mode”: 2D / 3D “cropLeft”: instelling om eventuele linker zwarte rand af te snijden “cropRight”: instelling om eventuele rechter zwarte rand af te snijden “cropTop”: instelling om eventuele bovenste zwarte rand af te snijden “cropBottom”: instelling om eventuele onderste zwarte rand af te snijden “redSignalThreshold”: aanpassen in procenten. “greenSignalThreshold”: aanpassen in procenten. blueSignalThreshold”: aanpassen in procenten.

voorbeeld, "grabber-v4l2" sectie:

"grabber-v4l2" :
{
"device" : "/dev/video0",
"input" : 0,
"standard" : "PAL",
"width" : 768,
"height" : 576,
"frameDecimation" : 1,
"sizeDecimation" : 1,
"priority" : 800,
"mode" : "2D",
"cropLeft" : 0,
"cropRight" : 0,
"cropTop" : 0,
"cropBottom" : 0,
"redSignalThreshold" : 0.0,
"greenSignalThreshold" : 0.0,
"blueSignalThreshold" : 0.0
},

“xbmcVideoChecker” sectie

Standaard staan de meeste instellingen goed. Wij hebben ervoor gekozen om alleen “grabVideo” op ‘true’ te zetten.

voorbeeld, "xbmcVideoChecker" sectie:

"xbmcVideoChecker" :
{
"xbmcAddress" : "127.0.0.1",
"xbmcTcpPort" : 9090,
"grabVideo" : true,
"grabPictures" : false,
"grabAudio" : false,
"grabMenu" : false,
"grabScreensaver" : false,
"enable3DDetection" : false
},

HULP: voorbeeld hyperion.config.json configuratie-bestand downloaden

Wanneer je niet zo bekend met de vi-editor kun je ook het complete configuratie downloaden, het zip-bestand uitpakken en daarna aanpassen met notepad++. Vervolgens kun je het hyperion.config.json via WinSCP naar de directory /storage/.config kopiëren op je Raspberry PI.

Download het voorbeeld hyperion.config.json.zip configuratie-bestand.

Open vervolgens Putty. Maak verbinding met je Raspberry Pi.

  • Type het ip-adres van je Raspberry Pi.
  • Klik op Open.
  • Je krijgt een scherm waarin je een gebruikernaam moet invoeren, gebruik hiervoor root en druk op enter.
  • Nu wordt om een wachtwoord gevraagd, gebruik hiervoor openelec en druk op enter.
  • Ga nu met het commando cd naar /storage/.config/
  • type nu het command ./autostart.sh om de Hyperion applicatie opnieuw op te starten.

De Philips Hue (Ambilight) installatie in gebruik nemen

Stap 7

Wanneer je de voorgaande stappen succesvol hebt uitgevoerd is het nu tijd om de Philips Hue lampen in gebruik te gaan nemen.

Heel veel kijkplezier toegewenst! Namens Jos Visser.

Problemen oplossen

Het kan voorkomen dat er iets niet werkt. Geen paniek, hieronder volgen enkele hints en tips.

Hyperion applicatie herstarten

Maak met Putty verbinding met je Raspberry Pi.

  • Type het ip-adres van je Raspberry Pi.
  • Klik op Open.
  • Je krijgt een scherm waarin je een gebruikernaam moet invoeren, gebruik hiervoor root en druk op enter.
  • Nu wordt om een wachtwoord gevraagd, gebruik hiervoor openelec en druk op enter.
  • Ga nu met het commando cd naar /storage/.config/
  • Type nu het commando ./autostart.sh
Hyperion applicatie logfile bekijken

Wanneer dingen niet werken zoals je wilt, is het handig te kijken wat er mogelijk fout gaat. Het beste kun je hiervoor de hyperion logfile bekijken. Dit doe ja als volgt. Maak met Putty verbinding met je Raspberry Pi.

  • Type het ip-adres van je Raspberry Pi.
  • Klik op Open.
  • Je krijgt een scherm waarin je een gebruikernaam moet invoeren, gebruik hiervoor root en druk op enter.
  • Nu wordt om een wachtwoord gevraagd, gebruik hiervoor openelec en druk op enter.
  • Ga nu met het commando cd naar /storage/logfiles/
  • Type nu het commando cat hyperion.log
USB video grabber testen

Maak met Putty verbinding met je Raspberry Pi

  • Type het ip-adres van je Raspberry Pi.
  • Klik op Open.
  • Je krijgt een scherm waarin je een gebruikernaam moet invoeren, gebruik hiervoor root en druk op enter.
  • Nu wordt om een wachtwoord gevraagd, gebruik hiervoor openelec en druk op enter.
  • Ga nu met het commando cd naar /storage/.config/
  • Type nu het commando LD_LIBRARY_PATH=/storage/hyperion/bin /storage/hyperion/bin/hyperion-v4l2 -v PAL –width 720 –height 576 –screenshot
  • In de map /storage/.config/ zal als het goed is het bestand screenshot.png zijn aangemaakt.
  • Download het bestand met behulp van WinSCP en kijk op je computer of screenshot is gelukt.
Lamp(en) werken niet

Wanneer je aanpassingen aan het hyperion.config.json bestand doet, controleer dan altijd of er geen ‘,’ missen!”

Lamp werkt niet

In het het hyperion.config.json configuratie bestand stel je in de “leds” sectie het detectiegebied per lamp in. Let erop dat de ‘index’ van je eerste lamp 0 is!