Publié le 25 février 2014 - par

Mesure de température 1-wire DS18B20 avec le Raspberry Pi

sonde_DS18B20_250Le Raspberry Pi permet d’interagir avec le monde réel. En particulier, il est possible de l’utiliser pour effectuer et afficher/enregistrer des mesures environnementales comme la température.

Le cahier des charges était : afficher la température de la pièce sur une page web.

Mesure de température 1-wire avec le DS18B20

L’heure du choix

Après la lecture de nombreux articles et la consultation de documentations techniques, le choix se résumait à choisir

  • un capteur analogique
  • un capteur numérique

Le premier n’est pas directement utilisable sur le Raspberry Pi, il délivre une tension/un courant analogique et nécessite la mise en oeuvre d’une carte de mesure avec convertisseur analogique => digital (ADC ou CAN).

Dans les seconds, une famille est particulièrement adaptée au Raspberry Pi, c’est la série de 1-wire, ou capteurs utilisant un seul fil (nous verrons qu’il faut… trois tout de même). Le Raspberry Pi (en fait Linux) embarquant le pilote capable de gérer cette famille de composants.

Comment ça marche ?

Le bus 1-wire est basé sur une architecture maître-esclave. Le maître est l’équipement qui contrôle le bus, interroge les périphériques, ou leur envoie des ordres.

bus_1-wire_600px

Dans notre cas, le maître sera le Raspberry Pi et il n’y aura qu’un esclave, notre capteur de température DS18B20.

Sur le schéma ci-dessus, on voit que le bus 1-wire est relié au +3,3 V par une résistance de tirage de 4,7 kΩ. En fonction de la longueur des fils de liaison, il sera parfois nécessaire d’ajuster sa valeur. Tous les appareils sont branchés en parallèle sur le bus et c’est en mettant (ou pas) leur sortie à la masse qu’ils envoient les données au maître.

Le maître initialise le bus en forçant un zéro pendant plus de 480 µs. Les esclaves lui répondent en mettent eux aussi leur sortie à zéro pendant un certain temps, indiquant ainsi leur présence.

Le maître déclenche une lecture dite ROM et l’esclave renvoie son identifiant unique, gravé lors de la fabrication. Chaque identifiant a une longueur de 48 bits (8 octets) encadrés par un octet indiquant le type de matériel (ici le type est : sonde de température = 28h) et un octet de CRC qui permet au maître de vérifier qu’il a correctement reçu les informations d’identification du composant. Les 48 bits permettent d’individualiser à peu près 280 000 milliards de composants…

connexion_600px

Mode parasite

connexion_parasite_600px

Dans le mode parasite, l’esclave est connecté en reliant ses broches d’alimentation ensemble et en les reliant à la masse. Il n’y a plus besoin dans ce cas que de deux fils pour assurer la liaison avec les esclaves connectés au bus 1-wire.

Lorsque le bus est au niveau 1, un condensateur interne au composant esclave est chargé, et c’est lui qui assurera l’alimentation du composant pendant que le niveau du bus sera bas.

Le DS18B20 a une gamme de mesure qui s’étend de -55 °C à +125 °C. Il transmet sa mesure directement en degrés Celsius, codée sur 16 bits. Sa précision est de ±0,5 °C entre -10 °C et +85 °C.

Choix du composant

Le composant DS18B20, la sonde complète, le connecteur GPIO 26 points

Le composant DS18B20, la sonde complète, le connecteur GPIO 26 points

Un tour sur Internet et chez les vendeurs asiatiques montre que ce composant est disponible sous forme de boîtier TO92 (ça ressemble à un transistor, mais ce n’est pas un transistor !) ou de sonde étanche, montée, avec les fils de sortie. Au vu de la différence de prix, j’ai opté pour ce dernier modèle.

Connexion au Raspberry Pi

C’est la patte 7 (GPIO 4) du Raspberry qui joue le rôle de maître. Voici donc le branchement à réaliser pour connecter la sonde. Le fil « signal », blanc sur la sonde, a été dessiné en bleu sur le schéma, je trouvais ça plus visible… sur le fond blanc.

Schéma de la connexion du DS18B20 au GPIO du Raspberry Pi

Schéma de la connexion du DS18B20 au GPIO du Raspberry Pi

Pour le montage sur le Raspberry Pi, j’ai choisi de souder les fils de la sonde sur un connecteur 26 points GPIO qui « traînait » dans ma boîte à récup.

Photo du raccordement de la sonde DS18B20 et de la résistance au GPIO du Raspberry Pi

Photo du raccordement de la sonde DS18B20 et de la résistance au GPIO du Raspberry Pi

Il ne reste plus qu’à brancher le connecteur sur le GPIO de la framboise314, et à configurer celle-ci pour qu’elle puisse lire les informations de la sonde.

Configuration du Raspberry Pi

Pour que le noyau Linux sache gérer le composant 1-wire DS18B20, il faut lui adjoindre un module pour la gestion du bus 1-wire, et un module pour la gestion des composants de la famille 28h, capteurs de température.

Rien de plus simple… quoique…

La théorie

 Il suffit d’ajouter dans /etc/modules  les modules w1-gpio et w1-therm.

La pratique

Une fois ces modules ajoutés et le Raspberry Pi redémarré… la caméra ne fonctionne plus.

A chaque lancement de raspistill, le système répond par :

La LED de la caméra reste allumée… mais… rien !

Si comme moi vous avez un script shell qui se lance au démarrage pour prendre une photo toutes les 3 secondes avec raspistill, il ne reste plus qu’à lancer un putty et à vous connecter en SSH pour arrêter ça.

A priori il s’agit d’un conflit sur le port GPIO 4 entre la caméra et le pilote 1-wire.

La solution

Ouf ! Il existe une solution qui contourne ce problème : Il faut installer tous les modules y compris I2C, et ensuite ajouter à la blacklist ceux qu’on ne veut pas utiliser (vous suivez?)

Allez on y va :

Ouvrez /etc/modules avec nano en super-utilisateur  et ajoutez TOUS les modules ci-dessous :

Ensuite on va blacklister les mêmes modules… en les ajoutant à /etc/modprobe.d/raspi-blacklist.conf :

Redémarrez le Raspberry Pi pour prendre ces modifications en compte. La caméra a repris du service. Voyons ce qu’il en est de la température.

Lire la température avec le DS18B20

Numéro unique de la sonde DS18B20

Dans un premier temps vérifions que le système a bien reconnu la sonde :

Ma sonde a effectivement été détectée. Elle porte le numéro 28-0000054c2ec2 (numéro unique au monde, je vous le rappelle). Le système a créé un répertoire à son nom et c’est dans ce dossier que nous allons trouver les informations qui nous intéressent.

Lecture de la température fournie par la sonde DS18B20

Le fichier w1_slave contient sur la première ligne le code correspondant au numéro de la sonde, avec son CRC qui a été vérifié (YES), et sur la deuxième ligne la température en hexadécimal (peu utilisable) mais aussi en milièmes de degrés Celsius.

Il suffira de diviser par 1000 pour obtenir la température réelle. On peut arrondir à un chiffre après la virgule sans vergogne, puisque la précision n’est que de ±0,5 °C.

Un exemple de lecture de la température en ligne de commande est donné sur l’excellent site pihomeserver :

Ce qui donne sur mon Raspberry Pi :

Pour ma part j’ai opté pour le script ci-dessous, trouvé sur un forum. Il a l’avantage de lire tous les dispositifs 1-wire de type 28h (donc il fonctionne dans mon cas où il n’y en a qu’un…) :

Ce script est lancé toutes les 3 secondes. Je l’ai modifié pour qu’il range la température dans un fichier que je vais lire en php pour l’afficher sur ma page web… Pourquoi faire simple ?

Vous trouverez d’autres exemples au détour de vos recherches sur Internet, en particulier chez Adafruit, avec un script en Python.

Mise à jour du 10/10/2018

Youri avait des soucis avec ses sondes DS18B20. N’ayant pas trouvé facilement la réponse sur framboise314, il m’a proposé cette mise à jour. Merci Youri 🙂  :

Bonjour,

Comme d’autres, j’ai cherché un petit moment pourquoi je n’arrivais pas à faire fonctionner mes sondes DS18B20 sur mes framboises « récentes », alors que j’en ai depuis des années sur une framboise modèle B de la première génération qui fonctionnent très bien. Je suis naturellement revenu ici dans l’espoir de trouver ce que j’aurais pu oublier… en vain (bon, c’est vrai que je n’ai pas non plus lu tous les commentaires en détail, la réponse s’y trouve mais très difficile à localiser au milieu de tout le reste 😉 ).

Je la remet ici, pour les éventuels lecteurs qui cherchent encore et qui auraient l’idée d’aller directement au dernier commentaire voir si par hasard la solution à leur problème s’y trouverait 😉

Il suffit en fait d’ajouter une ligne dans le fichier /boot/config.txt (tout à la fin par exemple) :
dtoverlay=w1-gpio

ou
dtoverlay=w1-gpio,gpiopin=x
si on souhaite utiliser un autre GPIO que celui par défaut (GPIO 4 par défaut, sur la broche 7 du connecteur), en remplaçant ‘x’ par le GPIO qu’on veut utiliser évidemment. Je n’ai pas testé cette alternative personnellement.

Et… euh, bah c’est tout en fait… C’est tout simple, mais si on ne le sait pas, ça ne s’invente pas… 😉

@François MOCQ : Serait-il possible de mettre à jour l’article initial pour y mentionner cette modification à faire sur les framboises « récentes » ? Ça pourrait éviter à d’autres de perdre du temps à chercher cette info 😉

Au passage, d’après les essais que je viens de faire, il semblerait que l’ajout des deux modules w1-gpio et w1-therm dans /etc/modules ne soit plus nécessaires du coup. Ça fonctionne bien chez moi en tout cas, sans avoir besoin de charger explicitement ces deux modules, mais je me garderai de toute généralisation hâtive…

Sources

Je ne mets qu’une partie des sources qui m’ont servi pour cet article, une recherche avec les termes Raspberry Pi et DS18B20 vous fournira bien d’autres points de chute.

Conclusion

D’un prix abordable cette sonde CPTC/CPTS* met à portée du Raspberry Pi le relevé de températures, que ce soit à l’intérieur ou à l’extérieur. Le 1-wire peut aller jusque 100 ou 200 mètres en utilisant du câble réseau de qualité et en adaptant la valeur de la résistance, tout en supportant des dizaines de capteurs !

La mise en œuvre du bus 1-wire sur Raspberry Pi est relativement simple, surtout si vous ne voulez pas faire fonctionner la caméra en même temps. Mais ce bug est signalé et devrait être corrigé dans les prochaines versions de Raspbian.

* CPTC/CPTS = C’est Pas Très Cher / Ça Peut Toujours Servir …  😉

À propos François MOCQ

Électronicien d'origine, devenu informaticien, et passionné de nouvelles technologies, formateur en maintenance informatique puis en Réseau et Télécommunications. Dès son arrivée sur le marché, le potentiel offert par Raspberry Pi m’a enthousiasmé j'ai rapidement créé un blog dédié à ce nano-ordinateur (www.framboise314.fr) pour partager cette passion. Auteur de plusieurs livres sur le Raspberry Pi publiés aux Editions ENI.

273 réflexions au sujet de « Mesure de température 1-wire DS18B20 avec le Raspberry Pi »

    1. admin Auteur de l’article

      Bonjour Dodutils
      Les 3 fils sortent de la sonde et tous les picots du connecteur sont disponibles, je n’avais qu’une sonde à relier et pas de fil à tirer au travers d’un pièce… Mais oui, pourquoi pas?
      Certains sont dubitatifs (non, ce n’est pas un gros mot ;-)) quand à son utilisation.
      Cordialement
      François

      Répondre
      1. Dodutils

        Pour info j’ai un câble 1 Wire (2 fils uniquement) d’environ 70m de long avec 10 x DS18B20 et autant de DS2401 tous les DS18B20 sont en mode parasite branché sur un clé USB->1Wire et je n’ai aucun problème depuis 5 ans et 2.5000.000 relevé pour chaque sonde avec mon fil qui passe même par le frigo et le congel 🙂

        Répondre
          1. admin Auteur de l’article

            Merci pour ces précisions! Je n’avais pas testé le 1-wire avant cet article mais ton retour avec l’expérience que tu as est très intéressant.
            Je vais ajouter le mode parasite à l’article
            Cordialement
            François

            Répondre
    2. Cyril

      Bonjour à tous,

      voila je viens de faire l’aquisition d’une sonde de temp, ainsi qu’un module e/r 433mhz, cependant je n’arrive à rien. La sonde n’apparait pas dans /sys/bus/w1/devices

      est-ce que quelqu’un aurait une idée de l’origine du pb svp?
      J’ai testé avec des resistance 3.3k 0.5w, et 4.7k 1W, mais toujours rien 🙁

      Merci d’avance

      Répondre
        1. Cyril

          Bonjour,

          Merci pour votre réponse. Pou commencer, je tiens à m’excuser d’avoir posé le Mme taire en plein lieu au lieu de le mettre à la suite des autres. J’ai moi même eu du mal à le retrouver.

          Concernant la sonde, une chose ne m’étais pas venue à l’esprit : Googliser mon problème.
          En le faisant j’ai découvert ce lien :
          https://www.raspberrypi.org/forums/viewtopic.php?f=65&t=125094

          Qui indique une autre démarche pour activer les modules. Cela a fonctionné pour moi. Je vois bien quelque chose dans devices/ cependant des lors que je fais cat d’un des fichiers qui s’y trouve, j’ai un message file or directory not found. SI je refais ls, ces fichiers n’ont plus le meme nom.

          Concernant le branchement, je ne suis pas en mode parasite, et actuellement avec la résistance 3.3kohms.

          Merci pour vos lumières

          Répondre
  1. Dodutils

    Le seul problème avec le mode parasite est que le temps pour récupérer l’information de T° est plus long (le temps de charger un condensateur interne je crois) il faut environ 2 secondes par sonde.

    Répondre
  2. lionel

    Bonjour,

    Tout d’abord merci pour ce que vous faites. Je viens de me procurer une framboise314 et ce site est une petite mine d’info.

    Intéressé par le montage de cette sonde, je cherche à calculer la résistance nécessaire pour le montage. Vous parliez d’une 4,7 kΩ pour un montage avec le composant nu. La sonde que j’ai trouvé à un câble de 108cm d’après le descriptif.

    Une deuxième question en découle. La sonde est destinée à rester près du raspberry pour une simple prise de température intérieure. Vaut-il mieux acheter le composant nu ou bien la sonde entière? (au pire je peux raccourcir le câble de la sonde complète et rester à 4.7kΩ…

    Merci d’avance!

    Répondre
    1. admin Auteur de l’article

      Bonjour Lionel
      A priori sur de courtes distances la valeur de la résistance a peu d’importance si elle est entre 4k et 10k. Sur la photo vous pouvez voir que j’ai utilisé une 6k8 et ça fonctionne. Je n’ai pas testé le 1-wire sur de grandes distances, ni avec beaucoup de capteurs. Un lecteur plus expérimenté que moi pourra sans doute vous renseigner (je pense a Dodutils ci-dessus ;-))
      Cordialement
      François

      Répondre
  3. José

    Bonjour à tous,

    J’ai écris un petit descriptif de ce que l’on peut faire avec 3 sondes et un capteur à ultrasons en terme de supervision.
    Par contre pour au autre projet, je butte sur une limitation à 10 capteurs DS18B20 via le bus one-wire (GPIO 4) de la framboise.
    Un lecteur aurait-il une solution de contournement ?

    Merci

    Répondre
      1. José

        J’ai une installation domestique avec 10 capteurs de températures (toutes les pièces) comme ceux évoqués sur votre présentation. Lorsque, j’ai voulu ajouté la sonde du grenier et de la sortie du chauffe eau, le fonctionnement est devenu aléatoire.

        J’avais trouvé sur un forum (dont j’ai bêtement oublié de garder le lien), que les modules w1-therm
        w1-gpio limitaient à 10 le nombre de capteur sur un bus One Wire.

        Et effectivement au delà du 11ème ça se confirme.
        Au passage si ça peut intéresser du monde, je publierai le fonctionnement de mon installation : http://eyesathome.free.fr/

        Répondre
        1. Laurent

          Bonjour,
          Même si ce fil date un peu il est utile de préciser que cette limitation à 10 sondes vient de Domoticz lui-même et non du bus 1Wire ou de ses librairies.
          C’est peut être corrigé maintenant, mais j’ai lu cela sur un forum dédié au Raspberry et Domoticz sur un post de 2015.

          Répondre
  4. Pascal

    Bonjour,
    J’utilise mon Raspberry avec le logiciel Domoticz et j’ai (comme expliqué dans l’article) un conflit entre le module caméra et le bus one-wire (gpio4).
    J’ai bien essayé la solution proposée…mais rien n’y fait !
    Si quelqu’un a réussi à résoudre se problème….

    Merci

    Répondre
  5. Patrick63

    Bonjour à tous,

    Tout d’abord, félicitation et merci pour ce site qui est un « puits de sciences ».
    Je viens d’acheter une framboise, et très intéressé par cet article, je vais suivre vos conseils.

    En ce qui concerne le paramétrage du fichiers /etc/modules, dans ma configuration, y figurait déjà les lignes
    :
    snd-bcm2835
    # hardware watchdog
    bcm2708_wdog
    #DS18B20 sur bus 1wire
    w1-gpio
    w1-therm
    #I2C
    i2c-bcm2708
    i2c-dev
    rtc-ds1307

    mais sans le parametre « pullup=1 ». Pouvez vous me dire si il faut le rajouter et à quoi il correspond ?
    Ensuite, vous indiquez : « on va blacklister les mêmes modules… en les ajoutant à /etc/modprobe.d/raspi-blacklist.conf ».

    Cela suppose t’il qu’il faut y mettre les lignes suivantes :
    w1-therm
    w1-gpio pullup=1
    i2c-dev
    i2c-bcm2708
    spi-bcm2708
    snd-bcm2835

    Ou seulement les deux premières comme dans l’exemple ?
    J’espère avoir été suffisamment clair

    Merci pour votre réponse

    Répondre
  6. Rinty

    Bonjour,

    J’utilise le One Wire de la franboise avec des capteurs de température DS18B20 en utilisant mon câblage téléphonique de ma maison (montage en étoile).

    Cela fonctionne très bien tant que je n’utilise qu’un seul point (avec deux capteurs au bout) pour mes capteurs. Dès que je câble une nouvelle prise pour mettre un nouveau capteur, la lecture du capteur devient impossible (retour T=0)

    Je suppose qu’il s’agit là d’un effet de l’impédence, résistance, induction de mon câblage utilisé. Mes connaissances en électronique étant assez limitées, avez vous une idée pour me permettre d’étendre mon réseau One Wire.

    Répondre
      1. Rinty

        Je ne maîtrise pas totalement la longueur du câble. mais la maison étant à étage je pense que les branches du montage en étoile doivent faire entre 20 et 30m.

        Pour l’alimentation je suis sur celle du rasp donc en 3.3v.

        Est ce que le fait d’avoir une branche sans capteur peut avoir une importance sur la lecture des autres capteurs ?

        Répondre
        1. Dodutils

          Le DS18B20 a une tension de fonctionnement de 3.0V à 5.5V donc si on balance du 3.3V sur un câble de 20 ou 30M on aura une chute de tension trop grande selon la résistance du câble.

          J’utilise un module USB DS9490R qui porte du 5V, j’ai 70m de câble et 13 sondes alimentées en mode parasite depuis plus de 8 ans ans avec 3.5 millions d’entrées par sonde… tout va bien 😉

          Répondre
    1. admin Auteur de l’article

      Bonjour Rinty
      A priori d’après ce que vous expliquez, je pense que c’est le câblage en étoile qui ne convient pas… Faites l’essai en câble volant de brancher vos capteurs sur un vrai BUS, je pense que ça devrait confirmer.
      Cordialement
      François

      Répondre
      1. Rinty

        C’est un peu ce que je crains.

        Par contre je ne suis pas sure que madame soit très motivée pour que je laisse un câble volant 😉

        En farfouillant dans les doc, il faut que je vérifie que la tension au repos de la data soit bien de 3.3v un ajustement de la résistance de pullup est peut être nécessaire.
        Toutefois j’en doute un peu. Arrivant à faire une lecture (certe erroné) je pense plutôt être face à un problème de réflexion.

        http://www.maximintegrated.com/app-notes/index.mvp/id/148

        The network radius is limited by several factors: the timing of waveform reflections, the time delay produced by the cable, the resistance of the cable, and the degradation of signal levels. The typical signal propagation speed in a phone cable is about 2/3 of the speed of light. In a 750m cable, for example, the roundtrip delay is 7.5µs. If the master pulls the line low for 7.5µs to start a read time slot, then the end of the master’s low pulse (i.e., after a roundtrip) coincides with the instant at which a near-end fast slave may stop pulling the line low. Consequently, the roundtrip delay of such a long cable makes it impossible for the master to communicate with that near-end slave.

        Répondre
        1. José

          Pour ma part et par rapport à ma propre expérience, je ne pense pas que le montage en étoile soit la cause du problème.

          J’ai dans mon grenier une boite de dérivation à partir de laquelle partent 5 câbles vers 5 capteurs différents. Je pense que la longueur totale de l’ensemble de mes 10 capteurs (longueur de câble mis bout à bout) avoisine les 60 m.

          Par contre, je pense qu’il faudrait alimenter les capteurs en 5v avec une alimentation différente (les masses doivent être communes) et je vous rejoins également sur la valeur de la résistance de pull up.

          Je regarderai ce soir celle que j’ai mise

          Répondre
        2. Rinty

          En abaissant la résistance de pullup a 1.5k j’ai pour le moment réussi à ajouter 2 branches de 30m chacune. Il m’en reste 4… Affaire à suivre.

          Répondre
  7. vanbiervliet

    bonjour,
    je viens de tenter le montage mais mon 18b20 se met à chauffer …. je ne vois ou j’ai pu faire une erreur ! avez vous une idée ???
    bonne journée. !

    Répondre
  8. David

    Bonjour,

    Tout d’abord félicitation pour votre blog.
    J’ai suivi votre tutoriel pour connecter la sonde de température mais j’ai un problème, je ne vois pas le répertoire 28-*…

    J’ai testé les deux montages, parasite et non parasite, j’ai vérifié que les modules étaient bien chargés (ils le sont) , j’ai bien mis à jour raspbian (à jour) ….

    Je sèche, si vous avez une piste, une idée ?!

    Merci d’avance pour votre aide.

    NB: Je suis totalement novice en linux…

    David

    Répondre
      1. David

        Bonjour,

        Merci pour votre réponse. Non je n’ai qu’un capteur donc je n’ai pas pu faire le test avec un autre.

        Je voulais être sûre d’éliminer tout problème « logiciel » avant d’acheter un autre capteur.

        Mais je crois que je n’ai pas le choix…

        Encore merci.
        David

        Répondre
  9. David

    Bonjour,

    Je ne pense pas avoir inversé VCC/Masse, à aucun moment la sonde n’a chauffé.
    Après avoir refait le montage, toujours rien. Je viens d’en commander une nouvelle.
    Encore une fois merci pour vos réponses.

    David

    Répondre
    1. José

      Bonjour,

      N’hésitez pas à en acheter plusieurs car on prend vite l’habitude de mesurer les températures partout dans la maison. 🙂
      Au passage, je me demandais si vous aviez fait l’essai en 5v ?

      Faites nous part de votre retour à la réception du nouveau capteur c’est toujours bien de comprendre ce qui n’allait pas.

      Bonne journée

      José

      Répondre
      1. Rinty

        Je confirme, on en mets partout.

        Personnellement j’ai actuellement 15 points de mesures dont 11 avec des DS18B20 avec un branchement type étoide utilisant mon câblage téléphonique de maison. Il m’a juste été nécessaire de baisser la résistance de pullup pour garder le contrôle des capteurs et de modifier le fichier de configuration pour passer la limite des 10 capteurs.

        De mon coté je n’ai jamais fait le test en 5v. Dans ce genre de montage la ligne data n’envoie t’elle pas du 5v au raspberry ? Si oui cela me semble dangereux pour notre framboise.

        Répondre
        1. José

          J’ai également une dizaine de capteurs et je n’ai pas réussi à dépasser cette limite de 10.

          ===> D’ailleurs, si vous avez le moyens de m’expliquer comment faire se serait top du top :).

          Pour revenir sur le 5 volts, je n’ai aucun souci. En utilisant les alimentations 3 ou 5 volts de la framboise, j’avais un problème de stabilité des capteurs ainsi qu’un certain nombre d’erreur de lectures. J’ai donc une seconde alim de 5 volts dédiée servant aux capteurs et autres relais de commande.

          José

          Répondre
          1. Rinty

            Pour dépasser les 10 capteurs rien de plus simple. il suffit de créer un fichier wire.conf dans
            /etc/modprobe.d/
            Vous écrivez à l’intérieur « options wire max_slave_count=20 »

            Et Hop la limite passe à 20…

            Pour les alim j’ai fait le choix d’alimenter tous mes capteurs par une alimentation externe.
            J’utilise une alim type rail DIN (compteur EDF) qui me fourni du 5V et j’utilise un convertisseur à faible chute LF33CV pour produire du 3.3V.
            voir montage du site ci dessous :
            http://www.sonelec-musique.com/electronique_realisations_alim_simple_012.html

            Répondre
  10. José

    @ Rinty

    Et dire que je cherche cette info depuis des mois…. 🙂 et que dire de la simplicité de la réponse.
    Le 11ème capteur apparaît maintenant sans problème.

    Merci beaucoup,

    Répondre
  11. David

    Bonjour,

    Je viens de recevoir une nouvelle sonde. Et là ça fonctionne !
    La précédente était bien HS.
    Pour répondre à José, je l’avais testé en 5v.
    Je peux vous dire qu’aujourd’hui à 19h22 à Montpellier il y a quelques nuages mais 33,5°C sur la terrasse 🙂

    Merci à tous pour votre aide.

    David

    Répondre
    1. José

      Bonjour David,

      Désolé pour cette réponse tardive mais je suis très heureux de voir que tout fonctionne désormais.
      Je me demande si je ne vais pas modifier mon installation pour connaitre le niveau d’eau qui tombe chaque jours 🙂 dans l’Allier.

      Bonne continuation.

      Répondre
  12. Rinty

    Pour connaitre l’eau qui tombe dans l’Allier ou ailleurs, je pense recycler un ancien pluviomètre électronique. En y regardant de plus prêt il s’agit d’un capteur à effet de hall.
    Il suffit donc d’un daemon qui compte les impulsions du capteur, de calculer le volume du godet et mesurer la surface du disque qui capte la pluie…

    Répondre
    1. José

      Chouette projet en perspective.
      De mon coté, il faut que je termine mon projet domotique avant de me lancer dans autre chose.
      Car là tout de suite sur mon bureau c’est le chantier.

      Répondre
  13. Rinty

    Sur le mien, je mesure la température, hygrométrie, pression atmosphérique, consommation EDF. Je pilote ma vmc mes volets et prises électriques. Je termine le panneau de contrôle avec écran LCD, led témoin et bouton de contrôle et il me reste à optimiser l’interface web. Si cela t’intéresse mail moi je te communiquerais mes travaux et recherches.

    Répondre
    1. Philippe

      Bonsoir Rinty, je suis intéressé par ton installation. Peux-tu svp m’expliquer comment tu as réalisé ton montage et aussi côté logiciel.
      Je débute avec la Framboise et dans la domotique.

      Dans l’attente de te lire, je te remercie d’avance. Bonne soirée, Philippe

      Répondre
      1. rinty

        bonsoir.

        Le sujet est vaste et le chemin long et tortueux.
        Le plus simple est que tu me poses les questions précises auxquelles tu cherches des réponses en privé (rinty35 [at] laposte.net) Les questions allant aller bien au delà de l’article qui porte notre échange….

        Pour faire général, j’ai du commencer mon projet domotique il y a un an. Un sujet en apportant un autre celui ci c’est étoffé.
        Coté soft, j’ai fait pas mal de reuse de ce que j’ai trouvé sur internet en y apportant mes réflexions et remarques. je travaille du coup beaucoup en python, un peu de shell et de C pour la partie daemon. Pour la partie interface c’est du php et une base mysql.

        Sur le hard, des sondes DS18B20 mais aussi des DHT22, des relais 5v/220v, un émetteur 433Mhz, une BMP085 pour la pression, un circuit sur base optocoupleur pour la conso edf, des puces mcp23017 pour augmenter le nombre de GPIO, un LCD HD44780, LED, Boutons….

        Et bientôt un DAC MCP3008 pour intégrer des capteurs de luminosités…

        Voilà dans les grandes lignes

        Répondre
        1. Sébastien

          Bonjour actuellement en cours de création d’une ligne 1-wire via un bus DS9490R connecté à mon RPI, je rencontre des soucis de montage pour les sondes DHT22.
          Auriez-vous svp un schéma sûr de montage pour ce circuit avec 3 DHT22 et des 8 DS18B20 ?
          D’avance merci.

          Répondre
  14. FREDO

    Bonjour,
    j’ai un petit problème sur mon raspberry pi model B et des capteurs DS18B20.
    Ça fonction très bien si je n’ai que 1 capteur relier au +3,3V du Raspberry.
    mais dés que j’en branche 1 supplémentaire, je n’arrive plus à lire correctement les informations des capteurs, je pers les capteurs et ils reviennent parfois !!! il y a des températures de 85°C souvent !!!
    j’ai sur mon Raspberry une picamera et une carte extension PiFace.
    J’ai mis une résistance de pullup de 4,7K au +3,3V du raspbeery.
    Je ne vois pas ou viens le probléme !!
    on dirait un conflit lors de la lecture des capteurs !!
    merci de votre aide
    FREDO

    Répondre
    1. Rinty

      Quel est ta longueur de câble ?

      Pour ma part avec 11 capteurs utilisant chacun une vingtaine de mètre de câble j’utilise une 1,5K de mémoire. j’ai eu ce genre de phénomène avec une résistance de pullup trop grande.

      Répondre
      1. FREDO

        pour l’instant j’utilise que la longueur de câble des capteurs étanches, mais quand ça marchera, je voudrais mettre 35m sur un des capteurs.

        Répondre
      2. LAMIRAULT

        Bonjour, je viens de trouver le problème, ça viens de ma carte d’extension PiFace, qui doit perturbé mes capteurs, j’ai essayé sans le piFace et ça marche impeccable, avec 3 capteurs et 1 résistance de 4,7K. Je vais recherché le problème qui perturbe sur le PiFace , peu-être l’alimentation un peu juste . Je vous tiendrais au courant
        merci de vos aides

        Répondre
  15. Cédric

    Bonjour

    Merci pour cet article qui m’a bien inspiré 🙂
    Toutefois je rencontre un petit problème … Une fois tout branché, le Raspberry refuse de démarrer.
    Si je débranche la masse, il démarre nickel ..
    J’utilise une breadboard avec un T-Cobbler de Adafruit et une sonde DS18B20 étanche

    Une idée ?

    Merci

    Répondre
  16. Superbebert

    Bonjour,
    Merci pour ce tutoriel si claire et concis.
    J’ai cependant un petit bémol à apporter non pas sur le contenu mais sur la sonde elle même. En effet, la sonde me donne comme vous ~22.8°C à la première lecture et vu comme je claque des dents n’ayant pas mis le chauffage ce n’est clairement pas la température ambiante.
    Bon j’avoue, j’ai aussi mis un thermomètre à coté qui lui m’indique 17°C.
    Savez vous si il y a un étalonnage à faire ou si la différence de température est linéaire par rapport à la réalité ?
    merci
    PS: je ne suis vraisemblablement pas le seul à avoir eu ce genre de problème ici

    Répondre
    1. Dodutils

      Juste pour info, la sonde DS18B20 est vraiment très sensible, le simple fait de respirer devant modifie le résultat, et si le capteur est situé au dessus du RasPi la simple convection de chaleur générée par son processeur suffit à faire varier le résultat.

      Répondre
        1. Dodutils

          Quand je reçois des DS18B20 je les met tous en parallèle sur une plaque de test et je compare les valeurs pour vérifier qu’ils sont tous bien calibrés mais jusqu’à présent je n’ai jamais eu de grosses variations.

          Répondre
  17. Jean-Philippe

    Bonjour,

    Je souhaite brancher directement ma sonde sur les GPIO du raspberry, sans passer par de breadborad. (j’en ai pas encore :s)

    Première question, est-ce possible?

    Deuxème question, la résistance est-elle obligatoire pour que la sonde fonctionne?

    Je l’ai branché normalement, mais dans /sys/bus/w1/devices, je n’ai que w1_bus_master1, j’en déduis que ma sonde n’est pas détécté.

    Si résistance oblige, alors le problème vient de là, et je dois attendre d’en recevoir. Sinon help me please.

    Cordialement

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour
      oui bien sur c’est possible de brancher directement sur le GPIO
      Il faudra généralement souder sur les picots du connecteur ce qui va rendre par la suite l’utilsation de connecteurs femelles plus difficile (ils auront du mal à rentrer !). C’est pour cela que j’ai utilisé un connecteur femelle sur lequel j’ai soudé les fils…
      et oui la résistance de tirage est obligatoire pour le fonctionnement du DS18B20
      Sur http://www.raspiblog.fr/index.php/camera/ la température de la pièce est mesurée avec le DS18B20 illustrant cet article (ça tourne 24/24 7/7 depuis presque 1 an…)
      Cordialement
      François

      Répondre
      1. Jean-Philippe

        Merci François pour cette réponse rapide.

        J’ai bien fais la soudure comme il faut, j’utilise des cables wires femelle femelle pour relier la sonde sur les GPIOs, donc de ce coté là pas de soucis.

        Je vais commander un lot de résistance de différents calibres et normalement ça devrait fonctionner.

        Je reviendrais vers vous pour mon projet d’alarme avec détéction d’ouverture de porte avec un capteur de hall.

        Bon dimanche à vous

        Répondre
  18. François MOCQ Auteur de l’article

    Bonjour
    ci-dessous une remarque de Kleph au sujet de la lecture de température en ligne de commande :

    Du coup, une modeste contribution en retour sur un UUOC (Useless Use Of Cat) qui m’a sauté aux yeux en lisant l’article 🙂
    cat | grep « t= » | awk -F « t= » ‘{print $2/1000}’
    Ça peut se faire en awk directement, comme ça on enlève deux appels inutiles à des binaires externes et ça simplifie légèrement l’écriture.
    cat wl_slave | grep « t= » | awk -F « t= » ‘{print $2/1000}’
    devient :
    awk -F « t= » ‘/t=/ {print $2/1000}’ wl_slave
    soit avec le find :
    find /sys/bus/w1/devices/ -name « 28-* » -exec awk -F « t= » ‘/t=/ {print $2/1000}’ ‘{}’/w1_slave \;

    Rapidement, la syntaxe de awk est la suivante :
    awk ‘/regexp_de_selection_des_lignes_a_traiter/ {bloc de traitement}’ fichier d_entree

    Merci Kleph pour ce retour sur l’utilisation de awk!
    Cordialement
    François

    Répondre
  19. François

    Bonjour,
    Je me lance dans la domotique avec un raspberry…et je teste avec jeedom (qui me semble assez aisé d’utilisation, moi qui vient du monde mac. Je commence également à tester les sondes DS18B20. Une 1ere a bien fonctionné et je voudrais avoir une interface clean, d’où jeedom. Quelqu’un a-t-il déjà essayer la configuration jeedom/DS18B20 ? Avec quel résultat (et quelle manip) ?
    Au passage, j’ai vu des photos de la sonde directement connectée dans une prise RJ45 : discret et y a plus qu’à la branchée su le réseau filaire de la maison (ancien téléphonique).

    Répondre
  20. isitom

    Bonjour,
    j’ai moi aussi quelques soucis de longueur de câble + parasites avec mes DS18B20.
    Je viens d’essayer l’alimentation en 5V indépendante du bus des capteurs. Ça a l’air d’améliorer les choses, mais il subsiste de temps en temps des erreurs de conversion.
    J’ai pris une alim 2A avec 2 USB, une pour le rasp et une pour le bus DS18B20 sur breadbord.
    J’essaierai un peu plus tard avec des longueurs plus importantes (40m) sur mon deuxième site (qui affiche dans syslog de nombreuses erreurs de conversion, plusieurs par minute)
    Ces erreurs ne gênent pas mes enregistrements.

    Vous pouvez suivre mes températures en direct ici : http://82.227.40.57/jpt/ws_temp_jd.html
    Pour afficher les temperatures dans le HTML? J’utilise les websockets.
    Tout est expliqué là http://82.227.40.57/public/ dans le readme.txt
    Isitom

    Répondre
    1. José

      Bonjour,

      C’est du super boulot, j’ai quelques pistes qui peuvent expliquer ces erreurs de lecture. Mais avant tout prenez connaissance du mail que je vous ai envoyé 🙂

      Si la fréquence de collecte des températures est égale au rafraichissement de la page, cela peut expliquer ce niveau d’erreur de lecture. Je suis certain qu’en dissociant la collecte et l’affichage cela améliorerait les choses.

      Votre script python de collecte renseigne un fichier txt par exemple si vous ne souhaitez pas utilisez de base de données. Votre page web utilise ce fichier pour l’affichage public. Ainsi on peut imaginer une collecte de température toutes les deux minutes et un rafraichissement de la page toutes les 5 secondes.

      Ensuite, sur de grande distance, il faut s’affranchir des plaques de tests qui parfois ne font pas très bien contact.
      Enfin, dissocier l’alimentation est une excellente chose.

      Bonne continuation.

      Répondre
      1. isitom

        Bonjour José
        Merci pour tes conseils.
        Pour le rafraichissement: ttes les 5s c’est le programme python qui collecte les infos et qui fabrique un tableau html qu’il envoie à la page via le websocket.Les températures sont donc quasi en temps réel. A coté de cela, un autre programme enregistre les températures dans un fichier tous les quarts d’heure. Est-ce que tu crois qu’il peut y avoir un télescopage de toutes ces demandes d’enregistrement et de visu de pages ? C’est compliqué à cerner. J’ai effectivement remarqué que des erreurs apparaissaient lorsque j’accédais à ma page html. Mais au fait, comment ça marche le 1wire ? Quand les fichiers 28-0000xxx sont ils mis à jour. A la demande ou systématiquement toutes les x (milli)secondes ?
        Pour les parasites: je veux bien croire que les breadbords c’est pas top et les dominos non plus. Mais comment fais-tu avec tes 60m ? Est-ce que tu as tout soudé ?
        Dernière question : pour alimenter en 5V, j’ai coupé un câble USB (à 1,5€), et j’ai récupéré le fil rouge 5V et noir GND. Mais que faire de la tresse du câble ? Je suis nul en électronique et confonds terre, masse, neutre, moins .

        Tu me parles d’un mail. J’en ai reçu un effectivement, mais il contient ton commentaire uniquement ??

        Répondre
        1. José

          Désolé pour cette réponse tardive 🙂

          Je reprends tes points un à un.
          Oui il est possible que les collectes successives engendrent ces erreurs de lectures. Il faut prendre en compte le temps de mesure des capteurs associée à la longueur du câble. A mon sens, la mesure temps réel n’est pas très utile, une collecte toutes les 5 minutes serait plus stable. De plus, l’affichage de la page doit être dissociée de la collecte. Je faisais comme toi au début pour une dizaine de capteurs. Le résultat était long à l’affichage et clairsemé d’erreur.

          Cette page te décrira le fonctionnement du bus one wire http://www.planete-domotique.com/blog/2009/06/20/le-bus-1-wire/ et surtout le temps de lecture.

          Mon montage est en étoile. J’utilise du câble réseau et du câble téléphonique. Tout est soudé ou branché sur des borniers. Il faut savoir que la longueur du bus one wire est égal à la somme des branches de l’étoile. De ce fait la distance peut vite devenir importante.

          Ton alimentation me semble bien, j’ai fait comme toi également. Je ne suis pas un spécialiste et d’autres répondront mieux. Il est possible que la tresse serve d’antiparasites ??

          Enfin, je t’ai envoyé un mail expéditeur eyesathome[at]free[point]fr sur l’adresse mail qui figure en contact de ta page de température. Je t’alerte sur certains points.
          @ +

          Répondre
          1. Dodutils

            Pour info j’en suis à 2.800.000 de relevés (1 par minute) pour chacune des mes 11 sondes en mode parasite réparties sur 70m de câble depuis plusieurs années et mon taux d’échec est de 0.3%

            Répondre
          2. isitom

            Je vois que ton installation est très propre. La mienne, au bout de 1 an est encore au stade fil volant sur breadbord.
            J’ai eu sur ce site quelques informations sur les temps de conversion. https://jahislove314.wordpress.com/2014/07/16/installation-dun-capteur-de-temperature-1-wire-ds18b20-sur-raspberry-partie-1
            Est-ce que quelqu’un peut confirmer que par défaut on est en 12 bits avec un temps de conversion de 750ms. Avec 10 capteurs, ça fait pas mal de secondes !
            Y-a-t’il un moyen simple de travailler en 9 bits (temps de conversion=93,75ms ?
            Je renouvelle ma demande, sur quoi faut-il brancher la tresse de mon alim 5V ? sur gnd ? ou sur rien ?
            Enfin, je précise que malgré les erreurs de conversion, mes applis marchent très bien (sans valeurs erronées), aussi bien en visualisation qu’en enregistrement.
            Je n’ai pas compris pour le mail. Je reçois bien un mail de notification de commentaire, mais qui contient exactement ce qu’il y a dans le commentaire.

            Répondre
        2. José

          Dans mon mail , je te disais de retirer tes adresses de ton fichier xml.
          Leur indication présente, à mon sens, beaucoup de risque. 🙂

          La tresse ne se branche nulle part.

          Pour les conversions, je laisse le soin aux spécialistes pour te répondre.

          Répondre
          1. isitom

            Bonjour José,
            Je n’ai reçu aucun mail de eyesathome[at]free[point]fr, et je ne vois pas de quelle adresse tu parles sur ma page températures.
            Merci pour toutes tes réponses et tes conseils.
            J’allais te répondre que les adresses dans le fichier domo.xml, dans le répertoire /public étaient bidons, mais je m’aperçois avec stupeur que le fichier xml de mon répertoire de production était également visible, ainsi que tous les autres fichiers.
            J’avais mis par principe tous les répertoires de www en chmod 505 et les fichiers en 404. Mais je crois que 400 serait mieux. Avis des spécialistes sécurité ??
            Isitom

            Répondre
  21. Marc

    Salut,

    Merci pour toutes ces infos.

    J’ai moi-même trois DS18B20 sur le W-1, mais je rencontre un petit souci.
    En effet, ils ne sont pas toujours détectés ! Quand je lance le script, ça fonctionne… puis des fois ça bugue, les capteurs ne sont pas détectés.
    A noter qu’il ne me faisait pas ça les jours passés.

    Ces trois DS18B20 sont au bout de trois cables de longueur ~4m. J’ai une rés. de 4.7K en pull up. Est-ce que vous pensez que diminuer la valeur de la résistance supprimerait ce problème de « reconnaissance irrégulière » ?

    Merci !

    Répondre
    1. Rinty35

      Salut,
      Je pense en effet que baisser ta pull-up devrait aider à stabiliser le fonctionnement.

      J’ai eu le même problème.
      De mémoire aujourd’hui avec 11DS18B20 toutes à une vingtaine de mettre de la framboise ma pull-up doit être à 1,5K

      Répondre
  22. Dodutils

    Pour ceux que ça intéresse j’ai trouvé un petit schéma pour brancher du 1-Wire sur port série en mode parasite et non-parasite :

    http://martybugs.net/electronics/tempsensor/hardware.cgi

    Le montage utilise 3 diodes en plus de la résistance il se base sur le circuit « officiel » de Maxim (qui produit les composants 1-Wire) qui fourni aussi les connecteurs série DS9097U et USB DS9490R basés sur ce schéma.

    Je suppose que les diodes stabilisent le flux électrique.

    http://www.maximintegrated.com/en/products/ibutton/products/readers.cfm

    Répondre
  23. Dodutils

    Pour ceux qui veulent faire du 1-Wire pensez à jetter un oeil au système de fichier OWFS qui permet de lire les sondes comme un lit un chemin au travers d’un /mnt/ et du coup de pouvoir les interroger avec un simple cat /mnt/1wire/id_de_la_sonde

    Répondre
    1. Cédric

      Bonjour,
      merci pour la solution, j’ai mis à jour et perdu mon bus aussi.
      J’ai donc passé 1h à chercher le problème et heureusement j’avais un raspberry pi non à jour ce qui m’a permis de comprendre l’origine du problème !

      Répondre
    2. isitom

      Bonjour,
      Je suis également passé à la dernière version Raspbian (Wheezy du 16/02/2015), et là miracle!
      Je n’ai plus aucune erreur de conversion avec mes DS18B20.
      Soit elles ne sont plus loguées (dans syslog et messages), soit ils ont fait une sérieuse amélioration dans la gestion du bus OneWire.
      Avez vous constaté le même phénomène ?

      Répondre
    3. JCC

      Merci !
      J’ai passé quelques heures à refaire mes montages, à tester le Pi au métrix avant de tomber sur ce post :p Je pensais que le gpio avait prit un coup ou que mes sondes étaient HS.

      Répondre
    4. Cyrille

      Bonjour,

      J’ai modifié le fichier « /boot/config.txt » pour prendre en compte le 1-wire.
      Simplement ajouté la ligne suivante : « dtoverlay=w1-gpio »

      Sans préciser donc le port GPIO utilisé.
      Quel est donc l’intérêt/l’avantage de rajouter le numéro de port ?

      Cyrille

      Répondre
      1. François MOCQ Auteur de l’article

        Bonjour Cyrille
        Par défaut l’overlay utilise le port GPIO 4
        Si c’est le port que vous utilisez pas besoin de préciser le N° de port
        Il est possible de modifier le port en ajoutant le paramètre gpiopin
        Cordialement
        François

        Répondre
  24. Teddy

    Bonjour,

    je voulais savoir quelle type de technologie était utilisé dans ce capteur (thermistance, thermocouple, sonde à résistance de platine) ?

    Merci

    une réponse avant ce soir si possible, pour projet BTS

    Répondre
  25. Eddie

    Bonjour,

    Je farfouille mais je trouve pas ce que je veux. Ou je m’y prend mal…
    Je voudrais rajouter des conditions à ma sonde. C’est à dire que c’est soit la LED verte ou rouge qui s’allume en fonction de la plage de t°.

    Si un tuto avec montage en french est dispo je suis preneur… 🙂

    Cordialement,

    Rahan

    Répondre
      1. François MOCQ Auteur de l’article

        Bonjour
        un bout de programme en python?
        C’est quoi le cahier des charges ? Par exemple moins de 20°C LED verte / plus de 20°C LED rouge?
        Posez la question sur le forum, vous aurez plus de réponses 😉
        Cordialement
        François

        Répondre
        1. Eddie

          Bonjour François,

          Je m’étais permis d’écrire ici car j’ai vu beaucoup d’échange technique. Donc pourquoi pas moi 😛 Mais en effet c’est plus (+) le rôle du forum.

          Oui sinon pour répondre a la question, c’est tout a fait ça.

          Merci

          Répondre
  26. ben08fr

    Merci pour ce tutos

    Je viens de le faire sur mon pi2 ça marche super !

    Bien sur il faut modifier le config.txt comme indiquer par Jerome
    J’ai brancher un servos qui m’indique la température (comme un gros compteur de voiture). ça sert a rien mais ça m’éclate

    Par contre je voudrais savoir comment brancher plusieurs DS18B20. En parallèle par rapport au schéma je suppose ? et comment recalculer la résistance si je connecte plusieurs sonde ?

    Répondre
  27. Ping : TFM – UNIR

  28. nicolas

    Bonjour
    Je sollicite un avis pour reussir un branchement :

    j’ai 3 sondes ds18B20 installées dans la maison. connectées en mode maitre esclaves sur le GPIO 4 avec une resistance de 4,7K : ca fonctionne

    J’ai une sonde DS18B20 installée dans la piscine sur un cable de 50 mettre avec une resitance bcp plus faible. Si je l’installe sur le gpio 4 : ca fonctionne

    Je pose donc la question suivante : comment faire pour mettre les 4 sondes en meme temps sachant que j’ai essayé de mettre les 3 de la maison sur le gpio 4 et celle de la piscine sur un autre GPIO : seules celles du gpio4 sont reconnues

    merci de votre aide

    Nicolas

    Répondre
    1. José

      Bonsoir Nicolas,

      L’idée est d’interconnecter toutes les sondes sur le même bus. Pour ma part, je supprimerai la résistance de 4,7k des sondes de la maison pour ne laisser que la plus faible du montage de la piscine (avec les pertes du câble ça devrait le faire). Les quatre sondes seraient ainsi interconnectés sur le GPIO 4.

      Pour une meilleure stabilité, il faudrait peut être prévoir une alimentation de 5v différente du rasp.

      Jo

      Répondre
  29. Ping : DS18B20 Raspberry pi - Mesurer la température avec une sonde numérique - Slog

  30. Ping : Informatique, informatique et un poil de mécanique | Col Blanc et Mains Grasses

  31. christophe27

    Bonjour
    Problème identique a celui de marc du 08/02/2015
    Malgré toutes ces infos sur la valeur de la résistance….. je nage.
    Je ne lis pas l’anglais et découvre l’électronique…..
    J’ai donc réalisé ce montage (pas en parasite) avec 60 M de câble téléphone et 3 sonde 18b20
    j’ai « adapté » le scrit pyhton de adafruit pour lire les sondes toute les minute( qui a bien fonctionné avant que je rallonge les fils)…..puis aléatoirement une sonde n’est plus détectée…
    quel valeur de résistance me conseillerez-vous?
    je doit ajouter 4 sondes et 50 M de fils quel seras alors la valeur de la résistance?
    existe t-il un moyen (avec un voltemêtre ou autre..)pour savoir si la résistance est adaptée?
    merci

    Répondre
  32. Ping : Mesure de température 1-wire DS18B20 ave...

  33. Ping : [RPi] Ajout d’une sonde de température ambiante

  34. nico974

    Bonjour, je tenais dabord a vous felicitez pour la qualite du contenu de votre site.
    Une ame charitable pourrait meclairer a propos du branchement de ses sondes en serie? Mon niveau est tres nul en electronique. A chaque sonde me faut il une resistance? Si quelquun aurait un schema je suis preneur. Merci beaucoup

    Répondre
    1. Dodutils

      Bonjour, pour le réseau 1-Wire il ne faut qu’une seule résistance, cependant on a le choix pour ce qui est de la forme du réseau, soit on fait un gros fil de xx mètres de long et on y « accroche » des DS18B20, soit on fait « pendre » des DS18B20 en ce sens que le fil qui part du brin principal peut faire 3 mètres par exemple, soit on part en étoile avec un brin de 20m par exemple puis on l’éclate en 4 brins de 10m qui partirons dans plusieurs direction avec un DS18B20 au bout de chaque brin, en fait tout est possible à condition de respecter certains contraintes de distance et de longueur de brins, pour ma part la dizaine de sondes le long de 70m de câble tournent plutôt bien depuis plusieurs années avec 0,5% d’erreur de lecture sur 2.5 millions de relevés par sonde (1 par minute).

      Pour plus d’infos sur la façon de construire un réseau 1-Wire fiable voir le tutoriel sur le site du fabricant Maxim :

      https://www.maximintegrated.com/en/app-notes/index.mvp/id/148

      Répondre
  35. Nico974

    Merci des infos, jai reussit a monter tous sa et je peux vous dire que les cours d’elec au lycee me manque lol allez il me reste plus qu’a mettre en place la supervision.

    Bonne journee et merci encore

    Répondre
  36. chaby

    Bonjour, et félicitation pour votre travail sur ce site et la clarté des explications.
    Je voudrais faire un montage pour relever les températures sur une distance de 100m, avec 10 capteurs, a priori une alimentation externe s’impose, avez vous une recommandatation (marque, …) pour cette alim?

    D’avance merci

    Répondre
      1. chaby

        Merci pour l’info!
        Le but c’est de remonté des informations de températures sur la chaufferie de ma copro, donc j’ai besoin d’un fil qui parte de chez moi, serpentant dans les caves et qui à des sondes à l’extémité, et surement sur d’autres points le long du chemin.
        D’ou mes questions :
        le mode parasite est il utile dans mon cas? Car je ne vois pas trop l’intérêt (noob inside)
        Tu dis que tu as 70m de cable, l’alimentation des sondes à l’aide du raspberry j’en déduit que te suffit donc?

        Répondre
        1. Dodutils

          La mode parasite est pratique car cela « économise » un fil et du coup tu as juste besoin d’une paire au lieu de 3 fils et pour ma part je passe par un petit adaptateur USB/1Wire DR9490R car quand j’ai démarré mon réseau 1-wire il y a 7 ans le Raspi n’existait pas encore il est donc relié à un simple PC de type Netbook EEE-PC qui me sert de serveur domotique 24/24 depuis tout ce temps sans faillir 😉

          Répondre
  37. Henri

    Bonjour,

    Merci pour votre tuto !

    Il m’a bien aidé, même si au final ma solution diffère un peu en étant basé sur un Arduino, car je n’ai pas réussi à mettre des DS18B20-PAR sur le Raspberry.

    Maintenant je surveille les températures de 2 salles machines (corridor froid, chaud, faux-plancher, faux-plafond) via 62 sondes DS18B20-PAR et 4 sondes DHT22 branchées en parallèles sur au total 156m de câble RJ45, et une résistance que j’ai du baisser à 470 Ω.

    Pas de jalousie, vive la framboise, l’Arduino et les gens qui, comme vous, partagent 😉
    Cordialement, Henri

    Répondre
  38. hornet02

    bonjours je veux moi aussi me lancé dans le projet de mettre des sondes et ainsi gerer mon chauffage par contre comment installé vous vos sonde moi je recherche des petits boitiers pour un peu les caché .
    comment avez vous dissimulé vos sondes?

    Répondre
    1. Laurent

      Bonjour,
      Essayez une recherche sur Ali Express, c’est bien mieux réglementé qu’Ebay pour l’acheteur protection de ce dernier pendant 60 à 90 jours mini avec remboursement total en cas de litige.
      En fait Ali Express ne paie le vendeur qu’une fois la transaction confirmée reçue par l’acheteur.
      C’est de vécu !
      Il faut lire les retours d’acheteurs, Google translate est un mai parfois 🙂
      Langue de Shakespeare obligatoire par contre mais la plupart du temps le port est gratuit vers la France même pour des trucs à moins de 1€, ça aussi c’est du vécu !

      Répondre
  39. chaby

    Bonjour, les tests que j’ai fait fonctionnent \o/
    J’aurais une question vous utilisez quoi comme câble pour relier le raspberry pi aux sonde, du RJ45 blindé ça vaut le coup (sachant que j’ai 150m de câble), ou un « simple » cable 3 fils (genre cable électrique) convient parfaitement?

    D’avance merci

    Répondre
  40. Laurent

    Bonjour,

    Très bon tuto comme d’hab., félicitation pour cette passion suivie pour la framboise, et merci pour tout ces tuyaux, exemples et code gentiment partagés

    Répondre
  41. Laurent

    Bonjour ou bonsoir selon,
    Ah les insomnies parfois ……
    Petite précision à apporter pour ceux qui, comme moi, sont sur une version de kernel récente utilisant le Device Tree. Je suis en 4.1.13v7+ depuis un récent dist-upgrade.
    Il faut impérativement ajouter la ligne suivante dans le fichier config.txt de la partition fat32 de boot :
    dtoverlay=w1-gpio,gpiopin=4
    Vous pouvez éditer directement ce fichier config.txt par la commande :
    sudo nano /boot/config.txt

    J’ai galéré 2 bonnes heures hier soir à chercher à comprendre pourquoi le gpio présent et le wiringpi en fonctionnement je n’avais aucune sonde esclave reconnue. Tout vérifié, câbles, paquetages, modules.
    Bref au bout du compte, ma femme me regardant de travers, donc je suis allé au dodo.

    Et en me levant, là, j’ai fureté et trouvé un tuto qui le précisait, et bien la sonde marche maintenant. Avant nada le gpio ne devait peut être pas adresser la bonne pin comme Master je pense;

    Voilà, si ça peut aider.

    Répondre
  42. Laurent

    Et merci François ça marche nickel à part ce petit détail du à un kernel récent et une profonde modification sur les noyaux.

    Euhhhh l’est pas à l’heure d’hiver ton serveur , il est presque 4h là 🙂

    Répondre
      1. Laurent

        Bonjour François,

        Laisses tomber à part mettre la grouille dans nos hormoges cette heure d’été/d’hiver ne sert à rien de toutes façons.
        Moi ça fait belle burettes que j’ai repris le soleil comme mentor 🙂

        Bonne journée.

        Répondre
  43. Norbert

    Bonjour,

    Bravo pour le tuto, j’avoue que j’ai ramé parce que la modification du config.txt n’est pas dans le tuto initial. J’étais à deux doigts de tout renvoyé aux Chinois quand j’ai effectivement découvert qu’il faut absolument « dtoverlay=w1-gpio ».
    Ne faudrait-il pas corriger la page initialel? J’avoue que je ne lis pas systématiquement les commentaires car les remarques sont souvent intégrés dans le texte initial.

    Salutations,

    Répondre
  44. clot

    Bonsoir

    je me posais la question de la compatibilité entre un DS18B20

    et un module RTC en I2C ( GPIO4)

    Vais-je rencontrer des difficultés?

    Crdlmt

    Répondre
      1. clot

        Tout à fait,

        Je cherche juste à optimiser mes achats pour un projet de nature professionnelle
        ( remise en état de convecteurs dont les afficheurs sont HS et ne sont plus fabriqués)

        Belle journée à tous

        Répondre
        1. Dodutils

          Si c’est un problème d’afficheur sur des convecteurs, un RasPi me semble un peu excessif, pourquoi ne pas utiliser un Arduino ou un ESP8266 à moins que l’idée soit d’équiper chaque convecteur d’une sonde DS18B20 et toutes les relier à un RasPi en filaire ?

          Répondre
  45. Ping : Avec Cayenne, pimentez la gestion de votre Raspberry Pi | Framboise 314, le Raspberry Pi à la sauce française….

  46. Dodutils

    Avec ces intempéries ma cave a été inondée, j’ai 1 mètre d’eau mais le truc intéressant c’est que mon fil 1 wire qui fait 70m de long et parcours toute la maison jusqu’à la cave a résisté à 1m sous l’eau ?!?

    Et pourtant en arrivant dans la cave le câble fait un raccord via un simple domino pour aller plonger un DS18B20 dans le congélateur (la porte du coffre du congélateur ferme sans problème sur la paire de fils extraite d’un câble Ethernet).

    A 3H00 du matin quelque chose a fait sauter les plombs de la cave, mon onduleur m’envoi une alerte mais je ne suis pas du tout sur place, à 11H45 le congélateur qui tenait toujours sur sa réserve de froid voit sa température grimper d’un seul coup… pourquoi donc ? et bien la montée des eaux a fini par l’atteindre (il était surélevé mais pas à 1 mètre) ce qui a fait flotter et basculer. L’eau étant un très bon conducteur thermique elle a « aspiré » le froid des parois du congélateur.

    Enfin bref, j’avais encore jamais vu un système électrique dénudé réussir à fonctionner sous l’eau 😉

    Répondre
  47. izmirak

    Bonjour, j’ai vu votre article il y a 3 semaine et à cause de vous j’ai décidé de me lancer…………………
    Matériel reçu, soft installé , impeccable en suivant vos tutos.
    Je suis novice dans le raspberry et j’explore tant bien que mal les différents menus.
    Mon projet et d’afficher ma centrale double flux sur un graphique et de pouvoir y lire les 4 températures importantes.
    Domoticz mais il est nécessaire de calculer le rendement de l’installation par des multiplication et soustraction de ces 4 températures. Je n’ai pas trouvé ces opérations basiques dans domoticz.
    Avez vous une idée?

    Répondre
  48. chevalier

    Bonjour
    j’ai suivi votre tuto
    lorsque je fais
    pi@raspiblog ~ $ cd /sys/bus/w1/devices
    pi@raspiblog /sys/bus/w1/devices $ ls
    je n’ai rien dans ce répertoire
    pouvez vous m’aider
    cordialement
    pierre chevalier

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour Pierre
      difficile de voir d’où ça peut venir avec aussi peu d’éléments
      vous êtes sous Jessie? en mode graphique ? si oui avez vous activé le 1-Wire depuis la fenêtre de configuration ?
      cordialement
      François

      Répondre
  49. chevalier pierre

    Bonsoir François
    merci de bien vouloir m’aider
    mon raspberry est sous rasbian jessie
    j’utilise PuTTY et VNC
    je n’avais pas activé 1-wire
    sudo nano /boot/config.txt
    dtoverlay=w1-gpio,gpiopin=4
    le gpio 4 est donc forcé!!!
    comment activé 1-wire à partir de la fenètre de configuration
    je réessaye demain matin et je vous tiens au courant
    cordialement
    Pierre

    Répondre
    1. José

      Bonsoir,
      Je pense que François parle de la fenêtre de configuration accessible au moyen de la commande sudo raspi-config puis choix 9 « Advanced options » puis choix A9 1-Wire.

      Répondre
  50. chevalier pierre

    Re Bonsoir François
    j’avais un peu de temps
    j’ai fait les corrections
    tout fonctionne correctement
    j’obtiens la température de la pièce
    j’ai en projet de récupérer la température dans une pièce de le transmettre au raspberry qui va l’analyser et en fonction des résultats, agir sur ma chaudière pour déclencher la mise en route (contact sec)
    avez vous une idée?
    je suis un informaticien à la retraite qui essaye de combiné électronique et informatique
    cordialement
    Pierre

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour Pierre
      c’est un grand classique 😉 et très bien pour démarrer avec le RasPi : un capteur et une sortie
      le capteur c’est fait. Un bout de programme en Python par exemple et vous pourrez coller un relais lorsque la température dépasse la valeur de consigne.
      Au début la consigne peut être fixe… après elle devient réglable avec un commutateur rotatif par ex.
      et pourquoi pas un afficheur LCD à 2 lignes pour afficher la consigne, la temp. lue et l’état de la chaudière 🙂
      vous voyez il y a plein de possibilités !
      pour la carte relais vous trouverez des cartes opto couplées http://www.ebay.it/itm/Module-4-relais-opto-4-relay-module-10A-250V-5-3-3V-contacteurs-Pi-ESP32-BS10173-/281565751660 qui permettent de commuter sans mettre les sorties du GPIO en danger.
      Pesez à mettre un peu d’hystérésis pour éviter des mises en route/arrêt trop rapprochées par ex. Mise en route à 19 °C arrêt à 20°C
      Bon amusement
      Cordialement
      François

      ps merci José oui soit raspi-config soit en passant par l’interface graphique Menu > Préférences > configuration > interfaces

      Répondre
  51. chevalier pierre

    Bonjour François
    merci pour ces renseignements, je vais y regarder
    comment est alimenté le fichier w1_slave, à quelle cadence ?
    je viens de l’éditer il m’affiche 19.687
    j’ai mis 2 thermostats classiques à coté
    l’un m’affiche 20.9 et l’autre 21.2
    pourquoi une telle différence avec le DS18B20
    Cordialement
    Pierre

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour Pierre
      d’après ses caractéristiques :
      Caractéristiques du DS18B20 Capteur de Température Numérique – 1-Wire:

      Mesure les températures de -55°C à +125°C (-67°F à +257°F)
      ± 0,5°C Précision de -10°C à +85°C

      Ce qui veut dire que la précision est de l’ordre du degré…
      ça doit être du même ordre pour les autres appareils 🙂 voire pire ?
      certains thermostats travaillent avec une CTN et ce n’est pas forcément le meilleur système 🙁
      Admettons que ce soit la même précision : un thermostat indique 20.9°C la temp. doit être entre 20.4°C et 21.4°C
      Le DS18B20 indique environ 19.7°C donc une température entre 19.2 et 20.2 °c
      on pourrait situer la temp. vers 20.3 °C
      Apres il y a aussi la justesse de la mesure. Si vous n’avez pas de thermomètre étalon, difficile de dire lequel de vos trois mesures est la plus juste ….
      Dernière chose la fidélité, avec le DS18B20 elle est assurée et pour la même température vous aurez la même mesure.
      On peut corriger par programme si vous constatez un décalage mais il fut être certain de la mesure…
      A mon avis… fiez vous plutôt au DS18B20 !
      cordialement
      François

      Répondre
      1. chevalier pierre

        bonsoir François
        merci pour ces précisions
        j’essaye d’avancer dans mon projet
        comment peut on tester l’emetteur recepteur RF233 avec le raspberry, afin de voir si les composants sont bons?
        cordialement
        Pierre

        Répondre
  52. chevalier pierre

    Bonjour François
    j’ai oublié
    où peut on se procurer des composants rapidement
    avec Amazon il faut attendre environ 1 semaine
    Cordialement
    Pierre

    Répondre
  53. chevalier pierre

    Bonsoir François
    je suis bien en panne
    suite à vos conseils, j’avais réussi à identifié mon DS18B20 qui avait cette forme 28-0316364ee3ff
    vous disiez que c’était un numéro unique au monde
    bizarrement, j’ai maintenant dans le répertoire cd /sys/bus/w1/devices, ces informations
    pi@raspberrypi:/etc/raspberry_control $ cd /sys/bus/w1/devices
    pi@raspberrypi:/sys/bus/w1/devices $ ls -l
    total 0
    lrwxrwxrwx 1 root root 0 juin 29 22:51 00-680000000000 -> ../../../devices/w1_bus_master1/00-680000000000
    lrwxrwxrwx 1 root root 0 juin 29 22:50 00-a80000000000 -> ../../../devices/w1_bus_master1/00-a80000000000
    lrwxrwxrwx 1 root root 0 juin 29 22:51 00-e80000000000 -> ../../../devices/w1_bus_master1/00-e80000000000
    lrwxrwxrwx 1 root root 0 juin 29 22:31 w1_bus_master1 -> ../../../devices/w1_bus_master1
    pi@raspberrypi:/sys/bus/w1/devices $

    je ne retrouve plus mon 28-0316364ee3ff
    pouvez vous m’aider ?
    cordialement
    pierre

    Répondre
    1. François MOCQ Auteur de l’article

      bonjour Pierre
      pas facile à distance
      tout ce que je peux vous conseiller c ‘est de reprendre depuis le début de vérifier scrupuleusement le câblage…
      Si votre capteur a fonctionné il n’y a pas de raison qu’il disparaisse comme ça
      entre temps avez vous déplacé le montage? redémarré le RasPi, modifié quoique ce soit dans le système? etc… à distance c’est difficile de savoir tout cela mais ce sont les fondamentaux de la maintenance
      cordialement
      François

      Répondre
  54. dicke

    Bjr, jespere que vous allez bien, je n’arrive pas a detecter mon capteur de temperature sur mon raspberry jai pourtant fai le meme cablage .cependant le capteur est different de celui presenté sur la fiche, c’est un e-block thermometer avec 2 cables interconectés a une petite carte. 2 fild en noir reliés representant la sonde et 3 autres fils (noir rouge blanc) representant les fils connectés sur le raspberry .
    merci de m’aider!

    Répondre
    1. François MOCQ Auteur de l’article

      bonjour
      bin… il faudrait savoir ce que c’est comme thermomètre pour vous aider eblock ? je ne connais pas vous n’avez pas une référence ou une doc? u lien vers le site sur lequel vous l’avez acheté ?
      le même cablage avec un capteur différent hmmmmm ????
      cordialement
      François

      Répondre
          1. dicke

            Bjr, Oui c’est exactement celui la . mais donc le materiel avec lequel il est connecté c’est un arduino oubien. je croyais que c’était un raspberry.
            donc je ne peux utiliser un numérique comme le votre?

            Répondre
  55. François MOCQ Auteur de l’article

    Bonjour
    effectivement c’est connecté sur un Arduino qui possède des entrées analogiques et peut donc recevoir les infos de ce capteur. Sur le Raspberry Pi les entrées sont uniquement digitales (0 ou 1) le bus 1-wire dont parle cet article est un bus numérique. Le capteur envoie la température sous forme de bits codés.
    Votre capteur sort une tension variable en fonction de la température.
    C’est donc incompatible.
    Soit vous connectez votre capteur à un Arduino, soit vous intercalez un convertisseur analogique => numérique entre votre capteur et le Raspberry Pi en respectant les contraintes de tension (l’Arduino fonctionne en 5v et le Raspberry Pi en 3,3 volts !
    Enfin si ce capteur peut être changé, procurez vous un DS18B20 qui s’adapte nativement au Raspberry Pi 🙂
    cordialement
    François

    Répondre
    1. dicke

      D’accord j’ai meme un rasPi qui possede un pin 5V (modele B+) .
      ou pourait trouver un adaptateur analog => num ou pourait-je avoir un lieu pour savoir a quoi sa ressemble.
      merci vraiment pour l’explication.

      Répondre
      1. François MOCQ Auteur de l’article

        bonjour
        bin oui, tous les Raspberry Pi ont une broche 5V… mais c’est une alim rien à voir avec une entrée ou une sortie… Après si vous ne savez pas ce qu’est un convertisseur Analogique > Numérique, je vous déconseille de vous lancer dans l’aventure… Il faudrait acquérir les notions de bas avant, si vous grillez les étapes vous allez pester en disant que le Raspberry Pi c’est de la m…. alors qu’en fait il vous manque les bases pour l’utiliser. Un Raspberry Pi ou un Arduino ce n’est pas une tablette qu’on branche et qu’on utilise. C’est un outil pour apprendre et pour développer ses connaissances.
        Je dis toujours : « Avant de vous lancer dans un projet de tondeuse à gazon guidée par GPS avec évitement d’obstacles à laser et retour vidéo, apprenez déjà à allumer une LED 🙂 « …
        Enfin, vous faites comme vous voulez, ce n’est que mon avis…
        cordialement
        François

        Répondre
  56. dicke

    bjr! j’ai fait de l’electro je sais bien ce que c’est un convertisseur analog > num c’etait pr voir a quoi ressemble celui qui est adapté au thermo au cas où. mais j’ai pas mal galèrer avec le RPi.
    merci de votre aide c’est gentil.

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour
      il n’y a pas de réponse toute faite
      ça dépend des caractéristiques de votre module
      il y a des cartes adafruit par exemple avec des CAN
      mais il faut connaitre les caractéristiques du signal que vous envoyez
      et… lire les docs
      désolé je ne peux pas en dire plus avec les infos que vous donnez
      cordialement
      François

      Répondre
      1. dicke

        Bjr en fait j’ai une étape des travaux ou je doit récupérer la température a partir de la sonde et l’afficher sur un écran lcd 1602.je me suit retrouvé coincé maintenant avec cette thermo analog et je n’arrive âs aussi a afficher un message quelconque sur le lcd (il ya que la luminosité et le contraste qui marche) bien vrai que j’ai suivi un tuto pdf avec le code et le branchement et tout!!

        Dicke!

        Répondre
        1. François MOCQ Auteur de l’article

          Bonjour
          une nouvelle fois je ne peux vraiment pas répondre à votre question (il n’y en a pas d’ailleurs) mais LCD1602 est une appellation générique pour un afficheur LCD comportant 2 lignes de 16 caractères. Ce qui importe c’est l’interface… bus parallèle, I2C, SPI ? on revient sur le problème que vous avez eu avec le thermomètre… vous confondez la fonction et le signal. Je pense que si vous avez des bases en électro (électronique, électrotechnique?) vous vous lancez dans des projets pour lesquels suivre un « tuto pdf » ne suffit pas. Il faut aussi vérifier que le matériel correspond à celui qui est utilisé dans le tuto, lire les docs…. Mais c’est vrai que lire les docs est un travail ingrat et puis… celui qui a fait le tuto l’a déjà fait, non ? Voir la remarque de Dodutils : Et Internet ça sert à quoi ? ?
          On veut bien vous aider mais il faut avoir déjà fait vous même un minimum de chemin et fournir le minimum d’infos pour qu’on sache ce que vous avez fait. La ref exacte du LCD, le tuto suivi ???
          Par exemple j’ai un afficheur LCD1602 équipé d’un équivalent intégré d’Arduino qui se pilote avec…2 fils
          Encore une fois je reviens sur ma tondeuse automatisée mais… j’ai l’impression que vous vous êtes lancé dans un projet sans avoir les bases de départ. Ces bases vous ne les acquerrez pas en suivant un tuto mais en bossant par vous même pour comprendre comment ça fonctionne. Sinon ça « tombe en marche » et on ne sait pas pourquoi
          cordialement
          François

          Répondre
  57. Ping : La Saga Blink : Un Raspberry pour faire clignoter une LED ! | Framboise 314, le Raspberry Pi à la sauce française….

  58. Ping : Raspberry PI - ofort | Pearltrees

  59. Michel

    Bonjour,
    impossible de faire fonctionner ma sonde DS18B20P sur ma nouvelle RASPBERRY 3 ModelB
    Cette dernière fontionnait très bien sur une ancienne version de RPI.
    Pourriez-vous m’aider?
    merci

    Répondre
  60. higgins

    bonjour, comment paramétrer l’alerte email de munin ?
    J’ai parcourus différents site et c’est toujours le même exemple qui n’est pas du tout documenté et explicite !

    merci d’avance

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour
      bin mon domaine c’est plus le Raspberry Pi (matos et prog de base)
      je ne peux pas connaitre toutes les applis qui tournent dessus, il y en a des centaines
      je pense que les utilisateurs du forum sont plus pointus et spécialisés.
      Le forum est géré par une équipe qui gère et modère, je n’interviens pratiquement pas, ils font ça très bien :)… on ne peut pas être partout 😀
      Si tu as une réponse -et une solution- ce serait sympa d’ajouter l’info dans les commentaires pour les autres utilisateurs de munin
      bonne journée
      cordialement
      François

      Répondre
  61. Schneider

    Bonjour, J’ai monté un réseau de sondes sur un raspberry et tout semble fonctionner sauf qu’au bout d’un certain temps (2 à 3 jours) le répertoire du 1wire contient des id de sondes farfelues qui changent sans arrrêt. Le montage est en étoile, une résistance de 4,7KO avec le 3,3V et l’alimentation sur le 5V. En général la situation se rétablie en coupant l’alimentation des sondes (5V) ce qui doit provoquer un reset des sondes. Une idée sur les causes possibles ?
    Merci d’avance
    Cordialement

    Répondre
  62. Francky

    Bonjour,

    J’utilise 4 sondes DS18B20. Pour réguler la température d’un liquide je n’en interroge qu’une mais les quatres sont connectées pour une évolution du projet par la suite. Je chauffe le liquide à l’aide d’un élément chauffant controller par PWM. Tout se passe bien sauf que de temps à autre les répertoires devices ne s’affiche plus comme si la RPi avait perdu les sondes. Tant que je ne déconnecte pas les sondes pour les reconnecter ensuite, la RPi ne les trouve pas.
    J’ai fait des tests en déconnectant la pin 4 (clock/data) pour déconnecter les sondes pendant un fonctionnement normal et en les reconnectant pour provoquer la même erreur. Cependant, dans ce dernier cas les répertoires ne sont pas perdus par la RPi et à la reconnexion elle les retrouve quasiment tout de suite.
    J’ai aussi fait le test en mettant la pin 4 à la masse. Idem les répertoires ne sont pas perdu et quand je la remet sur les sondes RPi les retrouve tout de suite.
    Les sondes ne sont pas montées en mode parasite.

    Quelqu’un peut-il m’aider à résoudre mon problème, svp ?

    Merci d’avance

    Cordialement

    Répondre
    1. Francky

      Bonjour,
      J’ai finalement contourné mon problème en alimentant les sondes via un port GPIO. Cela me permet couper l’alimentation des sondes si des valeurs aberrantes sont ovbservées. En générale, en attendant environ 20s puis réalimentant, les sondes donnent à nouveau des valeurs normales. Si ce n’est pas le cas je recommence l’opération. Il faut aussi attendre un peu juste après la réalimentation des sondes.

      Voilà

      Répondre
      1. Vavincavent

        Bonjour,
        Je rencontre je pense le même problème, les sondes sont invisibles. pouvez-vous expliquer un peu plus l’alimentation via GPIO pour faire ce reset?
        Pour ma part je fonctionne avec un script python, quand j’ai l’eereur je suis éjecté du script, comment boucler en cas d’erreur sur un code de reset?

        Merci d’avance.

        Répondre
      2. Vavincavent

        Voici le script python que j’utilise :

        # Import des modules
        import RPi.GPIO as GPIO
        import time
        import glob, os

        # Initialisation de la numerotation et des E/S
        GPIO.setmode(GPIO.BOARD)
        GPIO.setup(12, GPIO.OUT, initial = GPIO.HIGH)

        #adresses des sondes
        #sonde exterieure : 28-8000001f908d
        sonde_exterieure=’/sys/bus/w1/devices/28-8000001f908d/w1_slave’
        #sonde interieure : 28-8000001f908d
        sonde_interieure=’/sys/bus/w1/devices/28-8000001f9df6/w1_slave’
        #sonde ECS : 28-8000001f9df6
        sonde_ECS=’/sys/bus/w1/devices/28-8000001f9d89/w1_slave’
        #sonde D : 28-8000001f9e39
        sonde_D=’/sys/bus/w1/devices/28-8000001f9e39/w1_slave’
        #sonde R : 28-8000001f90bb
        sonde_R=’/sys/bus/w1/devices/28-8000001f90bb/w1_slave’

        #initialisation des sondes
        temp_ECS = str(float(open(sonde_ECS).read().split()[-1][2:])/1000)
        temp_ext = str(float(open(sonde_exterieure).read().split()[-1][2:])/1000)
        temp_int = str(float(open(sonde_interieure).read().split()[-1][2:])/1000)
        temp_D = str(float(open(sonde_D).read().split()[-1][2:])/1000)
        temp_R = str(float(open(sonde_R).read().split()[-1][2:])/1000)

        #definition du nombre de mesures
        i=0
        intervalle=10 #intervalle de mesure en seconde
        duree=7 #duree en jour
        nombre_mesure=duree*24*3600/intervalle

        # creation du fichier de donnees si absent
        if not os.path.isfile(« plancher8.csv »):
        out = open(« plancher8.csv », « a »)
        print >> out, « ; ».join([« date », « Sonde ECS », « Temperature exterieure », « Temperature interieure », « Sonde D », « Sonde R »])
        out.close()

        #fonction reset
        def reset():
        GPIO.output(12, GPIO.LOW)
        time.sleep(5)
        GPIO.output(12, GPIO.HIGH)

        #fonction lecture des sondes
        def lecture():
        from datetime import datetime
        date = str(datetime.now())

        #lecture / extraction de la temperature des sondes
        try:
        temp_ECS = str(float(open(sonde_ECS).read().split()[-1][2:])/1000)
        temp_ext = str(float(open(sonde_exterieure).read().split()[-1][2:])/1000)
        temp_int = str(float(open(sonde_interieure).read().split()[-1][2:])/1000)
        temp_D = str(float(open(sonde_D).read().split()[-1][2:])/1000)
        temp_R = str(float(open(sonde_R).read().split()[-1][2:])/1000)
        except IOError:
        reset()

        print >> out, « ; ».join([date, temp_ECS, temp_ext, temp_int, temp_D, temp_R])
        print date, temp_ECS, temp_ext, temp_int, temp_D, temp_R

        #boucle de mesures
        while i<nombre_mesure :
        i=i+1
        out = open("plancher8.csv", "a")
        lecture()
        out.close()
        time.sleep(intervalle)

        Répondre
  63. antho

    Bonjour je viens vers vous car j’ai un problème qui me laisse pantois !

    j’ai une framboise qui tourne sous jessie avec pixel et sur laquelle j’utilise domoticz.

    sur celle ci, lorsque je branche deux sondes ds18b20 en mode 3 fils sur un bus qui fait environ 40 metres, tout se passe pour le mieux bon retour sur raspberry et bon retour dans domoticz, mais des que je branche une 3 eme sonde au debut tout se passe bien puis apres quelques heures la lecture des 3 sondes tombe a 0 degrès avec comme reponse sur le raspberry:

    pi@raspberrypi:~ $ cd /sys/bus/w1/devices
    pi@raspberrypi:/sys/bus/w1/devices $ ls
    2d-2a456084c681 2d-6a456084c681 2d-aa456084c681 w1_bus_master1
    pi@raspberrypi:/sys/bus/w1/devices $
    soit quelque chose de completement incoherent … puisque j’ai bien bien mes sondes en 28-80000…… lorsque ca fonctionne correctement

    A la suite de ca, je fais un reboot et :

    pi@raspberrypi:/ $ cd /sys/bus/w1/devices
    pi@raspberrypi:/sys/bus/w1/devices $ ls
    00-800000000000 w1_bus_master1
    pi@raspberrypi:/sys/bus/w1/devices $

    je suis obligé de debrancher le bus pour pouvoir retrouver des valeurs normales

    qu’es ce que j’ai loupé ??? merci de votre aide

    Répondre
      1. antho

        bonjour tout d’abord merci, la valeur de la resistance est de 4.7k, le cable est du cable telephonique acheter en magasin de bricolage et non cat.5 connexion sur bus en serie. j’ai deja essayer une resistance plus faible rien n’y fait …. je vais voir pour changer de cable … etant novice j’avais penser a un moment a un fichier de lecture des sondes qui serait « plein » ou alors a une « limite de detection » de sonde dans la config du bus 1-wire

        Répondre
        1. antho

          pour donner suite j’ai changer le cable par du cat.5 abaisser la resistance a 1k et toujours le meme problème je vais tenter le montage en etoile …. i »ll be back !

          Répondre
          1. François MOCQ Auteur de l’article

            merci ! je pense que cette expérience sera utile à de nombreux lecteurs…
            quand ça fonctionnera je ferai un edit de l’article car tout le monde ne lit pas les commentaires jusqu’au bout 🙂
            bel exemple de persévérance ! bravo

            Répondre
          2. José

            Bonsoir antho,
            Quelle type d’alimentation utilisez-vous pour le montage ? QSi ce n’est pas le cas, vous pouvez monter jusqu’à 5 v. J’ai 12 sondes sur une alim 5 volts dédiés I2C et OneWire. La distance totale du bus doit être supérieure à 50 m. Le tout fonctionne parfaitement sur un mélange de câble CAT 5e et de câble téléphone.

            Répondre
            1. Antho

              Alimentation 3.3 du raspberry bus de moins de 30 mètres pour le 5v je peux prendre celui du raspberry en lieu et place du 3.3 ? Pas de risque avec le gpio du data ?

              Répondre
  64. José

    Il faut toujours rester prudent avec les conseils 🙂 sur internet. Je ferai un premier essai en remettant la résistance préconisée par François au début du début du tuto en utilisant le 5v du PI.

    J’étais exactement dans le même cas de figure. Puis j’ai choisi une autre alimentation 5V 2.5 A pour être tranquille.

    Répondre
  65. antho

    De retour …. alors j’ai modifié le cablage, je suis passé du bus série à un étoile, 3 sondes, resistance 4.7k, resté sur alim 3.3 du raspberry, ca fait 24 h que ca fonctionne et ca fais plaisir !!! merci a tous, Antho.

    Répondre
  66. SC

    Bonjour à tous,
    Très intéressé par cet article. Je viens de commander la sonde et la résistance. J’ai des connecteurs GPIO.
    Je suis un grand débutant sur Rasberry.
    Mais j’ai écrit des lignes de codes par le passé …
    Où pourrais-je trouver des infos sur la commande d’une chaudière et/ou d’un radiateur électrique à fil pilote ?
    Par avance, merci !

    Répondre
  67. SC

    Merci pour ce message !
    J’ai mal posé ma question : je souhaiterais pouvoir piloter un système de chauffage avec un RB3, en recueillant une information de température à l’aide de la sonde évoquée dans mon précédent message, et en envoyant un ordre au radiateur.
    J’ai connaissance de l’existence de la carte additionnelle Z-Wave, mais je ne sais pas si elle est utile / indispensable à cette réalisation.
    Compte tenu de ce que vous avez écrit sur la mesure de température, il me manque des infos sur la commande du radiateur.
    Cordialement,
    Serge

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour
      là on sort du cadre du cadre du Raspberry Pi 🙂
      peut être qu’un lecteur pourra vous aider, sinon
      essayez de poser la question sur un forum domotique vous aurez des réponses mieux adaptées
      cordialement
      François

      Répondre
      1. SC

        Bonsoir,
        Il ne me semble pas sortir du cadre de l’utilisation d’un Raspberry : si je mets en œuvre le contenu de votre article sur l’acquisition de température, il reste à savoir comment piloter une ou plusieurs broches du connecteur GPIO pour faire changer d’état un relai. A ce sujet, vous avez publié en décembre 2013 un article intitulé « 7 cartes d’extension DTRONIXS pour votre Raspberry Pi », dans lequel vous mentionnez une « carte deux relais » qui pourrait peut être se révéler utile. Cette carte est-elle toujours d’actualité, et, si oui, pensez vous qu’elle conviendrait à mon projet ?
        Bien cordialement,
        Serge

        Répondre
        1. François MOCQ Auteur de l’article

          Bonjour
          je me suis sans doute mal exprimé… Il y a des centaines, des milliers d’applis qui tournent sur le Raspberry Pi ou… sur n’importe quelle machine sous Linux. Impossible de tout connaître 🙂 et de répondre à tout !
          Par exemple je n’utilise pas Zwave et je ne sais pas ce qu’est un(e) RB3 😀 c’est pour ça que le forum est plus pointu car il y a plus d’utilisateurs que sur les commentaires des articles. Donc plus de chances d’avoir une réponse adaptée.
          Concernant la carte 2 relais oui elle est toujours en vente chez tindie : https://www.tindie.com/products/DTronixs/raspberry-piio-minipiio-2ch-relay-add-on-board-/
          cordialement
          François

          Répondre
  68. SC

    Bonjour,
    Je reviens vers vous avec de nouvelles questions …
    J’ai mis en œuvre le contenu de votre article et j’obtiens une information de température.
    J’ai aussi acheté votre livre « Exploitez tout le potentiel de votre nano-ordinateur ».
    J’ai acheté la carte MiniPiio2ch Relay mais je ne vois pas comment actionner un relai selon les informations de température.
    Donc, j’ai commandé la carte PiFace Digital 2 que j’ai installée et testée. Mais est-il possible de connecter la sonde DS18B20 sur la carte PiFace Digital 2 quand toutes les broches du GPIO de la Raspberry Pi 3 sont devenues inaccessibles ?
    Le chapitre consacré à la carte PiFace Digital 2 de votre ouvrage ne m’a pas permis de comprendre.
    J’ai beaucoup cherché sur le sujet, mais je n’ai rien trouvé. Peut être que je n’ai pas cherché au bon endroit …
    J’avoue ne pas être électronicien !
    Par avance merci si vous pouvez me donner quelques pistes …
    Serge

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour Serge
      que ce soit avec la carte relais https://www.tindie.com/products/DTronixs/raspberry-piio-2ch-relay-add-on-board-kit-only/ ou avec la Piface 2, il faut écrire un programme. Le plus simple pour commencer c’est un prog en Python. Il faut lire la température et faire coller un relais si elle dépasse une certaine valeur (par exemple mettre un ventilateur en route si la température devient trop élevée). Ou l’inverse pour un aquarium : couper le relais de chauffage quand la température est atteinte…
      Pour connecter la sonde DS18B20 c’est effectivement plus compliqué lorsqu’une carte PiFace est en place.
      Vous pouvez soit souder les fils directement sur les pins correspondantes de la PiFace, soit uniliser une carte comme la SHIM https://www.kubii.fr/fr/cartes-extension-cameras-raspberry-pi/487-piface-shim-i-o-shim-raspberry-pi-3272496001893.html qui se soude sur le GPIO du RasPi, permet de mettre une PiFace 2 et d’avoir accès aux pinoches GPIO grâce au connecteur coudé. (bientot un article sur le blog à ce sujet 🙂 il est en préparation)
      je vous laisse regarder tout ça… n’hésitez pas si vous avez d’autres questions
      cordialement
      françois

      Répondre
  69. Sabrina Maroc

    Bonjour,

    je me questionne sur la précision des résultats de cette sonde, vu son prix?
    Même question concernant sa fiabilité dans le temps.

    Les prix des revendeurs différent tellement, que j’hésite encore à porter mon choix sur tel ou tel produit.

    Merci pour vos conseils.

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour
      de mémoire je crois que la précision est de 0.5°C
      après les vendeurs font bien le prix qu’ils veulent
      prenez au moins cher 🙂
      cordialement
      François

      Répondre
    2. Dodutils

      Pour ce qui est de la durée… ça fait 10 ans que j’en ai une douzaine qui tournent 24/24 chaque minute depuis 2008 (je me suis trompé dans un précédent message j’avais sous-évalué les chiffres) soit 4.500.000 enregistrements pour chaque sonde donc oui c’est fiable 😉

      Achetées 3€ pièce à l’époque et le DS18B20 n’a qu’un seul fabricant.

      Côté précision on descend bien en dessous du 0.5° tout dépend de l’échelle de précision que l’on demande à la lecture.

      Répondre
      1. Vavincavent

        Attention de ne pas confondre précision et résolution.
        La précision est la fiabilité de la mesure par rapport à la valeur réelle.
        La résolution est le pas de lecture de la valeur affichée.

        Répondre
  70. Nicolas

    Bonjour,

    savez vous s’il existe une sonde de température « plug n play » ? sans résistance ou avec résistance intégrée ?

    je n’en trouve pas.

    merci

    Répondre
    1. Dodutils

      et sinon il y a les modules USB/1-wire (avec resistance intégrée) et aussi des sondes en xx mètres toutes faites avec le DS18B20 enveloppé d’un d’une protection (couche de plastique thermo formé), mais c’est plus cher.

      Répondre
  71. Cyrille

    Bonjour,

    Je rencontre un problème avec mes sondes de température.
    Jusqu’à présent, 3 sondes étaient connectées et fonctionnaient correctement
    – 1 sonde directement sur la breadboard
    – 2 sondes reliées à la breadboard à l’aide de deux câbles de plusieurs mètres chacun.

    En ajoutant 2 sondes supplémentaires sur la bredboard, les messages suivant apparaissent
    (dans /var/log/messages + var/log/kern.log) :

    – w1_master_driver w1_bus_master1: w1_search: max_slave_count 64 reached[…]
    – w1_slave_driver 28-000007320xxx: Read failed CRC check

    – Alimentation 2 ampères utilisée
    – Mode NON parasite configuré

    Je n’ai pas essayé de connecter les sondes sur du 5 volts, ni de modifier la résistance pour le moment.

    Un retour d’expérience sur le sujet ?
    Merci d’avance !

    Répondre
  72. Jhnn

    Bonjour, je ne peux pas sauver le fichier etc/modules une fois les lignes ajoutées
    J’ai une erreur « Error writing etc/modules: No such file or directory  »
    J’ai essayer d’ajouter les lignes avec Winscp mais => pas les droit root je suppose
    Je débute en linux, merci pour vos réponses

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour
      normal, vous êtes connecté comme utilisateur pi
      /etc/modules nécessite les droits d’admin pour l’accès
      de mémoire sous winscp on ne peut pas modifier les droits une fois connecté
      il faudrait soit faire la manip en SSH avec putty en mettant sudo devant la commande
      soit vous connecter comme root avec winscp (pas sur que ce soit autorisé d’ailleurs)
      pour ca il faut activer le compte root sur le Raspberry Pi car par défaut il est inactif
      cordialement
      François

      Répondre
  73. Philou10

    Bonjour, Je rencontre les mêmes problèmes que le message de ‘Schneider’ :
    Réseau de 2 sondes sur un raspberry pi 3b (1 à proximitée du rasp. l’autre à 15m) .
    Tout semble fonctionner pendant un laps de temps aléatoire (2 à 3 jours) puis perte des données. Le répertoire du 1wire contient des id de sondes farfelues qui changent sans arrêt.
    Alimentation 5V 3A sur rail DIN
    Montage avec une résistance de 3,3KOhm avec le 3,3V et l’alimentation sur le 5V (rasp.).
    Câble Téléphone SYT1 3 paires
    Je redémarre le raspberry et ça remarche jusqu’à la prochaine fois.
    L’utilisation de Domoticz ou Jeedom ne change rien.
    Merci d’avance
    Cordialement

    Répondre
  74. Youri

    Bonjour,

    Comme d’autres, j’ai cherché un petit moment pourquoi je n’arrivais pas à faire fonctionner mes sondes 18B20 sur mes framboises « récentes », alors que j’en ai depuis des années sur une framboise modèle B de la première génération qui fonctionnent très bien. Je suis naturellement revenu ici dans l’espoir de trouver ce que j’aurais pu oublier… en vain (bon, c’est vrai que je n’ai pas non plus lu tous les commentaires en détail, la réponse s’y trouve mais très difficile à localiser au milieu de tout le reste 😉 ).

    Je la remet ici, pour les éventuels lecteurs qui cherchent encore et qui auraient l’idée d’aller directement au dernier commentaire voir si par hasard la solution à leur problème s’y trouverait 😉

    Il suffit en fait d’ajouter une ligne dans le fichier /boot/config.txt (tout à la fin par exemple) :
    dtoverlay=w1-gpio

    ou
    dtoverlay=w1-gpio,gpiopin=x
    si on souhaite utiliser un autre GPIO que celui par défaut (GPIO 4 par défaut, sur la broche 7 du connecteur), en remplaçant ‘x’ par le GPIO qu’on veut utiliser évidemment. Je n’ai pas testé cette alternative personnellement.

    Et… euh, bah c’est tout en fait… C’est tout simple, mais si on ne le sait pas, ça ne s’invente pas… 😉

    @François MOCQ : Serait-il possible de mettre à jour l’article initial pour y mentionner cette modification à faire sur les framboises « récentes » ? Ça pourrait éviter à d’autres de perdre du temps à chercher cette info 😉

    Au passage, d’après les essais que je viens de faire, il semblerait que l’ajout des deux modules w1-gpio et w1-therm dans /etc/modules ne soit plus nécessaires du coup. Ça fonctionne bien chez moi en tout cas, sans avoir besoin de charger explicitement ces deux modules, mais je me garderai de toute généralisation hâtive…

    Répondre
      1. Youri

        Merci pour cette réponse rapide.

        Mais je ne trouve pas l’ajout dans l’article… Serait-ce mes vieux yeux (plus facile à écrire qu’à prononcer ! 😀 ) qui fatiguent ou y-aurait-il eu une fausse manip ? 😉

        Répondre
  75. Toine38

    Bonjour à tous,
    Je sollicite votre aide car mes dossiers dans /devices après installation de ma sonde ds18db20 rest vide, la commande cat w1_slave me dit qu’il n’existe pas de fihier de ce type…
    J’ai bien fait et vérifié les branchements ansi que le commandes requises mais les dossiers dans /devices commencent tons par00-00… ou 00-a00….
    enfin bref je suis perdu

    Pourriez-vous m’aider ?
    Merci d’avance !

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour
      Si 1-wire est validé dans les paramètres de Raspbian et que les branchements sont ok, ça peut venir de la sonde…
      Reverrifiez tout 2 fois. Si c’est un 18b20 format transistor en boitier plastique attention au sens de branchement. Je l’utilise avec des étudiants et dans chaque groupe il y en a 1 ou deux qui le branchent à l’envers…
      Si c’est une breadboard changez d’emplacement (faux contacts ?)

      Répondre
  76. Toine38

    Bonjour,
    et merci pour cette réponse rapide.
    J’ai malheureusement déja vérifié deux fois et cela ne change rien. J’ai lu qque part qu’il fallait ajuster la résistance suivant la longueur du fil . Les miens font dans les 10m, dois-je ajuster la résistance ?

    Répondre
    1. Youri

      Bonjour,
      Ajuster la résistance peut être nécessaire, selon la longueur et la qualité du câble, et selon le nombre de sondes connectées sur la même ligne.
      Cela dit, j’ai une framboise avec une sonde au bout d’un câble d’environ 10m aussi, avec deux autres sondes en parallèle beaucoup plus proches, et le tout fonctionne parfaitement avec la résistance de 4,7k.

      Avant d’envisager d’ajuster la résistance, il faudrait essayer de connecter la sonde à proximité immédiate de la framboise pour voir si ça fonctionne. Et essayer avec une autre sonde si possible, on n’est jamais complètement à l’abri d’une sonde HS…

      Répondre
  77. Victor

    Bonjour , en vue d’un projet de terminal j’ai pour bute de récupérer des données Thermique et je me suis muni d’une sonde ds18b20 . Débutant sur Raspberry suite à ce projet , je rencontre quelque difficulté et je n’arrive pas à avoir les numéro de la sonde … De plus le message de conflit ne s’affiche pas , je ne comprend pas …..

    Répondre
  78. Pierre

    Article intéressant. En poussant un peu plus loin j’ai récupéré la température en SNMP.
    Je vais utiliser une solution basée sur Raspberry Pi pour monitorer la température des salles serveur de notre groupe hospitalier et les afficher dans notre solution de supervision (Centreon) avec graphiques et alertes par mail en cas de dépassement de seuil.

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour Pierre
      Merci pour ce retour 😊
      Quand je bossais encore (je suis retraité depuis 2 ans) j’ai utilisé un pi 1 en surveillance de salle serveur pendant 3 ans non stop via une page web…
      Si vous voulez décrire votre appli sur framboise314 ce sera avec plaisir
      Ce n’est pas forcément une description technique, un article d’information serait suffisant
      Cordialement
      Francois

      Répondre
  79. Ping : Poller* des sondes de température DS18B20 en SNMP - Framboise 314, le Raspberry Pi à la sauce française....

  80. vavincavent

    Bonjour,
    J’ai unepetit programme python qui lit une sonde (ou plusieurs sondes) de température.
    J’ai mis en démarrage avec systemd afin qu’il s’active au démarrage du raspberry.
    Le problème, c’est qu’à ce moment là, il ne lit pas les sondes. si je redémarre le programme avec systemctl, ça fonctionne. Des idées pour m’aider?

    Le programme sondes.py :
    # Import des modules
    import RPi.GPIO as GPIO
    import time
    import glob, os
    import I2C_LCD_driver

    from datetime import datetime

    ecranlcd = I2C_LCD_driver.lcd()
    ecranlcd.lcd_clear()
    ecranlcd.backlight(0)
    time.sleep(3)

    # Initialisation de la numerotation et des E/S
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(12, GPIO.OUT, initial = GPIO.HIGH)

    # Adresses des sondes
    chemin = ‘/sys/bus/w1/devices/’
    x = datetime.now()
    timestamp=str(x.strftime(« %d%m%Y%H%M%S »))
    fichier=’/home/pi/SONDES/temperatures’+timestamp+’.csv’
    dirs = os.listdir(chemin)

    # This would print all the files and directories
    i=0
    chaine=’date’
    for file in dirs:
    if file.startswith(’28’):
    i=i+1
    a=’/sys/bus/w1/devices/’+file+’/w1_slave’
    exec(« sonde »+str(i)+ »=' »+a+ »‘ »)
    chaine=chaine+’;sonde’+str(i)
    chaine=chaine+’\n’
    with open(fichier, « a ») as out:
    out.write(chaine)

    # Fonction reset
    def reset():
    GPIO.output(12, GPIO.LOW)
    time.sleep(1)
    GPIO.output(12, GPIO.HIGH)

    # Fonction lecture des sondes
    def lecture():

    date = str(datetime.now())
    b= »
    #lecture / extraction de la temperature des sondes
    try:
    x = datetime.now()
    date=str(x.strftime(« %d-%m-%Y %H:%M:%S »))
    chaine=date
    ##print(date, end= »)
    j=1
    while j <= i:
    chaine=chaine+';'
    exec("mesure"+str(j)+"=str(float(open(sonde"+str(j)+").read().split()[-1][2:])/1000)")
    b=eval('mesure'+str(j))
    chaine=chaine+b
    j = j + 1

    ecranlcd.lcd_display_string("Time: %s" %time.strftime("%H:%M:%S"), 1)
    ecranlcd.lcd_display_string("Temp.: %s%sC" % (b, chr(223)), 2)
    time.sleep(5)
    ecranlcd.backlight(0)
    time.sleep(5)
    print(chaine)
    chaine=chaine+'\n'
    with open(fichier, "a") as out:
    out.write(chaine)

    except IOError:
    reset()

    while True :
    # Mesure
    lecture()

    #############################################

    La bibliothèque I2C_LCD_driver.py :

    # -*- coding: utf-8 -*-
    """
    Compiled, mashed and generally mutilated 2014-2015 by Denis Pleic
    Made available under GNU GENERAL PUBLIC LICENSE

    # Modified Python I2C library for Raspberry Pi
    # as found on http://www.recantha.co.uk/blog/?p=4849
    # Joined existing 'i2c_lib.py' and 'lcddriver.py' into a single library
    # added bits and pieces from various sources
    # By DenisFromHR (Denis Pleic)
    # 2015-02-10, ver 0.1

    """
    #
    #
    import smbus
    from time import *

    class i2c_device:
    def __init__(self, addr, port=1):
    self.addr = addr
    self.bus = smbus.SMBus(port)

    # Write a single command
    def write_cmd(self, cmd):
    self.bus.write_byte(self.addr, cmd)
    sleep(0.0001)

    # Write a command and argument
    def write_cmd_arg(self, cmd, data):
    self.bus.write_byte_data(self.addr, cmd, data)
    sleep(0.0001)

    # Write a block of data
    def write_block_data(self, cmd, data):
    self.bus.write_block_data(self.addr, cmd, data)
    sleep(0.0001)

    # Read a single byte
    def read(self):
    return self.bus.read_byte(self.addr)

    # Read
    def read_data(self, cmd):
    return self.bus.read_byte_data(self.addr, cmd)

    # Read a block of data
    def read_block_data(self, cmd):
    return self.bus.read_block_data(self.addr, cmd)

    # LCD Address
    ADDRESS = 0x27

    # commands
    LCD_CLEARDISPLAY = 0x01
    LCD_RETURNHOME = 0x02
    LCD_ENTRYMODESET = 0x04
    LCD_DISPLAYCONTROL = 0x08
    LCD_CURSORSHIFT = 0x10
    LCD_FUNCTIONSET = 0x20
    LCD_SETCGRAMADDR = 0x40
    LCD_SETDDRAMADDR = 0x80

    # flags for display entry mode
    LCD_ENTRYRIGHT = 0x00
    LCD_ENTRYLEFT = 0x02
    LCD_ENTRYSHIFTINCREMENT = 0x01
    LCD_ENTRYSHIFTDECREMENT = 0x00

    # flags for display on/off control
    LCD_DISPLAYON = 0x04
    LCD_DISPLAYOFF = 0x00
    LCD_CURSORON = 0x02
    LCD_CURSOROFF = 0x00
    LCD_BLINKON = 0x01
    LCD_BLINKOFF = 0x00

    # flags for display/cursor shift
    LCD_DISPLAYMOVE = 0x08
    LCD_CURSORMOVE = 0x00
    LCD_MOVERIGHT = 0x04
    LCD_MOVELEFT = 0x00

    # flags for function set
    LCD_8BITMODE = 0x10
    LCD_4BITMODE = 0x00
    LCD_2LINE = 0x08
    LCD_1LINE = 0x00
    LCD_5x10DOTS = 0x04
    LCD_5x8DOTS = 0x00

    # flags for backlight control
    LCD_BACKLIGHT = 0x08
    LCD_NOBACKLIGHT = 0x00

    En = 0b00000100 # Enable bit
    Rw = 0b00000010 # Read/Write bit
    Rs = 0b00000001 # Register select bit

    class lcd:
    #initializes objects and lcd
    def __init__(self):
    self.lcd_device = i2c_device(ADDRESS)

    self.lcd_write(0x03)
    self.lcd_write(0x03)
    self.lcd_write(0x03)
    self.lcd_write(0x02)

    self.lcd_write(LCD_FUNCTIONSET | LCD_2LINE | LCD_5x8DOTS | LCD_4BITMODE)
    self.lcd_write(LCD_DISPLAYCONTROL | LCD_DISPLAYON)
    self.lcd_write(LCD_CLEARDISPLAY)
    self.lcd_write(LCD_ENTRYMODESET | LCD_ENTRYLEFT)
    sleep(0.2)

    # clocks EN to latch command
    def lcd_strobe(self, data):
    self.lcd_device.write_cmd(data | En | LCD_BACKLIGHT)
    sleep(.0005)
    self.lcd_device.write_cmd(((data & ~En) | LCD_BACKLIGHT))
    sleep(.0001)

    def lcd_write_four_bits(self, data):
    self.lcd_device.write_cmd(data | LCD_BACKLIGHT)
    self.lcd_strobe(data)

    # write a command to lcd
    def lcd_write(self, cmd, mode=0):
    self.lcd_write_four_bits(mode | (cmd & 0xF0))
    self.lcd_write_four_bits(mode | ((cmd << 4) & 0xF0))

    # write a character to lcd (or character rom) 0x09: backlight | RS=DR<
    # works!
    def lcd_write_char(self, charvalue, mode=1):
    self.lcd_write_four_bits(mode | (charvalue & 0xF0))
    self.lcd_write_four_bits(mode | ((charvalue << 4) & 0xF0))

    # put string function
    def lcd_display_string(self, string, line):
    if line == 1:
    self.lcd_write(0x80)
    if line == 2:
    self.lcd_write(0xC0)
    if line == 3:
    self.lcd_write(0x94)
    if line == 4:
    self.lcd_write(0xD4)

    for char in string:
    self.lcd_write(ord(char), Rs)

    # clear lcd and set to home
    def lcd_clear(self):
    self.lcd_write(LCD_CLEARDISPLAY)
    self.lcd_write(LCD_RETURNHOME)

    # define backlight on/off (lcd.backlight(1); off= lcd.backlight(0)
    def backlight(self, state): # for state, 1 = on, 0 = off
    if state == 1:
    self.lcd_device.write_cmd(LCD_BACKLIGHT)
    elif state == 0:
    self.lcd_device.write_cmd(LCD_NOBACKLIGHT)

    # add custom characters (0 – 7)
    def lcd_load_custom_chars(self, fontdata):
    self.lcd_write(0x40);
    for char in fontdata:
    for line in char:
    self.lcd_write_char(line)

    # define precise positioning (addition from the forum)
    def lcd_display_string_pos(self, string, line, pos):
    if line == 1:
    pos_new = pos
    elif line == 2:
    pos_new = 0x40 + pos
    elif line == 3:
    pos_new = 0x14 + pos
    elif line == 4:
    pos_new = 0x54 + pos

    self.lcd_write(0x80 + pos_new)

    for char in string:
    self.lcd_write(ord(char), Rs)

    #######################################""

    Mon fichier sondes.service :

    [Unit]
    Description=lecture des sondes
    After=multi-user.target

    [Service]
    User=pi
    Type=idle
    WorkingDirectory=/home/pi/SONDES
    ExecStart=/usr/bin/python3 sondes.py

    [Install]
    WantedBy=multi-user.target

    Répondre
    1. vavincavent

      Le programme sondes.py est fait pour lister toutes les sondes présentes et enregistrer les mesures dans un fichier csv daté.
      Il affiche également sur un écran LCD 2 lignes la date et la température de la première sonde détectée.

      Répondre
  81. Sébastien

    Bonjour,

    Je viens d’associer une sonde dallas ds18b20 à un module FGBS-222 Fibaro, dans Jeedom la température reste fixe à 28,3°C.
    Pour tester j’ai mis la sonde dans un verre d’eau du robinet.

    Je ne compprends pas.
    Câblage actuel verifié sur les forums :
    bleu module avec noir sonde
    – blanc module avec jaune sonde
    – maron module avec rouge sonde

    merci de votre aide.

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour Sébastien
      peut être qu’un lecteur pourra vous aider
      on n’est plus vraiment sur un problème de Raspberry Pi avec Jeedom et le FGBS-222
      votre sonde DS18B20 semble correctement connectée…

      questions :
      Avez vous testé la sonde DS18B20 directement sur le GPIO du Raspberry Pi (avec une résistance de 4K7)? => pour vérifier qu’elle fonctionne
      Avez vous vérifié qu’il y a du 3,3v entre SP (marron) et GND (bleu)
      est ce que la sonde de température intégrée fonctionne ?
      est ce que l’entrée tout ou rien fonctionne avec un bouton poussoir ?
      Le module est correctement identifié dans Jeedom ?

      Répondre
  82. Sébastien

    Bonjour François,
    J’ai vérifié le câblage chez une autre personne ayant le même montage (OK). Par contre la tension s’affiche (alors que la mienne reste à Zéro).
    Mes connections actuelles sont avec des dominos traditionnelles et (non des bonbons genre telecom connexion). Y a t’il un moyen de tester le module Fibaro en lui même ? D’aprés le fabricant de la sonde je devrais avoir entre 3.5v et 5v CC entre les fils noir et rouge (or ‘ai que c’est 3,3V).

    Je n’ai pas installé des résistance 4,7 K (montage brouillon au plus prês de la box avant montage final).
    Je ne remonte pas de température intégrée (uniquement celle de la sonde présente dans les paramètres).
    est ce que l’entrée tout ou rien fonctionne avec un bouton poussoir ? Je ne comprends pas la question.
    Le module est correctement identifié dans Jeedom ? -> Oui ainsi que dans le maillage.

    merci

    Répondre
  83. François MOCQ Auteur de l’article

    Bonjour Sébastien
    je ne connais pas le Fibaro et je ne pourrai pas vous aider sur le test
    si vous connaissez quelqu un qui a le même montage il faudrait essayer de remplacer son FGBS par le votre si c’est possible
    les dominos vont très bien, même si c’est moins esthétique mais électriquement c’est pareil 🙂
    fibaro FGBS 222
    Pour moi le 3,3v qui part vers la sonde DS18B20 sort sur les fils SP et GND
    sur le P (rouge) c’est vous qui devez fournir l’alim du module (9v à 30v)
    enfin d’après le schéma le fil noir est l’antenne… il ne doit pas y avoir de tension dessus…
    Enfin quand je parlais de faire un test avec une résistance de 4K7 c’est en branchant DIRECTEMENT la sonde DS18B20 sur le GPIO du Raspberry Pi image ci-dessous) et pas sur le Fibaro (il doit déjà y avoir une résistance incorporée dans le FGBS)
    Sonde de température DS18B20 sur GPIO du Raspberry Pi
    tenez moi au courant
    bonne fin d’année
    François

    Répondre
  84. Toinou38

    Bonjour François, et encore merci pour ce tuto d’une grande clarté et aide !
    J’ai un problème avec mes sondes ds18b20. J’en ai 3, deux pour la température dans ma maison et la troisième pour la température dans le chauffe-eau. La distance de cablâge entre le raspberry et les trois sondes et pratiquement la même. Mais Domoticz refuse catégoriquement de reconnaître cette troisième sonde. J’ai vérifié et revérifié le câblage, j’ai changé la sonde, j’ai vérifié son alim qui est bonne, j’ai la même ddp entre l’alim et le port data sur les trois sondes mais pas moyen de voir la troisième du chauffe-eau. Le fichier \etc\bus\w1devices ne me montre que les deux sondes pour la maison mais pas la troisième. Je ne sais plus trop quoi faire, aurais-tu un conseil à me donner pour résoudre ce problème ?
    Merci d’avance
    Antoine

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour Antoine
      Non… vu tout ce que tu as fait je ne vois pas
      A part revenir a la base et tester la sonde Seule sur une raspbian en bash, cablee au plus court puis l eloigner et la tester en situation. Si cette manip fonctionne ca elimine la sonde et le cablage sont bons… reste le pi (?) La connectique et… domotics
      Les 3 sondes envoient leurs data sur la même patte du pi ?
      Cdt francois

      Répondre
  85. Toinou38

    OK merci François je vais essayer ça, et oui les trois sondes envoient leurs données sur la même patte du pi. Je devrais peut-être essayer d’envoyer la sonde du chauffe-eau sur une autre patte ?

    Répondre
  86. Toinou38

    re-bonjour François,
    Hé bien j’ai enfin fini par trouver une solution à ce problème de sonde qui refusait d’apparaître ! Hé en plus, comme bien souvent en science, c’est dû à un concours de circonstances tout autre 🙂
    Depuis quelques jours mes sondes de température dans Domoticz étaient à zéro, sans raison aucune. A force de chercher sans trouver de solution j’ai fini par les supprimer puis les re-créer et là miracle ! la sonde du chauffe-eau est apparue comme par enchantement… Problème résolu !
    Les mystères de l’informatique…
    En tout cas merci encore pour ton tuto et tes réponses et bonne continuation à toi !
    Antoine

    Répondre
  87. Toinou38

    Re-bonjour François

    Je t’écris de nouveau car de nouveau il y a un problème avec mes sondes de température dans domoticz. Depuis quelques semaines tout allait bien et d’un coup les trois sondes s’affichent en rouge et les valeurs sont ne correspondent plus. Étant donné que mes sondes sont montées en étoile à partir du raspberry pi je me demande si il n’y aurait pas un pb d’impédance ou de réflexion de signal dans les différentes branches qui ferait buger le pi.
    aurais-tu une idée du problème et surtout de la solution à y apporter ?
    Merci d’avance !
    Antoine

    Répondre
  88. Remi

    Bonjour!

    En début d’article vous parlez d’ajustement de la résistance en fonction de la longueur du câble !
    Je rencontre actuellement ce problème. Savez vous comment calculer la valeur de la résistance ?

    Cordialement

    Merci

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour
      essayez de la diminuer 3K3 par exemple, 2K7…
      il n’y a pas de calcul à proprement parler on sait que le DS18B20 peut fonctionner entre 3 et 5v après ça dépend du câble
      regardez https://thecavepearlproject.org/2015/03/01/using-ds18b20-sensors-to-make-a-diy-thermistor-string-pt-1-the-build/
      et https://www.raspberrypi.org/forums/viewtopic.php?t=36163 si ça peut vous aider
      pour avoir de la distance il faut du « bon » câble (cable réseau c’est mieux)
      et câbler en ligne pas en étoile…
      bonne journée
      cdt
      françois

      Répondre
  89. chaney4

    Bonjour,
    J’ai un système domotique qui gère ma pompe a chaleur et le chauffe eau.
    J’ai mis 7 capteur DS18B20 qui fonctionnent depuis plusieurs mois (départ Géothermie; retour géothermie; départ plancher chauffant; retour plancher chauffant; temp eau chauffe eau; temp sejour et temp cave a vin)
    Je voudrais ajouter une sonde extérieure et une dans le puis géothermique mais au 8eme capteur ca plante, T° a 0 pour tous les autres et il disparaissent aléatoirement.
    J’ai un branchement étoile avec des fils d’environ 2 à 4m par sonde mais l’étoile démarre à 4m du Raspberry.
    Alimentation provient du RPI 3.3V et capteurs en mode standard
    J’ai tester avec une seconde 4k7 en // a la 1ere mais c’est pareil.
    Faut-il :
    -> Placer la résistance a la base de l’étoile plutot que vers le PI ?
    -> Placer une alim 3.3V au niveau du centre de l’étoile et s’affranchir de l’alim du PI ?
    -> Autre ?

    Merci

    Répondre
    1. José

      Bonjour,

      J’ai un montage assez similaire au vôtre. Par contre, j’utilise une alimentation extérieure de 5v autre que celle du PI. La position de la résistance importe peu.
      Dans le cas de l’ajout d’une seconde alimentation pensez bien a interconnecter les 0v entre eux.

      Répondre
  90. chaney4

    Merci José pour la réponse,

    Je vais placer un régulateur LF33 prenant sa source sur mon alimentation DIN Domotique 12V pour tester.
    Je préfère commencer à 3.3V puis monter progressivement en cas de non fonctionnement afin d’éviter d’injecter du 5V sur l’entrée RPI non prévue pour cela.
    Je pense placer le régulateur au centre de l’étoile de capteur afin de limiter le pertes.

    Cordialement

    Répondre
    1. José

      Je vous souhaite de trouver les bons paramètres. Il se pourrait aussi qu’un des nouveaux capteurs soit défaillant et vienne perturber l’ancien montage.

      Pour ma part, j’ai modifié mon montage. Les DS18B20 sont connectées à un ESP8266 (avec esp easy). Les transmissions à mon serveur domotique se font via MQTT.

      Bon courage pour la suite. 🙂

      Répondre
  91. Ping : Chauffage solaire avec Raspberry Pi – NervTech's Blog

  92. richard

    bonjour à toutes et tous ,

    je ne peut pas exécuter le script principal ,mon raspberry m’indique quasiment à chaque ligne qu’il y a des erreurs de syntaxe.

    sur un rpi4 avec toutes les MAJ faites.

    y a t-il des modifications à faire pour le mettre à jour lui aussi ?

     

    merci pour votre aide.

     

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour
      L article date de 2014…
      Mettez une copie d ecran (en texte) on ne peut pas deviner ce qui arrive juste avec :
      ”mon raspberry m’indique quasiment à chaque ligne qu’il y a des erreurs de syntaxe”
      On n’à pas d’infos sur ce que vous tapez ni sur les erreurs…
      Cdt
      Francois

      Répondre
      1. richard

        bonsoir François,
        j’ai fait un copié collé du script présenté en début de l’article dans le bloc note , puis enregistré le fichier en .py et je l’ai transféré de mon pc vers le raspberry.
        lorsque je veux l’exécuter sur le rpi , il ne se se lance pas , aussi j’ai tente de voir ou cela bug.

        j’ai fait une copie d’écran , mais je n’arrive pas à la joindre au message

        merci.

        Répondre
  93. richard

    Bonjour François,

    donc ci-dessous un des messages d’erreur lorsque je fait un run du script proposé en début de post dans Thonny.

     

    Python 3.7.3 (/usr/bin/python3)
    >>> %Run EXEMPLE2.py
    Traceback (most recent call last):
      File « /var/opt/codesys/EXEMPLE2.py », line 5
        FILES=ls /sys/bus/w1/devices/w1_bus_master1/ | grep '^28'
                      ^
    SyntaxError: invalid syntax
    >>>

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour
      je n’ai pas trop le temps de me remettre sur cet article pour le moment
      mais il date de 2014 !
      Je pense qu à l’époque le python par défaut était Python 2
      Le python embarqué dans Thonny est le Python 3
      pourriez vous essayer de lancer ce fichier exemple avec python 2 SVP
      cdt
      françois

      Répondre
      1. richard

        ok merci , je vais essayer cela .

        sinon y a t il un script actuel qui prendrais en compte la commande « trigger » vers « therm_bulk_read » pour une commande de conversion simultanée des sondes ?

        merci François.

        Répondre
        1. François MOCQ Auteur de l’article

          Bonjour
          désolé mais là ce n’est plus trop du Raspberry Pi mais du Linux
          comprenez qu’avec les dizaines de milliers de programmes qui existent ce n’est pas possible de tout connaitre.
          Essayez de poser la question sur le forum vous trouverez peut être quelqu un qui a approfondi le problème
          cdt
          françois

          Répondre
  94. Alain CASENAVE

    Bonjour François,

    Je  suis confronté à un problème sérieux avec mes capteurs DS18B20 montés sur un RPI 0W qui me servent à faire des relevés de  température de cuisson par WIFI.

    En effet, lorsque le récipient se trouve sur un feu gaz, pas de soucis, mais lorsqu’il se trouve sur une plaque à induction, la température tombe à 0°.

    Avez-vous déjà rencontré ce phénomène et y aurait-il une solution pour que ce capteur ne soit pas sensible à ce type de perturbations ?

    Merci pour votre aide.

    Alain.

    Répondre
  95. Alain CASENAVE

    Je me réponds à moi-même pour une solution de dépannage…

    J’ai relié la partie métallique du capteur à la terre, ce qui a eu pour effet la reprise de la communication mais je serais preneur d’une solution « plus électronique » si c’était possible…

    Répondre
    1. François MOCQ Auteur de l’article

      Merci Alain
      j’ai cherché un peu mais sans trouver de solution
      les fréquences de l’induction sont basses et se propagent facilement
      J’allais vous proposer de mettre le Pi en boîtier métallique relié à la terre
      pour créer une cage de Faraday, et d’utiliser un câble blindé (avec tresse à la terre) entre les GPIO et le DS18B20
      Je ne vois pas de solution « électronique » autre contre ce genre d’interférences. ce n’est pas dû au Raspberry Pi mais bien aux fils qui servent d’antenne et ramènent les parasites vers le Pi. Ca vaut aussi pour l’alim…
      cdt
      françosi

      Répondre
  96. Alain CASENAVE

    Bonjour François,

    Merci pour ces explications.

    Le capteur est situé à l’intérieur d’un tube inox, le tout est plongé dans le récipient. Vous parlez d’effet d’antenne, le phénomène ne serait-il pas accentué par la matière du tube ?

    Alain.

     

     

    Répondre
  97. François MOCQ Auteur de l’article

    bonjour Alain
    en fait TOUT élément métallique est une antenne. C’est le cas du fil qui va du GPIO au DS18B20, du tube de protection etc.
    Le seul moyen de supprimer le phénomène est de mettre à la masse, de blinder, d’éviter les boucles de masse etc…
    Pour un ancien électronicien qui a travaillé sur les amplis BF, les émetteurs récepteurs VHF et UHF embarqués, les installations industrielles… c’est du vécu
    Mais ces notions sont inconnues des « informaticiens » qui raisonnent en 1 et 0 pour qui ces phénomènes sont des mystères…
    cdt
    françois

    Répondre
  98. Antoine

    Bonjour François,

    Je cherche un script java qui permettrait de lire les données des sondes et de les stocker quelque part pour les publier sous forme de graphique. J’ai cherché un peu mais je n’ai rien trouvé.

    Saurais-tu où je pourrais trouver cela ? Ou bien peut-être connait-tu déjà un script qui fonctionne ?

    Merci d’avance pour ta réponse.

    Antoine

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour Antoine
      non, sur le pi on travaille quand même majoritairement en Python
      on trouve des ref. là dessus :
      https://www.hackster.io/weargenius/ds18b20-sensor-interfacing-with-raspberry-pi-using-java-e64893
      https://www.google.com/search?q=DS18B20+Java+&client=firefox-b-d&sxsrf=ALiCzsZIscgwvRH_BfABLDI85LiBNVE4DA%3A1658472428418&ei=7EfaYoaTGYi6a6nulcgG&ved=0ahUKEwiGudyf84v5AhUI3RoKHSl3BWkQ4dUDCA0&uact=5&oq=DS18B20+Java+&gs_lcp=Cgdnd3Mtd2l6EAMyBggAEB4QFjIGCAAQHhAWOgcIABBHELADSgQIQRgASgQIRhgAULYGWLYGYJAIaAFwAXgAgAFWiAFWkgEBMZgBAKABAcgBBcABAQ&sclient=gws-wiz
      cdt
      François

      Répondre
      1. Antoine Lachaize

        Re-bonjour François.

        J’ai finalement utilisé python pour lire et enregistrer les données de mes sondes (c’est plus simple que le java…).

        J’ai pourtant un problème récurrent avec le code. J’ai cherché sur le net des scripts pour lire et enregistrer les données des sondes ds18b20 et ils fonctionnent tous plus ou moins de la même manière. Pourtant mon code plante sans cesse avec le même message d’erreur :

        IndexError: list index out of range

        L’erreur vient de la ligne de code qui vérifie que la sonde fonctionne et envoie des données (le code vérifie que la première ligne du fichier w1_slave contient bien « YES ») : while lines[0].strip()[-3:] != ‘YES’:

        Et quoi que je fasse, ça plante non-stop. Si je supprime cette ligne, alors c’est la ligne qui récupère la valeur de température qui plante avec la même erreur :

        donnees_temperature = lines[1].split( » « )[9]

        J’ai essayé de récupérer la valeur et de vérifier la présence du « YES » d’une autre façon : fonctionnement_sonde = lines[0].split( » « )[11] (j’utilise la fonction split au lieu de la fonction strip) ça plante toujours…

        J’ai essayé de rajouter une vérification supplémentaire en vérifiant d’abord que le fichier w1_slave contient des données. SIinon alors le programme attend 5s et ré-ouvre le fichier. Mais ça plante toujours…

        J’avoue que je ne sais pas trop quoi faire… Utilises-tu aussi un script python ? Si oui as-tu ce genre d’erreur ? Aurais-tu par bonheur une solution à ce problème ?

        Merci d’avance

         

        Antoine

         

         

        Répondre
        1. François MOCQ Auteur de l’article

          Bonjour Antoine
          oui j utilise Python
          l erreur semble venir de l’index de la liste
          il faudrait « simplifier » le programme et ne garder que la partie en cause et faire qques tests pour trouver d ou vient l erreur
          cdt
          francois

          Répondre
  99. Ping : Le protocole et le bus 1wire - So-Domotic.fr

  100. Louis Forget

    J’ai 3 sondes DS80B20,  je réussi à les faire fonctionner mais sans raison apparente après un certain temps elles ne sont plus là.

    Quand tout va bien j’obtient

    pi@raspberrypi:/ $ ls /sys/bus/w1/devices
    28-0300a2791729 28-0300a279d8aa 28-0300a279f395 w1_bus_master1

    Mais soudainement, mon programme arrête car j’essaie de lire des sondes qui ne sont plus là.

    pi@raspberrypi:/ $ ls /sys/bus/w1/devices

    j’ai rien.

    Pour fonctionner à nouveau, je dois éteindre le raspberry et le repartir.  la commande REBOOT ne remet pas les sondes disponible.  Dans le meilleur des cas, j’ai eu 2 mois sans interuption, le pire des cas, quelques minutes

     

     

     

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour le probleme semble récurrent
      https://forums.raspberrypi.com/viewtopic.php?t=164059
      https://forums.raspberrypi.com/viewtopic.php?t=25154
      les remontées portent sur la qualité du câble, la longueur (réduire le plus possible la longueur)
      il semble qu’une solution soit de piloter l’alimentation des sondes par un GPIO (via un relais?)
      et de couper l’alim un moment (1 minute) avant de la rétablir pour retrouver les sondes dans le système…
      Ce serait à tester
      – Alimenter les sondes
      – Tester la présence des sondes
      Si elles sont présentes lire la valeur
      Si elles sont absentes couper l’alim des sondes un moment
      Vérifier qu’elles sont reconnues à nouveau
      Lire la valeur

      vous me direz ce que vous en pensez
      cdt
      francois

      Répondre
      1. Louis Forget

        Merci pour la solution, elle marche, pas besoin d’attendre une minute. cependant il faut couper la mise à terre (ground),  si on coupe seulement le 3.3 volt, ça ne marche pas.

        Pour la cause du problème, dans mon cas je ne pense pas que ce soit la longueur des fils (4 mètres calibre 22).  J’ai eu 2 mois de fonctionnement sans problème, 2 millions de lectures de chaque sonde.

        Encore une fois merci.

         

         

        Répondre
  101. Heyberger

    Bonjour,

    Très bon article, merci. Je souhaiterais savoir si ave le même framboise ont arrive à lire les infos des sondes et faire tourner un home assistant? Merci d’avance.

    Répondre
      1. Heyberger

         

         

        Bonsoir,
        Merci pour cette info qui me rassure.
        Je vais essayé de trouver un article ou tuto qui m’explique comment faire l’installation.

        Répondre
  102. dorjey

    bonjour à tous,

    je viens de mettre à jour Domoticz avec la dernière version, qui n’affiche plus les température de mon  DS18B20 (pourtant, il s’affiche dans les logs). Une idée ?

    Répondre
  103. Christophe

    Bonjour François,

    Article très utile pour tester un vieux capteur DS que j’avais en stock et que j’utiliserai pour remonter la température de la piscine.

    Pour info, lors de mes tests sur un RPi Zero avec Bullseye Lite, j’ai également trouvé un fichier « temperature » (au même niveau que w1_slave) qui donne directement la température en numérique:

    $ pwd
    /sys/bus/w1/devices/28-8000001e9a68
    $ cat w1_slave
    9d 01 ff ff 7f ff ff ff 4c : crc=4c YES
    9d 01 ff ff 7f ff ff ff 4c t=25812
    $ cat temperature
    25812
    $

    Christophe

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.