Krikroff Posté(e) le 26 avril 2016 Signaler Posté(e) le 26 avril 2016 Dans le cadre de mes recherches au cours du développement du plugin Freebox Player Remote (ça remonte Lol ) et en quête d’une solution efficace ayant pour objectif de déterminer l’état « Allumé » ou « Éteint » du périphérique, j’ai rapidement fait le tour des premières solutions envisageables en utilisant notamment l’API de la Freebox ou bien à l’aide d’un module mesurant la consommation mais au final rien de bien concluant ! J’ai donc commencé à envisager la chose autrement et investiguer plus au niveau du réseau, pour au final trouver mon bonheur. En effet, le Freeplayer implémente plusieurs protocoles réseau dont l’ UPnP (Universal Plug and Play) comme beaucoup de diffuseurs du marché d’ailleurs et une des particularités intéressante avec l’ UPnP est la découverte de services qui permet de s’affranchir de toute configuration fastidieuse pour les faire communiquer les uns avec les autres. Le protocole de découverte est basé sur SSDP et cela tombe très bien, j’ai déjà joué avec dans le passé… Le SSDP, c’est quoi ? S.S.D.P pour Simple Service Discovery Protocol, est un protocole de communication donnant la possibilité aux clients de découvrir des services disponibles sur le réseau. Pour cela il utilise UDP (User Datagram Protocol) sur le port 1900. Il ne reste plus qu’à trouver le port utilisé par le Freeplayer ainsi que l’adresse sur laquelle il diffuse les informations sur ses services. J’ai pour cela utilisé une petite application console réalisée quelques mois avant dans le cadre d’un autre projet afin de mettre en Å“uvre le SSDP mais il existe des outils UPnP pour Windows et Linux permettant d’arriver aux mêmes résultats. Aperçu d’une découverte du réseau… En réponse aux paquets envoyés, le Freeplayer diffuse donc son adresse d’accès aux services device.xml sur le port 54243. Cette url d’accès aux services est disponible uniquement lorsque le FreePlayer est sous tension et allumé mais pas lorsqu’il est éteint complétement ou en veille, voilà la solution ! Pour information, voici le contenu du fichier de description : Mais dans notre cas le contenu du fichier ne sera pas utile... Il ne reste plus qu’à mettre à profit tout ceci dans un script et le tour est joué Exemple d’utilisation en LUA dans une scène: local httpClient = net.HTTPClient(); httpClient:request('http://192.168.1.110:54243/device.xml', { success = function(result) local status = tonumber(result.status) if (status ~= 200) then print('Status: OFF or In Standby Mode') elseif (status == 200) then print('Status: ON') end end, error = function(err) print('Connection refused') end, options = { method = 'GET', headers = { ['Accept'] = 'text/html, application/xhtml+xml', ['Accept-Language'] = 'fr-FR' } } }); Exemple d’utilisation en LUA dans un Virtual Device: 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 Maintenant c'est à vous de jouer pour l’intégrer dans vos scénarios 4
i-magin Posté(e) le 26 avril 2016 Signaler Posté(e) le 26 avril 2016 (modifié) Juste un petit mot pour te saluer amicalement Krikroff... je suis HS ? m'en fous Edit : Bravo tout de même pour ta solution Modifié le 26 avril 2016 par i-magin 1
Krikroff Posté(e) le 26 avril 2016 Auteur Signaler Posté(e) le 26 avril 2016 Je profite de ton HS pour aussi te saluer amicalement i-magin. Et dire que c'est dans mes dossiers depuis des mois, je ne vois pas le temps passer 1
Nico Posté(e) le 27 avril 2016 Signaler Posté(e) le 27 avril 2016 Très beau boulot Krikri ! Et bonjour man :) !
pepite Posté(e) le 27 avril 2016 Signaler Posté(e) le 27 avril 2016 YEs, merci beaucoup Krikroff ;-) Bon sais pas trop quoi en faire encore ;-) mais du beau boulot comme d'hab ;-) Je me joins à mes prédécesseurs pour te saluer ;-)
BenjyNet Posté(e) le 27 avril 2016 Signaler Posté(e) le 27 avril 2016 Krikri est toujours vivant.. hiphiphip.... Hourra !!!! :D Bonjour àtoi !
q.philippe Posté(e) le 27 avril 2016 Signaler Posté(e) le 27 avril 2016 J'ai pondu un Module Virtuel, Etat_Freebox.json Impossible de le poster ...(permission)
Messages recommandés