:::: MENU ::::

Philips Hue, XBMC/Kodi et Raspberry

Ampoule Philips Hue avec son bridge

J’ai reçu récemment en cadeau un kit de démarrage Philips Hue contenant 3 ampoules LED ainsi qu’un « pont de connexion ». Ces ampoules sont plus que des simples sources de lumières blanches LED. Elles sont capables de changer de couleur et d’intensité lumineuse selon les ordres qu’on leur envoie. Ces commandes sont transmises aux ampoules par l’intermédiaire du « pont de connexion » via le protocole ZigBee. Il est possible de les utiliser pour une multitude de chose, que ce soit des notifications domotique, simuler un lever de soleil pour un réveil en douceur ou encore adapter la lumière de la pièce au film que vous êtes en train de regarder devant votre écran de télévision. C’est ce dernier aspect que nous allons mettre en place avec XBMC sur Raspberry.

Mais tout d’abord qu’est-ce donc ce nom dans le titre accolé à XBMC : Kodi ? C’est tout simplement le nouveau nom de XBMC depuis le 22 décembre et la sortie de la version 14 finale. Kodi et XBMC, c’est la même chose, c’est un simple changement de nom. Pas de problème de compatibilité et de suivi de la communauté à prévoir.

Introduction

Pour réaliser ce tutoriel il vous faut :

  • Un kit d’ampoule Philips Hue (environ 200€ actuellement sur Amazon le kit de 3 ampoules + bridge)
  • Une distribution XBian fonctionnelle et à jour (sudo apt-get update && sudo apt-get upgrade )

Pour ma part, j’ai réalisé les manipulations suivantes sur ma distribution XBian (version : 20141231-2) mise à jour au 20 janvier 2015.

Il est également recommandé de faire une sauvegarde complète de votre carte SD, ce qui vous permettra de remettre tout en ordre en cas de mauvaise manipulation ou de bugs.

Installation de hyperion

Tout d’abord nous avons besoin d’un logiciel capable d’analyser en temps réel chaque image de notre flux vidéo afin d’envoyer les commandes de couleurs correspondantes à nos ampoules. C’est hyperion qui remplit ce rôle. Pourquoi hyperion et pas un autre clone « ambilight » tel que boblight ? Hyperion a été entièrement conçu pour un fonctionnement sur Raspberry Pi, ce qui lui assure des performances bien meilleures que ses concurrents. Les principales fonctionnalités de hyperion sont :

  • Faible charge CPU (Nos RPi apprécieront)
  • Détection de bords noirs
  • Reconnaissance de l’état de XBMC/Kodi qui permet de lancer ou non l’analyse des images
  • Un moteur d’effet via script
  • Interface Json (pour les développeurs bidouilleurs)

Pré-requis

Quelques paquets sont nécessaire pour le bon fonctionnement d’hyperion avant son installation :

sudo apt-get update
sudo apt-get install libqtcore4 libqtgui4 libqt4-network libusb-1.0-0 libprotobuf7 ca-certificates

Installation de hyperion

L’installation d’hyperion est entièrement scripté, ce qui lui permet de s’adapter automatiquement aux différents environnements disponible sur Raspberry Pi.

wget -N https://raw.github.com/tvdzwan/hyperion/master/bin/install_hyperion.sh
sudo sh ./install_hyperion.sh

Configuration de hyperion

Sauvegarde du fichier de configuration initial :

sudo cp /etc/hyperion.config.json /etc/hyperion.config.json_old

Edition du fichier de configuration :

sudo nano /etc/hyperion.config.json

Le fichier de configuration suivant permet de piloter une ampoule unique qui est celle référencé en premier sur votre pont Hue. Hyperion va donc analyser l’ensemble de l’écran pour générer une moyenne de couleur et commander l’ampoule. Il est également possible de configurer hyperion de manière à contrôler deux ampoules situées de chaque côté de la TV. Cependant le pont Hue est un point limitant, ce dernier ne pouvant traiter que de 10 à 30 requêtes par secondes, en ajoutant une seconde ampoule il est indispensable de réduire de moitié la fréquence du framegrabber.

// Exemple de configuration pour un pont Philipps Hue (IP : 192.168.0.5) et une ampoule Hue
// Made for Code4Pi - www.code4pi.fr

{
    /// Configuration du périphérique
    /// * 'name'       : Indication d'un nom pour le périphérique
    /// * 'type'       : Type de périphérique ou de LED ("philipshue")
    /// * 'output'     : La configuration output dépend du périphérique sélectionné ("adresse_ip_pont_hue") 

    /// * 'colorOrder' : L'ordre des couleur du périphérique ("rgb")
    /// * 'switchOffOnBlack' : Eteindre l'ampoule quand écran noir. Augmente le temps de réponse dû à l'animation de fondu du périphérique ("true" or "false")
    "device" :
    {
        "name"       : "MyPi",
        "type"       : "philipshue",
        "output"     : "192.168.0.5",
        "colorOrder" : "rgb",
        "switchOffOnBlack" : "false"
    },

    /// "transform"  : Configuration des couleurs en fonction du périphérique. Ne nécessite pas de configuration particulière
    ///
    /// "smoothing"  : L'effet Smoothing envoi trop de requête au pont Hue. A désactiver ("type" : "none")
    "color" :
    {
        "transform" :
        [
            {
                "id"   : "default",
                "leds" : "*",
                "hsv" :
                {
                    "saturationGain" : 1.0000,
                    "valueGain"      : 1.0000
                },
                "red" :
                {
                    "threshold"  : 0.0000,
                    "gamma"      : 1.0000,
                    "blacklevel" : 0.0000,
                    "whitelevel" : 1.0000
                },
                "green" :
                {
                    "threshold"  : 0.0000,
                    "gamma"      : 1.0000,
                    "blacklevel" : 0.0000,
                    "whitelevel" : 1.0000
                },
                "blue" :
                {
                    "threshold"  : 0.0000,
                    "gamma"      : 1.0000,
                    "blacklevel" : 0.0000,
                    "whitelevel" : 1.0000
                }
            }
        ],
        "smoothing" :
        {
            "type"            : "none",
            "time_ms"         : 200,
            "updateFrequency" : 20.0000
        }
    },

    ///  Configuration individuelle de chaque ampoule
    ///  
    ///  Chaque ampoule contient les différents champs :
    ///  * index: Index de l'ampoule. Le zero détermine la première ampoule
    ///  * hscan: Fraction de l'image horizontale utilisée pour la moyenne de couleur
    ///           (minimum et maximum inclusive)
    ///  * vscan: Fraction de l'image verticale utilisée pour la moyenne de couleur
    ///           (minimum et maximum inclusive)
    "leds" : 
    [
        {
            "index" : 0,
            "hscan" : { "minimum" : 0.0000, "maximum" : 1.0000 },
            "vscan" : { "minimum" : 0.0000, "maximum" : 1.0000 }
        }
    ],

    /// La configuration des bords noirs, contient les éléments suivants: 
    ///  * enable    : true si le détecteur doit être activé
    ///  * threshold : configuration du niveau (value between 0.0 and 1.0)
    "blackborderdetector" : 
    {
        "enable" : true,
        "threshold" : 0.01
    },

    /// Configuration du moteur d'effet, contient les éléments suivants: 
    ///  * paths        : chemin absolu vers le dossier contenant les effets 
    ///  * bootsequence : Effet joué lors de la séquence de boot
    "effects" : 
    {
        "paths" : 
        [
            "/opt/hyperion/effects"
        ]
    },

    "bootsequence" : 
    {
        "effect" : "Rainbow swirl fast",
        "duration_ms" : 3000
    },

    ///  Configuration du frame-grabber, contient les éléments suivants: 
    ///   * width        : Largeur des grabbed frames [pixels]
    ///   * height       : Hauteur des grabbed frames [pixels]
    ///   * frequency_Hz : Fréquence des frame grab [Hz]
    "framegrabber" : 
    {
        "width" : 64,
        "height" : 64,
        "frequency_Hz" : 10.0
    },

    /// Configuration de la connexion XBMC utilisée pour activer/désactiver le frame-grabber. Contient les éléments suivants: 
    ///  * xbmcAddress       : adresse IP du XBMC-host
    ///  * xbmcTcpPort       : Port TCP du XBMC-server
    ///  * grabVideo         : Frame-grabber actif durant lecture video
    ///  * grabPictures      : Frame-grabber actif durant lecture photo
    ///  * grabAudio         : Frame-grabber actif durant lecture audio
    ///  * grabMenu          : Frame-grabber actif durant le menu XBMC
    ///  * grabScreensaver   : Frame-grabber actif durant l'écran de veille
    ///  * enable3DDetection : Frame-grabber actif durant une video 3D
    "xbmcVideoChecker" : 
    {
        "xbmcAddress" : "127.0.0.1",
        "xbmcTcpPort" : 9090,
        "grabVideo" : true,
        "grabPictures" : true,
        "grabAudio" : false,
        "grabMenu" : false,
        "grabScreensaver" : false,
        "enable3DDetection" : true
    },

    /// Configuration du Json server qui active la interface de commande json
    ///  * port : Port du json server
    "jsonServer" : 
    {
        "port" : 19444
    },

    /// Configuration du Proto server qui active l'interface de commande protobuffer
    ///  * port : Port du protobuffer server
    "protoServer" : 
    {
        "port" : 19445
    },

    "endOfJson" : "endOfJson"
}

Redémarrage de hyperion pour prise en compte de la configuration :

sudo service hyperion restart

Configuration du pont Hue

Pour que hyperion puisse contrôler le pont Hue, il est nécessaire d’ajouter un nouvel utilisateur nommé « newdeveloper ».

Avec un navigateur web, il faut se rendre à l’adresse suivante :

http://ip_du_pont/debug/clip.html

Access to the bridge

On copie le texte suivant dans le champ « Message Body » :

{"devicetype":"test user","username":"newdeveloper"}

Avant d’envoyer la requête vers le pont Hue, il faut tout d’abord presser le bouton physique du pont afin d’autoriser l’ajout du nouvel utilisateur. L’envoi de la requête se fait via le bouton « POST »

La réponse devrait être :

"success" :  "username": "newdevelopper"

Success response

Pour vérifier que tout fonctionne correctement, on peut lancer une vidéo sur XBMC. L’ampoule doit alors changer de couleur en fonction des images affichés.

Vous êtes enfin prêt à regarder un film sur votre TV dans une immersion de lumière la plus totale !

Vous pouvez également configurer votre télécommande CEC pour activer/désactiver hyperion et ses effets via un seul bouton.

EDIT (19/07/2015)

Au moment où ce tutoriel a été écrit, Hyperion ne permettait pas de choisir précisément les périphériques Hue à contrôler. Ce problème avait été identifié par Maxime dans les commentaires. Depuis Hyperion a évolué et permet l’ajout de nouveaux paramètres dans le fichier de configuration :

« lightIds »   : [ 1 ]  permet de définir les périphériques Hue (via leur index d’enregistrement sur le bridge) qui seront utilisés par Hyperion. Ici seule l’ampoule 1 sera utilisée.
« username »   : « newdeveloper »  permet de personnaliser le nom d’utilisateur enregistré sur le pont. « newdeveloper » n’est donc plus obligatoire. Par défaut si aucun « username » n’est configuré « newdeveloper » sera utilisé.

Ressources :

Installation · tvdzwan/hyperion Wiki · GitHub

Philips Hue Support · ntim/hyperion Wiki · GitHub

Getting started | Philips Hue API

A propos de l'auteur :

Passionné par le monde informatique et ses applications dans la vie quotidienne. Chez moi sont hébergées deux RPi, l'une dédié multimédia, l'autre centre domotique. J'ai également conçu une solution de monitoring de chaufferie collective où notre chère carte fruité est le point central.


68 Comments

  • Répondre Maxime |

    Bonjour,

    Merci beaucoup pour ce tuto et bravo !

    Toutefois, je dispose de plusieurs ampoules et n’arrive à en faire marcher qu’une seule. Même en changeant l’index, c’est toujours la même ampoule qui fonctionne. Si je configure 2 ampoules avec les index 0 et 1 par exemple (en divisant bien par 2 le framegrabber), plus rien ne fonctionne.

    Auriez-vous une idée ?

    Je vous remercie pour votre aide !

    PS : je précise qu’en ajoutant le newdeveloper dans l’interface web, j’avais /api/1234 que j’ai modifié en /api dans le champ url. Je ne sais pas si cela a eu des conséquences..?

    • Répondre Manu |

      Bonjour,

      Concernant le « /api/1234 » que vous avez modifié en « /api » pour ajouter le nouvel utilisateur, aucun impact, au contraire c’est même la manière la plus propre de le faire. Si une de vos ampoules fonctionne, c’est la preuve que votre utilisateur a bien été ajouté sur le bridge.

      Concernant le fonctionnement à deux ampoules, je vous invite à consulter l’exemple fournis par le développeur qui a permis le support des ampoules Hue sur hyperion : https://github.com/ntim/hyperion/wiki/Philips-Hue-Support#example-configuration-file
      Il est également possible de modifier les paramètres « hscan » et « vscan » pour que chaque ampoule n’affiche que la couleur d’une moitié d’écran et non la totalité.

      Pouvez-vous faire un GET sur le bridge Hue avec cette URL « /api/newdeveloper/lights » et me transmettre le résultat ?

  • Répondre Maxime |

    Bonjour,

    Tout d’abord merci pour votre réponse rapide. J’essaierai dans la soirée de regarder de plus près le code de ce développeur mais cela correspond à mes essais avec plusieurs ampoules.

    Voici le résultat de la requête (on retrouve bien mes 3 ampoules et mon lightstrip visiblement) :

    Encore merci

    {
    	"1": {
    		"state": {
    			"on": true,
    			"bri": 203,
    			"hue": 34492,
    			"sat": 232,
    			"effect": "none",
    			"xy": [
    				0.3151,
    				0.3252
    			],
    			"ct": 155,
    			"alert": "none",
    			"colormode": "xy",
    			"reachable": true
    		},
    		"type": "Extended color light",
    		"name": "Hue Lamp 1",
    		"modelid": "LCT001",
    		"uniqueid": "00:17:88:01:00:e2:87:df-0b",
    		"swversion": "66013187",
    		"pointsymbol": {
    			"1": "none",
    			"2": "none",
    			"3": "none",
    			"4": "none",
    			"5": "none",
    			"6": "none",
    			"7": "none",
    			"8": "none"
    		}
    	},
    	"2": {
    		"state": {
    			"on": true,
    			"bri": 203,
    			"hue": 34494,
    			"sat": 232,
    			"effect": "none",
    			"xy": [
    				0.3151,
    				0.3252
    			],
    			"ct": 155,
    			"alert": "select",
    			"colormode": "xy",
    			"reachable": true
    		},
    		"type": "Extended color light",
    		"name": "Hue Lamp 2",
    		"modelid": "LCT001",
    		"uniqueid": "00:17:88:01:00:ed:38:19-0b",
    		"swversion": "66013187",
    		"pointsymbol": {
    			"1": "none",
    			"2": "none",
    			"3": "none",
    			"4": "none",
    			"5": "none",
    			"6": "none",
    			"7": "none",
    			"8": "none"
    		}
    	},
    	"3": {
    		"state": {
    			"on": true,
    			"bri": 203,
    			"hue": 34494,
    			"sat": 232,
    			"effect": "none",
    			"xy": [
    				0.3151,
    				0.3252
    			],
    			"ct": 155,
    			"alert": "select",
    			"colormode": "xy",
    			"reachable": true
    		},
    		"type": "Extended color light",
    		"name": "Hue Lamp 3",
    		"modelid": "LCT001",
    		"uniqueid": "00:17:88:01:00:e2:91:e4-0b",
    		"swversion": "66013187",
    		"pointsymbol": {
    			"1": "none",
    			"2": "none",
    			"3": "none",
    			"4": "none",
    			"5": "none",
    			"6": "none",
    			"7": "none",
    			"8": "none"
    		}
    	},
    	"4": {
    		"state": {
    			"on": false,
    			"bri": 54,
    			"hue": 6871,
    			"sat": 237,
    			"effect": "none",
    			"xy": [
    				0.6132,
    				0.3695
    			],
    			"alert": "select",
    			"colormode": "xy",
    			"reachable": true
    		},
    		"type": "Color light",
    		"name": "LightStrips 1",
    		"modelid": "LST001",
    		"uniqueid": "00:17:88:01:00:cc:b7:d3-0b",
    		"swversion": "66013452",
    		"pointsymbol": {
    			"1": "none",
    			"2": "none",
    			"3": "none",
    			"4": "none",
    			"5": "none",
    			"6": "none",
    			"7": "none",
    			"8": "none"
    		}
    	}
    }
  • Répondre Manu |

    Dans votre configuration vos ampoules ont des index de 1 à 3 puis l’index 4 corresponds au lightstrip. Il faut donc configurer hyperion avec les index 1 et 2 pour piloter vos deux premières ampoules.
    Comme indiqué dans le lien de mon précédent commentaire, pouvez-vous essayé avec la configuration hyperion suivante concernant la partie « leds » :

    "leds" : 
        [
            {
                "index" : 0,
                "hscan" : { "minimum" : 0.0000, "maximum" : 0.1000 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 1.0000 }
            },
            {
                "index" : 1,
                "hscan" : { "minimum" : 0.9000, "maximum" : 1.0000 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 1.0000 }
            }
        ],

    Cette configuration permet de « scanner » une zone de 0,10% de chaque côté de l’écran afin de restituer les couleurs sur les ampoules Hue. C’est bien évidement à adapter en fonction de la position de vos ampoules par rapport à votre TV.

  • Répondre Maxime |

    La configuration que vous m’avez donné fonctionne et j’ai bien 2 ampoules qui se connectent. En revanche, peu importe l’index que je mets, ce sont toujours les même ampoules qui s’allument. Par exemple 0 et 1 ou 1 et 2 ou même 3 et 4 peu importe… Comment faire pour allumer par exemple mon ampoule 3 ou lightstrip 4 ?

    Merci encore pour votre aide.

  • Répondre Manu |

    Après avoir réaliser quelques tests chez moi en reproduisant votre configuration, il semble en effet impossible de déterminer les ampoules à utiliser par hyperion. L’option « index » du fichier de configuration correspond uniquement à l’ordre dans lequel les informations vont être envoyés.
    Si deux ampoules sont configurés dans hyperion, alors ce seront les deux premières ampoules enregistrées dans le bridge hue qui seront utilisées.
    Une solution rapide serait de supprimer l’ensemble de vos ampoules et strip sur votre bridge hue afin de les enregistrer de nouveau en commençant par ceux que vous voulez utiliser pour hyperion.
    J’essaye de dialoguer avec le développeur afin d’envisager une option permettant le choix des ampoules.

  • Répondre Maxime |

    Bonjour,

    Merci effectivement c’est une bonne solution qui fonctionne. Tenez-moi au courant si vous avez des nouvelles pour le choix de la lampe.

    Merci

    • Répondre Manu |

      Le développeur qui a ajouté le support Philipps Hue à hyperion a effectué les modification du code pour choisir les ampoules à contrôler depuis ce Pull Request.
      Le paramètre a utiliser dans le fichier de configuration est « lightIds: [1, 2, 3] »
      Cependant les binaries n’ont pas été regénérés depuis 2 mois donc il faut compiler à main pour profiter des nouveautés.

      • Répondre Tom |

        Hello, merci pour le tuto!

        Pour info le pull request introduisant « lightIds » est maintenant mergé dans la build standard. Ce qui donne dans le fichier de config:

        "device" :
            {
                "name"       : "MyPi",
                ...
                "lightIds"   : [ 3 ]
            },

        Sinon, je me demandais s’il était possible de lancer le serveur automatiquement lorsque XBMC joue une vidéo et le stopper ensuite. Des idées?

        • Répondre Manu |

          Merci pour le commentaire et pour l’info sur la mise à jour de hyperion, cependant les binaries n’ont toujours pas été régénérés (compilation à la main obligatoire).

          Concernant le lancement et l’arrêt automatique du serveur lors d’une lecture de vidéo via XBMC je pense que c’est réalisable via un petit script. Cependant via le fichier de configuration de hyperion il est possible de choisir les éléments qui seront « grabbé » pour obtenir l’effet « ambilight ». Ça n’arrête pas totalement le serveur hyperion mais celui-ci cesse d’envoyer des changements de couleurs aux ampoules hue.
          Les paramètres sont les suivants :

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

          Avec cette configuration (celle que j’utilise actuellement) à la fin d’une vidéo et donc au retour dans le menu de XBMC ma lampe Hue revient à son état standard qu’elle avait avant le début de la vidéo.

          • Tom |

            Oui effectivement, je n’avais pas fait attention mais dans ces conditions ça ne changerait rien de lancer et arrêter le serveur 🙂 Je ne sais pas comment j’ai fait mais à un moment les lampes réagissaient aussi à l’interface de Kodi après avoir stoppé la vidéo, malgré le fait que j’utilise ton fichier de config depuis le début. Mais je n’arrive plus à reproduire 🙂

            Concernant le paramètre lightIds, c’est curieux parce que je n’ai pas compilé la build et pourtant le paramètre fonctionne (hyperiond indique la date du build suivante: Mar 6 2015 20:57:44). Je viens de tester en passant [ 3 ] à [ 2 ] sans rien changer d’autre et j’ai bien le résultat escompté (l’ampoule 2 est pilotée par Hyperion et plus la 3). J’ai ensuite essayé avec 2 lampes « lightIds » : [ 2, 3 ] et la config suivante:

                "leds" :                                                                                                                           
                [                                                                                                                                  
                    {                                                                                                                              
                        "index" : 0,                                                                                                               
                        "hscan" : { "minimum" : 0.0000, "maximum" : 0.5000 },                                                                
                        "vscan" : { "minimum" : 0.0000, "maximum" : 1.0000 }                                                                 
                    },                                                                                                                       
                    {                                                                                                                        
                        "index" : 1,                                                                                                         
                        "hscan" : { "minimum" : 0.5000, "maximum" : 1.0000 },                                                                
                        "vscan" : { "minimum" : 0.0000, "maximum" : 1.0000 }                                                                 
                    }                                                                                                                        
                ], 
            

            …et ça fonctionne aussi comme escompté (la lampe 2 prend la moitié gauche de l’écran et la lampe 3 prend l’autre).

  • Répondre Tibo |

    Bonjour,
    Votre article est très intéressant.
    Cependant, je souhaiterais savoir si il est possible, via Hypérion, de piloter un lightberry d’une part et d’autres lampes hue de philips ?
    J’ai bien vu le lien vers le site de philips qui donne un script pour le pilotage de 2 hue avec 2 couleurs différentes, mais je me demande si l’on peut coupler cela avec un lightberry.
    Merci d’avance
    Tibo

    • Répondre Manu |

      Salut !
      Merci pour le commentaire !
      Malheureusement hyperion ne permet pas de contrôler deux périphériques différents comme tu souhaites le faire. C’est soit le lightberry, soit les Philipps Hue, obligatoire de faire un choix. C’est une fonctionnalité qui a déjà été demande auprès du développeur à de nombreuse reprise mais ça n’a pas encore été réalisé.
      De mon côté, des fois je ne souhaite pas avoir les effets visuel de hyperion mais simplement moins de luminosité dans la pièce. J’ai donc assigné un bouton de ma télécommande CEC afin d’activer/désactiver mon « mode cinéma » (si luminosité Hue à 100% alors changement à 50% et inversement). Ceci peut être un compromis en laissant le lightpack avec hyperion, mais en gardant le contrôle rapide de son installation Hue via la télécommande TV.

      J’espère t’avoir apporté des réponses !

  • Répondre Thiio |

    Bonjour,

    Merci beaucoup pour cet article bien détaillé. J’ai récemment acquis un Raspberry PI 2 et j’ai installé sur ce dernier une distribution Xbian afin de suivre ce tuto. La version installée de hyperion n’est plus la même que celle de l’article et je pense que je suis passé à côté d’un paramètre puisqu’aucune lampe Hue ne s’allume lorsque je lance une vidéo.

    Avez-vous une idée d’où pourrait se situer mon problème ?

    Voici mon fichier de config :

    // Automatically generated configuration file for 'Hyperion daemon'
    // Generated by: HyperCon (The Hyperion deamon configuration file builder
    
    {
    	/// Device configuration contains the following fields: 
    	/// * 'name'       : The user friendly name of the device (only used for display purposes)
    	/// * 'type'       : The type of the device or leds (known types for now are 'ws2801', 'ldp8806',
    	///                  'lpd6803', 'sedu', 'adalight', 'lightpack', 'philipshue', 'test' and 'none')
    	/// * 'output'     : The output specification depends on selected device. This can for example be the
    	///                  device specifier, device serial number, or the output file name
    	/// * 'rate'       : The baudrate of the output to the device
    	/// * 'colorOrder' : The order of the color bytes ('rgb', 'rbg', 'bgr', etc.).
    	/// Specific of Philips Hue: 
    	/// * 'username'   : The name of user registred on the Philips Hue Bridge
    	/// * 'switchOffOnBlack' : Define if Hue light switch off when black is detected
    	/// * 'transitiontime' : Set the time of transition between color of Hue light
    	"device" :
    	{
    		"name"       : "MyPi",
    		"type"       : "philipshue",
    		"output"     : "192.168.1.13",
    ///		"rate"       : 250000, //testé avec et sans
    		"colorOrder" : "rgb"
    ///		"username" : "newdeveloper" // testé avec et sans
    ///		"switchOffOnBlack" : "false" //testé avec et sans
    		
    	},
    
    	/// Color manipulation configuration used to tune the output colors to specific surroundings. 
    	/// The configuration contains a list of color-transforms. Each transform contains the 
    	/// following fields:
    	///  * 'id'   : The unique identifier of the color transformation (eg 'device_1')	///  * 'leds' : The indices (or index ranges) of the leds to which this color transform applies
    	///             (eg '0-5, 9, 11, 12-17'). The indices are zero based.	///  * 'hsv' : The manipulation in the Hue-Saturation-Value color domain with the following 
    	///            tuning parameters:
    	///            - 'saturationGain'  The gain adjustement of the saturation
    	///            - 'valueGain'       The gain adjustement of the value
    	///  * 'red'/'green'/'blue' : The manipulation in the Red-Green-Blue color domain with the 
    	///                           following tuning parameters for each channel:
    	///            - 'threshold'       The minimum required input value for the channel to be on 
    	///                                (else zero)
    	///            - 'gamma'           The gamma-curve correction factor
    	///            - 'blacklevel'      The lowest possible value (when the channel is black)
    	///            - 'whitelevel'      The highest possible value (when the channel is white)
    	///
    	/// Next to the list with color transforms there is also a smoothing option.
    	///  * 'smoothing' : Smoothing of the colors in the time-domain with the following tuning 
    	///                  parameters:
    	///            - 'type'            The type of smoothing algorithm ('linear' or 'none')
    	///            - 'time_ms'         The time constant for smoothing algorithm in milliseconds
    	///            - 'updateFrequency' The update frequency of the leds in Hz
    	"color" :
    	{
    		"transform" :
    		[
    			{
    				"id"   : "1", //Essayé avec [0], 1, 6...
    				"leds" : "*",
    				"hsv" :
    				{
    					"saturationGain" : 1.0000,
    					"valueGain"      : 1.0000
    				},
    				"red" :
    				{
    					"threshold"  : 0.0000,
    					"gamma"      : 1.0000,
    					"blacklevel" : 0.0000,
    					"whitelevel" : 1.0000
    				},
    				"green" :
    				{
    					"threshold"  : 0.0000,
    					"gamma"      : 1.0000,
    					"blacklevel" : 0.0000,
    					"whitelevel" : 1.0000
    				},
    				"blue" :
    				{
    					"threshold"  : 0.0000,
    					"gamma"      : 1.0000,
    					"blacklevel" : 0.0000,
    					"whitelevel" : 1.0000
    				}
    			}
    		],
    		"smoothing" :
    		{
    			"type"            : "none",
    			"time_ms"         : 200,
    			"updateFrequency" : 20.0000,
    			"updateDelay"     : 0
    		}
    	},
    
    	///  The configuration for each individual led. This contains the specification of the area 
    	///  averaged of an input image for each led to determine its color. Each item in the list 
    	///  contains the following fields:
    	///  * index: The index of the led. This determines its location in the string of leds; zero 
    	///           being the first led.
    	///  * hscan: The fractional part of the image along the horizontal used for the averaging 
    	///           (minimum and maximum inclusive)
    	///  * vscan: The fractional part of the image along the vertical used for the averaging 
    	///           (minimum and maximum inclusive)
    	"leds" : 
    	[
    		{
    			"index" : 0,
    			"hscan" : { "minimum" : 0.4375, "maximum" : 0.5000 },
    			"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
    		},
    		{
    			"index" : 1,
    			"hscan" : { "minimum" : 0.3750, "maximum" : 0.4375 },
    			"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
    		},
    		{
    			"index" : 2,
    			"hscan" : { "minimum" : 0.3125, "maximum" : 0.3750 },
    			"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
    		},
    		{
    			"index" : 3,
    			"hscan" : { "minimum" : 0.2500, "maximum" : 0.3125 },
    			"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
    		},
    		{
    			"index" : 4,
    			"hscan" : { "minimum" : 0.1875, "maximum" : 0.2500 },
    			"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
    		},
    		{
    			"index" : 5,
    			"hscan" : { "minimum" : 0.1250, "maximum" : 0.1875 },
    			"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
    		},
    		{
    			"index" : 6,
    			"hscan" : { "minimum" : 0.0625, "maximum" : 0.1250 },
    			"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
    		},
    		{
    			"index" : 7,
    			"hscan" : { "minimum" : 0.0000, "maximum" : 0.0625 },
    			"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
    		},
    		{
    			"index" : 8,
    			"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
    			"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
    		},
    		{
    			"index" : 9,
    			"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
    			"vscan" : { "minimum" : 0.8571, "maximum" : 1.0000 }
    		},
    		{
    			"index" : 10,
    			"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
    			"vscan" : { "minimum" : 0.7143, "maximum" : 0.8571 }
    		},
    		{
    			"index" : 11,
    			"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
    			"vscan" : { "minimum" : 0.5714, "maximum" : 0.7143 }
    		},
    		{
    			"index" : 12,
    			"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
    			"vscan" : { "minimum" : 0.4286, "maximum" : 0.5714 }
    		},
    		{
    			"index" : 13,
    			"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
    			"vscan" : { "minimum" : 0.2857, "maximum" : 0.4286 }
    		},
    		{
    			"index" : 14,
    			"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
    			"vscan" : { "minimum" : 0.1429, "maximum" : 0.2857 }
    		},
    		{
    			"index" : 15,
    			"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
    			"vscan" : { "minimum" : 0.0000, "maximum" : 0.1429 }
    		},
    		{
    			"index" : 16,
    			"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
    			"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
    		},
    		{
    			"index" : 17,
    			"hscan" : { "minimum" : 0.0000, "maximum" : 0.0625 },
    			"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
    		},
    		{
    			"index" : 18,
    			"hscan" : { "minimum" : 0.0625, "maximum" : 0.1250 },
    			"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
    		},
    		{
    			"index" : 19,
    			"hscan" : { "minimum" : 0.1250, "maximum" : 0.1875 },
    			"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
    		},
    		{
    			"index" : 20,
    			"hscan" : { "minimum" : 0.1875, "maximum" : 0.2500 },
    			"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
    		},
    		{
    			"index" : 21,
    			"hscan" : { "minimum" : 0.2500, "maximum" : 0.3125 },
    			"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
    		},
    		{
    			"index" : 22,
    			"hscan" : { "minimum" : 0.3125, "maximum" : 0.3750 },
    			"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
    		},
    		{
    			"index" : 23,
    			"hscan" : { "minimum" : 0.3750, "maximum" : 0.4375 },
    			"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
    		},
    		{
    			"index" : 24,
    			"hscan" : { "minimum" : 0.4375, "maximum" : 0.5000 },
    			"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
    		},
    		{
    			"index" : 25,
    			"hscan" : { "minimum" : 0.5000, "maximum" : 0.5625 },
    			"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
    		},
    		{
    			"index" : 26,
    			"hscan" : { "minimum" : 0.5625, "maximum" : 0.6250 },
    			"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
    		},
    		{
    			"index" : 27,
    			"hscan" : { "minimum" : 0.6250, "maximum" : 0.6875 },
    			"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
    		},
    		{
    			"index" : 28,
    			"hscan" : { "minimum" : 0.6875, "maximum" : 0.7500 },
    			"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
    		},
    		{
    			"index" : 29,
    			"hscan" : { "minimum" : 0.7500, "maximum" : 0.8125 },
    			"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
    		},
    		{
    			"index" : 30,
    			"hscan" : { "minimum" : 0.8125, "maximum" : 0.8750 },
    			"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
    		},
    		{
    			"index" : 31,
    			"hscan" : { "minimum" : 0.8750, "maximum" : 0.9375 },
    			"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
    		},
    		{
    			"index" : 32,
    			"hscan" : { "minimum" : 0.9375, "maximum" : 1.0000 },
    			"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
    		},
    		{
    			"index" : 33,
    			"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
    			"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
    		},
    		{
    			"index" : 34,
    			"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
    			"vscan" : { "minimum" : 0.0000, "maximum" : 0.1429 }
    		},
    		{
    			"index" : 35,
    			"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
    			"vscan" : { "minimum" : 0.1429, "maximum" : 0.2857 }
    		},
    		{
    			"index" : 36,
    			"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
    			"vscan" : { "minimum" : 0.2857, "maximum" : 0.4286 }
    		},
    		{
    			"index" : 37,
    			"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
    			"vscan" : { "minimum" : 0.4286, "maximum" : 0.5714 }
    		},
    		{
    			"index" : 38,
    			"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
    			"vscan" : { "minimum" : 0.5714, "maximum" : 0.7143 }
    		},
    		{
    			"index" : 39,
    			"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
    			"vscan" : { "minimum" : 0.7143, "maximum" : 0.8571 }
    		},
    		{
    			"index" : 40,
    			"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
    			"vscan" : { "minimum" : 0.8571, "maximum" : 1.0000 }
    		},
    		{
    			"index" : 41,
    			"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
    			"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
    		},
    		{
    			"index" : 42,
    			"hscan" : { "minimum" : 0.9375, "maximum" : 1.0000 },
    			"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
    		},
    		{
    			"index" : 43,
    			"hscan" : { "minimum" : 0.8750, "maximum" : 0.9375 },
    			"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
    		},
    		{
    			"index" : 44,
    			"hscan" : { "minimum" : 0.8125, "maximum" : 0.8750 },
    			"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
    		},
    		{
    			"index" : 45,
    			"hscan" : { "minimum" : 0.7500, "maximum" : 0.8125 },
    			"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
    		},
    		{
    			"index" : 46,
    			"hscan" : { "minimum" : 0.6875, "maximum" : 0.7500 },
    			"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
    		},
    		{
    			"index" : 47,
    			"hscan" : { "minimum" : 0.6250, "maximum" : 0.6875 },
    			"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
    		},
    		{
    			"index" : 48,
    			"hscan" : { "minimum" : 0.5625, "maximum" : 0.6250 },
    			"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
    		},
    		{
    			"index" : 49,
    			"hscan" : { "minimum" : 0.5000, "maximum" : 0.5625 },
    			"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
    		}
    	],
    
    	/// The black border configuration, contains the following items: 
    	///  * enable    : true if the detector should be activated
    	///  * threshold : Value below which a pixel is regarded as black (value between 0.0 and 1.0)
    	"blackborderdetector" : 
    	{
    		"enable" : true,
    		"threshold" : 0.01
    	},
    
    	/// The configuration of the effect engine, contains the following items: 
    	///  * paths        : An array with absolute location(s) of directories with effects 
    	///  * bootsequence : The effect selected as 'boot sequence'
    	"effects" : 
    	{
    		"paths" : 
    		[
    			"/opt/hyperion/effects"
    		]
    	},
    
    	"bootsequence" : 
    	{
    		"effect" : "Rainbow swirl fast",
    		"duration_ms" : 3000
    	},
    
    	///  The configuration for the frame-grabber, contains the following items: 
    	///   * width        : The width of the grabbed frames [pixels]
    	///   * height       : The height of the grabbed frames [pixels]
    	///   * frequency_Hz : The frequency of the frame grab [Hz]
    	"framegrabber" : 
    	{
    		"width" : 64,
    		"height" : 64,
    		"frequency_Hz" : 10.0
    	},
    
    	/// The configuration of the XBMC connection used to enable and disable the frame-grabber. Contains the following fields: 
    	///  * xbmcAddress       : The IP address of the XBMC-host
    	///  * xbmcTcpPort       : The TCP-port of the XBMC-server
    	///  * grabVideo         : Flag indicating that the frame-grabber is on(true) during video playback
    	///  * grabPictures      : Flag indicating that the frame-grabber is on(true) during picture show
    	///  * grabAudio         : Flag indicating that the frame-grabber is on(true) during audio playback
    	///  * grabMenu          : Flag indicating that the frame-grabber is on(true) in the XBMC menu
    	///  * grabScreensaver   : Flag indicating that the frame-grabber is on(true) when XBMC is on screensaver
    	///  * enable3DDetection : Flag indicating that the frame-grabber should switch to a 3D compatible modus if a 3D video is playing
    	"xbmcVideoChecker" : 
    	{
    		"xbmcAddress" : "127.0.0.1",
    		"xbmcTcpPort" : 9090,
    		"grabVideo" : true,
    		"grabPictures" : true,
    		"grabAudio" : false,
    		"grabMenu" : false,
    		"grabScreensaver" : true,
    		"enable3DDetection" : true
    	},
    
    	/// The configuration of the Json server which enables the json remote interface
    	///  * port : Port at which the json server is started
    	"jsonServer" : 
    	{
    		"port" : 19444
    	},
    
    	/// The configuration of the Proto server which enables the protobuffer remote interface
    	///  * port : Port at which the protobuffer server is started
    	"protoServer" : 
    	{
    		"port" : 19445
    	},
    
    	/// The configuration of the boblight server which enables the boblight remote interface
    	///  * port : Port at which the boblight server is started
    // 	"boblightServer" : 
    // 	{
    // 		"port" : 19333
    // 	},
    
    	"endOfJson" : "endOfJson"
    }
    

    Pour information, lorsque je me connecte sur http://ip_du_pont//api/newdeveloper/lights/1/state je peux contrôler l’ampoule.

    Merci pour votre aide.

    Théo

    • Répondre Manu |

      Salut,
      Je vois que le fichier de configuration a été généré par l’outil HyperCon. Au moment où j’ai réalisé le tutoriel cet outil n’était pas adapté pour générer une configuration correcte avec les lampes Hue. Il faut malheureusement « mettre les mains dans le cambouis ».
      En parcourant rapidement le fichier je vois déjà une erreur au niveau de la section transform. Cette section permet d’appliquer des corrections de couleurs à certains devices. La configuration des ampoules et de la partie « grabbé » qui correspond se fait dans la section leds. Exemple pour une configuration à deux ampoules qui « grabbe » chacune une moitié d’écran (l’index correspond uniquement à l’ordre dans hyperion) :

      "leds" : 
          [
              {
                  "index" : 0,
                  "hscan" : { "minimum" : 0.0000, "maximum" : 0.1000 },
                  "vscan" : { "minimum" : 0.0000, "maximum" : 1.0000 }
              },
              {
                  "index" : 1,
                  "hscan" : { "minimum" : 0.9000, "maximum" : 1.0000 },
                  "vscan" : { "minimum" : 0.0000, "maximum" : 1.0000 }
              }
          ]

      Le choix des ampoules Hue à contrôler se fait dans la section device avec le paramètre suivant :

      lightIds: [1, 2, 3]
  • Répondre Thiio |

    Merci pour votre rapide réponse.

    J’ai effectué les modifications dans le fichier de configuration cependant je n’ai toujours pas d’interaction entre le Raspberry et le pont Hue. Il me semble que hyperion ne « valide » pas mon fichier de conf (sans blague). J’entends par là que le service s’arrête immédiatement après s’être lancé.
    J’ai donc fait un test avec modifiant les paramètres un à un et le problème se situe dans la section device, au niveau de l’output. Comme s’il ne reconnaissait pas mon adresse IP (ou cette façon de le renseigner) ou encore qu’il lui manque des paramètres quelque part…

    Voici mon fichier actuellement :

    // Automatically generated configuration file for 'Hyperion daemon'
    // Generated by: HyperCon (The Hyperion deamon configuration file builder
    
    {
    	/// Device configuration contains the following fields: 
    	/// * 'name'       : The user friendly name of the device (only used for display purposes)
    	/// * 'type'       : The type of the device or leds (known types for now are 'ws2801', 'ldp8806',
    	///                  'lpd6803', 'sedu', 'adalight', 'lightpack', 'philipshue', 'test' and 'none')
    	/// * 'output'     : The output specification depends on selected device. This can for example be the
    	///                  device specifier, device serial number, or the output file name
    	/// * 'rate'       : The baudrate of the output to the device
    	/// * 'colorOrder' : The order of the color bytes ('rgb', 'rbg', 'bgr', etc.).
    	/// Specific of Philips Hue: 
    	/// * 'username'   : The name of user registred on the Philips Hue Bridge
    	/// * 'switchOffOnBlack' : Define if Hue light switch off when black is detected
    	/// * 'transitiontime' : Set the time of transition between color of Hue light
    	"device" :
    	{
    		"name"       : "MyPi",
    		"type"       : "philipshue",
    		"output"     : "192.168.1.13",
    		"rate"       : 250000,
    		"colorOrder" : "rgb",
    		"lightIds"   : [ 1 ],
    		"username"   : "newdeveloper",
    		"switchOffOnBlack" : "false"
    	},
    
    	/// Color manipulation configuration used to tune the output colors to specific surroundings. 
    	/// The configuration contains a list of color-transforms. Each transform contains the 
    	/// following fields:
    	///  * 'id'   : The unique identifier of the color transformation (eg 'device_1')	///  * 'leds' : The indices (or index ranges) of the leds to which this color transform applies
    	///             (eg '0-5, 9, 11, 12-17'). The indices are zero based.	///  * 'hsv' : The manipulation in the Hue-Saturation-Value color domain with the following 
    	///            tuning parameters:
    	///            - 'saturationGain'  The gain adjustement of the saturation
    	///            - 'valueGain'       The gain adjustement of the value
    	///  * 'red'/'green'/'blue' : The manipulation in the Red-Green-Blue color domain with the 
    	///                           following tuning parameters for each channel:
    	///            - 'threshold'       The minimum required input value for the channel to be on 
    	///                                (else zero)
    	///            - 'gamma'           The gamma-curve correction factor
    	///            - 'blacklevel'      The lowest possible value (when the channel is black)
    	///            - 'whitelevel'      The highest possible value (when the channel is white)
    	///
    	/// Next to the list with color transforms there is also a smoothing option.
    	///  * 'smoothing' : Smoothing of the colors in the time-domain with the following tuning 
    	///                  parameters:
    	///            - 'type'            The type of smoothing algorithm ('linear' or 'none')
    	///            - 'time_ms'         The time constant for smoothing algorithm in milliseconds
    	///            - 'updateFrequency' The update frequency of the leds in Hz
    	"color" :
    	{
    		"transform" :
    		[
    			{
    				"id"   : "default",
    				"leds" : "*",
    				"hsv" :
    				{
    					"saturationGain" : 1.0000,
    					"valueGain"      : 1.0000
    				},
    				"red" :
    				{
    					"threshold"  : 0.0000,
    					"gamma"      : 1.0000,
    					"blacklevel" : 0.0000,
    					"whitelevel" : 1.0000
    				},
    				"green" :
    				{
    					"threshold"  : 0.0000,
    					"gamma"      : 1.0000,
    					"blacklevel" : 0.0000,
    					"whitelevel" : 1.0000
    				},
    				"blue" :
    				{
    					"threshold"  : 0.0000,
    					"gamma"      : 1.0000,
    					"blacklevel" : 0.0000,
    					"whitelevel" : 1.0000
    				}
    			}
    		],
    		"smoothing" :
    		{
    			"type"            : "none",
    			"time_ms"         : 200,
    			"updateFrequency" : 20.0000,
    			"updateDelay"     : 0
    		}
    	},
    
    	///  The configuration for each individual led. This contains the specification of the area 
    	///  averaged of an input image for each led to determine its color. Each item in the list 
    	///  contains the following fields:
    	///  * index: The index of the led. This determines its location in the string of leds; zero 
    	///           being the first led.
    	///  * hscan: The fractional part of the image along the horizontal used for the averaging 
    	///           (minimum and maximum inclusive)
    	///  * vscan: The fractional part of the image along the vertical used for the averaging 
    	///           (minimum and maximum inclusive)
    	"leds" : 
    	[
    		{
    			"index" : 0,
    			"hscan" : { "minimum" : 0.0000, "maximum" : 1.0000 },
    			"vscan" : { "minimum" : 0.0000, "maximum" : 1.0000 }
    		},
    		{
    			"index" : 1,
    			"hscan" : { "minimum" : 0.0000, "maximum" : 1.0000 },
    			"vscan" : { "minimum" : 0.0000, "maximum" : 1.0000 }
    		},
    	],
    
    	/// The black border configuration, contains the following items: 
    	///  * enable    : true if the detector should be activated
    	///  * threshold : Value below which a pixel is regarded as black (value between 0.0 and 1.0)
    	"blackborderdetector" : 
    	{
    		"enable" : true,
    		"threshold" : 0.01
    	},
    
    	/// The configuration of the effect engine, contains the following items: 
    	///  * paths        : An array with absolute location(s) of directories with effects 
    	///  * bootsequence : The effect selected as 'boot sequence'
    	"effects" : 
    	{
    		"paths" : 
    		[
    			"/opt/hyperion/effects"
    		]
    	},
    
    	"bootsequence" : 
    	{
    		"effect" : "Rainbow swirl fast",
    		"duration_ms" : 3000
    	},
    
    	///  The configuration for the frame-grabber, contains the following items: 
    	///   * width        : The width of the grabbed frames [pixels]
    	///   * height       : The height of the grabbed frames [pixels]
    	///   * frequency_Hz : The frequency of the frame grab [Hz]
    	"framegrabber" : 
    	{
    		"width" : 64,
    		"height" : 64,
    		"frequency_Hz" : 10.0
    	},
    
    	/// The configuration of the XBMC connection used to enable and disable the frame-grabber. Contains the following fields: 
    	///  * xbmcAddress       : The IP address of the XBMC-host
    	///  * xbmcTcpPort       : The TCP-port of the XBMC-server
    	///  * grabVideo         : Flag indicating that the frame-grabber is on(true) during video playback
    	///  * grabPictures      : Flag indicating that the frame-grabber is on(true) during picture show
    	///  * grabAudio         : Flag indicating that the frame-grabber is on(true) during audio playback
    	///  * grabMenu          : Flag indicating that the frame-grabber is on(true) in the XBMC menu
    	///  * grabScreensaver   : Flag indicating that the frame-grabber is on(true) when XBMC is on screensaver
    	///  * enable3DDetection : Flag indicating that the frame-grabber should switch to a 3D compatible modus if a 3D video is playing
    	"xbmcVideoChecker" : 
    	{
    		"xbmcAddress" : "127.0.0.1",
    		"xbmcTcpPort" : 9090,
    		"grabVideo" : true,
    		"grabPictures" : true,
    		"grabAudio" : false,
    		"grabMenu" : false,
    		"grabScreensaver" : false,
    		"enable3DDetection" : true
    	},
    
    	/// The configuration of the Json server which enables the json remote interface
    	///  * port : Port at which the json server is started
    	"jsonServer" : 
    	{
    		"port" : 19444
    	},
    
    	/// The configuration of the Proto server which enables the protobuffer remote interface
    	///  * port : Port at which the protobuffer server is started
    	"protoServer" : 
    	{
    		"port" : 19445
    	},
    
    	/// The configuration of the boblight server which enables the boblight remote interface
    	///  * port : Port at which the boblight server is started
    // 	"boblightServer" : 
    // 	{
    // 		"port" : 19333
    // 	},
    
    	"endOfJson" : "endOfJson"
    }

    Si vous avez des pistes, je suis preneur ! 🙂

    Merci à vous

    Théo

    • Répondre Manu |

      Essaye en enlevant le paramètre « rate » qui est inutile pour le pont hue. Fait attention également au « frequency_Hz » qui ne doit pas dépasser 10 au total, donc pour deux lampes il faut le mettre à 5.
      Essaye également de lancer hyperion avec la commande suivante et donne l’éventuel retour de message d’erreur :

      hyperiond /etc/hyperion.config.json
  • Répondre Thiio |

    J’ai enfin réussi !

    J’ai utilisé la commande hyperiond /etc/hyperion.config.json pour comprendre d’où venait le problème. (Je l’avais trouvée sur un site juste avant de voir votre réponse) Magique cette commande 😉

    J’avais une virgule en trop à un endroit à la fin de la section leds.

    Maintenant que ça fonctionne je me mets à l’optimisation (Et je vais sûrement aller tester l’article sur la télécommande!)

    Merci beaucoup pour votre aide et votre article ! Continuez comme ça 🙂

  • Répondre Chiki |

    Bonjour,

    Merci pour ce tuto très clair.
    J’ai testé chez moi et cela fonctionne 🙂

    Je tenais cependant à savoir si vous rencontriez également quelques petits soucis.
    Je m’explique :
    – J’ai actuellement un raspeberry couplé avec un ligthberry qui fonctionne très bien.
    – J’ai suivi le tuto (+les explications du github d’hyperion) pour ajouter 2 mes lampes hue positionnées sur chaque côté de ma télé.

    Problème,
    – De façon répétée, les lampes ne s’éteignent pas à la fin de mon épisode/film que je regarde. Le seul moyen que j’ai pour les éteindre est de passer par l’application mobile de philipps. En faisant cela, les lampes ne redémarrent pas d’elles-mêmes lorsque je relance un épisode. Je suis obligé de redémarrer le service hyperion via ssh. Pour information, mes leds, elles ne rencontrent pas ce problème.
    – Durant la lecture, lors de changements de couleur, mes lampes passent régulièrement par du bleu (qui n’a rien à voir avec l’image en cour) et cela me gène en matière de rendu. J’ai l’impression que le bridge ne traite pas tout le temps correctement le signal envoyé…

    Si jamais vous avez une idée je suis preneur, cela ne me gène pas plus que cela mais mon WAF est en train de baisser …

    Bref dans tous les cas, merci pour le tuto 🙂

    • Répondre Manu |

      Bonjour,
      C’est un comportement assez bizarre en effet…
      Si je comprends bien ton installation tu disposes actuellement d’un lightberry (avec une instance de hyperion) et tu as essayé d’ajouter deux ampoules Hue en supplément du lightberry (dans une seconde instance de hyperion) ? Corrige moi si je me trompe.
      D’après ce que j’ai pu lire sur les différents forums et github de hyperion il y a quelques semaines, le support de deux périphériques (dans ton cas lightberry + Hue) n’est actuellement pas supporté. Les choses ont peut être changées depuis.
      Le comportement que je constate sur mon installation actuelle à la fin de lecture d’une vidéo est le retour à l’état des lampes juste avant la lecture. (je ne « grab » pas sur le menu de Kodi)
      Concernant les couleurs aléatoires j’ai deux hypothèses : soit le pont reçoit trop d’infos (fréquence de refresh 10Hz max, donc pour deux lampes il faut paramétrer 5Hz, « smoothing » à désactiver), soit c’est un soucis avec le paramètre « switchOffOnBlack » qui éteins les ampoules pour les scènes noires mais qui augmentent la latence à cause du fondu généré par la lampe elle-même.
      Mais le soucis peut simplement venir des deux instances hyperion en fonctionnement sur la même Raspberry et qui entrent en conflit.

      Tiens nous au courant si en jouant sur les différents paramètres cités ça résous ton soucis.

      • Répondre Chiki |

        Merci bien pour ton aide.

        Alors, oui, tu as bien compris, j’ai 2 instances d’hyperion qui tournent en parallèle. J’avais trouvé quelque part comment faire (je me souviens plus où)..
        Comme toi, j’ai configuré mes lampes (hue et lightberry) pour ne pas grabber sur le menu (ça me permet de laisser mon raspeberry allumé).
        Concernant tes hypothèses, cela ne vient pas là puisque j’ai la bonne configuration (chaque lampe à 5Hz, le « smoothing » désactivé et j’ai enlevé le “switchOffOnBlack”).

        Bref, je ne vois pas trop comment faire simplement…

        Pour l’instant, j’ai fait un « cron » qui tourne toutes les 4h environs et qui va :
        – Désactiver mes lampes via curl en passant par l’api du bridge hue
        – Arrêter le service hyperion
        – Relancer le service hyperion

        Pour aller plus loin et avoir quelque chose qui me conviendrait mieux, il faudrait :
        – A la manière d’hyperion, savoir si je suis sorti de ma vidéo et/ou revenu sur le menu de Kodi
        – Récupérer l’état de mes lampes hue
        + Si éteintes, je ne fais rien
        + Si allumées (alors qu’elles ne devraient pas), je les éteins (via curl) et redémarre hyperion

        Le plus dur étant de reproduire le « grabber » d’hyperion. J’ai regardé un peu les sources et ça a l’air un peu compliqué quand même.
        N’ayant pas le temps actuellement, ma « solution » temporaire fera bien l’affaire et si j’ai d’autres éléments je viendrais les poster pour d’autres utilisateurs en difficulté.

        Encore merci 😉

  • Répondre Maxime |

    Bonjour.
    Peut t’on faire la même choses avec Plex ?
    Une bandes Philips lightstrips directement

    Merci à vous 😉

  • Répondre Nico |

    Hello Manu.
    Merci pour ce tuto. Grace à toi c’était super facile de mettre en place tout ce petit monde.
    Du coup j’utilise un lighstrip de hue avec osmc sur ma rasp pi 2.
    J’ai une petite question. Est-ce qu’il est possible de configurer chaque LED avec hyperion ?
    Pour l’instant toutes les led du lighstrip utilise la couleur moyenne. Y’aurait-il une manière de les isoler à la manière de lightberry ?

    Merci beaucoup,
    Nico

    • Répondre Manu |

      Hello
      Merci pour ce retour positif ! Concernant le lightstrip malheureusement ce n’est pas possible de contrôler chaque LED de manière individuelle. Le lightstrip est considéré comme une ampoule unique même sur les application Hue officielle. Il n’a pas été conçu pour un contrôle de chaque LED comme le fait le lightberry. C’est dommage vu le tarif auquel Philips le propose.
      À bientôt sur code4pi !

  • Répondre waguiz |

    Super ce tuto mais malheureusement dès l’installation chez moi sa foire!
    à la fin de la commande « sudo sh ./install_hyperion.sh » il y a se message d’erreur « initctl: Job failed to start ».

    • Répondre Manu |

      Bonjour,
      Sur quelle distribution rencontre-tu ce message d’erreur ? Pas d’autres erreurs lors de l’exécution du script d’installation ? Les dépendances ont bien été installées (sudo apt-get install libqtcore4 libqtgui4 libqt4-network libusb-1.0-0 libprotobuf7 ca-certificates) ?

  • Répondre Steve |

    Bonsoir,
    Tout d’abord, je trouve votre article très intéressant. Je viens de lire les commentaires un peu trop tard par contre, car je me rends compte que je viens de faire une erreur en commandant le Lighstrips vu qu’on ne peut pas changer les couleurs des LED individuellement.

    Je voulais avoir une précision avant de commander mon raspberry. Comment fonctionne le démarrage du Raspberry? Est ce l’alimentation en USB sur la Télé qui le fait allumé automatiquement ou est -ce à nous de l’allumer à chaque fois et de lancer le programme pour l’analyse du flux vidéo?

    Merci d’avance

    Steve

    • Répondre Manu |

      Bonjour,
      En effet les équipements Philips Hue sont conçu pour créer un éclairage d’ambiance ne sont pas conçu pour faire de « l’ambilight ». Le Lighstrip permet juste « d’étaler » la lumière coloré sur une plus grande surface. De plus la solution que je propose à des limites : fréquence de rafraichissement limitée, latence due à la connexion sans fil Zigbee, rendu de certaines couleurs…
      Pour obtenir un réel effet de lumière autour de la TV je conseille les kit Lighberry qui sont pratiquement « plug & play ».
      Concernant l’alimentation du Raspberry celui-ci démarre automatiquement dès qu’il est alimenté électriquement et qu’une carte SD avec un système est inséré dans son lecteur : il n’y a pas de bouton power. La consommation de la carte étant ridicule de mon côté je la laisse alimentée en permanence (quelques euros par an). Il est possible de l’alimenter via un port USB de la TV cependant je le déconseille pour deux raisons :

      • Les ports USB classiques fournissent généralement 500mA, le Raspberry Pi B 2 nécessite une alimentation minimum de 1,8A (voir plus en fonction des périphériques USB connectés). Si la TV ne dispose pas d’un port USB clairement identifié comme pouvant délivrer une telle intensité il y a de forts risques de reboot intempestifs
      • Quand la TV sera éteinte l’alimentation du port USB sera coupé brutalement sans que le système n’en soit avertis : le Raspberry n’appréciera que moyennement et des corruptions de la carte SD sont à prévoir. C’est comparable à arracher l’alimentation électrique d’un ordinateur sous Windows.

      Concernant l’analyse du flux vidéo (hyperion) celui-ci se lance automatiquement lors du démarrage de la carte Raspberry.

  • Répondre Girlsoda |

    Bonjour, après avoir réussi à régler mon problème lightberry, encore merci, je souhaités ajouter deux ampoules hue, une de chaque côté de la TV. Je ne sais pas par où commencer, faut il que je rajoute le code citer en haut dans » hyperion.config.json » , si oui à quel endroit, et dois je changer les « xbmc » par  » OSMC  » étant donner qu’il s’agit de ma config.
    Merci

    • Répondre Manu |

      Je n’ai jamais procédé à une telle configuration donc il m’est difficile de conseiller précisément. D’après ce que j’ai pu lire sur les configurations avec plusieurs périphériques c’est qu’il faut un daemon hyperion par périphérique. Dans te situation il faut donc lancer hyperion deux fois avec deux configurations différentes (l’une pour lightberry, l’autre pour les ampoules Hue). La documentation officielle sur ce sujet se trouve ici (en anglais).
      Il ne faut par contre absolument pas remplacer les « xbmc » par « OSMC » dans le fichier de configuration. XBMC (maintenant Kodi) est le logiciel qui permet la lecture des fichiers audio, vidéo, photo… OSMC c’est le nom de la distribution Raspberry, l’équivalent plus ou moins de la version de Windows (7 Professional, 7 Home Prenium, 7 Enterprise…). Ce sont deux choses bien distinctes. De manière générale dans un fichier de configuration ce sont les paramètres qui se trouvent derrière « : » ou « = » qui sont à modifier. Si par exemple le système attends une valeur de « hauteur » et que je renomme le paramètre en « largeur », celui-ci ne sera pas pris en compte car il est inconnu du système.

  • Répondre Steve |

    Merci beaucoup pour votre retour et partage d’expérience.

    Je viens de suivre votre lien et de commander un Lightberry HD. Je vais également suivre votre réponse a Girlsoda car vu que j’ai maintenant mes ampoules Hue, le Lighstrip et dans pas longtemps le Lightberry, cela va peut être m’aider. Je vais voir pour me faire reprendre le Strip qui ne me servira à rien.

    J’espère que la programmation est facile, car je ne connais pas grand chose dans ce domaine … Affaire à suivre, et je vous tiendrais au courant du résultat.

    Merci encore Monsieur.

    • Répondre Manu |

      J’attends votre retour avec impatience, cette configuration Lightberry HD + Hue me semblant être l’expérience la plus immersive que l’on peux faire en DIY (je ne possède actuellement que les ampoules Hue). Le LightStrip peut être conservé pour augmenter l’effet d’ambiance lumineuse dans la pièce (halo sur une grande surface d’un mur ou d’un plafond par exemple). Attention toutefois avec les périphériques Hue : le pont Hue étant limité à une dizaine de requêtes par seconde avant de se retrouver saturé plus le nombre de périphériques Hue utilisé pour l’effet « ambilight » est important et plus la fréquence de rafraîchissement pour le système Hue doit être réduite sur hyperion. Exemple : avec une ampoule on peut configurer la fréquence max (10Hz) mais avec deux ampoules il est nécessaire de diviser la fréquence par deux (5Hz) ce qui peut déjà provoquer un certain « retard » sur les effets lumineux.

  • Répondre Girlsoda |

    Pour la configuration du lightberry et des hue en même temps je cherche encore la solution, mais dès que je trouves, je vous communique la marche à suivre.

  • Répondre Girlsoda |

    Bon j’avance, le lightberry démarre correctement, puis pour une ampoule hue j’ai créer un deuxième fichier hyperion.config2.json que je dois démarrer manuellement depuis putty.
    Pour automatiser tout ça, j’aurais besoin de modifier le fichier /etc/init.d/hyperion, le problème c’est que dans init.d je n’ai pas ce fichier, une idée…
    Merci

    • Répondre Manu |

      Il semblerait qu’il existe des incompatibilités avec OSMC dans le script d’installation de hyperion. Il est nécessaire de créer à la main le fichier de daemon (décris dans la documentation hyperion). De la même façon il est théoriquement possible de le faire pour « hyperion2 ».

      We remove the hyperion symoblic link at
      /etc/init.d

      Next we create hyperion.service file and put that in /etc/systemd/system (this wil open hyperion as OSMC user every boot) (below the content of hyperion.service)
      [Unit]
      Description=Hyperion
      [Service]
      Type=simple
      User=osmc
      Group=osmc
      UMask=007
      ExecStart=/opt/hyperion/bin/hyperiond /etc/hyperion.config.json
      ExecReload=/bin/kill -HUP $MAINPID
      Restart=on-failure
      TimeoutStopSec=10
      [Install]
      WantedBy=multi-user.target

      Then we need to start the service in ssh, once
      /opt/hyperion/bin/hyperiond /etc/hyperion.config.json

      Then we create a new symbolic link
      sudo systemctl enable hyperion

  • Répondre Girlsoda |

    Et serais s’il est possible, étant donné que les hue et lifx ont des api ouvert, s’il serait possible de contrôler une lifx avec le hue tap

    • Répondre Manu |

      Les API Hue sont effectivement ouvertes mais jusqu’à une certaine limite. A ma connaissance il est possible et simple d’envoyer des « ordres » vers le bridge pour piloter des ampoules mais il est impossible de récupérer des actions réalisées par des commandes Hue (Hue Tap, Dimming Switch…) pour interagir avec un objet hors univers Hue (via une commande http par exemple). Dans l’état actuel des choses pour contrôler une ampoule LIFX avec le Hue Tap il faudrait pouvoir connecter celle-ci au pont Hue, hors les ampoules LIFX se connectent en WiFi et les périphériques Hue utilisent le Zigbee. De plus la façon de communiquer entre périphériques Hue est propriétaire, le système n’est ouvert qu’à partir du pont Hue vers l’extérieur.

  • Répondre Girlsoda |

    Ok, merci de toutes tes réponses, ça m’a permis de comprendre les modifications que je fesait, et sur quoi ça agissait. Encore merci.

    Je suis également en possession d’un bouton connecter « flic » et j’ai vu qu’ il ete possible d’envoyer des requête http avec, est ce qu’il existerait des requêtes permettant d’éteindre et d’allumer un Raspberry ?

    • Répondre Benoit |

      Il est en effet possible d’éteindre le Raspberry à l’aide d’une requête HTTP. Néanmoins, le Raspberry Pi (quelque soit la version) est dépourvu de wake on lan ci qui ne permet pas de le démarrer à distance.

  • Répondre Steve |

    Bonsoir, je me penche sur le sujet demain. Je viens de recevoir mon lightberry HD ce matin.

    Je viens de regarder votre lien, mais je ne vois aucun fichier qui se nomme Hyperion sur le site de lightberry . Quel image faut il prendre du coup? OSMC ou OpenElec?

    Merci

  • Répondre Steve |

    Merci bien, je continue l’essai ce week-end car je n’ai pas eu le temps de faire cela ce week-end. A voir si cela est pareil pour le kit Lightberry 4K que j’ai pris.

  • Répondre Steve |

    Bonjour, tout d’abord, j’ai enfin installé mon Lightberry HD. Celui ci fonctionne parfaitement avec le raspberry. Par contre, je n’ai pas réussi à paramétrer HYPERION pour que le Lightberry fonctionne avec le HDMI premium.

    Et pour les Philips HUE, idem, avec un ami, il a paramétré le tout, mais cela ne marche pas à la fin. Il détecte bien les ampoules , mais sans les allumer.

    Nous allons réessayer ce week-end.

  • Répondre Steve |

    Bonjour, je reviens pour informer que le Lightberry 4k fonctionne enfin parfaitement (avec OpenElec 6.0.0) , il a été reconnu directement sur hyperion. J’avais du mal au début car je tournais avec le 6.0.3 qui m’apportait que des dysfonctionnements.

    L’avantage du 6.0.0 pour moi évite les lignes de commandes pour la détection.

    Du coup, mes lampes HUE ne fonctionnent toujours pas avec le RPi2 … Dommage

    • Répondre Manu |

      C’est sympa de revenir donner des nouvelles. Content que ça fonctionne correctement. J’en déduis que le kit HDMI Premium fonctionne également ? Donc « l’ambilight » fonctionne alors aussi sur des sources externes au raspberry ?
      Concernant les Hue quel est le point bloquant ? Est-ce qu’un essai a été fait avec les Hue comme unique device dans hyperion (sans Lightberry 4k) ?

  • Répondre Steve |

    Désolé , je n’étais pas revenu sur ton site répondre à la question.

    Alors oui, le kit Lighberry 4K fonctionne parfaitement, et cela est quasiment du Plug and play pour le coup, et ceux, avec le « media center » du Raspberry, mais aussi , avec n’importe quel source HDMI. Aucune ligne de commande ou autres.

    Alors mon pote me disait qu’il arrivait bien à identifier les ampoules, mais pas à les faire fonctionner. Je ne me suis pas pencher sur le sujet depuis , et lui n’a plus le temps non plus …

    Dommage, car j’ai une ampoule HUE de chaque coté de la TV qui « dorment » … Enfin, elle ne servent pas qu’à l’ambilight non plus.

    Et non, pour le coup, nous n’avons pas essayer uniquement les HUE comme seule devise dans Hyperion.
    Il se peut que maintenant, en ayant mis la version 6.0.0 , cela fonctionnerait parfaitement du premier coup, mais bon …

  • Répondre Steve |

    Dernière question, je lis pas mal de film en 3D (20GO) via le Media Center , et il arrive qu’Open Elec m’empêche de lire, et se mette à mettre la vidéo en cache (avec un message qui m’informe que le cache vidéo est plein) mais comment faire pour l’effacer ce fameux cache ?

    • Répondre Manu |

      Le Raspberry montre ses limites sur certains type de fichiers (1080p avec un gros débit, encodage x265…). Je pense fortement que ce type de fichier (20Go en 3D) correspond malheureusement à ce type de fichier. Le Raspberry n’arrivant pas à lire la vidéo en temps réel il tente de la précharger (donc la met en cache) mais la taille du cache n’est pas suffisante vu le volume total du fichier (20Go). Un cache « s’efface » tout seul, si un message indiquant qu’il est plein apparait alors il faut soit augmenter sa taille, soit supprimer totalement l’utilisation du cache. En tentant différents paramètres il sera éventuellement possible de lire ce fichier mais je doute fortement que ce soit de manière totalement fluide (sans saccades).
      Des informations sur la configuration du cache sur Kodi sont disponibles sur le Wiki officiel : http://kodi.wiki/view/HOW-TO:Modify_the_video_cache
      Il ne faut pas oublié la puissance limitée de la Raspberry Pi, même pour le modèle B 3. Pour un usage exigeant en tant que médiacenter il est plus judicieux de migrer vers une machine Intel NUC ou équivalent.

  • Répondre Tomas |

    bonjour et merci pour cet article bien détaillé,

    quand je vais sur le CLIP API Debugger, j’ai l’erreur suivante :

    [
    {
    « error »: {
    « type »: 1,
    « address »: « / »,
    « description »: « unauthorized user »
    }
    }
    ]

    pouvez-vous m’aider ?

    merci

    • Répondre Manu |

      Le pont Hue a été mis à jour depuis la publication de ce tutoriel. Maintenant le « username » est généré directement par le pont, il faut donc simplement envoyer la requête POST avec uniquement le « devicetype » qui correspond à la description du périphérique. Le « username » généré sera à utiliser à la place de « newdevelopper ».

  • Répondre gout |

    Bonjour,
    Merci pour votre partage cela m’est grandement utile !
    Cependant je n’arrive toujours pas a faire fonctionner ma lampe HUE avec mon raspberry 🙁
    j’essaie de chercher mais rien a faire je ne trouve pas… Si vous vouliez bien m’aider je vous en remercierai énormément car ça fait plusieurs jours que j’essaie mais sans succès.

    J’ai créé un user pour le pontdes lampes HUE et rajouté lID de ma lampe (3) dans le fichier de config.

    j’ai installé OSMC puis Hyperion et voici le retour que j’ai quand je fait « get log » sur hypercon :

    ssh in: Sep 19 21:26:47 osmc hyperiond[280]: Hyperion Ambilight Deamon (280)
    ssh in: Sep 19 21:26:47 osmc hyperiond[280]: Version : V1.03.2 (brindosch-99d9396/d3713a8-1469452981
    ssh in: Sep 19 21:26:47 osmc hyperiond[280]: Build Time: Jul 25 2016 06:54:40
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: INFO: Selected configuration file: /etc/hyperion/hyperion.config.json
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: HYPERION INFO: ColorTransform 'default' => [0; 49]
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: HYPERION INFO: ColorCorrection 'default' => [0; 49]
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: HYPERION INFO: ColorAdjustment 'default' => [0; 49]
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: LEDDEVICE INFO: configuration:
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: {
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: "colorOrder" : "rgb",
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: "lightIds" : [ 3 ],
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: "name" : "MyHyperionConfig",
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: "output" : "192.168.1.36",
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: "switchOffOnBlack" : true,
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: "transitiontime" : 1,
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: "type" : "philipshue",
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: "username" : "49vSCHfaJoNapPjVHoUJNNAoXHnG9fi4Wvj07LBt"
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: }
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: INFO: Creating linear smoothing
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: HYPERION (CS) INFO: Created linear-smoothing(interval_ms=50;settlingTime_ms=200;updateDelay=0
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: EFFECTENGINE INFO: 27 effects loaded from directory /usr/share/hyperion/effects
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: EFFECTENGINE INFO: Initializing Python interpreter
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: INFO: Hyperion started and initialised
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: INFO: Kodi checker created and started
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: INFO: Json server created and started on port 19444
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: INFO: Proto server created and started on port 19445
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: DISPMANXGRABBER INFO: Display opened with resolution: 1920x1080
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: BLACKBORDER INFO: threshold set to 0 (0)
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: BLACKBORDER INFO: mode:default
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: INFO: Frame grabber created and started
    ssh in: Sep 19 21:26:48 osmc hyperiond[280]: KODICHECK ERROR: Kodi Connection error (0)
    ssh in: Sep 19 21:26:49 osmc hyperiond[280]: BORDER SWITCH REQUIRED!!
    ssh in: Sep 19 21:26:49 osmc hyperiond[280]: CURRENT BORDER TYPE: unknown=0 hor.size=0 vert.size=0
    ssh in: Sep 19 21:26:49 osmc hyperiond[280]: terminate called after throwing an instance of 'std::runtime_error'
    ssh in: Sep 19 21:26:49 osmc hyperiond[280]: what(): No lights found at http://192.168.1.36/api/49vSCHfaJoNapPjVHoUJNNAoXHnG9fi4Wvj07LBt/lights
    ssh in: Sep 19 21:26:49 osmc systemd[1]: hyperion.service: main process exited, code=killed, status=6/ABRT
    ssh in: Sep 19 21:26:49 osmc systemd[1]: Unit hyperion.service entered failed state.

    Avez vous des idées ?
    Merci par avance

  • Répondre gout |

    Juste comme précision,
    J’arrive a contrôler ma lampe avec l’API developer de HUE et je suis sous OSMC*
    Merci d’avance

    • Répondre Manu |

      On va essayer de trouver le soucis ensemble, même si je ne promet rien.
      Est-il possible d’avoir le fichier de configuration utilisé ?

  • Répondre Gout |

    Après avoir relu les commentaires de votre tuto, j’ai trouvé mon problème. Dans mon fichier de configuration j’avais 40 leds de configurées et comme je donnais dans la configuration qu’une lampe hue je pense que hyperion comprenait pas et s’arrêtait.

    Merci pour votre tuto car c’est grave à lui que j’ai compris !

    Il me reste plus qu’a paramétrer les deux autres lampes maintenant.

    Par contre j’ai deux questions : savez vous s’il est possible de brancher des leds derrière la TV en plus des lampes hue ? À contrôler avec le même hyperion, ou installer un deuxième hyperion qui contrôlerait les leds.

    Autre question , savez vous s’il est possible de créer un bouton pour les lampes hue ( en connection avec le raspberry ou avec un module es8266) pou controler les lampes sans passer par un smartphone ? Dans le but d’intégrer le module dans un interrupteur classique afind d’avoir le même design d’interrupteur dans toute la maison. Ou bien de créer un scénario :quand lampe 1 est on (allumage a la mise sous tensions) alors alle la lampe 2 . Et si lampe 1 off alors eteond lampe 2.

    Merci encore pour votre partage !

    • Répondre Manu |

      C’était bien cette erreur que j’envisageai. Le cas de la configuration des Hue est particulier par rapport aux rubans de LEDs qui sont plus communément utilisé.
      Concernant le lancement de deux instances d’Hyperion, c’est en effet possible mais je n’ai jamais testé. Comme je l’ai indiqué à Girlsoda précédemment, les informations se trouvent sur le wiki officiel de Hyperion.
      Je ne connais pas le module es8266 donc il va m’être difficile de donner plus d’informations. Pour avoir un interrupteur capable de piloter les Hue, le plus simple à mettre en place sont les équipements officiels : le Hue-tap ou le switch dimmer. Pour conserver le design d’un interrupteur classique vous pouvez installer un module Z-Wave qui déclenchera un scénario si vous disposez déjà d’une installation domotique compatible. Sinon il est possible de contrôler l’installation Hue par des requêtes HTTP (via un script par exemple), ce que le module es8266 est peut-être capable.
      J’ai personnellement « mappé » un bouton de la télécommande de ma TV CEC pour contrôler la lampe de mon salon. Quand je n’utilise pas Hyperion cela me permet de diminuer de 50% la luminosité de la pièce pour créer une atmosphère reposante et agréable pour le visionnage de films/séries. Un nouvel appui sur le bouton repasse la lumière à 100%.
      Les lampes Hue ne fournissent pas réellement de « retour d’état ». Pour connaitre leur statut (allumé, éteins…) il faut régulièrement les interroger ce qui complique la création d’un scénario automatique, mais cette solution n’est pas impossible. Il faudra trouver un délai acceptable entre chaque requête d’interrogation d’état sans surcharger inutilement le bridge Hue.

  • Répondre Nephrite |

    Bonjour

    Alors je me presente Nephrite adepte des kits DYI Ambilght mais pour ca un coup de Google lol

    Donc voila je viens d acquerir un kit de demarrage Hue GU10 et me suis dit tiens et si je branchais le tout sur mon RPI

    Alors j ai un peu galeré mais au bout de 2h j ai enfin trouvé mon erreur (satané « , »)

    Donc ca fonctionne tres bien et meme avec le grabber (viens de faire le test sur le sattelite lol)

    Par contre pour mettre les hue et le ruban led ws2801 la ca se complique

    apparement on ne peut pas compiler les 2 dans le meme fichier hyperion (j’ai essayer mais non lol)

    Donc si j ai bien compris il faut faire fonctionner 2 fichiers Hyperion en simultané

    Mais voila vu l heure et mon mal de crane (trop d anglais dans la figure pour aujourd hui) il y aurait pas quelqu’un pour me dire comment on fait

    Sachant que je suis sous Openelec et que je peux switcher plusieurs configs d Hyperion (LED WS2801 Avec grabber / WS 2801 sans grabber / Hue avec grabber / Extinction d Hyperion) avec la telecomande CEC de la tele

  • Répondre keov |

    Hello,

    De mon côté mon lightberry est fonctionnel depuis 2 ans, via mon rasp + openelec et mon kit hdmi.

    J’ai voulu tester via ce tuto avec mes 2 lightstrips, malheureusement je n’ai que le Rainbow swirl fast du boot.

    Ensuite mes lightstrips s’éteignent puis se rallument avec leur lumière de base.

    Vous avez une piste?

    Merci

  • Répondre keov |

    Re Hello,

    J’ai rien dis… Je n’avais pas remplacé la partie frame grabber par la partie qui correspond au mien….

    C’est rectifié et ça marche, plus qu’à faire fonctionner 2 instances d’hyperion en même temps

  • Répondre Nephrite |

    @keov

    Quand tu arriveras à faire fonctionner 2 instances d hyperion je voidrais bien quelques explications car moi je n y arrive pas

    J ai un message d erreur dans un log qui me dit « core dump »

Laissez un commentaire