I. Présentation
Nous allons voir comment récupérer dans Jeedom les informations de notre serveur Plex. En l’occurrence ici ce qui nous intéresse (enfin moi surtout 😛 ), c’est de savoir si un film et en lecture ou en pause afin de réduire la luminosité ou l’augmenter automatiquement.
II. Pré-requis
Pour cette méthode il faut quelques pré-requis et dans notre cas débourser de l’argent.
- Dans un premier temps, il nous faut acheter un Plex pass
- Dans un second temps, acheter le plugin Http Remote Event (4€)
Le Plex pass permettra de débloquer une fonctionnalité nécessaire à notre scénario. Personnellement j’ai pris le pass à vie (très vite rentabilisé). Le plugin servira à recevoir les informations transmisse par Plex.
III. Plugin Http Remote Event
Je vous passe l’installation depuis le market, je pense que je l’ai assez montré 😀
Une fois votre plugin installé et activé on peut commencer sa configuration.
Le plugin fourni une url qu’il faudra copier dans Plex.
IV. Plex
Prenons l’url précédente: http:///core/api/jeeApi.php?apikey=XXXXXXXXXXX&type=httpRemoteEvent&eqId=63&payload=<payloadValue>
Il va falloir la transformer très légèrement. J’ai volontairement pas communiquer ma clé api –> remplacé par les XXXX
Il manque une information importante dans l’url, c’est l’adresse de votre Jeedom.
- Avant: http:///core/api/jeeApi.php?apikey=XXXXXXXXXXX&type=httpRemoteEvent&eqId=63&payload=<payloadValue>
- Aprés: http://IP_JEEDOM/core/api/jeeApi.php?apikey=XXXXXXXXXXX&type=httpRemoteEvent&eqId=63&payload=<payloadValue>
Maintenant rendez-vous dans votre compte Plex pour aller chercher le menu Webhook.
V. Scénario
Retour dans Jeedom, où l’on va créer un scénario afin de traiter les informations fournies par Plex au plugin http remote event.
Dans l’onglet Scénario on va ajouter un bloc de type code.
Dans ce bloc code nous allons mettre le code suivant:
Merci à Shyrka973 pour sont post sur le forum
// On récupère le payload
$cmd = cmd::byString("#[Multimédia][PlexRomain][Payload]#");
$postdata = $cmd->execCmd();
// On le décode
$postdata = utf8_encode($postdata);
$scenario->setLog('PostData :'.$postdata);
$results = json_decode($postdata);
// On récupère l'événement déclencheur: media.play, media.pause, media.stop, ...
$event = $results->event;
$scenario->setLog('Event: :'.$event);
$scenario->setData('PlexEvent', $event);
// On récupère le lecteur
$player = $results->Player->uuid;
$scenario->setLog('Player : '.$player);
$scenario->setData('PlexPlayer', $player);
En rouge partie à modifier: correspond à la case éventement dans notre scénario.
Nous nous retrouvons avec deux variables PlexEvent et PlexPlayer
VI. Test
Maintenant vous pouvez lancer un film dans Plex, celui-ci envoi ses informations à Jeedom récupéré par le plugin Http Remote Event et traiter dans notre scénario.
Dans le log, nous retrouvons:
- le PostData qui correpond a ce qu’envoi Plex, il s’agit d’un XML
- La variable Event –> correspondant à la variable PlexEvent
- La variable Player –> correspondant à la variable PlexPlayer
Vous pouvez également retouver les variable dans en cliquant sur Variable en haut du scénario.
Nous pouvons voir que nous avons donc l’état de la vidéo play, stop ou pause et sur quel type de matériel est lancé la vidéo. Ainsi vous pouvez continuer votre scénario pour traiter les variable et faire diminuer la lumière lorsque la vidéo est en lecture uniquement lancé sur le media PC, car si vous lancer une vidéo sur votre téléphone dans le metro, ça ne sert à rien de baisser la luminosité chez vous 😀
Voici un exemple :
Bonjour, que fait de plus votre solution que ce lien : http://bozothegeek.blogspot.com/2017/03/domotique-script-pour-plex.html ?
Bonjour,
la solution que je présente permet d’utiliser une fonction de plex en version premium qui pour moi est du coup plus simple.
Mais il n’existe pas qu’une solution, à vous de voir/tester