Teleinformation EDF sur Raspberry PI 3

Votre Apache se cache, votre Pi gémit, votre SoC fume ? La panne quoi ! C'est ici que vous trouverez sans doute une solution... Sinon du réconfort :)

Modérateurs : Francois, maxty01

Torseur 06
Messages : 24
Enregistré le : dim. 28 janv. 2018 14:19

Teleinformation EDF sur Raspberry PI 3

Message par Torseur 06 » mar. 30 janv. 2018 23:08

Bonjour,

Je suis un novice dans le domaine , j'ai un RASPBERRY PI 3 Model B, qui fonctionne sous Raspbian GNU/Linux 9.3 (Stretch). J'ai un écran tactile de 3.5" lié au Raspberry sur le port GPIO et HDMI.
Je l'ai depuis 2 semaines donc mon niveau de maitrise en LINUX est très limité et j'essaie de récupérer les données de téléinformation de mon compteur EDF.
Je suis en connexion SSH avec Putty et en SCP avec WINSCP sur un PC sous Windows 7.
Le RASPBERRY est connecté par le biais d'un dongle USB (http://hallard.me/utinfo/) au compteur électrique. J'arrive à récupérer les informations instantanées dans le terminal par le biais d'un :
cat /dev/ttyUSB0

En revanche j'essaie de m'inspirer de ce blog (http://www.magdiblog.fr/gpio/teleinfo-e ... lectrique/) pour pouvoir récupérer l'historique de mes consommations en php avec sqlite mais je n'y arrive pas.
Il y a 4 scripts PHP qui permettent de tracer l'historique de ces consommations pour lesquels j'ai modifié les 'ttyAMA0' par 'ttyUSB0' car je suis connecté par le port USB avec des cables électriques liés au compteur. J'ai mis ces scripts dans /var/www/html/.
Je les vois bien lorsque je tape l'adresse IP de mon RASPBERRY dans Mozilla sur mon pc mais lorsque je clique dessus soit cela m'affiche une page blanche sans erreur particulière, soit cela m'affiche la 1ère ligne du code pour teleinfo_conso.php et teleinfo_puissance.php.
#!/usr/bin/php

Je ne sais pas comment interpréter cela car il n'y a pas d'erreur explicite. Je suis sous PHP 7.0 et donc je ne sais pas si je suis censé faire pointer la 1ère ligne de code des 2 php précédents vers
#!/usr/bin/php
OU
#!/usr/bin/php7.0

Pouvez vous m'indiquer une piste pour résoudre mon problème et enfin pouvoir avoir accès au suivi de mes consommations ?

Je vous remercie par avance !

domi
Administrateur
Messages : 3230
Enregistré le : mer. 17 sept. 2014 18:12
Localisation : Seine et Marne

Re: Teleinformation EDF sur Raspberry PI 3

Message par domi » mer. 31 janv. 2018 08:53

Bonjour,

Les fichiers "teleinfo_conso.php" et "teleinfo_puissance.php" ne doivent pas être lancé depuis un navigateur, ce sont des scripts PHP exécutés par une tache CRON.
Pour l'entête "#!/usr/bin/php" doit fonctionner.
si tu exécutes dans une console

Code : Tout sélectionner

$ /usr/bin/php --version
il doit te retourner la version 7.xx de php

La page "teleinfo_func.php" est une page contenant uniquement des fonctions, il est donc normal qu'elle retourne une page vide.
La page "teleinfo_graph.php" est la page à exécuter depuis ton navigateur.

Le problème peut également venir de la configuration Apache et/ou Php, pour cela il faut consulter les logs respectifs.
Passionné de Raspberry, Arduino, ESP8266, ESP32, et objets connectés :
Spécial débutant, concevez vous-même votre domotique DIY : https://www.youtube.com/c/DomoticDIY
Conception d'une station météo DIY, et envoi des infos à votre Domotique.

Torseur 06
Messages : 24
Enregistré le : dim. 28 janv. 2018 14:19

Re: Teleinformation EDF sur Raspberry PI 3

Message par Torseur 06 » mer. 31 janv. 2018 21:56

Merci domi de votre réponse.

J'ai fait la ligne de commande que vous m'avez donné :
$ /usr/bin/php --version

et j'ai bien obtenu comme réponse
php 7.0.27-0+deb9u1 (cli)

Donc j'imagine que tout est bien installé pour ce qui est de php et que je peux laisser cela dans la 1ère ligne de code de teleinfo_conso.php et teleinfo_puissance.php.

Malgré tout en lançant teleinfo_graph.php j'ai toujours cette fameuse page blanche sans erreur.
N'y-a-t'il pas un moyen de voir dans un fichier quelconque les erreurs remontés par cette page qui ne s'affiche pas ?

De plus j'ai une commande 'sqlite' dans teleinfo_func.php qui est censé écrire dans un fichier situé dans :
/home/pi/teleinfo.sqlite

J'avoue ne pas bien comprendre le principe de ces bases de données sqlite mais j'ai créé un fichier teleinfo.sqlite à l'endroit indiqué mais rien ne s'écrit dedans.
Cela veut-il dire que j'ai un problème avec sqlite ?

Vous indiquez "Le problème peut également venir de la configuration Apache et/ou Php, pour cela il faut consulter les logs respectifs." Pouvez vous m'en dire plus, à quel endroit je peux consulter les moyens de débugger PHP7.0 et APACHE 2 ?

Merci à vous de votre aide !

chakalou
Messages : 1
Enregistré le : mer. 31 janv. 2018 23:23

Re: Teleinformation EDF sur Raspberry PI 3

Message par chakalou » mer. 31 janv. 2018 23:44

Bonjour,

Normalement pas besoin de créer le fichier sqlite: les scripts php doivent le faire tout seul pour toi.
Tu dois d'abord t'assurer que les scripts teleinfo_conso.php et teleinfo_puissances.php sont bien exécutés cyclquement par le cron du raspberry en tant que user www-data (pour plus d'info sur cron voir ici : https://www.domo-blog.fr/editer-la-crontab-du-raspberry ) s'il n'y sont pas tente de les ajouter à la main.
Tes fichiers doivent aussi avoir les droits de lecture et execution pour le user www-data. En effet ceci est indispensable pour que ton serveur apache puisse ensuite executer/lire ces-derniers.

Tu peux aussi tenter de lancer un des deux scripts php à la main directement en ligne de commande pour voir.
Ton fichier teleinfo.sqlite devrait se créer. Tu pourras ensuite voir si la bas de donnée contient bien quelque chose en utilisant directement sqlite via ligne de commandes (infos sur le fonctonnement de sqlite ici : https://doc.ubuntu-fr.org/sqlite ). Tu pourras notamment lister les noms des tables via la commande ".tables".
Une fois le script lancé et la base crée, tu peux retenter de charger la page.

Bon courage ! :)

Torseur 06
Messages : 24
Enregistré le : dim. 28 janv. 2018 14:19

Re: Teleinformation EDF sur Raspberry PI 3

Message par Torseur 06 » ven. 2 févr. 2018 19:40

Merci chakalou de ta réponse,

Je viens de rajouter 2 lignes avec le crontab -e pour l'exécution cyclique de mes taches :
* * * * * php /var/www/html/teleinfo_puissance.php
58 23 * * * php /var/www/html/teleinfo_conso.php

Pour ce qui est des droits de lecture et exécution de mes fichiers j'ai lancé les lignes :
sudo chmod +x teleinfo_puissance.php
sudo chmod +x teleinfo_conso.php
sudo chmod +x teleinfo_func.php
sudo chmod +x teleinfo_graph.php

Mais je ne suis pas sûr que ce soit la bonne ligne de commande ?

J'ai lancé depuis la ligne de commande les scripts php et voilà ce que ça m'affiche :
Pour le teleinfo_conso.php
PHP Warning: SQLite3::exec(): attempt to write a readonly database in /var/www/html/teleinfo_func.php on line 74
PHP Warning: SQLite3::query(): Unable to prepare statement: 1, no such table: conso in /var/www/html/teleinfo_func.php on line 83
PHP Fatal error: Uncaught Error: Call to a member function fetchArray() on boolean /var/www/html/teleinfo_func.php:83
Stack trace:
#0 /var/www/html/teleinfo_conso.php(8): handleConso()
#1 {main}


Pour le teleinfo_puissance.php
PHP Warning: SQLite3::exec(): attempt to write a readonly database in /var/www/hteinfo_func.php on line 62


Pour le teleinfo_func.php
/var/www/html/teleinfo_func.php: ligne 1: ?php: Aucun fichier ou dossier de ce type
/var/www/html/teleinfo_func.php: ligne 3: = : commande introuvable
/var/www/html/teleinfo_func.php: ligne 5: // : est un dossier
/var/www/html/teleinfo_func.php: ligne 6: // : est un dossier
/var/www/html/teleinfo_func.php: ligne 14: = : commande introuvable
/var/www/html/teleinfo_func.php: ligne 15: = : commande introuvable
/var/www/html/teleinfo_func.php: ligne 16: = : commande introuvable
/var/www/html/teleinfo_func.php: ligne 18: erreur de syntaxe près du symbole inattendu « ( »
/var/www/html/teleinfo_func.php: ligne 18: ` while ($char != chr(2)) { // on lit tous les caracteres jusqu'a la fin de la trame'


Je ne sais pas si l'on peut interpréter ces erreurs.

Après l'exécution de ces scripts php il n'y eu aucun fichier qui s'est créé dans le dossier teleinfo.sqlite.
Lorsque j'ouvre sqlite par le biais de la ligne de commande "sqlite3" et que je liste les tables par ".tables", rien ne s'affiche.
Je ne sais pas du tout comment interpréter toutes ces informations et erreurs, pouvez vous me donner des pistes pour trouver la solution ?

Merci à vous de votre aide précieuse !

domi
Administrateur
Messages : 3230
Enregistré le : mer. 17 sept. 2014 18:12
Localisation : Seine et Marne

Re: Teleinformation EDF sur Raspberry PI 3

Message par domi » ven. 2 févr. 2018 20:48

Apparemment le user utilisé n'a pas le droit d'écriture dans la base Sqlite.
Passionné de Raspberry, Arduino, ESP8266, ESP32, et objets connectés :
Spécial débutant, concevez vous-même votre domotique DIY : https://www.youtube.com/c/DomoticDIY
Conception d'une station météo DIY, et envoi des infos à votre Domotique.

Torseur 06
Messages : 24
Enregistré le : dim. 28 janv. 2018 14:19

Re: Teleinformation EDF sur Raspberry PI 3

Message par Torseur 06 » ven. 2 févr. 2018 22:14

Merci à vous domi.

Comment donner le droit d'écriture à l'user alors ?
Il se trouve que je vois maintenant le fichier teleinfo.sqlite se créé même si lorsque j'essaie de l'éditer il est illisible car composé de caractères spéciaux. En fait je le vois pas directement lorsque je suis sur WinSCP il faut que je tape dans la recherche de fichiers sur WinSCP le terme "telinfo.sqlite" et il apparait. De même quand je tapes le
sudo nano /home/pi/teleinfo.sqlite il apparait aussi et a l'air de s'actualiser au fil du temps mais reste illisible sur un fichier texte.
Pour autant lorsque je tape en lignes de commandes :
sqlite>.tables
Rien ne s'affiche.
Qu'en pensez vous ?

Merci à vous !

Torseur 06
Messages : 24
Enregistré le : dim. 28 janv. 2018 14:19

Re: Teleinformation EDF sur Raspberry PI 3

Message par Torseur 06 » sam. 3 févr. 2018 09:37

Je me réponds à moi même, j'ai enfin réussi à faire apparaitre mes courbes !

J'ai essayé de changer les droits d'accès au fichier teleinfo.sqlite et en fouinant j'ai réussi à faire une sorte de "chown" global en donnant accès aux droits de lecture écriture exécution grâce à vos conseils.
Voilà ce que m'affiche la liste de droits d'accès à teleinfo.sqlite par ls -l

Code : Tout sélectionner

-rwxr-xr-- 1 pi   root  28672 févr.  3 09:27 teleinfo.sqlite
Lui ai-je donner trop de droits ?

Ensuite j'ai ouvert les ports de ma box 80 HTTP et 445 HTTPS pour que mon serveur web soit accessible en dehors du réseau.
J'ai mis en place une adresse url (Gratuite chez Free apparemment).
Du coup grâce à cet url j'ai fait le test je peux avoir accès en dehors de chez moi au suivi de ma consommation électrique. Ce qui était en grande partie mon objectif donc je suis satisfait.

Maintenant pour pouvoir améliorer un peu le système j'aimerais savoir s'il est possible de pouvoir récupérer les données du graphique en listes de données écrites pour pouvoir les retraiter ultérieurement sur excel par exemple ?

D'un point de vue sécurité je ne sais pas s'il est très commode de donner accès juste avec un lien URL à mon serveur WEB sans aucun mot de passe. D'un point de vue sécurité, est ce que l'accès à ce lien peut être une porte d'accès à mon domicile si j'ai un réseau domotique qui s'aggrandit ? De quelle manière puis-je le sécuriser ?

Je vous remercie par avance !

domi
Administrateur
Messages : 3230
Enregistré le : mer. 17 sept. 2014 18:12
Localisation : Seine et Marne

Re: Teleinformation EDF sur Raspberry PI 3

Message par domi » sam. 3 févr. 2018 10:55

Bonjour,

Si c'est juste un accès web au graphique, dès lors qu'il ne sont pas secret, il n'y a pas de risque de sécurité.
Par contre pour le port https, c’est 443 et non 445.
Passionné de Raspberry, Arduino, ESP8266, ESP32, et objets connectés :
Spécial débutant, concevez vous-même votre domotique DIY : https://www.youtube.com/c/DomoticDIY
Conception d'une station météo DIY, et envoi des infos à votre Domotique.

Torseur 06
Messages : 24
Enregistré le : dim. 28 janv. 2018 14:19

Re: Teleinformation EDF sur Raspberry PI 3

Message par Torseur 06 » sam. 3 févr. 2018 11:20

Merci pour la correction effectivement c'est 443 et non 445.
Donc quelqu'un de mal intentionné avec cet url ne pourra pas (par le biais de manipulations informatiques fallacieuses) remonter à ton mon réseau domotique par le biais de ce simple URL ? En gros j'ai peur que mon serveur web raspberry soit un point d'entrée dans ton mon réseau

Merci à vous !

Répondre

Retourner vers « En panne ? »