Ce Forum passera en lecture seule en janvier 2020
Image
Merci de vous rendre sur https://community.jeedom.com maintenant pour vos prochains postes ;)

Réaliser un WifInfo avec un Wemos en boitier DIN.

Avatar de l’utilisateur
Terraga
Timide
Messages : 26
Inscription : 18 août 2018, 08:43

Re: Réaliser un WifInfo avec un Wemos en boitier DIN.

Message par Terraga » 08 mars 2019, 12:18

merci sa fonctionne, c est vraiment bien vu l'astuce eirock67

JoMoTic
Timide
Messages : 30
Inscription : 04 mai 2015, 21:23

Re: Réaliser un WifInfo avec un Wemos en boitier DIN.

Message par JoMoTic » 09 mars 2019, 10:06

En fait, si la clé API ne s'affiche pas, n'hésitez pas à purger le cache de votre navigateur internet.

scotty92fr
Timide
Messages : 262
Inscription : 07 mars 2017, 20:31

Re: Réaliser un WifInfo avec un Wemos en boitier DIN.

Message par scotty92fr » 10 mars 2019, 20:11

Bonsoir mjeanne,

le script 'GWTeleinfo.php' fonctionne correctement et transmet bien les info au plugin Téléinfo.

Mais j'ai toutes le 15s ce message dans html.error:
[10-Mar-2019 20:01:50 Europe/Berlin] PHP Warning: curl_error() expects parameter 1 to be resource, string given in /var/www/html/GWTeleinfo.php on line 53
[10-Mar-2019 20:01:50 Europe/Berlin] PHP Notice: in /var/www/html/GWTeleinfo.php on line 53
Y a t'il un moyen d'éviter ces messages ?

Merci d'avance
Jeedom 4.0.35 DIY RPI3/SSD , Zwave - Rfxcom - ...

mjeanne
Actif
Messages : 629
Inscription : 11 mars 2017, 18:36

Re: Réaliser un WifInfo avec un Wemos en boitier DIN.

Message par mjeanne » 11 mars 2019, 09:19

Bonjour,
scotty92fr a écrit :
10 mars 2019, 20:11
Y a t'il un moyen d'éviter ces messages ?
Petite erreur de ma part (je me suis trompé de variable). Il faut remplacer la ligne 53 par:

Code : Tout sélectionner

trigger_error(curl_error($ch));
Je vais modifier mon post plus haut également.

scotty92fr
Timide
Messages : 262
Inscription : 07 mars 2017, 20:31

Re: Réaliser un WifInfo avec un Wemos en boitier DIN.

Message par scotty92fr » 11 mars 2019, 09:39

Super merci mjeanne


Envoyé de mon iPhone en utilisant Tapatalk
Jeedom 4.0.35 DIY RPI3/SSD , Zwave - Rfxcom - ...

rol-rider
Actif
Messages : 5097
Inscription : 10 août 2014, 23:50

Re: Réaliser un WifInfo avec un Wemos en boitier DIN.

Message par rol-rider » 11 mars 2019, 12:09

@mjeanne,
Bonsoir,

voici une solution assez propre, car elle ne modifie ni wifinfo, ni le plugin Teleinfo. J'ai juste créé une passerelle qui prend les données en GET (ancienne API) et les renvoi en POST (nouvelle API).

1/ Tout d'abord, faire une sauvegarde de votre Jeedom....
2/ Vérifier la sauvegarde, la mettre en sureté, etc...
3/ vérifier que vous avez fait le point 1
4/ Ne trichez pas, vérifiez le point 1
5/ Sur Jeedom: Mettre à jour le plugin Téléinfo et aller dans la config de Jeedom, section API, pour y chercher la clé API de Téléinfo.
6/ Sur Wifinfo: Mettre cette clé API dans la config Jeedom du wifinfo (chez moi, ça marchait sans cette clé api depuis toujours, mais plus avec la mise à jour).
Toujours dans la config de Wifinfo, section Jeedom, notez l'URL dans un coin, puis remplacer la. Chez certains, l'URL peut être différente.

Code : Tout sélectionner

/plugins/teleinfo/core/php/jeeTeleinfo.php

par

Code : Tout sélectionner

/GWTeleinfo.php

7/ retour sur Jeedom. Utilisez SSH pour créer le fichier 'GWTeleinfo.php' dans '/var/www/html' ou utilisez le plugin "Outils de développement" (ce que j'ai fait).
Collez le code suivant:

Code : Tout sélectionner

<?php
// Les variables ci après sont à configurer
// IP Lock: si '1', la passerelle filtre toute autre IP (j'ai réalisé ce script à l'arrache, c'est une sécurité de base)
$IP_Wifinfo="192.168.5.229";
$IP_Lock = 1; // Si =1, seul le wifinfo indiquer au dessus peut appeler ce script

// votre Jeedom est sur la meme machine que ce script, en théorie, sinon adaptez ici
$Jeedom = "http://localhost";
// chemin vers le plugion téléinfo (ce qui se trouvait dans la config de votre wifinfo)
$URL_Jeedom = $Jeedom . "/plugins/teleinfo/core/php/jeeTeleinfo.php";

// plus rien à configurer à partir d'ici
///////////////////////////////////////////////////////////////////
if ($IP_Lock==1) {
$IP = $_SERVER['REMOTE_ADDR'];
if ($IP!=$IP_Wifinfo)
{
print_r("IP Lock !");
exit(1);
}
}

// lecture du GET provenant du wifinfo
// il faudra peut-être voir a sécuriser
$data = $_GET;

// extraction de la clé d'API qu'il faudra remettre dans l'URL
$api_key=htmlspecialchars($data["api"]);

// transformation des données en format json
// rajout de "device", comme voulu par la nouvelle API
$data["device"]=$data["ADCO"];
// suppression de "api" et "apikey" qui peuvent être sur la ligne de commande
if (isset($data["api"])) { unset($data["api"]); }
if (isset($data["apikey"])) { unset($data["apikey"]); }
$data_json= json_encode($data);

// on rajoute les infos demandées par le plugin teleinfo
$post_data = "{\"device\":{\"".htmlspecialchars($data["ADCO"])."\":".$data_json. "}}";

// on renvoi en POST
$full_URL = $URL_Jeedom . "?apikey=". $api_key;
$ch = curl_init($full_URL);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($post_data)));
curl_setopt($ch, CURLOPT_TIMEOUT, 5); // pour ne pas attendre à l'infini
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
$retour = curl_exec($ch);
if (!$retour)
{
trigger_error(curl_error($ch));
}
curl_close($ch);

?>

Si vous êtes en ssh, pensez à changer le propriétaire du fichier via

Code : Tout sélectionner

chown www-data.www-data GWTeleinfo.php

Normalement, ça devrait fonctionner, c'est le cas chez moi.
Je suis sur une config PI3/php7.1/Jessie et compteur non linky, option tempo. Ce script ne fonctionnera peut-être pas en mode 2 compteurs (ou devra être modifié au niveau du filtrage IP). En toute logique, il devrait être compatible linky, puisqu'il ne change pas les données, juste le format de transmission.


edit 7/03 16h53: changement de la commande chmod par chown
edit 11/03 9h20: correction d'une erreur sur le 'trigger_error'

Est ce que je peux mettre ta solution sur la première page du post ?
RPI3 avec mSATA
RFXcom; RFLink; Z-Wave; Mysensors; ESPEasy
Noeuds MySensors-téléinfo-Température-Distance-Baromètre-relais
Noeuds ESPEasy-open-garage-relais-PIR-Station Météo

mjeanne
Actif
Messages : 629
Inscription : 11 mars 2017, 18:36

Re: Réaliser un WifInfo avec un Wemos en boitier DIN.

Message par mjeanne » 11 mars 2019, 12:43

bonjour,
rol-rider a écrit :
11 mars 2019, 12:09
Est ce que je peux mettre ta solution sur la première page du post ?
Bien sur.

scotty92fr
Timide
Messages : 262
Inscription : 07 mars 2017, 20:31

Re: Réaliser un WifInfo avec un Wemos en boitier DIN.

Message par scotty92fr » 11 mars 2019, 20:42

@mjeanne,

j'ai aussi de temps en temps :

Code : Tout sélectionner

[11-Mar-2019 20:09:51 Europe/Berlin] PHP Notice:   in /var/www/html/GWTeleinfo.php on line 53
[11-Mar-2019 20:10:10 Europe/Berlin] PHP Notice:  Operation timed out after 5001 milliseconds with 0 bytes received in /var/www/html/GWTeleinfo.php on line 53
[11-Mar-2019 20:10:21 Europe/Berlin] PHP Notice:   in /var/www/html/GWTeleinfo.php on line 53
j'ai intercalé avant le if (en espérant en apprendre plus):

Code : Tout sélectionner

error_log(print_r($ch,TRUE)); 
là j'ai :

Code : Tout sélectionner

11-Mar-2019 20:28:07 Europe/Berlin] PHP Notice:   in /var/www/html/GWTeleinfo.php on line 54
[11-Mar-2019 20:28:21 Europe/Berlin] Resource id #2
[11-Mar-2019 20:28:21 Europe/Berlin] PHP Notice:   in /var/www/html/GWTeleinfo.php on line 54
[11-Mar-2019 20:28:37 Europe/Berlin] Resource id #1
[11-Mar-2019 20:28:37 Europe/Berlin] PHP Notice:   in /var/www/html/GWTeleinfo.php on line 54
[11-Mar-2019 20:28:52 Europe/Berlin] Resource id #1
[11-Mar-2019 20:28:52 Europe/Berlin] PHP Notice:   in /var/www/html/GWTeleinfo.php on line 54
j'ai mis un peu plus de log en rajoutant l'affichage de $full_URL et $post_data

Code : Tout sélectionner

[11-Mar-2019 20:38:50 Europe/Berlin] http://localhost/plugins/teleinfo/core/php/jeeTeleinfo.php?apikey=SAM2Lr7GS2CUSXCUPZBXA20eV1gQFKEY
[11-Mar-2019 20:38:50 Europe/Berlin] {"device":{"041864851423":{"ADCO":"041864851423","OPTARIF":"BASE","ISOUSC":"30","BASE":"002001454","PTEC":"TH..","IINST":"012","IMAX":"090","PAPP":"02840","HHPHC":"A","MOTDETAT":"000000","ADPS":"033","device":"041864851423"}}}
[11-Mar-2019 20:38:51 Europe/Berlin] Resource id #2
[11-Mar-2019 20:38:51 Europe/Berlin] PHP Notice:   in /var/www/html/GWTeleinfo.php on line 56
[11-Mar-2019 20:39:05 Europe/Berlin] http://localhost/plugins/teleinfo/core/php/jeeTeleinfo.php?apikey=SAM2Lr7GS2CUSXCUPZBXA20eV1gQFKEY
[11-Mar-2019 20:39:05 Europe/Berlin] {"device":{"041864851423":{"ADCO":"041864851659","OPTARIF":"BASE","ISOUSC":"30","BASE":"002001466","PTEC":"TH..","IINST":"012","IMAX":"090","PAPP":"02830","HHPHC":"A","MOTDETAT":"000000","ADPS":"033","device":"041864851423"}}}
[11-Mar-2019 20:39:08 Europe/Berlin] Resource id #1
[11-Mar-2019 20:39:08 Europe/Berlin] PHP Notice:   in /var/www/html/GWTeleinfo.php on line 56
Jeedom 4.0.35 DIY RPI3/SSD , Zwave - Rfxcom - ...

mjeanne
Actif
Messages : 629
Inscription : 11 mars 2017, 18:36

Re: Réaliser un WifInfo avec un Wemos en boitier DIN.

Message par mjeanne » 11 mars 2019, 21:32

Le timeout est étrange. Quel est le niveau de charge de votre machine ? Parce que mettre plus de 5 secondes à se joindre lui-même, c'est bizarre.
Vous pouvez augmenter la valeur du timeout dans les 2 lignes correspondantes (vers lignes 46/47).
qu'avez-vous mis dans la variable '$Jeedom' ?

Code : Tout sélectionner

error_log(print_r($ch,TRUE));
=> ça ne fonctionnera pas, car $ch n'est pas une chaine de texte. C'est 'curl_error($ch)' qui permet d'obtenir l'erreur en format texte.
Si le script fonctionne et qu'il n'y a que les traces dans les logs qui vous posent problème, mettez la ligne 'trigger_error' en commentaire.

Xistof
Timide
Messages : 118
Inscription : 13 janv. 2018, 19:59

Re: Réaliser un WifInfo avec un Wemos en boitier DIN.

Message par Xistof » 11 mars 2019, 21:36

merci a mjeanne pour la modification, ça marche impec (bon ça n'a pas marché du premier coup car je n'avais pas lu la première ligne du script avec l'adresse ip du teleinfo à modifier...)
merci aux autres pour l'astuce de la clé API qui n'apparaissait pas chez moi également ;)

scotty92fr
Timide
Messages : 262
Inscription : 07 mars 2017, 20:31

Re: Réaliser un WifInfo avec un Wemos en boitier DIN.

Message par scotty92fr » 11 mars 2019, 22:06

mjeanne,
Pour $jeedom il y a http://localhost
Je crois que je vais commentè la ligne j’ai rien d’autre qui deconne !
Un grand merci en tout cas, ça marche impeccable !
Jeedom 4.0.35 DIY RPI3/SSD , Zwave - Rfxcom - ...

Koto41
Timide
Messages : 71
Inscription : 24 oct. 2017, 14:57

Re: Réaliser un WifInfo avec un Wemos en boitier DIN.

Message par Koto41 » 12 mars 2019, 19:53

Bonjour,

Qui peux me donner la référence du bornier ou l'on raccorde le 220 vols (sur la version rail DIN)

Merci
Hardware :
- Serveur sous Proxmox VE 5.1-35 avec VM Jeedom v3.3.19
- Raspberry Pi 2 Modèle B 1GB
- Onduleur APC Smart UPS 750
Software :
- PfSense CE 2.4.4-RELEASE-p2
- Jeedom v3.3.19
- Raspbian Stretch v4.9

rol-rider
Actif
Messages : 5097
Inscription : 10 août 2014, 23:50

Re: Réaliser un WifInfo avec un Wemos en boitier DIN.

Message par rol-rider » 12 mars 2019, 20:29

Côté 230, c'est des Adam tech EB147-02-M ( pas de 7,5mm)
Côté TIC, c'est des Adam tech EB147-02-D (pas de 5,08 ou 02-C pas de 5mm)

Envoyé de mon Nexus 7 en utilisant Tapatalk

RPI3 avec mSATA
RFXcom; RFLink; Z-Wave; Mysensors; ESPEasy
Noeuds MySensors-téléinfo-Température-Distance-Baromètre-relais
Noeuds ESPEasy-open-garage-relais-PIR-Station Météo

Koto41
Timide
Messages : 71
Inscription : 24 oct. 2017, 14:57

Re: Réaliser un WifInfo avec un Wemos en boitier DIN.

Message par Koto41 » 13 mars 2019, 08:11

rol-rider a écrit :
12 mars 2019, 20:29
Côté 230, c'est des Adam tech EB147-02-M ( pas de 7,5mm)
Côté TIC, c'est des Adam tech EB147-02-D (pas de 5,08 ou 02-C pas de 5mm)
Merci rol-rider
Hardware :
- Serveur sous Proxmox VE 5.1-35 avec VM Jeedom v3.3.19
- Raspberry Pi 2 Modèle B 1GB
- Onduleur APC Smart UPS 750
Software :
- PfSense CE 2.4.4-RELEASE-p2
- Jeedom v3.3.19
- Raspbian Stretch v4.9

rol-rider
Actif
Messages : 5097
Inscription : 10 août 2014, 23:50

Re: Réaliser un WifInfo avec un Wemos en boitier DIN.

Message par rol-rider » 13 mars 2019, 09:12

Si certains sont intéressés par des PCB (made in China)
J'en ai quelques-uns.

Envoyé de mon V370 en utilisant Tapatalk

RPI3 avec mSATA
RFXcom; RFLink; Z-Wave; Mysensors; ESPEasy
Noeuds MySensors-téléinfo-Température-Distance-Baromètre-relais
Noeuds ESPEasy-open-garage-relais-PIR-Station Météo

rol-rider
Actif
Messages : 5097
Inscription : 10 août 2014, 23:50

Re: Réaliser un WifInfo avec un Wemos en boitier DIN.

Message par rol-rider » 13 mars 2019, 11:12

Sinon, le script fonctionne, mais j'ai toujours cette erreur dans les logs "http error"

Code : Tout sélectionner

[13-Mar-2019 09:34:17 UTC] PHP Notice:   in /var/www/html/GWTeleinfo.php on line 53
[13-Mar-2019 09:34:47 UTC] PHP Notice:   in /var/www/html/GWTeleinfo.php on line 53
[13-Mar-2019 09:35:17 UTC] PHP Notice:   in /var/www/html/GWTeleinfo.php on line 53
[13-Mar-2019 09:35:47 UTC] PHP Notice:   in /var/www/html/GWTeleinfo.php on line 53
[13-Mar-2019 09:36:18 UTC] PHP Notice:   in /var/www/html/GWTeleinfo.php on line 53
[13-Mar-2019 09:36:47 UTC] PHP Notice:   in /var/www/html/GWTeleinfo.php on line 53
[13-Mar-2019 09:37:17 UTC] PHP Notice:   in /var/www/html/GWTeleinfo.php on line 53
[13-Mar-2019 09:37:47 UTC] PHP Notice:   in /var/www/html/GWTeleinfo.php on line 53
[13-Mar-2019 09:38:17 UTC] PHP Notice:   in /var/www/html/GWTeleinfo.php on line 53
[13-Mar-2019 09:38:47 UTC] PHP Notice:   in /var/www/html/GWTeleinfo.php on line 53
[13-Mar-2019 09:39:17 UTC] PHP Notice:   in /var/www/html/GWTeleinfo.php on line 53
[13-Mar-2019 09:39:47 UTC] PHP Notice:   in /var/www/html/GWTeleinfo.php on line 53
[13-Mar-2019 09:40:18 UTC] PHP Notice:   in /var/www/html/GWTeleinfo.php on line 53
[13-Mar-2019 09:40:47 UTC] PHP Notice:   in /var/www/html/GWTeleinfo.php on line 53
[13-Mar-2019 09:41:17 UTC] PHP Notice:   in /var/www/html/GWTeleinfo.php on line 53
[13-Mar-2019 09:41:47 UTC] PHP Notice:   in /var/www/html/GWTeleinfo.php on line 53
[13-Mar-2019 09:42:17 UTC] PHP Notice:   in /var/www/html/GWTeleinfo.php on line 53
et ma ligne 53 est bien "trigger_error(curl_error($ch));"
RPI3 avec mSATA
RFXcom; RFLink; Z-Wave; Mysensors; ESPEasy
Noeuds MySensors-téléinfo-Température-Distance-Baromètre-relais
Noeuds ESPEasy-open-garage-relais-PIR-Station Météo

mjeanne
Actif
Messages : 629
Inscription : 11 mars 2017, 18:36

Re: Réaliser un WifInfo avec un Wemos en boitier DIN.

Message par mjeanne » 13 mars 2019, 11:43

je n'avais pas ce comportement chez moi, du coup, pas simple à debugger. D'autant que sans erreur, il ne devrait pas entrer dans la boucle et surtout le message est vide.
Au lieu de 'localhost', testez avec '127.0.0.1' pour gagner du temps et des ressources en évitant une résolution dns.
Ne serait-ce pas lié à un paramétrage 'debug' quelque part dans la config des logs de Jeedom ? ou lié à une version de php.

J'ai une Jeedom DIY sur Rpi3, php 7.1.12 sous Jessie et mon niveau de log par defaut de Jeedom est "Erreur".

Edit: Je viens de mettre à jour mon Jeedom en 3.3.16, et la ligne apparait maintenant dans mes logs !
Edit2: ayant l'anomalie sous les yeux, le debug est plus simple ! A priori, c'est curl_exec qui ne renvoi plus l'erreur de la même façon qu'avant suite mise à jour de PHP, et comme j'utilise des bouts de code copier/coller, ce n'est pas à jour. Il faut modifier le test et utiliser un triple '='. Je n'ai pas d'explication sur le pourquoi je n'avais pas ces warnings avant la mise à jour.

mise à jour du code:

Code : Tout sélectionner

// on renvoi en POST
$full_URL = $URL_Jeedom . "?apikey=". $api_key;
$ch = curl_init($full_URL);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($post_data)));
curl_setopt($ch, CURLOPT_TIMEOUT, 5); // pour ne pas attendre à l'infini
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);

if (curl_exec($ch) === false) 
{
  trigger_error(curl_error($ch));
  // les 3 lignes suivantes servent au debug et peuvent être commentées ou supprimées
  print_r("Erreur: ".curl_error($ch)."<br>\r\n");
  print_r(curl_getinfo($ch));
  print_r("<br>\r\n");
}
curl_close($ch);

scotty92fr
Timide
Messages : 262
Inscription : 07 mars 2017, 20:31

Re: Réaliser un WifInfo avec un Wemos en boitier DIN.

Message par scotty92fr » 13 mars 2019, 12:53

Bonjour mjeanne,

impeccable :) plus d'erreur . un grand merci!
Jeedom 4.0.35 DIY RPI3/SSD , Zwave - Rfxcom - ...

rol-rider
Actif
Messages : 5097
Inscription : 10 août 2014, 23:50

Re: Réaliser un WifInfo avec un Wemos en boitier DIN.

Message par rol-rider » 13 mars 2019, 15:42

Pareil, plus d'erreur :)
RPI3 avec mSATA
RFXcom; RFLink; Z-Wave; Mysensors; ESPEasy
Noeuds MySensors-téléinfo-Température-Distance-Baromètre-relais
Noeuds ESPEasy-open-garage-relais-PIR-Station Météo

delawich
Timide
Messages : 257
Inscription : 11 nov. 2015, 11:31

Re: Réaliser un WifInfo avec un Wemos en boitier DIN.

Message par delawich » 13 mars 2019, 20:42

J'ai fais les mise à jour ce soir le core 3.2.16 et le plugin teleinfo(4.2.2), j'ai suivi les instructions pour le passage au php mais fonctionne pas je regarderai demain


Répondre

Revenir vers « [Plugin Tiers] ESPEasy »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités