je me lance donc pour ceux que ca intéresserait dans un petit tuto sur comment lancer des actions sur la eedomus en fonction des actions effectués sur votre plex.
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 certain d'entre vous veulent apporter la pierre à l'edifice ca 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écéssaire 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
referer vous à l apage 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érents action
je ne detaillerai 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 creation de la scéne dans l'eedomus et sa configuration
II) décrire la configuration de ceci dans plexpy
III) Expliqué le script pour si vous souhaitez le modifier
le script que je vous livre ici est fonctionnel, mais c'est une ebauche, 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 Scene, et comme rôle j'ai mis éclairage, mais vous pouvez adapter.
il faut ensuite créer 4 etats par Zone que vous voulez piloter avec cette scene, pour ma part j'ai deux zones qui correspondent à mes deux chromecast, mon salon et mon home cinema, j'ai donc créé des etats Salon_Play, Salon_Stop, Salon_Resume, Salon_Pause, et pareil pour le home cinema, ca donne ca :
je vous laisse définir les actions à associer pour chacunes des actions.
n'oublier pas de noter l'ID de votre scéne pour le controle par l'API qui se trouve ici :
voila la partie eedomus est prête , y'a plus qu'a voir la partie plexpy
II) 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 ca, j'ai décidé de faire le script en python, comme il est deja installé pour plexpy, rien à rajouter.
Pour ma part j'ai donc mis ce script dans ma dropbox, comme ca quand je travaille dessus de mon mac ca 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 selectionner 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 selectionner 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 fenetre suivante apparaitra, choisissez les actions pour lesquels vous souhaitez que vos notification soient envoyés, 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 categorie 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 recupérer ce qu'il lui faut pour faire ce qu'il a à faire, vous pouvez biensur 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 redemarrage, et voila vous etes pas mal, cette dernier option permet de rendez la detection des actions presque instantanné, alors qu'en temps normal vous etes obligez d'attendre que l'evenement soit detecté, avec une verif toutes les 30-50s ce qui peut vite etre long.....
nous allons maintenant parler un peu du script histoire que vous comprenniez vite fait ce qu'il faut et que vous puissiez le modifier si besoin.
I) le script
ce script est vraiment sans pretention, il y a surement des maniéres bcp plus de elegante et optimiser de le faire, j'y connais pas grand chose en python, j'ai fait un plus simple.
on recupere les arguments dans l'ordre ou on les a donne 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
ca 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 ca 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 bvotre chromecast de salon pour faire des filtrages
CHROMECAST_HOME_CINEMA_IP = '192.168.1.YY' # mettez ici l'adresse de ip de bvotre 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 our l'authentification sur l'api
l'ID de votre scéne plex créé sur l'eedomus avec les etats
l'id des lampes a controler, moi j'ai deux salles, salon et home cinema, donc j'ai 2 ID, pour l'instant il ne me serve a rien mais je pense les utiliser pour faire des controles avant, genre si c'est deja allumé on fait rien, enfin en gros je pense utiliser leur etat 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'apres midi ca sert a rien d'allumer la lumiere, on va donc recuperer 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 lit 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 declencher les bonne action en fonction de.
si vous avez des question je detaillerai biensur, je vais continuer à mettre à jour le script, et je posterai les mises à jours ici, et certain d'entre vous sont interessé je tenterai de repondre à vos questions avec mes maigres connaissance
Changelog :
V0.1 : creation du topic
V0.2 : MAJ du topic avec mise à jours du script, et rajout du pre-requis concernant le module requests