Communication Jeedom avec site web perso

Bonjour,
Je vous soumets ma question car je ne sais pas par quel sens prendre mon pb :

  • J’ai déployé mon Jeedom qui me pilote de nombreuses choses : chauffage, arrosage avec des protocoles comme zigebee, jmqtt… assez satisfait de mon système.
  • Je me suis lancé dans un autre projet (à part) une station météo avec des capteurs de températures, humidité, qualité de l’air … le tout géré par un ESP32 qui envoie les données dans une BDD SQL les données sont visibles sur un site perso web, là également je suis assez fier de moi (merci les tutos)
    Aucun lien entre Jeedom et mon site météo.

Parfois l’ESP32 tourne en rond et se bloque tout en restant connecté je l’ai branché avec une prise zigbee donc quand je perds le Ping je le redémarre avec un scenario Jeedom et c’est OK mais parfois il reste connecté mais plus d’envoie d’infos (ça reste un ESP!!)

Donc je cherche l’approche pour relancer mon ESP connecté à une prise zigbee :
. Dois- je me servir d’un prog php sur mon site : si pas de message depuis plus de xx mn je lance une commande vers Jeedom pour éteindre et allumer la prise?
. Ou Jeedom contrôle dans la BDD ou sur le site que la dernière valeur n’a pas plus de xx mn sinon relance de la prise

Je ne demande pas de résoudre le pb mais proposer dans quelle direction travailler?

Merci.

Salut

Pourriez-vous donner le tuto que vous avez utilisé ?

Antoine

Bonjour Tonio,

Oui voici le tuto qui m’a servi de base de travail :
https://www.tingene.com/blog/index.php?article51/cloud-weather-station-esp32-esp8266

celui ci également mais trés similaire :
https://randomnerdtutorials.com/cloud-weather-station-esp32-esp8266/

Bonjour,

Pourquoi ne pas configurer l’esp pour qu’il publie de l’info directement exploitable sous jeedom? soit via call http soit via mqtt.
à ce moment si jeedom ne recoit plus d’info il sait que l’esp est planté

de plus l’info sera utilisable sous jeedom.

Bonjour,
J’avais l’idée effectivement d’envoyer un message à Jeedom (via API) par contre je voulais éviter de charger l’ESP ainsi passer soit par Jeedom vers ma BDD ou le site ou l’inverse.

Néanmoins je mets ton idée de côté et dans ce cas comment je traite l’info envoyée par l’ESP .

Merci.

Je n’ai pas compris ta réponse; y a une question?

Bonjour,

En partant de l’idée de @Mips, tu pourrais faire un truc comme ça :

Quand Jeedom ne reçoit plus d’info, il redémarre l’esp et ton site reste indépendant de Jeedom.

2 « J'aime »

Bonjour
Merci à vous 2 aujourd’hui mon ESP envoie les infos de cette façon :

String httpRequestData = "api_key=" + apiKeyValue + "&sensor=" + sensorName
                            + "&location=" + sensorLocation + "&value1=" + String(bme.readTemperature())
                            + "&value2=" + String(bme.readHumidity()) + "&value3=" + String(bme.readPressure()/100.0F) + "";
 int httpResponseCode = http.POST(httpRequestData);

Je ne suis pas spécialiste mais ce n’est pas une requete mqtt finalement l’idée de Mips me semble pas mal d’envoyer de la même façon un message à jeedom par contre comment je le traite dans jeedom?
Avez vous des exemples pour m’inspirer?

Merci

l’avantage de mqtt c’est que ca simplifie l’intégration: l’esp s’occupe juste de publier sur le broker et puis chacun vient chercher ce qu’il a besoin quand il en a besoin

si tu veux rester sur un push http vers jeedom, au moins pour un poc/test, créé un virtuel sous jeedom avec les commandes infos correspondantes et dans le virtuel tu auras l’url à appeler depuis ton esp; ca va être très proche de ce que tu fais déjà

Merci je vais essayer de trouver des exemple le push ne pose pas de pb par contre il faut que je cherche pour le traitement dans Jeeom.
Merci pour ces idées.
Mais je n’oublie l’idée du brocker, j’ai hésité au début de mon projet, je vais très certainement y regarder dans un second temps.

J’ai commencé à regarder le push http, c’est assez puissant.

J’ai fait un petit virtuel vite fait
image
J’envoie une valeur (le 80 ) avec un push http
Je calcule depuis combien de temps la valeur a changé avec :

stateDuration(#[Supervision][Station Meteo][Value]#)/60

Et ensuite un test if pour le check :

(#[Supervision][Station Meteo][deltalastcall]#>10) ? 0: 1

Je crois que je vais ajouter cette ligne à mon arduino ça ma parait relativement simple

Bienvenue chez Jeedom :wink:

En fait je n’avais jamais abordé ce point portant ça fait 2 ans que j’ai installé jeedom

Bonsoir Mips,

J’avance dans mon projet j’ai une erreur lorsque je compile je pense que je me débrouille mal
Je fais de cette façon pour envoyer un message sur mon site web et là ça fonctionne

>  if (WiFi.status() == WL_CONNECTED) {
    WiFiClientSecure *client = new WiFiClientSecure;
    client->setInsecure();
    HTTPClient https;
          Serial.println("Requête THP : ");
      httpRequestData = "api_key=" + apiKeyValue + "&sensor=THP" + "&TEMP=" + TEMPMOY + "&HUM=" + HUMMOY + "&PRES=" + String(bme.readPressure() / 100.0F) + "&TEMPR=" + temperatureRessentieEnCelsius + "&Ecart="+ ECARTTEMP; 
                 https.begin(*client, serverName);
      https.addHeader("Content-Type", "application/x-www-form-urlencoded");
    Serial.print("URL POST: ");  Serial.println(httpRequestData);
    int httpResponseCode = https.POST(httpRequestData);

Par contre dans le cas de mon jeedom qui est sur le même réseau je tente de cette façon

const char *hostJeedom = "192.168.0.22";
const int   port     = 80;

void messagehhtpJeedom(){
    http.begin(client,hostJeedom,port)
    http.addHeader("Content-Type", "application/x-www-form-urlencoded");
    httppushjeedom = "/core/api/jeeApi.php?apikey=HMwW57LIVN5TXXXXXXXeHUQL&type=cmd&id=4781&value=" + TEMPMOY;
    Serial.print("URL POST JEEDOM: ");  Serial.println(httppushjeedom);
    int httpResponseCodeJeedom = http.POST(httppushjeedom);
}

J’ai l’erreur suivante :

D:\Projets Station Meteo\00 Prog ESP 32 Arduino\StationMeteoV4B\StationMeteoV4B.ino:94:5: error: 'http' was not declared in this scope
     http.begin(client,hostJeedom,port)

Je pense que j’intialise pas le serveur (pas sur du bon terme) comment procéder dans ce cas précis.

Et seconde question à quoi sert « https.addHeader(« Content-Type », « application/x-www-form-urlencoded »); » ???
Merci.

Bonjour,
il y a un problème de mise en forme dans ton message :confused:
L’erreur veut dire que tu n’a pas initialisé la variable ‹ http › dans le ‹ scope › , c’est à dire ici à l’intérieur de ta fonction messagehttpJeedom

2e question: les headers sont nécessaires à toute requête http. ici tu ajoute le type du contenu de la requête, c’est utile pour que le client et le serveur puissent se comprendre.

De quelle façon doit on initialiser la variable http

Comme l’autre cas sauf qu’ici tu l’as appelée http et pas https.

Notes qu’on est hors sujet initial :wink:

Effectivement comme j’ai initié mon post par la solution et non le pb ça dérive !!
Pour mon info HTTPClient https s’'applique aussi bien pour des échanges http et https

En tout cas c’est pas le nom de la variable qui décide cela. Appelles la toto pour voir si ca switch sur ce protocole? :wink:

Je crois que le fond du pb c’est ma compréhension de cette ligne
HTTPClient https

En fait cela signifie que le déclare la variable https (qui pourrait s’appeler toto :grinning:) HTTPClient, est ce bien cela?