Forum eedomus
https://forum.eedomus.com/

Esp8266 requete vers eedomus
https://forum.eedomus.com/viewtopic.php?f=15&t=9919
Page 1 sur 1
Auteur:  gillesm57 [ 27 Août 2020 17:54 ]
Sujet du message:  Esp8266 requete vers eedomus

Salut Tout le monde,

J'ai acheter un capteur de debit à impulsion de type YF-B1 que je connecte à un ESP8266 et je voudrais voir ma consommation d'eau journalière et instantanée dans eedomus via un capteur virtuel, mais je n'y arrive pas n'étant pas un grand spécialiste du langage arduino...

J'ai réussi a faire un bout de code (avec de nombreuses recherches google...) qui m'envoie ces donnée vers un site intermédiaire: "https://thingspeak.com/" et de la je récupère via eedomus un capteur les valeurs, mais je voudrais récupérer les valeur dans eedomus directement depuis l'arduino (le Esp8266), mais la je me perd dans les bouts de code que je trouve y a t il quelqu'un pour me guider un peu, merci... :)
j'ai ça qui me transmet les bonnes valeurs sur thingspeak comment transformer pour l'envoyer sur eedomus?

Code : Tout sélectionner
if (client.connect("api.thingspeak.com",80)) // "184.106.153.149" or api.thingspeak.com
  {
    String postStr = apiKey;
      postStr += "&field1=";
      postStr += String(float(flowRate));
      postStr += "&field2=";
      postStr += String(totalLitres);
      postStr += "\r\n\r\n";

/
    client.print("POST /update HTTP/1.1\n");
    client.print("Host: api.thingspeak.com\n");
    client.print("Connection: close\n");
    client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n");
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    client.print(postStr.length());
    client.print("\n\n");
    client.print(postStr);
   
  }
    client.stop();
}


Et dans l'Eedomus j'ai ce capteur virtuel:
Capture d’écran 2020-08-27 à 18.50.53.png
Capture d’écran 2020-08-27 à 18.50.53.png (111.43 Kio) Consulté 5773 fois
Auteur:  benj70b [ 27 Août 2020 22:54 ]
Sujet du message:  Re: Esp8266 requete vers eedomus

bonsoir,

y'a plusieurs façons, la plus simple l'api eedomus

https://IP_OF_YOUR_BOX/api/set?action=periph.value....

voici le lien vers la doc: https://doc.eedomus.com/view/API_eedomus

Dans ton code, il faudra que tu remplace ton POST par un GET
Auteur:  gillesm57 [ 28 Août 2020 18:02 ]
Sujet du message:  Re: Esp8266 requete vers eedomus

Bonjour,

Merci pour la réponse, mais justement je suis aller voir sur la doc api eedomus, mais je ne comprends pas trop comment adapter la forme de l'adresse https://IP_OF_YOUR_BOX/api/set?action=periph.value.... à une forme pour l'arduino ou l'esp8266 du genre:
Code : Tout sélectionner
client.print("POST /update HTTP/1.1\n");
    client.print("Host: api.thingspeak.com\n");
    client.print("Connection: close\n");
    client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n");
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    client.print(postStr.length());
    client.print("\n\n");
    client.print(postStr)


il me faudrais un exemple sous cette forme avec l'api eedomus si c'est possible?? :?

merci
Auteur:  gillesm57 [ 06 Sep 2020 19:58 ]
Sujet du message:  Re: Esp8266 requete vers eedomus

Bon je crois qu'avec cette box eedomus cela ne marche pas, j'ai trouver avec Jeedom cela fonctionne mais eedomus rien ne marche il y a une fonction sendtojeedom et rien pour l'api eedomus personne ne s'est?
Auteur:  benj70b [ 06 Sep 2020 23:58 ]
Sujet du message:  Re: Esp8266 requete vers eedomus

:D fait un p'tit tour par ici :

https://projetsdiy.fr/esp8266-client-we ... ttpclient/
Auteur:  gillesm57 [ 12 Sep 2020 16:34 ]
Sujet du message:  Re: Esp8266 requete vers eedomus

Merci je suis aller faire un tour, mais je n'est rien trouver pour eedomus, pour domoticz tout y est.

en fait si je suis la même méthode que pour domoticz l'url domoticz doit être:
http://#IP_SERVER#/json.htm?type=command&param=udevice&idx=111&nvalue=0&svalue=26

mais le lorsque je creer un capteur sur l'eedomus le capteur virtuel me demande l'url de la requette et xpath mais pas domoticz je doit mettre quoi dans ces 2 champs? ou il faut creer un actioneur sur eedomus et non pas un capteur?
Auteur:  benj70b [ 14 Sep 2020 08:48 ]
Sujet du message:  Re: Esp8266 requete vers eedomus

Bonjour,

Comme indiqué dans ton post, tu souhaites envoyé des données de ton esp8266 vers l'eedomus (se sera donc un capteur pour l'eedomus).

- active le mode expert sur l'eedomus : https://doc.eedomus.com/view/Mode_Expert
- obtient également tes identifiants API (c'est sur la meme page)
- crée un capture virtuel de type "Etat" dans l'eedomus
- choisi ensuite son usage (ex : Autre Indicateur - Capteur) et le type de données (ex : nombre décimal) = [USER] et [SECRET]
- note ensuite son code API dans les paramètres expert = [API]

ensuite, l'url a appeler dans ton esp8266 sera du type :

http://[IP EEDOMUS]/api/set?action=periph.value&periph_id=[API]&value=[VALEUR]&&api_user=[USER]&api_secret=[SECRET]

[VALEUR] = la valeur à envoyer

voila avec ça tu devrais t'en sortir
Auteur:  gillesm57 [ 14 Sep 2020 17:37 ]
Sujet du message:  Re: Esp8266 requete vers eedomus

Bonjour,

Merci benj70b,
Je ne sais pas si c'est moi mais cela ne fonctionne pas j'ai essayer avec une seule valeur "5902" sans variables pour l'instant, mais rien ne s'affiche, dans l'esp8266 j'ai mis ça:
Code : Tout sélectionner
.client.print("http://192.168.0.10/api/set?action=periph.value&periph_id=xxxxxxxx&value=5902&&api_user=xxxxxxxx&api_secret=xxxxxxxxxxxxxxx");


les xxxx je les ai remplacés par les valeurs correspondantes, l'API du périphérique virtuel nouvellement créé, les secret et api user je les avaient je les ai a nouveau générés.
-Mode expert ok il etait activé OK
-mes identifiants API je les avaient OK.
-je viens de creer un capteur virtuel "etat" viens de le faire OK.
- Usage j'ai mis compteur d'eau "capteur" et type de données nombre décimal

je ne vois pas ou j'ai fais l'erreur :shock: je dois être lourd je pense... :?:
Auteur:  benj70b [ 14 Sep 2020 20:06 ]
Sujet du message:  Re: Esp8266 requete vers eedomus

p'etre un truc comme ca ;) :

Code : Tout sélectionner
 
if (client.connect("192.168.0.10",80))
 {
....
client.print("GET /api/set?action=periph.value&periph_id=xxxxxxxx&value=5902&&api_user=xxxxxxxx&api_secret=xxxxxxxxxxxxxxx HTTP/1.1\n");
 client.print("Host: 192.168.0.10\n");
 client.print("Connection: close\n");

...
}


sinon le plus simple c'est que tu m'envoie ton code en MP (sans ton user et mot de passe API), j'ai te faire un exemple avec les librairies que tu utilises.
Auteur:  gillesm57 [ 14 Sep 2020 20:59 ]
Sujet du message:  Re: Esp8266 requete vers eedomus

:P

Je viens de trouver un truc qui fonctionne merci benj70b.

j'ai mis ça dans l'esp:
Code : Tout sélectionner
.const char* host = "api.eedomus.com";
String url = "/set?action=periph.value&periph_id=";
url += periph_id1;
url += "&value=";
url += totalLitres;
url += "&&api_user=";
url += apiUser;
url += "&api_secret=";
url += apiKey;
// envoie requête eedomus
    client.print(String("SET ") + url + " HTTP/1.1\r\n" +
                  "Host: " + host + "\r\n" +
                  "Connection: close\r\n\r\n");


Et avec ça je reçois bien ma variable totalLitres dans l'eedomus enfin, après plusieurs semaines de recherche :D et aussi l'erreur que je faisais c'était le périphérique virtuel je faisais toujours un périphérique virtuel qui me demandais xpath et adresse et la je ne savais pas quoi mettre et Benj70b tu ma aider merci quand tu as écrit de creer un périphérique virtuel d'etat, moi je faisais toujours un capteur http :?

Bon maintenant la suite :oops:
de cette façon comment je peux faire pour envoyer 2 url 's sur 2 périphériques virtuels j'ai essayer en nommant url et pour le 2e url1 mais ça ne fonctionne pas une idée?

Merci
Auteur:  benj70b [ 14 Sep 2020 23:40 ]
Sujet du message:  Re: Esp8266 requete vers eedomus

pour simplifier ton bout de code regarde du cote de la classe HTTPClient, ca sera plus simple :)

https://techtutorialsx.com/2016/07/17/e ... -requests/

je te conseille de suivre quelques cours de programmation pour l'esp8266 (en ligne par exemple) liée au protocole HTTP et au C, je pense que cela pourrait être utile :mrgreen:
Page 1 sur 1 Le fuseau horaire est UTC+1 heure