Page 1 sur 3
Retour d'Etat Freebox player
Publié : 19 janv. 2017, 20:17
par MisterT
Salut a tous
Je cherche a connaitre l'état de ma freebox player. Savoir si elle est allumée ou non et donc permettre de déclencher l'allumage de lumière.
Plusieurs façon possible pour savoir si la freebox player est allumée:
- Par le ping de la télé si celle ci est allumée par la freebox player (cette méthode j'y arrive)
- Par la détection du fichier device.xml (c'est cette méthode que je ne comprends pas)
J'ai trouvé le code ci dessous et j'ai essayé de l'adapté dans un script_time.lua avec un device virtuel "Freebox player"mais cela n'est pas concluant
https://www.domotique-fibaro.fr/topic/8 ... %A2%C2%BB/
Code : Tout sélectionner
local HC2 = Net.FHttp('192.168.1.110', 54243);
local result, status, errorCode = HC2:GET("/device.xml");
if errorCode == 0 then
if tonumber(status) == 200 then
fibaro:debug('Status: ON')
else
fibaro:debug('Status: OFF or In Standby Mode')
end
else
fibaro:debug('Connection refused')
end
mon code en lua
Code : Tout sélectionner
commandArray = {}
local Domoticz = Net.FHttp('192.168.1.14', 54243);
local result, status, errorCode = Domoticz:GET("/device.xml");
if errorCode == 0 then
if tonumber(status) == 200 then
commandArray['Freebox player']='On'
else
commandArray['Freebox player']='Off'
end
else
commandArray['Freebox player']='Off'
end
return commandArray
Plusieurs questions
- Est ce qu'une adaptation est possible entre Home center 2 et domoticz
-l'adresse du local HC2 correspond a la box domotique ou au freebox player?
Un petit coup de main s'il vous plait
Re: Retour d'Etat Freebox player
Publié : 19 janv. 2017, 22:34
par jay
Hello,
J'utilise la même méthode du XML pour vérifier si le player est allumé ou non.
Cependant comme je ne suis pas top niveau dev en lua je l'ai fais en bash mais le principe reste le même.
Dans leur script HC2 correspond à l'ip du freebox player.
Re: Retour d'Etat Freebox player
Publié : 19 janv. 2017, 22:38
par lestatcrog
je viens de faire un test pour voir le retour du freebox player par un curl :
Curl IP_FreeboxPlayer:54243/device.xml
Si allumé : ouverture du fichier XML
Si coupé : Failed to connect
Pour tes questions :
L'adresse est bien celle du freebox player
et
Code : Tout sélectionner
local Domoticz = Net.FHttp('192.168.1.14', 54243);
local result, status, errorCode = Domoticz:GET("/device.xml");
je pense que c'est du code spécifique HC2
Re: Retour d'Etat Freebox player
Publié : 19 janv. 2017, 23:29
par MisterT
Merci a Jay et lestatcrog pour ces retours
Pour Jay, peux tu mettre a dispo ton code en bash pour comprendre.Comment fais tu pour faire basculer un device virtuel sans auto check lua)
Pour lestatcrog, on pourrait traduire le code en lua par
Code : Tout sélectionner
commandArray = {}
if Curl 192.168.1.14:54243/device.xml = "true" then
commandArray['Freebox player']='On'
else
commandArray['Freebox player']='Off'
end
return commandArray
Merci pour vos futures réponses
Re: Retour d'Etat Freebox player
Publié : 19 janv. 2017, 23:46
par jay
Pas de problème voila un bout de mon script bash avec le check freebox, ça fait partie d'un gros script qui me permet de déterminer s'il y a une présence chez moi, vu que je n'ai pas encore les beacons :
#SI ON VEUT FREE
status=`curl -s 'http://'$checker':54243/device.xml' | grep -oP '(?<=<modelDescription>).*?(?=</modelDescription>)'`
if [ "$status" = "Freebox UPnP Renderer" ]
then
current_Status="On"
else
current_Status="Off"
fi
Je ne check pas en fonction du code erreur de curl, mais en fonction du retour d'un GREP sur la page device.xml, si la freebox player est allumé, je cherche avec grep dans la page le continu entre les deux balises <modelDescription> et si le player n'est pas allumé alors mon grep me sortira une variable vide.
Plus loin dans mon script, je mets à jour le devices freebox sur domoticz, en méthode classique avec curl :
Je ne vois pas ce que tu veux dire avec l'auto check lua. Je suis vraiment pas compétent dans ce langage
A dispo
Re: Retour d'Etat Freebox player
Publié : 20 janv. 2017, 12:55
par MisterT
Salut merci pour ton retour
Si j'ai bien compris tu cherches un mot dans le fichier et si tu le trouves tu bascules le device freebox player sur On et si tu as du vide tu bascules sur Off.
J'ai donc d'autres questions
- Si je copie ces codes et remplace suivant mes ip et idx aurais je un retour concluant ?
- Ou mets tu ton fichier bash dans domoticz (Sur un device.... ) pour qu'il soit exécuté ?
Re: Retour d'Etat Freebox player
Publié : 20 janv. 2017, 13:33
par jay
MisterT a écrit :Si j'ai bien compris tu cherches un mot dans le fichier et si tu le trouves tu bascules le device freebox player sur On et si tu as du vide tu bascules sur Off.
Oui c'est bien ça.
MisterT a écrit :Si je copie ces codes et remplace suivant mes ip et idx aurais je un retour concluant ?
Oui tu peux le copier coller dans un fichier genre check_Freebox.sh
chmod +x check_Freebox.sh (pour le rendre executable)
pour tester le script tu fais un :
./check_Freebox.sh
MisterT a écrit :- Ou mets tu ton fichier bash dans domoticz (Sur un device.... ) pour qu'il soit exécuté ?
Une fois ton script fonctionnel, il faut que le raspberry l'executre toute les x secondes ou minutes (en fonction de tes besoin)
Pour planifier l'execution de ton script :
Dans le fichier qui s"ouvre tu rajoutes cette ligne à la in du fichier :
Code : Tout sélectionner
*/2 * * * * /home/pi/CHEMAIN_DE_TON_SCRIPT/check_Freebox.sh >/dev/null 2>&1
Si tu es avec l'éditeur nano Tu enregistres la nouvelle crontab avec la combinaison de touche "CTRL + O" et tu quittes avec "CTRL + X"
Dans mon exemple ici, le script se lance toutes les deux minutes, mais tu peux changer en modifiant le début de la ligne avant /home/, tu trouveras ici un générateur pour la crontab en fonction de ce que tu as besoin
http://www.crontab-generator.org/
@Dispo
Re: Retour d'Etat Freebox player
Publié : 21 janv. 2017, 16:04
par MisterT
Salut me revoila
Je viens de creer le script sh puis je l'ai passé en executable et enfin le crontab et......................tada c'est nickel tout fonctionne.
Juste pour ma connaissance, a quoi correspond dans le crontab
Code : Tout sélectionner
*/2 * * * * /home/pi/CHEMAIN_DE_TON_SCRIPT/check_Freebox.sh >/dev/null 2>&1
sinon pour ceux que cela intéresse le code au complet. Remplacer Checker, idx et xxx.xxx.x.xx:xxxx par vos données
Code : Tout sélectionner
#!/bin/bash
#SI ON VEUT FREE
checker="192.168.1.14"
idx="119"
status=`curl -s 'http://'$checker':54243/device.xml' | grep -oP '(?<=<modelDescription>).*?(?=</modelDescription>)'`
if [ "$status" = "Freebox UPnP Renderer" ]
then
current_Status="On"
else
current_Status="Off"
fi
if [ $current_Status = 'On' ]
then
url="http://xxx.xxx.x.xx:xxxx/json.htm?type=command¶m=switchlight&idx="$idx"&switchcmd=On"
curl $url
else
url="http://xxx.xxx.x.xx:xxxx/json.htm?type=command¶m=switchlight&idx="$idx"&switchcmd=Off"
curl $url
fi
Merci encore a Jay pour ces explications détaillées.Voila ici la preuve dun bon forum d'entraide

Re: Retour d'Etat Freebox player
Publié : 22 janv. 2017, 10:52
par lestatcrog
Petite Variante de ton script pour ne pas avoir des petits log toutes les 2 minutes, Change le statut si besoin uniquement
Code : Tout sélectionner
#!/bin/bash
#SI ON VEUT FREE
checker="IP_FreeboxPlayer"
# Domoticz server
DOMOTICZ_SERVER="IpDomoticz:Port"
idx="155"
status=`curl -s 'http://'$checker':54243/device.xml' | grep -oP '(?<=<modelDescription>).*?(?=</modelDescription>)'`
if [ "$status" = "Freebox UPnP Renderer" ]
then
current_Status="On"
else
current_Status="Off"
fi
result=$(curl -s "http://$DOMOTICZ_SERVER/json.htm?type=devices&rid=$idx"| jq -r .result[].Status)
if [ $result != $current_Status ]; then
curl --silent -s -i -H "Accept: application/json" "http://$DOMOTICZ_SERVER/json.htm?type=command¶m=switchlight&idx=$idx&switchcmd=$current_Status"
fi
Re: Retour d'Etat Freebox player
Publié : 22 janv. 2017, 14:22
par MisterT
Salut
J'ai testé le code et j'ai deux erreurs:
-en ligne 16 la commande jq n'est pas reconnue
-en ligne 17 un problème de ponctuations, signes
si possibilité de corriger
