Lire une sonde AM2302 (DHT22) avec WiringPi

Bonjour à tous,

A propos
J’avance doucement dans mes différents projets qui visent à utiliser les GPIO de mes raspberry.
Si vous n’avez pas déjà vu mes précédents post j’ai donc plusieurs Raspberry Pi 2 répartis dans la maison avec une utilisation en tant que média center avec Kodi.

Projet
Ce serait un peu con de ne pas profiter des possibilités du port GPIO, j’ai donc décidé d’équiper tout simplement ces raspberry d’une sonde de numérique de température et d’humidité AM2302 plus connu sous le nom de DHT22.

Ayant déjà réalisé des essais avec une carte relais que je voulais piloter via une interface web ou par le biais d’application que l’on trouve sur le play store. j’avais installé WiringPi. C’est en effet une bibliothèque quasi incontournable si l’on souhaite utiliser les GPIO.

Mes essais avaient était très concluants et il ne me reste plus qu’à programmer des scripts php qui enverront des requêtes http à mes raspberry.

La réception de ma commande de cinq capteurs DHT22 il y’a quelques jours me pousse maintenant à vouloir câbler et utiliser ces sondes.

WiringPi étant déjà installée, je compte utiliser cette dernière pour lire mes sondes et les exporter vers un fichier XML stocké dans un répertoire du serveur apache www avec par exemple une organisation comme suit.

  • un répertoire par année
  • un fichier par mois
  • une structure XML avec les jours et les heures de lecture des capteurs…

le serveur pourra soit demander via une requête http l’état des mesures en temps réel, soit rapatrier un des fichiers de sauvegarde au format XML, puis il le parsera afin de présenter les données sous forme de calandrier ou graph…

Mes premiers pas
j’ai donc fait une recherche sur le net et voici quelques liens :

Tutoriel david meziere
Recherche DHT22 sur Raspbian-France.
j’ai donc réalisé la rédaction du fichier dht22.c ainsi que sa compilation, de nombreuses erreurs s’étaient glissées dans ma rédaction et je les avaient corrigé en suivant les retours d’infos du compilateur dont j’avais lancé la compilation avec cette commande :

 gcc dht22.c -o dht22 -lwiringPi

Le câblage

j’ai donc regarder sur le site d’aosong pour trouver le datasheet mais j’avais fait chou blanc, et c’est finalement là que je l’ai trouvé > DATASHEET PDF

  • il est recommandé d’utiliser une tension d’aliementation de 5V
  • Une résistance de pullup entre de 5.1KOhm (pas pushup on est pas en train d’acheter un pantalon).

du capteur vers le raspberry Pi2:
(A noter les numéro de broches du GPIO sont l’emplacement physique)

Borne 1 (VDD) > Resistance 5.6Kom (patte 1) + un fil rouge Pin N°2 (+5V) = VCC
Borne 2 (SDA) > Resistance 5.6KOhms (patte 2) + un fil jaune Pin N°12 (GPIO1)
Borne 3 (NC) > Rien
Borne 4 (GND) > un fil noir vers Pin N°6

Le résultat
Lorsque je tape la commande :

sudo ./dht22 1
Raspberry Pi : Lecture d'une sonde DHT22  à l'aide de WiringPi.
Données non prêtes, abandonnée...

j’ai tenté d’utiliser d’autre pin, j’ai vérifié mon câblage, mais je ne trouve pas le problème…

j’ai regardé le fichier C et il m’a l’air de décodé la trame correctement, à en croire le programme C de l’auteur inconnu… ca m’a l’air cohérent avec la trame envoyé par le capteur.

Bref, j’aimerais votre aide, pour réussir à lire ce capteur puis ensuite réaliser (enfin me guider) pour le programme d’export en XML.

Merci d’avance !
Bonnes recherches…

Coucou Antres !

'jannonce je n’ai pas tout lu !
j’ai deja fait des trucs via script mais n’etant que exploitant j’etait tres limité !

Par contre, je t’invite a penser a installer Jeedom sur un de tes clients avec le plugin Jeedouino , tous les scénarios pour DHT22 et 18B20 par exemple sont prets ! Jeedom permettra de juste rien avoir a coder et penser plus large plus tard , cest je pense LE liant entre le rpi et les gpio pour un utilisateur lambda !
Jai dédié un RPI pour jeedom central avec des remontés dinfo de tous mes autres pi mais la solution tourne tres bien sur un kodi + jeedom

Bref ! Courage !

J’ai lu quelques trucs à propos de jeedom… de ce que j’en ai compris c’est pour faire une box domotique et j’avais cru comprendre que c’était une distribution…

mon installation de domotique se développe mais j’ai cette configuration.

  • 1 SERVEUR (windows7) avec dessus :
    • Serveur WEB (php + mysql)
    • Serveur DNS (pour la résolution de mes adresses DNS locales… ex :home.lan)
    • serveur S.A.R.A.H
    • Serveur Mumble (pour faire de l’audio multi-room) avec câbles virtuels.
  • 3 Media center (raspbian + kodi + mumble) en liaison avec Mysql
  • 1 API (mitsubishi FXO MRES)
  • 1 ALLEN BRADLEY (d’ici peu).
  • 1 IHM intégré dans le mur près de la cuisine (pc windows + ecran tactile) sera peut etre changé par un Pi2
  • 1 prise Wifi ALDI Maginon.

mon serveur proche de l’armoire électrique permettra de dialoguer avec les API qui seront dans cette armoire… certainement en ModBusTCP…

Du coup comment intégrer Jeedom dans tout cela…
L’interface de mon IHM se fera par le biais d’une page web, une sorte de WebApp que je suis en train de développer, ce dernier communiquera via requête http (comme S.A.R.A.H) avec les différents équipements (Kodi, Décodeur Tv, prise wifi.

l’avantage de la WebApp c’est que je pourrais l’afficher sur les Pc, Smartphone, tablette… et personaliser l’affichage en fonction du périphérique…

La liste de course et certaines données peuvent même être utilisable en exterieur depusi le smartphone…

mes questions du coup :
si je veux récupérer mes capteurs pour les afficher sur ma page web… je dois installer jeedom sur tous mes raspberry ?

Comment récupérer les infos depuis mon serveur pour les mettre dans mes pages php ou base de données Mysql ?

Bon j’ai finalement réussi à lire la sonde avec ce code.

je vais donc soit créer un programme en C pour lire, enregistrer dans XML, enfin affaire à suivre…

oui et non
pour un noob comme moi , oui cest mieux et plus pratique, mais rien ne t’empeche de savoir jouer tes scripts sur des rpi locaux et remonter tes infos sur un jeedom central !

En fait jeedom à sa propre bdd ,
Leur script d’installation est bien réalisé
Ce n’est pas une distrib non , ils ont des produits « clés en mains » mais y’a un script pour déployer sur rpi !

Je me rends compte que ton installation est vraiment déjà bien poussee et pensee du coup, pour éviter de mettre le Bronx essai sur un rpi avec une fresh raspbian Lite l’installation comme ça

cd
wget https://raw.githubusercontent.com/jeedom/core/stable/install/install.sh
sudo chmod +x install.sh
sudo ./install.sh -m monmotdepassesql -v 2.4

Laisse dérouler le script , une fois fini, reboot et connexion via un navigateur à l’IP du rpi concerne
Première connexion en admin/admin et directement une maj vers la v3.0.11 (dernière maj)

Il y a peu une image netinstall existait mais elle n’est plus fonctionnelle depuis peu sans que je puisse en dire plus

Demain je te prendrai une capture ou deux de ma maigre domotique naissante 100% rpi !

Et sans être électricien /codeur ou même ingé Unix, je pilote tout en 3 clics , de la pir , de la led, du relai , le dev du plugin jeedouino est cool il va même rajouter le code pour les sondes de pressions atmosphérique plus ou moins à ma demande « pck ca serai cool »

Bref je suis persuadé qu’il faille que tu regarde par la bas !

Et cote protocole /technos/compatibilités

Je te laisse regarder , la commu est suivie :wink:

Merci @Glou pour ces précisions, du coup j’ai un vieux raspberry pi 1 B+ qui traine avec une jessie lite, je pense que je vais donc tester jeedom…

Je suis également tombé par hasard sur une petite new présente sur LinuxFr.org (), elle présente donc l’outil de supervision RPiMonitor.

Quand on va sur le blog de l’auteur à la base du projet… on découvre vite dans la section RPiMonitor Overview qu’il parle d’intégrer la sonde DHT11 ou 22… il explique donc la méthode et je vais regarder ça… même si par la suite je risque d’utiliser Jeedom, cela me fera de l’expérience en plus côté raspberry…

Page d’intégration de la sonde DHT22 sur le Blog de l’auteur d’RPiMonitor.

je reviendrais vers vous, car je vais certainement découvrir jeedom d’ici peu :wink:

Coucou

ca fait bien longtemps que j’ai pas regarder vers rpi monitor mais a lepoque le projet etait a l’arret sans news de l’auteur
sinon ma maigre domotique naissante de noob ressemble a ca

dht22 18b20 pir sensor led rgb et simple led
je gere des relai aussi simplement de la meme maniere mais n’en ait pas encore utilisé ici
bientot sarah en surcouche et ca sera le bonheur … me manquera qua trouver comment automatiser la facon de deposer une tasse mettre du sucre et faire couler le café !

maigre domotique ??? c’est déjà pas mal…
Tu as un bandeau à led dans la chambre enfant ? (d’après les boutons, rouge, vert, bleu…)
par contre c’est pas full plutot que fuck ???

J’ai un bandeau à led que j’ai intégré dans ma cheminée lorsque j’ai refait cette dernière.
au départ j’étais parti sur un led RGB classique, puis je l’ai remplacé par un magic strip (led avec circuit intégré).

j’ai en projet de le piloter avec le RPI présent dans le meuble de la cheminée, via des transistor, BD139 je crois, car les bandeau sont en 12Vdc.

Tu pilotes les tiens avec un raspberry ? ou tu as un autre controleur spécialisé pour les bandeaux à led ?

voici quelques photos de ma cheminée…

Pour la machine à café, avec quelques servo moteur y’a p’tre moyen, je me pencherais sur la question dès que j’aurais du temps…

PS : Si c’est jeedom je vais regarder plus vite ce que c’est, finalement…

RE…

Mon ihm lors de la pose… c’est pas encore tout fonctionnel… c’était un test de mise en page… et coté finition y’a rien de définitif (l’intégration dans le mur n’est pas fini)…

Looooooool c’est ça jeedom, j’ai pu donner à une commande un nom, me rendre compte de ma boulette et re éditer simplement sans m’attaquer au code , mais ya quand même des mecs qui touchent au code et font des trucs géniaux côté interface , ils appellent ça « plans » je croit

Non je n’ai pas encore de bandeau led , ça viendra un jour , je pilote de simples led rgb mais bien placé derrière une TV ou un angle de meuble ça fait ambiance/veilleuse de nuit ! Faut que je voit combien je peux en alimenter sur un même gpio en parallèle !
Je pilote les couleurs de manière individuelle pour le moment il faut que je continue d’approfondir , je t’assure que je n’utilise quen surface jeedom pour le moment !

Mais je croit qu’il y a déjà des gens qui ont fait un plugin pour des bandeau comme le tien ! (Après je sais pas encore si c’est direct via gpio ou tierce module )

Pour la machine à café c’est plutôt un troll de ma femme quand elle me voit bricoler , elle est intéressée pour un range vaisselle aussi

Ton installation est magnifique, vivement que je soit proprio aussi !!! Ça fait rêver !

Ben ton ihm sur un jeedom customisé … Tu as tout gagné , attention quand même certain plugin sont payant de 4 à 8€ , pour le moment je m’en sort sans !

T’a ce genre de plugin sur Jeedom pour je pense ta solution bandeau led !

Et ici un exemple d’un mec qui a poussé à fond son jeedom en terme de « graphisme » (après je trouve celle ci un peu lourd ) mais tout est ouvert !

Oui c’est vrai qu’il existe ambilight, je l’avais déjà vu…j’aimerais le voir un jour en vrai car sur les vidéo on ne se rend pas bien compte du plus que ca peut apporter au film…

C’est un peu quand tu regarde les simulateurs 3dof ou plus sur les jeux, tu vois pas… puis quand tu vas à disney sur le star tour… là tu fais « Ah ouaisss »…

L’ambilghit, je testerais p’tre a la fin :smiley: puis si je dis à ma femme que je veux remettre un bandeau à led derrière la télé elle va me prendre pour un fou…

Pour la machine à café, j’ai résolu le problème en posant la cafetière sur le bureau du pc !!! :wink: mais de temps en temps je manque d’eau donc je pense que je vais plutot installer le pc et la cafetière a côté de l’évier…

Mais c’est vrai qu’on peut p’tre utiliser le plugin pour simplement piloter le bandeau…

Ou continuer d’utiliser tes scripts maison mais les passer dans jeedom pour un rendu / contrôle web !
J’utilise pas encore ce module mais ca se fait ^^

Bonjour à tous…

Bon j’ai eu quelques problèmes pour établir une connexion vers mon serveu de base de données (celui ou y’a déjà mes bases kodi).

Mais j’ai finalement trouvé le problème…
j’ai chercher sur le net, après des programmes, des scripts ou je ne sais quoi qui me permettraient d’exporter mes capteurs vers une base de données mysql.

N’ayant rien trouvé et souhaitant éviter que mon installation ne finissent en usine à gaz j’ai décidé de programmer moi même le truc.

Je suis donc parti sur une petite appli en C qui lit les valeurs d’un ou plusieurs capteurs DHT22 puis se connecte à une base de données MySQL y stocke les data puis se déconnecte.

Il ne restera pus qu’à lancer un appel automatique, tache CRON d’après ce que j’ai vu…
bref… c’est en cours de développement…

Je ne suis pas un codeur professionnel donc je tente de coder au plus propre, mais voici un p’tit apercu…
LE CODE


LE RESULTAT

Salut à tous, j’avance pas mal sur mon appli…

j’arrive donc à lire mes sondes de manière périodique et a sauvegarder la lecture sur le serveur Mysql local… une page php permet d’afficher une jauge… je regarde pour implémenter la bibliothèque Highcarts et proposer un graphique des mesures… voici ce que ca donne…

j’utilise donc :

  • Un programme en C (fait de mes mains)
  • la bibliothèque WiringPi
  • Un serveur LAMP
  • knob (pour les jauges circulaires)
  • highcharts (pour le graph).

Tout ceci dans des pages php, css et js et un fichier config.ini…
le language C et Php proposant tous les deux un parser de fichier ini c’était pour moi le plus simple à mettre en place pour configurer la jauge avec l’ip du pi et la pin en question pour le relever de la sonde.

je rédige également un petit mémo que je ne manquerais pas de venir présenter proprement on sait jamais cela peut intéresser certains…

je voulais comprendre comment mettre tout cela en place de mes propres mains (c’est vite dit en utilisant des bibliothèques) avant de tester une solution avec jeedom…

Bref affaire à suivre et tuto récapitulatif pour bientôt !

punaise t’es un tueur !
c’est magnifique !

Merci, j’ai pas mal galéré donc un tueur peut être pas :slight_smile: