statut de plex

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
staber
Messages : 79
Inscription : 21 mars 2016, 02:54

statut de plex

Message par staber »

Bonjour,

Je me suis inspiré d'autres post sur le forum anglais notamment pour faire un lien entre le statut de mon plex et certaines actions de domoticz.

Par exemple lorsque je met le film en pause ça allume la cuisine pour que je puisse allez chercher un thé sans me prendre la table :mrgreen:
et quand je refait play ça éteint la cuisine.

ça marche plutôt bien !

1) créer une variable utilisateur nommée plex

2) créer un script bash script_plex.sh :

Code : Tout sélectionner

#!/bin/bash
while [ 1 ]
do
plexuser="NOM_UTILISATEUR_PLEX"
domoticzvariablename="plex"
domoticzvariableIDX="IDX_VARIABLE_PLEX_DOMOTCZ"
plexstatus=$(curl -k -s 'https://IP_SERVEUR_PLEX:32400/status/sessions' | sed -n "/"$plexuser"/,/title/p")
if [[ $plexstatus == *"playing"* ]]
then
status="playing"
fi
if [[ $plexstatus == *"paused"* ]]
then
status="paused"
fi
if [[ $plexstatus != *"$plexuser"* ]]
then
status="idle"
fi
# Check existing status of variable in Domoticz
variablestate=$(curl -s "http://IP_DOMOTCZ:8080/json.htm?type=command&param=getuservariable&idx="$domoticzvariableIDX"" | grep "Value")
# Check if Plex status matches existing variable set in Domoticz
if [[ $variablestate != *"$status"* ]]
then
echo "Status changed: $status"
curl -s "http://IP_DOMOTCZ:8080/json.htm?type=command&param=updateuservariable&vname="$domoticzvariablename"&vtype=2&vvalue="$status"" 2>/dev/null 1>/dev/null
else
echo "Status in sync"
fi
sleep 1
done
4) rendre le script executable : sudo chmod +x script_plex.sh

6) avoir un script lua de variable : script_variable_plex.lua

Code : Tout sélectionner

-- script_variable_plex.lua

commandArray = {}

        if (uservariables["plex"] == 'paused' and otherdevices['Group Cuisine'] == 'Off') then
        commandArray['Group Cuisine']='On'
        end

        if (uservariables["plex"] == 'playing' and otherdevices['Group Cuisine'] == 'On') then
        commandArray['Group Cuisine']='Off'
        end

return commandArray
Lorsque le script est lancé, il scan le statut de plex et met à jour la variable si besoin. Lorsque la variable change le script lua s'exécute et la lumière s'allume!

Seul problème : ne n'aime pas trop l'idée d'avoir un script qui tourne tout la journée à bouffer des ressources du processeur.
je peux lancer le script par un crontab mais je ne sais pas comment le tuer...
Je dois pouvoir le lancer dans l'action ON d'un interrupteur de domoticz mais à nouveau comment l'arrêter ?

Est-ce qu'il y aurai un moyen de lancer le script bash à partir du moment ou la télé est allumé et de le tuer lorsqu'elle est éteinte ?
Comment le tuer ?
staber
Messages : 79
Inscription : 21 mars 2016, 02:54

Re: statut de plex

Message par staber »

peut être que l'on peu aussi modifier la boucle du script bash

Code : Tout sélectionner

while [ 1 ]
Pour avoir un :

Code : Tout sélectionner

while [ l'interrupteur X de domoticz est à on ]
Mais je ne sais pas comment faire
staber
Messages : 79
Inscription : 21 mars 2016, 02:54

Re: statut de plex

Message par staber »

Je me répond à moi même :
C'est peut-être pas très propre mais ça fonctionne :

le script se quitte tout seul lorsqu'un device passe à off :

Code : Tout sélectionner

#!/bin/bash
#récupère la valeur du dummy 224 dans domoticz
etattv=$(curl -s "http://192.168.1.101:8080/json.htm?type=devices&rid=224" | grep "Data")
#extrait les caractères de on ou of de la chaine Data
etattv=${etattv:19:2}

#faire la boucle tant que le dummy est a On
while [ $etattv == "On" ]
do
plexuser="staber"
domoticzvariablename="plex"
domoticzvariableIDX="3"
plexstatus=$(curl -k -s 'https://192.168.1.104:32400/status/sessions' | sed -n "/"$plexuser"/,/title/p")
if [[ $plexstatus == *"playing"* ]]
then
status="playing"
fi
if [[ $plexstatus == *"paused"* ]]
then
status="paused"
fi
if [[ $plexstatus != *"$plexuser"* ]]
then
status="idle"
fi
# Check existing status of variable in Domoticz
variablestate=$(curl -s "http://192.168.1.101:8080/json.htm?type=command&param=getuservariable&idx="$domoticzvariableIDX"" | grep "Value")
# Check if Plex status matches existing variable set in Domoticz
if [[ $variablestate != *"$status"* ]]
then
echo "Status changed: $status"
curl -s "http://192.168.1.101:8080/json.htm?type=command&param=updateuservariable&vname="$domoticzvariablename"&vtype=2&vvalue="$status"" 2>/dev/null 1>/dev/null
else
echo "Status in sync"
fi
sleep 1
#vérifie l'état de l activité pour sortir de la boucle le cas échant
etattv=$(curl -s "http://192.168.1.101:8080/json.htm?type=devices&rid=224" | grep "Data")
etattv=${etattv:19:2}
done
Le scrip fonctionne très bien et met donc a jour une variable utilisateur dans Domoticz.
J'ai ensuite un script_variable_plex.lua qui allume ou éteints les lumières de la cuisine en fonction de la valeur de la variable utilisateur :

Code : Tout sélectionner

commandArray = {}

        if (uservariables["plex"] == 'paused') then
        commandArray['Group Cuisine']='On'
        end

        if (uservariables["plex"] == 'playing') then
        commandArray['Group Cuisine']='Off'
        end

return commandArray
Le seul problème que j'ai actuellement :
si je lance le scrip moi meme avec ./plex_status.sh
Il tourne bien et met à jour la variable utilisateur
le script_variable_plex.lua se lance et fonctionne : les lumières s'allument

Par contre si je demande à Domoticz de lancer le script dans le "action on" du bouton :
le script se lance et met bien à jour la variable utilisateur
le script_variable_plex.lua s'execute (log domoticz) mais rien ne se passe : les lumières ne s'allument pas
staber
Messages : 79
Inscription : 21 mars 2016, 02:54

Re: statut de plex

Message par staber »

J'ai résolu mon problème en faisant un script : script_device_tv_on.lua
qui lance le script dès que la TV est allumé.
Je pense qu'en lançant le script par Action On Domoticz ne sortait pas du script et donc n'exécutait plus aucun autre script
msylvain79
Messages : 1
Inscription : 26 sept. 2017, 12:56

Re: statut de plex

Message par msylvain79 »

Bonjour Staber,

Je suis nouveau sur le forum en tant que membre mais sa fais déjà quelques mois que je vien y chercher des informations.

Je suis très intéressé par votre script pour plex mais je n'arrive pas à le faire fonctionner.

Le script bash je ne connais pas vraiment.

Pourriez-vous m'aider s.v.p.?
Répondre