Aller au contenu

[Lua Hc2 - Leçon 3] – Utilisation D’Api Net.fhttp


Domotique-Home

Messages recommandés

Bonjour,
Vous êtes nombreux a me demander la suite des Leçons LUA pour HC2, ben….. voilà  la suite
Aujourd’hui je vais vous parler de l’API Net.Fhttp


Cette API nous permet d’envoyer des commandes via HTTP vers notre HC2 ou d’autre appareils.
Je vais vous expliquer comment cloner la télécommande de la Freebox V6 et commander la télé via HC2.Free a mis a notre disposition des divers API, on va s’intéresser particulièrement a une pour l’intégrer dans notre HC2Essayer de taper dans votre navigateur web la ligne suivante: http://hd1.freebox.f...e_control?code=

&key=power Le [code TELECOMMANDE] se trouve dans le menu Réglages/Télécommande de votre FreeBoxComme vous pouvez voir cette commande éteint/ allume votre FreeBox.Donc maintenant il nous reste juste de créer une télécommande virtuel dans notre HC2.Pour cela nous allons utiliser un Module Virtuel et une variable global.Etape 1Créer une nouvelle variable et attribuez lui la valeur de votre [code TELECOMMANDE]Nommez la « CodeTeleFree »Etape 2Créer un nouveau module virtuel et nommez le « Télécommande« .Ajouter exactement le même nombre de boutons que sur votre Télécommande original. Etape 3Passons a un peu de code maintenant:Dans chaque bouton il faut saisir le code correspondant aux API Free.Pour cela il faut traduire notre ligne « http://hd1.freebox.f...e_control?code=[code TELECOMMANDE]&key=power » en code LUA  
-- on déclare une variable local CodeTeleFree et on lui attribue
-- le code de notre télécommande stocké précédemment dans la variable HC2
local CodeTeleFree = fibaro:getGlobal("CodeTeleFree");

-- on crée une instance HC2 et on lui attribue l adresse de notre FreeBox
HC2 = Net.FHttp("hd1.freebox.fr");

-- on attribue la suite de notre adresse avec le code télécommande
response = HC2:GET("/pub/remote_control?code=" ..CodeTeleFree.. "&key=power")

 Copiez ce code dans chaque touche en remplacent « power » par le code touche correspondant. Voilà  le code de chaque touche de la V6:power : la touche rouge on/off0 à  9 : les touches 0 à  9vol_inc : augmente le volumevol_dec : diminue le volumeprgm_inc : incrémente de 1 le programmeprgm_dec : décrémente de 1 le programmeok : touche OKup, right, down, left : les touches directionnelles (haut, droite, bas, gauche)mute : la touche de mise en sourdinehome : la touche freerec : la touche d’enregistrementbwd : la touche de retour en arrière (<<)prev : la touche « précédent » (|<<)play : la touche lecture/pause
fwd : la touche d’avance rapide (>>)

 

next : la touche « suivant » (>>|)

red : le bouton rouge

green : le bouton vert

yellow : le bouton jaune

blue : le bouton bleu

 

Pour ceux qui ne veulent pas tous faire soit même voilà  le lien pour télécharger le module virtuel:

http://domotique-hom...lécommande.vfib

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

Oui l'exemple montre comment cloner une télécommande Free en utilisant l'API Net.FHttp et la méthode GET(uri)

il est modifiable pour d'autre utilisation.

par contre effectivement il est important de préciser que pour l'utiliser avec HC2 il faut s'identifier avec setBasicAuthentication

Voila des petit exemple:

--création d'instance et identification avec HC2
HC2 = Net.FHttp("192.168.100.119")
HC2:setBasicAuthentication("admin","admin")

-- extraction des informations sur module ID=316
response = HC2:GET("/api/devices?id=316")

-- décodage des informations
response = json.decode(response)

if response.properties.value == "0"
then
  --si désactivé on active module avec ID=316
  HC2:GET("/api/callAction?deviceID=316&name=turnOn")
  --on affiche l'information sous le module
  fibaro:log("device (id=316) turned on")
else
  --si activé on désactive module avec ID=316
  HC2:GET("/api/callAction?deviceID=316&name=turnOff")
  --on affiche l'information sous le module
  fibaro:log("device (id=316) turned off")
end
Lien vers le commentaire
Partager sur d’autres sites

Super, par contre je me rends conte que c'est au niveau des logos que ca pèche .Je veux bien créer des logos si on m'explique.J'utilise paint pour redimensionner mais là , sur ton module on pourrait mettre la télécommande avec le chiffre 1de la freebox en gros,gras,pour le 1, un 2,ainsi de suite.

 

comment peut on travailler sur les logos?logiciels j'entends...avec les fonds transparent.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @Ludwig,

Normalement oui , je n'ai pas pu tester mais essai ça ;)

 

COMMANDS[0] = "http://192.168.1.11:8080/remoteControl/cmd?operation=10";//info decodeur
COMMANDS[1] = "http://192.168.1.11:8080/remoteControl/cmd?operation=01&key=108&mode=0";//touche info
COMMANDS[2] = "http://192.168.1.11:8080/remoteControl/cmd?operation=01&key=114&mode=0";//vol-
COMMANDS[3] = "http://192.168.1.11:8080/remoteControl/cmd?operation=01&key=115&mode=0";//vol+
COMMANDS[4] = "http://192.168.1.11:8080/remoteControl/cmd?operation=01&key=158&mode=0";//retour ?
COMMANDS[5] = "http://192.168.1.11:8080/remoteControl/cmd?operation=01&key=352&mode=0";//ok
COMMANDS[6] = "http://192.168.1.11:8080/remoteControl/cmd?operation=01&key=358&mode=0"; //??
COMMANDS[7] = "http://192.168.1.11:8080/remoteControl/cmd?operation=01&key=365&mode=0"; //
COMMANDS[8] = "http://192.168.1.11:8080/remoteControl/cmd?operation=01&key=402&mode=0"; //P+
COMMANDS[9] = "http://192.168.1.11:8080/remoteControl/cmd?operation=01&key=403&mode=0"; //P-
COMMANDS[10] = "http://192.168.1.11:8080/remoteControl/cmd?operation=01&key=512&mode=0";//touche 0
COMMANDS[11] = "http://192.168.1.11:8080/remoteControl/cmd?operation=01&key=513&mode=0";//touche 1
COMMANDS[12] = "http://192.168.1.11:8080/remoteControl/cmd?operation=01&key=514&mode=0";//touche 2
COMMANDS[13] = "http://192.168.1.11:8080/remoteControl/cmd?operation=01&key=515&mode=0";//touche 3
COMMANDS[14] = "http://192.168.1.11:8080/remoteControl/cmd?operation=01&key=516&mode=0";//touche 4
COMMANDS[15] = "http://192.168.1.11:8080/remoteControl/cmd?operation=01&key=517&mode=0";//touche 5
COMMANDS[16] = "http://192.168.1.11:8080/remoteControl/cmd?operation=01&key=518&mode=0";//touche 6
COMMANDS[17] = "http://192.168.1.11:8080/remoteControl/cmd?operation=01&key=519&mode=0";//touche 7
COMMANDS[18] = "http://192.168.1.11:8080/remoteControl/cmd?operation=01&key=520&mode=0";//touche 8
COMMANDS[19] = "http://192.168.1.11:8080/remoteControl/cmd?operation=01&key=521&mode=0";//touche 9
Lien vers le commentaire
Partager sur d’autres sites

  • 7 mois après...

Salut Rems ;)

 

Je déterre un peu, mais j'ai une question : l'api netfhttp est utilisable directement en LUA dans une scène ?

En effet, plutôt que d'appeler un bouton d'un VD, je voulais le faire directe dans une scène

Car j'ai une erreur dans ma scène :

 

HC2 = Net.FHttp("api.pushingbox.com")

[ERROR] 15:22:27: line 9: attempt to index global 'Net' (a nil value)

 

 

Edit : Apparemment, la commande Net.FHttp n'est pas accessible dans une scène mais seulement dans un device virtuel...

Lien vers le commentaire
Partager sur d’autres sites

C'est effectivement ce que j'ai fait ;)

 

Mais créer des boutons pour faire un GET/POST HTTP, je trouvais que c'était un peu comme aller chercher du pain avec un tank : c'est un peu lourd ! (Mais ça marche ! :D   )

 

Un bon petit tuto en tous cas Rems ;)

Lien vers le commentaire
Partager sur d’autres sites

  • 1 an après...
×
×
  • Créer...