Requête GET HTTP via script LUA

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 <\>.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Requête GET HTTP via script LUA

Message par vil1driver »

Aucun script ne poura récupérer une info que ton ampli ne peut fournir !
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
BenjaminV
Messages : 21
Inscription : 24 févr. 2015, 22:08

Re: Requête GET HTTP via script LUA

Message par BenjaminV »

vil1driver a écrit :Aucun script ne poura récupérer une info que ton ampli ne peut fournir !
Je précise qu'il ne s'agit pas d'un ampli mais d'un serveur sur lequel tourne Logitech Media Server (LMS). De nombreuses app mobiles existent pour commander chaque lecteur (un serveur contenant toutes les musiques et de nombreux lecteurs lisant les musiques sur le serveur). Des requêtes doivent être derrière car il y a des retours d'états donc la communication se fait forcément dans les deux sens ...
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: Requête GET HTTP via script LUA

Message par patrice »

Bsr

ben avec P0,P1?P2 tu peux jouer avec ton volume

Tiré de la page que tu citais en référence
http://10.0.1.201:9000/status.suffix?p0 ... &p3=param3

et dans le tableau plus bas on voit que
P0 P1 P2
mixer volume (0 .. 100)|(-100 .. +100) Adjust the volume as specified by p2 within the range 0 to 100. Prefix the number with a + or - to make the change relative.

donc
http://10.0.1.201:9000/status.suffix?p0 ... me1&p2=100

devrait assourdir ton voisinage pour les 10 prochaines années.
Bien sur mets ton ip et ton port à toi la dedans
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
BenjaminV
Messages : 21
Inscription : 24 févr. 2015, 22:08

Re: Requête GET HTTP via script LUA

Message par BenjaminV »

patrice a écrit :Bsr

ben avec P0,P1?P2 tu peux jouer avec ton volume

Tiré de la page que tu citais en référence
http://10.0.1.201:9000/status.suffix?p0 ... &p3=param3

et dans le tableau plus bas on voit que
P0 P1 P2
mixer volume (0 .. 100)|(-100 .. +100) Adjust the volume as specified by p2 within the range 0 to 100. Prefix the number with a + or - to make the change relative.

donc
http://10.0.1.201:9000/status.suffix?p0 ... me1&p2=100

devrait assourdir ton voisinage pour les 10 prochaines années.
Bien sur mets ton ip et ton port à toi la dedans
Ca aucun soucis, j'arrive à le faire via un dimmer virtuel créé dans Domoticz. Le problème est que plusieurs app contrôlent chaque lecteur : Domoticz mais également des app dédiées sur iPad et autres. Par conséquent, je souhaiterais actualiser le niveau de chaque Squeezebox dans Domoticz en même temps qu'un script qui ping chaque Squeezebox afin de vérifier si elles sont connectées (car une autre app a peut être modifié le niveau sonore entre temps).

Je sais c'est assez tordu mais il s'agit d'un système multi room que je souhaitais pouvoir commander par plusieurs intermédiaires (dont des boutons physiques), d'où la question.

J'irai demander s'ils ont une idée sur le forum officiel de logitech. Je ne sais même pas comment interroger la Squeezebox (je ne parle pas de la commander) donc il est normal que vous ne sachiez pas me dire quelle commande je dois envoyer ... ;)

Je vous tiens au courant, je ne suis peut être pas le seul à vouloir réaliser cette opération :)
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: Requête GET HTTP via script LUA

Message par patrice »

Ah ca y est j'ai compris !!

et ça http://host:port/xml/status.xml

ça te renvoie le volume qq part ?
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
BenjaminV
Messages : 21
Inscription : 24 févr. 2015, 22:08

Re: Requête GET HTTP via script LUA

Message par BenjaminV »

J'ai également essayé mais j'ai une erreur 404 me disant "there is no 'xml' skin". La je dois chercher du côté de mon serveur mais je n'ai pas encore trouvé ;)
hobbe
Messages : 111
Inscription : 15 déc. 2014, 15:33

Re: Requête GET HTTP via script LUA

Message par hobbe »

Et ça : http://host:port/status.txt ?
BenjaminV
Messages : 21
Inscription : 24 févr. 2015, 22:08

Re: Requête GET HTTP via script LUA

Message par BenjaminV »

hobbe a écrit :Et ça : http://host:port/status.txt ?
Bonjour,

Malheureusement, je n'avais que le nom du lecteur et son état (allumé ou éteint)... Enfin en réessayant je ne vois plus rien mais je suis aussi sur tablette et en VPN donc à vérifier lorsque je serai rentré ;)
BenjaminV
Messages : 21
Inscription : 24 févr. 2015, 22:08

Re: Requête GET HTTP via script LUA

Message par BenjaminV »

Bonjour à tous,

Après recherche et demande sur le forum officiel consacré aux Squeezebox et autres j'ai finalement trouvé comment réaliser une requête pour trouver le volume.

Jusqu'à preuve du contraire, je n'ai pas trouvé quelle requête http réaliser pour avoir simplement comme réponse la valeur du volume. Voici le mode opératoire nécessaire pour aller reprendre la valeur du volume :
1. Connexion en Telnet avec Putty avec Adresse : ip_server ; Port : 9090 (port pour réaliser des requêtes en lignes de commande)
2. Un requête parmi de nombreuses autres : "ip_lecteur mixer volume ?"

Donc l'histoire du "?" était effectivement une bonne piste mais insérée au mauvais endroit.

En recherchant avec comme base "Telnet LUA Domoticz" je suis tombé sur une de tes réponses Patrice viewtopic.php?t=31

D'où ma question, est-ce qu'il est possible de réaliser une requête telnet à partir d'un script LUA ou ta solution (squeezplay.sh) est préférable avec, placé dans un script, os.execute('/usr/bash/squeezeplay.sh ip_lecteur') ?

Merci d'avance de votre aide
BenjaminV
Messages : 21
Inscription : 24 févr. 2015, 22:08

Re: Requête GET HTTP via script LUA

Message par BenjaminV »

Bonsoir,

Après de multiples recherches, j'ai finalement la ligne de commande nécessaire mais je galère vraiment, rien que pour récupérer dans une variable la réponse du serveur à ma requête... Il faut savoir que je ne gère absolument pas tout ce qui est langage shell (que je trouve réellement affreux personnellement)

Dans un script shell j'ai implanté cette ligne de commande

Code : Tout sélectionner

-e $1\nexit\n | netcat $2 $3
Où,
$1=La commande à exécuter au niveau du serveur
$2=L'adresse ip du serveur
$3=Le port de communication

Je reçois une réponse composée de,

Code : Tout sélectionner

adresse_mac_lecteur réponse_serveur
Il s'agit donc d'une chaine de caractère que je voudrais décomposer et envoyer la valeur du volume au niveau d'un switch de Domoticz. Je coince déjà rien qu'au niveau de la récupération du morceau de ma chaine de caractère... Si quelqu'un s'y connait un peu à ce niveau-ci, je ne trouve pas vraiment de bon tutoriel sur internet
Répondre