Page 1 sur 2

la valeur d'une sonde de température sur le web

Posté : sam. 10 nov. 2018 19:13
par jmvdb
Bonjour à tous, je viens ici chercher une lumière, car je tourne en rond et j'ai besoin de quelques explications

A- J'ai installé un serveur WEB sur mon raspberry (Apache, php, Mysql, phpmyAdmin, ftp)
depuis mon PC je peux afficher les pages en .php de mon serveur

B- avec un script python, je lis les valeurs d'un capteur HDT11 aidé par la bibli Adafruit_Python_DHT-master

=>> comment faire pour afficher sur une page .php la valeur de ma sonde ?? :x
et quelle se mette à jour toutes les minutes (par ex.)

merci de votre aide



n'hésitez pas à être pédagogue je ne suis pas un *** censure ***

Re: la valeur de temp sur le web

Posté : sam. 10 nov. 2018 20:35
par Bud Spencer
Pédagogue soit ’on alors :?

Facile. Tu donnes les bons droits à ton script python, tu récupères son résultat en utilisant la commande exec() de php et ensuite tu mets un timer javascript dans ta page web pour récupérer cette valeur toutes les minutes via une requête Ajax. Ça te fait du code php, du code python et du code javascript (je ne parle pas de css et html qui sont évident pur tout ça). Bon faut bien admettre que c’est carrément la méthode la plus lourding qui en plus d’etre totalement absurde sur un pi est aussi complément dépassé techniquement pour ce genre de cas, mais si ça te convient …

Autre solution, si tu trouves ton bonheur avec python (si bonheur il peut y avoir la dedans …), tu vires ton serveur apache et tu regardes du coté de Django. Ça peut te permettre de faire une appli self hosted qui n’a pas besoin de serveur web inutile et ça réduit le problème à seulement 2 langages au lieu de 3 (python et javascript).

Après tout ça, si tu veux vraiment t’orienter vers une solution plus moderne, plus performante, plus légère, plus dynamique, plus facile à mettre en place et plus facile à entretenir et qui n’utilise qu’un seul langage (JavaScript), tu peux jeter un coup d’œil ici : https://forums.framboise314.fr/viewtopi ... =44&t=3033

les sondes dthxx y ont été citées sur la page 10 ou 11 et il y a des liens qui ramènent à d'autres post avec des exemples

Re: la valeur de temp sur le web

Posté : dim. 11 nov. 2018 10:51
par jmvdb
Merci de ta réponse Bud elle m'a permis de découvrir ton excellent contribution en tuto sur Javascript

Permets-moi d'exprimer mon étonnement :
Afficher la valeur d'une température ( d'un capteur en général) sur une page Web me semblait être une demande récurrente à de nombreux projets ! surtout en domotique !
Du coup je pensais que soit c'était facile soit il y aurait une liste de tutos plus chouette les uns que les autres qui m'expliquerait le comment.

Les solutions faciles où le serveur est déporté (ex: mydevicescayenne) ne m'enchantent pas trop. Je voulais tout faire en local.

J'ai parcouru rapidement les 12 pages, sans voir d'exemple de sonde dhtxx, si tu en as un sous le coude ????

Re: la valeur d'une sonde de température sur le web

Posté : dim. 11 nov. 2018 12:50
par Bud Spencer
Afficher la valeur d’une sonde ou d’un capteur est effectivement une chose courante et je dirais meme que c’est un usage particulièrement bien adapté au PI du fait de ses gpio et des nombreuses librairies et programmes disponible pour ça. La vraie question c’est plutôt comment.

Pour la plupart, ils utilisent des solutions toutes faite pour ca (domoticz, jeedom …). Si tu préfères développer toi-même ta propre solution, ce n’est pas la peine de chercher des tutos avec la solution python/php ici, il ni en a pas. Tout le monde préconise ça, mais je n’ai jamais vu ici un bout de code propre qui permet d’utiliser python correctement en fastcgi. La seul chose que tu as une chance de trouver, ce sont juste des appels de script batch ou python par des pages php, Soit la plus pire des mauvaises méthodes (ce qui ne veut pas dire que cela ne marche pas).

Je n’ai pas de sonde type DHTxx sous la main donc difficile d’ecrire un exemple sans tester. Nous avions parlé de ces sonde avec ‘Data’ en page 10 du tuto. Il avait rédigé quelques bouts de code d’expérimentation et donnés des liens ici :
https://forums.framboise314.fr/viewtopi ... 351#p29351

Un package npm se trouve ici : https://www.npmjs.com/package/node-dht-sensor

Je prends bonne note que cela fait plusieurs fois que l’on m’interroge sur ces sonde donc je leur consacrerais la prochaine leçon du tuto (j’ai commandé et reçu depuis plusieurs semaines des dht22 et dht11 au boulot mais je n’ai meme pas encore ouvert le colis :lol: )

Re: la valeur d'une sonde de température sur le web

Posté : dim. 11 nov. 2018 13:56
par destroyedlolo
Salut,

Si la seule chose qui t'interesse, c'est la température, le plus simple, c'est d'utiliser un DS18B20 (qui en plus est moins cher) : elle est prise en charge par le kernel et coté Apache, un petit coup de SSI et tu n'as même pas besoin d'ajouter le moindre code.

Pour aller plus loin, ca marche avec n'importe quel type de sonde dont la valeur est exposée dans un filesystem.

A+

Re: la valeur d'une sonde de température sur le web

Posté : dim. 11 nov. 2018 16:39
par jmvdb
Bonjour destroyedlolo,
j'en ai commandé une je l'attends
peux tu m'expliquer une peu mieux :

... elle est prise en charge par le kernel et côté Apache, un petit coup de SSI et tu n'as même pas besoin d'ajouter le moindre code.
Pour aller plus loin, ça marche avec n'importe quel type de sonde dont la valeur est exposée dans un filesystem.


c'est quoi un coup de SSI ? :roll:

Re: la valeur d'une sonde de température sur le web

Posté : dim. 11 nov. 2018 19:22
par Bud Spencer
SSI (server side includes) C’est juste une façon de simplifier le code de tes pages en utilisant des directives sous forme de comment html pour inclure du contenu dynamique (oupas). Ce qui dans ton cas revient fondamentalement exactement au meme que de coder un exec() en php mais en moins de code. Utiliser ou pas les ssi est juste une question de config au niveau du serveur web. Appelons ça le cgi du pauvre (mais parfois très utile quand meme)

Ce que tu entends par prise en charge par le kernel, c’est juste que certain bus son exploitable nativement par l’os (ouais, on va dire ça …). Tu peux donc récupérer des valeurs de composant par de simples commandes cat /sys/bus/…

Pour inclure la valeur d’une sonde compatible dans une page web distribuée par un serveur qui autorise les ssi, il suffit d’y ecrire une simple directive du genre < !--# exec cmd=’’cat /sys/bus/….’’-->

Finalement, ça fait toujours appel à des process externes à chaque requete de page, ça demande toujours un serveur cgi pour fonctionner, et ça ne resoud toujours pas ton problème d’update dynamique des valeurs dans tes pages web :lol:

Re: la valeur d'une sonde de température sur le web

Posté : dim. 11 nov. 2018 20:49
par destroyedlolo
re,
jmvdb a écrit :
dim. 11 nov. 2018 16:39

peux tu m'expliquer une peu mieux :

... elle est prise en charge par le kernel et côté Apache, un petit coup de SSI et tu n'as même pas besoin d'ajouter le moindre code.
Pour aller plus loin, ça marche avec n'importe quel type de sonde dont la valeur est exposée dans un filesystem.
Il faut avoir dans son kernel un module qui ne nome je crois w1-gpio et potentiellement ajouter une ligne dans ton fichier de configuration pour indiquer quel GPIO est utilisé. Je ne peux pas te donner plus d'info car j'utilise une autre méthode : OWFS + interface I2C (voir mon site si tu es interessé). L'avantage du module kernel, c'est qu'il n'y a rien a installer (j'imagine que c'est d'office dans raspbian, c'est très souvent utilisé). Le blem est que ce module est pénalisant pour les perfs système.
Mais pour une installation simple, c'est suffisant :)
jmvdb a écrit :
dim. 11 nov. 2018 16:39
c'est quoi un coup de SSI ? :roll:
Voici la doc sur le site d'Apache : comme tu peux le voir, tu peux inclure le contenu de n'importe quel fichier sans pénalité vu qu'Apache lira directement le contenu sans besoin d'autre chose.
Tu verras aussi que tu peux lancer des CGI si tu veux retravailler la sortie ... mais c'est du coup beaucoup plus lourd pour le système. Si ton PI n'a que ca a faire, ok, sinon, tourne toi vers un langage inclus dans Apache (PHP, JS ou Lua suivant tes gouts).

Si tu utilise la premiere méthode sans CGI, tu peux aussi demander le refresh de ta page directement par le navigateur.
Simple, clair, léger, efficace ... mais relativement moche vu que toute la page est rafraichie.

Une fois que ca marche, tu peux amélioré en ne mettant a jour que la valeur en utilisant un iframe.

Re: la valeur d'une sonde de température sur le web

Posté : lun. 12 nov. 2018 14:29
par jmvdb
Bud Spencer a écrit :
dim. 11 nov. 2018 12:50
Pour la plupart, ils utilisent des solutions toutes faite pour ca (domoticz, jeedom …).
j'essaye domoticz, c'est déjà largement assez compliqué pour moi
merci de votre intervention

Re: la valeur d'une sonde de température sur le web

Posté : ven. 16 nov. 2018 09:08
par Bud Spencer
jmvdb a écrit :
lun. 12 nov. 2018 14:29
j'essaye domoticz, c'est déjà largement assez compliqué pour moi
Bha oui, pour programmer soit même ce genre de chose, ça oblige à passer un peu de temps pour apprendre avant de commencer. Vous faites tous la même erreur de monter des usines à gaz inadaptées (que vous ne maitrisez même pas) pour faire des choses qui sont très simple à réaliser et beaucoup plus performante en utilisant des méthodes modernes (et il y en a plein). Donc forcément, vous galérez, les résultats (quand il y en a ..) sont minable et fatalement vous abandonnez très vite. Avec les liens donnés et tous ce qu’il y a dans le tuto NodeJS, il y a pourtant tout pour faire. Si je repasse à mon bureau d’ici demain pour recup mes sondes et que j’ai le temps ce wk, je rajouterais un exemple pour une DHT11 ou DHT22. Tu vas voir que ça peut se torcher en quelques lignes de code seulement pour faire du temps réel et sans utiliser de serveur php complètement inutile, ni de cgi, ni de ssi, ni même de ajax et certainement pas en forçant des refresh de pages coté clients.