Deprecated: Function get_magic_quotes_gpc() is deprecated in /home/sandre/domip/MediaWiki/includes/WebRequest.php on line 308

Warning: count(): Parameter must be an array or an object that implements Countable in /home/sandre/domip/MediaWiki/includes/api/ApiQueryBase.php on line 188

Warning: count(): Parameter must be an array or an object that implements Countable in /home/sandre/domip/MediaWiki/includes/api/ApiQueryBase.php on line 188

Warning: count(): Parameter must be an array or an object that implements Countable in /home/sandre/domip/MediaWiki/includes/api/ApiQueryAllPages.php on line 127
MediaWiki API Result
You are looking at the HTML representation of the XML format.
HTML is good for debugging, but is unsuitable for application use.
Specify the format parameter to change the output format.
To see the non HTML representation of the XML format, set format=xml.
See the complete documentation, or API help for more information.
<?xml version="1.0"?>
<api>
  <query-continue>
    <allpages gapcontinue="Test" />
  </query-continue>
  <query>
    <pages>
      <page pageid="3" ns="0" title="Réalisation d&#039;un capteur de niveau d&#039;eau pour un puits">
        <revisions>
          <rev contentformat="text/x-wiki" contentmodel="wikitext" xml:space="preserve">L'objectif est de pouvoir mesurer régulièrement le niveau d'eau dans un puits pour suivre son évolution, et à terme de pouvoir le faire de façon automatique. La solution initiale était d'utiliser un double décamètre auquel était suspendu un poids. Cela devient vite contraignant si l'on souhaite faire une mesure par jour. L'utilisation d'un capteur installé de façon permanente s'impose donc rapidement. Je suis donc parti à la recherche d'un capteur qui permettrait de convertir le niveau d'eau en signal électrique.
J'ai envisagé :
# un capteur à ultrason qui mesurerait la distance entre le haut du puits et la surface de l'eau. je n'ai rien trouvé de simple, peu couteux et facile à mettre en Œuvre.
# des capteurs de conductivité à installer sur toute la hauteur du puits : cela risque d'être sensible, à l'humidité ambiante, aux dépots sur la sonde, à l'oxydation des contacts et de ne pas être fiable dans le temps.
# une mesure par un capteur de pression placé dans le fond du puits : cette solution semble prometteuse puisqu'on trouve déjà des capteurs industriels prêts à poser (pour plusieurs centaines d'euros) mais aussi de nombreux composants électroniques permettant de mesurer une pression.

Après quelques recherche j'ai identifié un capteur de pression de chez Freescale (ex Motorola) qui s'appelle maintenant NXP portant la référence MPX4250A. Vous pouvez consulter sa [http://www.nxp.com/assets/documents/data/en/data-sheets/MPX4250A.pdf datasheet]

Ses avantages sont :
* mesure d'une pression absolue (avoir une référence de pression au fond du puits est délicat)
* une alimentation 5V suffit
* gamme de pression de 0 à 2,5 bar. une fois enlevée la pression atmosphérique ( 1,013 bar en moyenne) il reste une plage d'environ 1,5 bar soit une plage de mesure de hauteur d'eau d'environ 15 m

[[Fichier:MPX4250.jpg|thumb|center|alt=Photo du capteur]]
== Mise en oeuvre ==
Le capteur est destiné à être placé au fond du puits, en étant soumis à la pression de l'eau. Il faut cependant éviter que les contacts électriques soient au contact de l'eau et aussi la membrane de mesure de pression.

Afin d'avoir un capteur aussi petit que possible, il faut commencer par couper ses &quot;oreilles&quot; de fixation.

Ensuite on utilise un câble de 20 m 4 conducteurs que l'on soude sur les broches du capteurs. 2 fils sont utilisés pour l'alimentation 0V (broche 2),  +5V (broche 3), les 2 autres pour la mesure 0V (broche2) et Vout (broche 1). L'intérêt d'avoir deux fils de masse un pour l'alimentation l'autre pour la mesure est de diminuer le niveau des parasites ainsi que les effets de la résistance du câble et de de la consommation du capteur. Les autres broches sont inutilisées et laissées en l'air. On en profite pour souder des capacités de découplage comme indiqué dans la [http://www.nxp.com/assets/documents/data/en/data-sheets/MPX4250A.pdf datasheet]. On obtient quelque chose qui ressemble à la photo ci-joint. Notez le petit tuyeau (style tuyeau d'aquarium) connecté sur la prise de pression. Il est conseillé de vérifier que le capteur fonctionne à ce stade, car après l'étape suivante il sera trop tard. Alimenté en 5 V, la tension de sortie doit être d'environ 2 V à la pression atmosphérique courante. 
[[Fichier:MPX4250_2.JPG|thumb|center|alt=Capteur soudé]]

Ensuite nous allons placer le tout dans un tube PVC de diamêtre interne 14mm et noyer le circuit dans de la colle epoxy. Il est conseillé d'utiliser de l'epoxy lente avec un temps de prise de plusieurs heures et de vérifier l'absence de poche d'air dans le tube PVC lors du remplissage. On obtient alors un ensemble ci-dessous. On note sur la photo la présence de la feuille de plastique pour boucher temporairement le fond du tube ainsi que le tuyeau servant de prise de pression.
[[Fichier:MPX4250_3.JPG|thumb|center|alt=Capteur moulé]]

Le capteur est maintenant isolé de l'eau, sauf en ce qui concerne la prise de pression. Pour cela il faut utiliser un autre liquide qui serve d'interface et dans lequel aucun microorganisme ne risque de se développer. L'idée est d'utiliser de l'huile alimentaire (afin que le puits ne soit pas polluée en cas de fuite) dans un flacon. Afin d'être sur que la pression de l'huile soit égale à la pression extérieur, il faut choisir un flacon en plastique souple déformable. Un flacon de savon liquide pour se laver les mains fait parfaitement l'affaire : sa forme parallélépipédique lui permet se déformer ce qui ne serait pas le cas d'un flacon cylindrique. Il ne faut pas utiliser de flacon cylindrique, sa forme l'empêcherait de se déformer sous la pression. Avant de le remplir d'huile on coule dedans du mortier sur environ 25% de son volume afin qu'il coule dans l'eau.
[[Fichier:MPX4250_4.JPG|thumb|center|alt=Bouteille avec mortier et huile]]

Il faut maintenant fermer la bouteille en plaçant le capteur dans le goulot et en noyant le tout dans de la colle époxy moulé dans un tube de PVC de 40 mm. C'est l'opération la plus délicate car il faut veiller à ce qu'aucune déformation ne s'exerce sur la bouteille pendant la prise de la colle : cela introduirait une erreur de mesure lorsque la pression ambiante est faible (ie proche de la pression atmosphérique).
[[Fichier:MPX4250_5.JPG|thumb|center|alt=Bouteille avec capteur]]

Voila c'est terminé, quelques &quot;Serflex&quot; bien placés aideront peut être à remonter tous les morceaux en cas de défaillance de la colle.
[[Fichier:MPX4250_6.JPG|thumb|center|alt=Capteur complet]]

== Étalonnage ==
=== Théorie ===
D'après la [http://www.nxp.com/assets/documents/data/en/data-sheets/MPX4250A.pdf datasheet] il est que :VOUT = Vs* (0.004 x P-0.04) ± Error avec P en kPa et Error variant entre -5 et +5 kPa .

Souhaitant exprimer P en Pa (Rappel : 1 millibar = 1 hecto Pascal = 100 Pa), en mettant le coeff 0.004 en facteur la formule devient :
&lt;center&gt;Vout=Vsx0.004x(P-10000+Offset)/1000&lt;/center&gt; 
avec Vs = 5V, P la pression à laquelle est soumise le capteur en Pascal, et l'Offset du Capteur compris entre - et + 5000 Pa.

D'autre part on sait aussi que :
&lt;center&gt;P=Pqfe+hρg&lt;/center&gt;
ou Pqfe est la pression atmosphérique en pascal, h la hauteur d'eau, ρ la masse volumique de l'eau (1000 kg/m3) et g l'accélération de la pesanteur (9.81 m/s2)
On a aussi :
&lt;center&gt;Pqfe=Pqnh-Alt*11,7&lt;/center&gt;
ou Pqnh est la pression au niveau de la mer (101325 Pa en moyenne) et Alt l'altitude du lieu en mètres.



On obtient donc :

&lt;center&gt;h=( (Vout*1000)/(Vs*0.004) +10000-Offset)/ρg + (-Pqnh+11,7xAlt)/ρg&lt;/center&gt;

On peut supposer que Pqnh=constante=101325 Pa . Vu les variations de cette valeur dues à la météo (±2000 Pa), cela revient à faire une erreur de mesure sur la hauteur d'eau de ±2000/ρg=±2000/(9.81*1000)=±20 cm .

=== Pratique ===

D'après le paragraphe précédent avec Vs = 5V, ρ=1000 kg/m3 et g= 9,81 m/s2 on obtient :

&lt;center&gt;h=(50000*Vout +10000)/9810 - k avec h en  mètres et Vout en Volt&lt;/center&gt;

Il suffit donc de faire quelques mesures pour déterminer k. Dans mon cas particulier (altitude de 166 m) j'ai mesuré k=10,33 m qui est la valeur théorique au niveau de la mer. Cela signifie que l'offset du capteur est compensé par l'altitude du lieu (166 m).

== Affichage des données ==

On peut utiliser l'outil de son choix pour afficher la hauteur. Personnellement, j'ai utilisé la carte  [[Carte d'Acquisition Web]] décrite sur ce site pour enregistrer les données.

On peut ensuite les afficher à l'aide de scripts php assez simples et de la librairie JPGraph.

[[Fichier:puits.png]]</rev>
        </revisions>
      </page>
      <page pageid="35" ns="0" title="Réalisation d&#039;une Interface Web pour une chaudière De Dietrich équipée d&#039;une régulation Diematic 3">
        <revisions>
          <rev contentformat="text/x-wiki" contentmodel="wikitext" xml:space="preserve">


----
'''Cette page est maintenant obsolète. Une version plus récente est disponible ici: [[https://github.com/Benoit3/Diematic]]'''
----


L'objectif est de pouvoir commander les fonctions générales de la chaudière à l'aide d'un téléphone mobile.

Pour rappel, la régulation Diematic 3 a un tableau de commande de ce style :

[[Fichier:DiematicRegul.png]]

J'utilise également une commande à distance comme celle-ci :

[[Fichier:DiematicCdA.png]]


Je précise à toutes fins utiles que si vous entreprenez cette réalisation, vous considérez que vous êtes suffisamment compétent pour maîtriser ce que vous faites, vous le réalisez sous votre entière responsabilité et que je ne peux être inquiété en cas de dommages quelconques.
 
== Architecture ==
=== Description de l'interface ModBus ===
La régulation Diematic est équipée d'une interface ModBus qui permet de lire et modifier les mesures et paramètres.

On trouve peu de documentation sur les spécifications de l'implémentation ModBus par De Dietrich. Les documents utilisés pour cette réalisation peuvent être trouvés en faisant une recherche sur les mots clés &quot;diematic modbus tcp&quot;.

Le protocole ModBus est basé sur la transmission d'information sur un bus série.  L'implémentation sur la régulation Diematic 3 est faite de la façon suivante :
* utilisation en mode RTU, avec un Bus RS485
* transmission à 9600 baud, avec 8 bits, sans parité, 1 bit de stop
* l'adresse par défaut de la chaudière est 0x0A (en hexadécimal)

Une particularité de l'implémentation De Dietrich est le fontionnement en mode bi-maître :
* le système semble prévu pour fonctionner avec seulement deux noeuds sur le bus
* la chaudière émet des informations pendant 5 secondes puis reste silencieuse pendant les 5 secondes suivantes. C'est pendant cette seconde période qu'il est possible de lire écrire dans les registres de la régulation.

Cette particularité va avoir un impact sur le fonctionnement de notre interface : même s'il est possible d'imaginer un système qui interroge en permanence la chaudière pour être capable de fournir instantanément ses paramètres de fonctionnement, la modification d'un de ces paramètres pourra nécessiter au moins 5 secondes auxquelles s'ajouteront le temps nécessaire aux traitements de l'interface web, transmission réseau,  etc : une estimation totale de 10 secondes semble raisonnable.

===Solution ===
Mes 2 critères principaux pour la définition de la solution étaient :
*ne pas y passer trop de temps
*que le budget reste raisonnable
Sachant que je n'étais pas sur d'arriver à un résultat fonctionnel.

J'ai donc choisi d'utiliser les éléments suivants :
* une carte d'interface USR-TCP-232-24  dont on trouve les caractéristiques sur le site d'USR IOT. Elle n'est plus disponible, mais de nouvelles versions l'ont remplacé. Il faut choisir un convertisseur ethernet/rs485 [http://www.usriot.com/products/serial-ethernet-converter/ ici]. Il faut y ajouter une alimentation 5V continu. Cette carte sera connectée sur mon réseau local d'un côté et sur le port ModBus de la chaudière de l'autre.  Il existe aussi des versions WIFI si besoin.
* mon NAS (serveur de stockage en réseau), déjà en place, qui contient déjà un serveur Apache accompagné d'un module Php. Il peut surement être remplacé par une carte Rasperry avec les mêmes serveurs Apache et Php.
* des scripts Php qui envoient les commandes utilisateurs à la chaudière, récupèrent son statut et l'affichent à l'utilisateur. La réalisation de ces script constitue la principale activité de développement.

Le paramétrage de la box internet pour autoriser un accès externe au NAS ne sera pas traité ici.En  ce qui concerne le contrôle d'accès à l'interface web, il existe différentes solutions qui peuvent être déployées sur le NAS et son serveur Apache. Elle ne seront pas décrites non plus. Chacun peut choisir la sienne en fonction de son niveau de paranoïa.

[[Fichier:DiematicWebInterfaceDesign.png]]

== Réalisation ==
=== Connexion ===
Vous pouvez commencer par connecter votre carte USR-TCP-232-24 à la régulation de la chaudière en utilisant un câble et un connecteur Mini Din 4 points. Le schéma du câble est le suivant :

[[Fichier:ModBusMiniDinConnection.png]]

Vous pouvez maintenant paramétrer votre carte USR-TCP-232-24 avec le programme de setup USR-TCP232-T24 V5.1.0.1.exe disponible sur le site USR IOT.

[[Fichier:USR-TCP-232-24-Setup.png]]

Evidemment, en ce qui concerne l'adresse IP du module, le masque de sous-réseau et l'IP de la GateWay, vous devez utiliser des paramètres compatibles avec votre réseau local.
=== Déploiement des pages php ===
Pour cela il faut utiliser un serveur Apache/PHP. J'ai testé les scripts fourni en PHP 5.3. Le support des sockets doit être activé.

Les scripts php sont disponibles ici : [http://www.dom-ip.com/Diematic3/Diematic3Web_v1.1.zip Diematic3Web_1.1.zip]
Il suffit de les déployer dans un répertoire de votre site web. Deux paramètres sont à ajuster dans le fichier index.html, il s'agit de $modbus_ip et $modbus_port auquel vous devez assigner les valeurs d'accès réseau de votre carte USR-TCP-232-24 .

=== Essais ===

Ensuite appelez la page index.html à l'aide de votre navigateur favori. En moins de 10 secondes (5s pour attendre que le bus soit en mode esclave + le temps d'échange des données) , vous devez obtenir un résultat similaire à celui ci-dessous :

[[Fichier:Diematic3Ctrl.png]]

Cette page vous permet de contrôler l'état de votre chaudière et d'en modifier le mode de fonctionnement.

Ensuite si vous cliquez sur le lien paramètres, vous obtenez :

[[Fichier:Diematic3Param.png]]

Cette page vous permet de contrôler le paramétrage de votre chaudière (notamment les températures), de synchroniser l'heure de la chaudière sur celle de votre serveur Web et de connaître ce qui ressemble à la version logicielle de votre régulateur Diematic 3 ( 313 dans notre cas).

=== Limitations ===

Avec la version 313 (chaudière achetée fin 2006) de la régulation et cette version v1.0 des pages web, j'ai observé les anomalies suivantes :
- lors de la modification du mode à l'aide de la page Web, le mode affiché sur la chaudière est correct (et son fonctionnement aussi), cependant l'affichage du mode sur la commande à distance n'est pas mis à jour, voir incohérent (cas de sortie du mode antigel notamment). Un appui sur le bouton mode de la commande à distance remet les affichages en cohérence. Un contournement permet d'avoir un fonctionnement correct si nécessaire, il suffit de dé-commenter les lignes 215 à 218 du fichier Diematic.class.php
-  si on est sorti du mode antigel à l'aide de l'interface web, la remise en mode antigel toujours par le web marche très mal ensuite. Il suffit de modifier le mode à l'aide du panneau de contrôle de la chaudière et tout rentre dans l'ordre.

Je n'ai également pas pu accéder au réglage du programme courant P1 à P4, aussi bien en lecture qu'en écriture, en utilisant 2 adresses trouvées dans les docs, 231 et 234.

=== Affichage des traces ===

L'appel de la page index.php?log=1 permet d'afficher les traces enregistrées lors des échanges de données avec la chaudière

=== Conclusion ===

Le résultat n'est pas parfait ( voir les deux limitations ci-dessus). Cependant cela permet d'accéder aux fonctions principales. Ces limitations semblant provenir de bugs dans l'interface Diematic3, il est possible qu'elles n'aient plus lieu d'être dans des versions ultérieures. N'hésitez pas à faire part de vos résultats ou questions sur les forums suivants :
[https://www.domotique-fibaro.fr/topic/5677-de-dietrich-diematic-isystem/ fibaro]
ou
[http://forums.futura-sciences.com/habitat-bioclimatique-isolation-chauffage/441847-modbus-diematic-de-dietrich.html Futura Science]</rev>
        </revisions>
      </page>
    </pages>
  </query>
</api>