Aller au contenu

Recommended Posts

Salut,

 

Après Jeedom et eedomus, je projette éventuellement d'intégrer l'API des boxs Fibaro dans JPI (anciennement nommé Jeedom Paw Interface).

Pour ceux qui ne connaissent pas JPI, il s'agit d'un petit contrôleur domotique HTTP sur android, capable d’effectuer des scénarios sur des événements entrants, et pouvant effectuer tout un tas d'actions contrôlées via HTTP.

(sms & appels entrants / sortants, reco vocal, detection mvt, caméra, capteurs...).

Il est totalement gratuit (sans pub) et administrable via une page web.

Le topic d'origine est ici :

https://www.jeedom.com/forum/viewtopic.php?f=27&t=18283&p=515233#p515223 => https://forum.jeedom.com/viewtopic.php?f=27&t=18283

(topic trop long, désolé)

 

Le lien vers la dernière version de l'apk est ici :

https://www.jeedom.com/forum/viewtopic.php?f=27&t=18283&p=469610#p469388

 

Pour l'instant il n'y a pas de doc, uniquement quelques tutos par ci par là sur le web.

La doc viendra un jour, ce sera pour la v1, quand je serais sur que l'app est mature et que toutes les fondations sont defs.

 

Dans un premiers temps j'aurais quelques questions (j'ai pas de box Fibaro et je ne les connais pas)

 

- les box HC2/HCL répondent t-elles au ping sur le réseau local ?

- Y'a t-il une page d’accueil web en local, et si oui est-t-elle directement sur http://IP-de-la-box ?

- J'ai cru voir que concernant l'API HTTP c'est exactement pareil pour les 2 box (je parle bien de l'api http, pas du LUA), vous confirmez ?

- J'ai un peu du mal avec ce que je trouve sur le net, il n'y a pas de doc officielle concernant l'api http ?

En attendant j'ai trouvé ça :

http://tutoriels.domotique-store.fr/content/49/45/fr/api-commander-le-home-center-par-des-requêtes-http.html

 

J'en ai donc déduis une liste des fonctions principales JPI que je vais pouvoir créer :

 

SET:

* hc_turnOff

* hc_turnOn

* hc_setValue

* hc_setAjar

* hc_setColor

* hc_setSlider

* hc_stop

* hc_startProgram

* hc_pressButton

* hc_sceneStart

* hc_sceneStop

* hc_setTargetLevel

* hc_setTime

 

GET:

* hc_getValue

(menu déroulant: rooms, scenes, devices, device id...)

 

Selon vous manque-t-il des trucs dans la liste ?

Tout est-il compatible hc2 / hcl ?

Si il manque des fonctions typiques pour hc2 je peux les faire commencer par hc2_ afin de les identifier comme uniquement pour hc2

Pour les variables est-ce utile de faire une fonction pour les contrôler ?

 

Voila pour le moment.

Merci !

 

  • Upvote 3

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour @dJuL

 

voici déjà quelques réponses :

- pour le ping, la réponse est oui

- oui tu arrives sur l'interface principale de la box en tapant son adresse IP

- oui, l'api est le même est HC2 et HCL (mais je n'ai pas de HCL donc un autre pourra confirmer)

- il y a bien une doc du REST Api, mais disponible directement sur la box, je ne sais pas si il est possible de l'avoir autrement

 

pour le reste de tes questions, je vais d'abord jeter un œilsur tes liens afin de mieux comprendre ce que jpi peut faire...  

 

mais je suppose que l'un de nos gourous va aussi répondre ;) 

Partager ce message


Lien à poster
Partager sur d’autres sites

Tip top, j'ai hâte de suivre tout ça, et dispo pour le beta test !

N'hésites pas si tu as d'autres questions.

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 21 heures, Lazer a dit :

On a un topic qui référence les API HTTP, ce n'est pas complet à 100%, mais c'est déjà une bonne base :

Liste Api-Http Pour Hcl Et Hc2

Merci mais je ne trouve pas les fonctions essentielles de contrôle domotique dans ton lien (genre turnOff, setValue...).

 

Sinon j'aurais besoin de savoir quel est le type de retour (json j'imagine) en cas de mauvais mot de passe, ou deviceID non existant, ou en cas d'opération réussie.

Modifié par dJuL

Partager ce message


Lien à poster
Partager sur d’autres sites

Alors en complément voici ce que j'ai retrouvé dans mon stock de favoris :

http://www.domotique-info.fr/2013/05/api-home-center-2/

http://tutoriels.domotique-store.fr/content/49/45/fr/api-commander-le-home-center-par-des-requêtes-http.html

http://www.fibarouk.co.uk/support/lua/actions-use-fibarocall-api/

 

Malheureusement, la documentation n'est pas le point fort de Fibaro, donc il n'existe aucune doc unique et complète à 100%, il faut glaner les infos ça et là.

 

En cas de mauvaise authentification, le code retour HTTP est 401, sans aucune données (pas de json) :


 

$ curl --write-out %{http_code} "http://192.168.x.y/api/callAction?deviceID=1234&name=pressButton&arg1=1"
401

 

En cas d'opération réussie, le code est généralement 200 ou parfois 202

Dans ce cas, il peut y avoir un JSON, mais ça dépend des actions. Il faut tester au cas par cas.

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Ok merci Lazer ;)

 

Ça m'arrange pas cette histoire de réponses non uniformisées, et n'ayant pas la box ça va pas être simple...

 

Partager ce message


Lien à poster
Partager sur d’autres sites

oui je te comprends... et Fibaro ne nous aide pas, le mec qui développe le logiciel de la box à mi-temps n'est pas un champion, on a régulièrement des changements de comportement sans prévenir, avec pour seule explication "it's not a bug, it's a feature" :angry:

 

tu peux préparer une liste des API que tu souhaites qu'on teste, et on te fera un retour.

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

Je commente pour que vous sachiez que je suis la aussi.

 

Bon les experts t'ont deja dit beaucoup ;-)

 

De ce que j'ai pu voir dans ta liste en diagonal, il manquerait hc_setGlobal

Partager ce message


Lien à poster
Partager sur d’autres sites

Ça avance tranquillement.

J'ai fini d'intégrer le contrôleur Home Center dans JPI.

J'ai ajouter l’authentification dans les requêtes HTTP et la méthode PUT

Il me reste plus qu'à créer les actions...

 

net_47.png

 

net_49.png

 

net_48.png

 

apk_02.png

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Top top top !

J'ai hâte de tester tout ça ! Il faudrait que je le mette déjà sur ma passerelle Jeedom :)

Du coup tu as trouvé une HC2 pour tester ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Non, je vais faire sans, comme j'ai fais pour l'eedomus.

Mais avec le forum et quelques testeurs ça devrait le faire ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Oki, pas de soucis, on testera !

Partager ce message


Lien à poster
Partager sur d’autres sites

Intéressant tout ça :) ... heu sinon... ça sert à quoi ? :D

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui, ce serait bien que je le mette aussi sur jeedom pour comprendre ;-)

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci @dJuL

J'ai une tablette qui n'est pas encore au mur, je sens que je vais mettre JPI pour gerer aussi bien HC2 que Jeedom :-) avec les intearctions ca doit le faire  ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

Ok on va donc commencer avec les actions de base turnOn et turnOff

Actions qui sont censées fonctionner en GET:

http://<LOGIN>:<PASS>@<IP>/api/callAction?deviceID=<ID>&name=turnOn

http://<LOGIN>:<PASS>@<IP>/api/callAction?deviceID=<ID>&name=turnOff

 

Je veux bien un exemple du retour avec un deviceID bon et un inexistant, ainsi qu'éventuellement les codes de retour HTTP si ils différent.

 

Merci :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Si ID existant :

Code retour : 202
JSON : {"id":0,"jsonrpc":"2.0","result":{"result":0}}

 

Si ID inexistant :

Code retour : 404

JSON : vide

 

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui tout à fait, on a toujours le code HTTP 401 en cas de mauvaise authentification, sans aucun JSON renvoyé.

Partager ce message


Lien à poster
Partager sur d’autres sites

Cool, merci Lazer :)

 

Je vais partir sur la base que toutes les actions faites via callAction réagissent de la même manière, on verra par la suite si jamais ce n'est pas le cas.

C'est possible de vérifier si ça réagit pareil avec sceneControl ?

http://<LOGIN>:<PASS>@<IP>/api/sceneControl?id=<SCENE ID>&action=start

http://<LOGIN>:<PASS>@<IP>/api/sceneControl?id=<SCENE ID>&action=stop

Merci d'avance

 

Je vais mettre en ligne une version alpha incomplète ce soir pour que vous puissiez déjà commencer à tester

Partager ce message


Lien à poster
Partager sur d’autres sites

Si auth invalide => Code 401

Si auth valide, et Scène ID valide => Code 202

Si auth valide, et Scène ID invalide => Code 404

 

Dans tous les cas, aucun JSON n'est renvoyé.


A noter que le "stop" renvoie un code 202, mais n'effectue en réalité aucune action si la scène est déjà arrêtée (donc le code retour est le même que la scène soit déjà arrêtée ou en cours d'exécution). Bon dans la pratique, sur la HC2, il est extrêmement rare de devoir arrêter manuellement une scène, en général les scènes ont 3 modes de fonctionnent (qui peuvent se combiner) :

- démarrage au boot de la HC2, et fonctionnement en boucle infinie, donc ne s'arrête jamais

- démarrage manuel via un clic de l'utilisateur (ou via l'API qu'on vient de tester), effectue quelques actions et s'arrête tout seul.

- démarrage automatique sur événement par trigger, effectue quelques actions et s'arrête tout seul.

Partager ce message


Lien à poster
Partager sur d’autres sites

×