Edit : j'ai repris l'article que j'ai fait sur le forum eedomus,
http://forum.eedomus.com/viewtopic.php? ... 772#p52772
Mais il est a complété, surement bon nombre d'entre vous me poserons des questions que ne me pose pas coté eedomus et je le conçois, je vais donc compléter cet article dans les prochains jours.
Bonjour à tous,
Je me lance donc pour ceux que ça intéresserait dans un petit tuto sur comment lancer des actions sur la eedomus en fonction des actions effectués sur votre plex.
Et également la commande des éléments de votre home cinéma (vidéo projecteur, écran, ampli, lecteur BR, etc.. )
Alors je ne fais pas de pub, je partage simplement avec qui voudra bien, ce que j'ai fait n'est surement pas parfait mais si certains d'entre vous veulent apporter la pierre à l'édifice ça sera avec grand plaisir.
Alors pour ce faire il faut / j'ai eu besoin de :
- une eedomus
- un pc ou serveur
- un chromecast
- que le pc / serveur qui fasse tourner plexpy soit dans le même réseau que l'eedomus
Le pc ou serveur dans mon cas fait tourner
- plex media server (serveur officiel plex)
- plexpy, un module non officiel qui permet justement d'intercepter les actions de plex et de lancer des scripts custom, j'ai décidé de les faire en python puisque python était nécessaire pour installer plexpy autant ne pas multiplier les trucs et utiliser ce qui est déjà la.
- python 2.7 d'installé.
- pip d'installer pour python il faut installer le module requests
référer vous à la page suivante :
https://stackoverflow.com/questions/4750806/how-do-i-install-pip-on-windows
pour installer pip il faut faire dans un CMD un :
pip install requests
Coté eedomus j'ai utilisé :
- scène qui contient les différentes actions.
Je ne détaillerai pas l'installation de plex, ni de plexpy, tout est déjà expliqué en long large et en travers.
Je vais donc
I) décrire la création de la scène dans l'eedomus et sa configuration
II) contrôle des appareils HC
III) décrire la configuration de ceci dans plexpy
IV) Expliqué le script pour si vous souhaitez le modifier
Le script que je vous livre ici est fonctionnel, mais c'est une ébauche, il faut encore faire plein de chose.
- Code: Tout sélectionner
## script plex_eedomus.py ##
## Import des librairi ##
import sys
import requests
## import des Arguments ##
CLIENT_IP = sys.argv[1] # adresse IP du client
CLIENT_TYPE = sys.argv[2] # type de client
CLIENT_PLATFORM = sys.argv[3] # plateforme de lecture du client
CLIENT_ACTION = sys.argv[4] # Action declencheur, Play, Pause, Stop, Resume
## Configuration des variables ##
EEDOMUS_IP = '192.168.1.XX' #mettez l'adresse IP local de votre eedomus
EEDOMUS_API_USER = 'XXXXXXX' # mettez ici le user API de votre eedomus
EEDOMUS_API_PASSWORD = 'yyyyyyyyyyyyyyyy' # mettez ici le password API de votre eedomus
EEDOMUS_PLEX_SCENE_ID = 'XXXXXX' # mettez ici le code API de l'actionneur
EEDOMUS_LIGHT_SALON_ID = 'XXXXXX' # mettez ici le code API de votre lumiere de salon
EEDOMUS_LIGHT_HOME_CINEMA_ID = 'XXXXXX' # mettez ici le code API de votre lumiere de home cinema
EEDOMUS_BRIGHTNESS_SALON_ID = 'XXXXXX' # mettez ici le code API de votre capteur de luminosite du salon afin de gere la la gestion des lumieres ou non.
CHROMECAST_SALON_IP = '192.168.1.XX' # mettez ici l'adresse de ip de bvotre chromecast de salon pour faire des filtrages
CHROMECAST_HOME_CINEMA_IP = '192.168.1.XX' # mettez ici l'adresse de ip de bvotre chromecast de home cinema pour faire des filtrages
##pour la partie home cinema
if CLIENT_IP == CHROMECAST_HOME_CINEMA_IP and CLIENT_PLATFORM == "Chromecast" :
## action en fonction du declencheur
if CLIENT_ACTION == 'Play' :
#on lance la scene HC_Play du periph PlexPy Scene
#appel de l'url pour l'api local eedomus
Value_plex_action = "HC_Play"
elif CLIENT_ACTION == 'Pause' :
#on lance la scene HC_pause du periph PlexPy Scene
Value_plex_action = "HC_Pause"
elif CLIENT_ACTION == 'Resume' :
#on lance la scene HC_resume du periph PlexPy Scene
Value_plex_action = "HC_Resume"
elif CLIENT_ACTION == 'Stop' :
#on lance la scene HC_stop du periph PlexPy Scene
Value_plex_action = "HC_Stop"
EEDOMUS_URL = 'http://' + EEDOMUS_IP + '/api/set?action=periph.value&periph_id=' + EEDOMUS_PLEX_SCENE_ID + '&value=' + Value_plex_action + '&api_user=' + EEDOMUS_API_USER + '&api_secret=' + EEDOMUS_API_PASSWORD
print (EEDOMUS_URL)
requests.get(EEDOMUS_URL).json()
## pour la partie salon
elif CLIENT_IP == CHROMECAST_SALON_IP and CLIENT_PLATFORM == "Chromecast" :
## action en fonction du declencheur
if CLIENT_ACTION == 'Play' :
#on lance la scene HC_Play du periph PlexPy Scene
#appel de l'url pour l'api local eedomus
Value_plex_action = "Salon_Play"
elif CLIENT_ACTION == 'Pause' :
#on lance la scene HC_pause du periph PlexPy Scene
Value_plex_action = "Salon_Pause"
elif CLIENT_ACTION == 'Resume' :
#on lance la scene HC_resume du periph PlexPy Scene
Value_plex_action = "Salon_Resume"
elif CLIENT_ACTION == 'Stop' :
#on lance la scene HC_stop du periph PlexPy Scene
Value_plex_action = "Salon_Stop"
EEDOMUS_URL = 'http://' + EEDOMUS_IP + '/api/set?action=periph.value&periph_id=' + EEDOMUS_PLEX_SCENE_ID + '&value=' + Value_plex_action + '&api_user=' + EEDOMUS_API_USER + '&api_secret=' + EEDOMUS_API_PASSWORD
print (EEDOMUS_URL)
requests.get(EEDOMUS_URL).json()
I) configuration de l'eedomus
Pour cela il faut vous rendre dans configuration et faire ajouter un nouveau périphérique :

Après vous faite ajouter un autre type de périphérique

Et enfin vous choisissez Scène

Comme nom vous pouvez mettre Plex Scène, et comme rôle j'ai mis éclairage, mais vous pouvez adapter.

il faut ensuite créer 4 états par Zone que vous voulez piloter avec cette scène, pour ma part j'ai deux zones qui correspondent à mes deux chromecast, mon salon et mon home cinéma, j'ai donc créé des états Salon_Play, Salon_Stop, Salon_Resume, Salon_Pause, et pareil pour le home cinéma, ça donne ca :


Je vous laisse définir les actions à associer pour chacune des actions.
Pour ma part j'effectue des commandes sur mes éclairages en baissant, éteignant ou montant la luminosité.
N’oublier pas de noter l'ID de votre scène pour le contrôle par l'API qui se trouve ici :

voilà la partie eedomus est prête , y'a plus qu'a voir la partie plexpy
II) contrôle des appareils HC
Concernant mon matériel j'ai :
- un VP Sony HW45ES
- un écran Lumene showplace 270c avec commande infrarouge et radio (protocole propriétaire sinon c'est pas drôle)
- un ampli Denon 1909
- un lecteur Blu-ray Sony
Pour effectuer la commande j'ai utilisé un réseau wifi, un orvibo (unique infra rouge, mais nous pouvons maintenant utilise le broadlink all in one pro qui fait infrarouge et RF 433), et une télécommande de ce type :

le but est donc de créer des scènes pour automatiser tout ca.
On va voir maintenant la configuration de notre fameuse commande Infra Rouge.
Pour ma part j'utilise un orvibo all in one (pas la version pro, mon module ne fait que de l'infra rouge, pas de RF433, mais depuis peu la team eedomus à intégrer aux périphériques compatibles le orvibo allone pro qui a la même tête, mais fait en plus RF433.
Bref (je pars du principe que votre module est déjà connecté à votre wifi et prêt à faire la configuration) on va donc créer un nouveau périphérique dans l'eedomus, pour ce faire allez dans "configuration" en haut à droite, puis cliquer sur le gros bouton "Ajouter ou supprimer un périphérique", dans l'écran suivant on va sélectionner "Ajouter un autre type de périphérique"
et dans la list sélectionner Orvibo AllOne,

Entrer votre nom de périphérique ici pour moi "Contrôle home cinéma", l'adresse IP de celui-ci sur votre réseau (pour la trouver vous pouvez utiliser l'interface d'administration de votre box ) et son code unique... ça donne a peut près ca :

Le principe de ce périphérique de pouvoir apprendre de vos télécommande les signaux infrarouge émit et pouvoir les reproduire à volonté, j'ai donc créé plusieurs valeur, une par bouton de télécommande, par exemple bouton Monté pour l'écran, bouton descendre, Bouton pour sélectionner la source de l'ampli et donc l'allumer sur la bonne source, le bouton pour allumer le vidéo projecteur (et aussi l'éteindre par deux appuie successif), etc.. etc...

Ici on va donc faire ajouter, on copie l'url (http://localhost/script/?exec=orvibo.php&ORVIBO_IP=[VAR1]&ORVIBO_MAC=[VAR2]&button_id=[RAW_VALUE]&action=send) a chaque nouvelle valeur qu'on va créer et après on va appuyer sur "test" en bas, on effectue la séquence d'apprentissage, et après c'est partie.... On recommence à chaque touche que l'on souhaite enregistrer.
Et deuxième étape, la création des macros...

On va donc créer ici une macro par élément à commander, par exemple si je veux regarder un film sur ma platine, j'ai créé une macro démarrage Blu-ray qui va :
D’abord allumer le vidéo projecteur
Après descendre l'écran pendant que le VP chauffe
qui va allumer l'ampli en sélectionnant la source Blu-ray
et enfin j'allume la platine Blu-ray
Vous voyez qu'on peut aussi déterminer des temps de pause entre chaque action, à vous de voir comment vous voulez séquence votre macro.
Deuxième étape on va créer une scène qui s'appelle "préparation salle home cinéma"

Après on va y associer les actions :

Bon alors l'action Alarme maison général c'est un bug visuel... pour chaque composant correspond une macro spécifique, et j'ai rajouté en plus une macro pour ma caméra de surveillance qui passait du mode nuit à jour à chaque changement de luminosité et qui faisait CLAC CLAC à chaque fois... c'etait chiant du coup j'ai fait une macro avec l'API foscam qui désactiver la LED infrarouge de nuit et la réactive quand je ferme la salle.
Ici on va créer une valeur par mode désiré, il suffit de cliquer sur ajouter en bas, et dans la colonne "actions associées" on va sélectionner la macro associée pour chaque état.
Et enfin on va créer les règles de déclenchements pour lier tout ça à la télécommande

On va donc créer une règle par touche sur la télécommande, une règle ressemblera à ca :

En gros comme critère de déclenchement on aura l'appui d'un bouton de la télécommande du HC, et comme action on déclenche une action qu'on vient de définir juste au-dessus.
Et voilà à ce stade vous avez tout ce dont vous avez besoin pour contrôler votre home cinéma... on gère les appareils, la lumière, on est vraiment pas mal !!!
III) configuration de plexpy
Une fois votre plexpy installé, il va vous falloir définir un emplacement pour déposer votre/vos scripts en python, ou php ou ce qui est compatible avec plexpy, pour ma part et pour ne pas installer des choses uniquement pour ça, j'ai décidé de faire le script en python, comme il est déjà installé pour plexpy, rien à rajouter.
Pour ma part j'ai donc mis ce script dans ma Dropbox, comme ça quand je travaille dessus de mon mac ça synchronise directement sur mon pc ou il y a plexpy. Il se trouve pour moi donc dans
- Code: Tout sélectionner
C:\Users\killpilot\dropbox\plex_python
Cliquer maintenant sur setting en haut à droite, et dans le menu sélectionner Notification agent

Repéré la ligne "Script" et cliquer sur la petite roue dentée à droite au bout de la ligne

Insérer ici le chemin ou est stocké votre script, rafraichissez la page, et sélectionner pour les 4 premières action votre script dans la liste, vous devriez obtenir ceci :

Vous pouvez faire "save" en bas de la page.
Cliquer maintenant sur la cloche devant "script" la fenêtre suivante apparaitra, choisissez les actions pour lesquels vous souhaitez que vos notifications soient envoyées, ici Start, Resume, Pause, Stop

Vous pouvez faire "close" en bas une fois que c'est coché.
Cliquer maintenant sur notification dans le menu de gauche

Sélectionner les catégorie plex pour lesquels les notifications seront activées, moi j'ai pris film et série

Descendez maintenant tout en bas et dérouler la ligne "script"

Ajouter les éléments suivants :
- Code: Tout sélectionner
{ip_address} {player} {platform} {action}
C’est ce qui va permettre au python de récupérer ce qu'il lui faut pour faire ce qu'il a à faire, vous pouvez bien sur en rajouter, mais il faudra ajouter d'autres arguments dans le script. Vous pouvez maintenant cliquer sur "save"
Maintenant allez dans activity monitor

et cochez la case devant websocket, faite save en bas, effectuer le redémarrage, et voilà vous êtes pas mal, cette dernier option permet de rendez la détection des actions presque instantané, alors qu'en temps normal vous êtes obligez d'attendre que l'évènement soit détecté, avec une vérif. toutes les 30-50s ce qui peut vite être long.....

nous allons maintenant parler un peu du script histoire que vous compreniez vite fait ce qu'il faut et que vous puissiez le modifier si besoin.
IV) le script
Ce script est vraiment sans prétention, il y a surement des manières beaucoup plus élégante et optimiser de le faire, j'y connais pas grand-chose en python, j'ai fait un plus simple.
On récupère les arguments dans l'ordre ou on les a donnés au script
- Code: Tout sélectionner
CLIENT_IP = sys.argv[1] # adresse IP du client
CLIENT_TYPE = sys.argv[2] # type de client
CLIENT_PLATFORM = sys.argv[3] # plateforme de lecture du client
CLIENT_ACTION = sys.argv[4] # Action declencheur plex, Play, Pause, Stop, Resume, ou autre
Ça correspond au fameux
Donc on a la partie configuration au debut :
- Code: Tout sélectionner
{ip_address} {player} {platform} {action}
Si vous voulez rajouter des choses vous pouvez mais pensez a bien modifier les deux partie sinon ça ne marchera pas.
- Code: Tout sélectionner
## Configuration des variables ##
EEDOMUS_IP = '192.168.1.XX' #mettez l'adresse IP local de votre eedomus
EEDOMUS_API_USER = 'XXXXXXXX' # mettez ici le user API de votre eedomus
EEDOMUS_API_PASSWORD = 'YYYYYYYYYYYYYYYYYY' # mettez ici le password API de votre eedomus
EEDOMUS_PLEX_SCENE_ID = '123456' # mettez ici le code API de l'actionneur plex scene
EEDOMUS_LIGHT_SALON_ID = '123456' # mettez ici le code API de votre lumiere de salon
EEDOMUS_LIGHT_HOME_CINEMA_ID = '123456' # mettez ici le code API de votre lumiere de home cinema
EEDOMUS_BRIGHTNESS_SALON_ID = '123456' # mettez ici le code API de votre capteur de luminosite du salon afin de gere la la gestion des lumieres ou non.
CHROMECAST_SALON_IP = '192.168.1.XX' # mettez ici l'adresse de ip de votre chromecast de salon pour faire des filtrages
CHROMECAST_HOME_CINEMA_IP = '192.168.1.YY' # mettez ici l'adresse de ip de votre chromecast de home cinema pour faire des filtrages
Alors ici vous allez mettre vos IP local de eedomus pour les appel api
Votre API user/secret pour l'authentification sur l'api
l'ID de votre scène plex créé sur l'eedomus avec les états
l'id des lampes à contrôler, moi j'ai deux salles, salon et home cinéma, donc j'ai 2 ID, pour l'instant il ne me serve a rien mais je pense les utiliser pour faire des contrôles avant, genre si c'est déjà allumé on fait rien, enfin en gros je pense utiliser leur état pour faire des conditions d'action.
Pareil pour le BRIGHTNESS salon, c'est pour quand vous mettez lecture et qu'il est 15H de l'après-midi ça sert à rien d'allumer la lumière, on va donc récupérer la valeur de la luminosité et en fonction allumé ou pas.
Et enfin les IP de mes deux chromecast, le but est de lancer une action sur le salon quand je lis un film dans le salon, pas quand je suis au bureau le midi, du coup je m'en fou un peu de savoir que mon salon soit allumé. Bref l’IP et le type de plateforme me serve a distribuer les actions sur ma scène plex.
Et le reste bah c'est juste des tests pour déclencher les bonnes actions en fonction de.
Si vous avez des question je détaillerai bien sûr, je vais continuer à mettre à jour le script, et je posterai les mises à jours ici, et certains d'entre vous sont intéressé je tenterai de répondre à vos questions avec mes maigres connaissance

Changelog :
V0.1 : création du topic
V0.2 : MAJ du topic avec mise à jours du script, et rajout du prérequis concernant le module requests