<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rdf:RDF[
	<!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
	<!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'>
	<!ENTITY owl 'http://www.w3.org/2002/07/owl#'>
	<!ENTITY swivt 'http://semantic-mediawiki.org/swivt/1.0#'>
	<!ENTITY wiki 'http://https://wikifab.hatlab.fr/Special:URIResolver/'>
	<!ENTITY category 'http://https://wikifab.hatlab.fr/Special:URIResolver/Category-3A'>
	<!ENTITY property 'http://https://wikifab.hatlab.fr/Special:URIResolver/Property-3A'>
	<!ENTITY wikiurl 'https://wikifab.hatlab.fr/'>
]>

<rdf:RDF
	xmlns:rdf="&rdf;"
	xmlns:rdfs="&rdfs;"
	xmlns:owl ="&owl;"
	xmlns:swivt="&swivt;"
	xmlns:wiki="&wiki;"
	xmlns:category="&category;"
	xmlns:property="&property;">

	<owl:Ontology rdf:about="https://wikifab.hatlab.fr/Special:ExportRDF/Centrale_Domotique">
		<swivt:creationDate rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2026-04-28T20:48:57+02:00</swivt:creationDate>
		<owl:imports rdf:resource="http://semantic-mediawiki.org/swivt/1.0"/>
	</owl:Ontology>
	<swivt:Subject rdf:about="http://https://wikifab.hatlab.fr/Special:URIResolver/Centrale_Domotique">
		<rdf:type rdf:resource="http://https://wikifab.hatlab.fr/Special:URIResolver/Category-3ATutoriels"/>
		<rdfs:label>Centrale Domotique</rdfs:label>
		<rdfs:isDefinedBy rdf:resource="https://wikifab.hatlab.fr/Special:ExportRDF/Centrale_Domotique"/>
		<swivt:page rdf:resource="https://wikifab.hatlab.fr/Centrale_Domotique"/>
		<swivt:wikiNamespace rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">0</swivt:wikiNamespace>
		<swivt:wikiPageContentLanguage rdf:datatype="http://www.w3.org/2001/XMLSchema#string">fr</swivt:wikiPageContentLanguage>
		<property:Area rdf:resource="&wiki;-C3-89lectronique"/>
		<property:Area rdf:resource="&wiki;-C3-89nergie"/>
		<property:Area rdf:resource="&wiki;Maison"/>
		<property:Cost rdf:datatype="http://www.w3.org/2001/XMLSchema#double">60</property:Cost>
		<property:Currency rdf:datatype="http://www.w3.org/2001/XMLSchema#string">EUR (€)</property:Currency>
		<property:Description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Mon but est de fabriquer une centrale pour gérer la maison à faible coût et avec beaucoup de flexibilité grâce à l'utilisation d'arduino et raspberry pi.
Par “gérer”, dans un premier temps on vas se limiter au chauffage.</property:Description>
		<property:Difficulty rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Difficile</property:Difficulty>
		<property:Duration rdf:datatype="http://www.w3.org/2001/XMLSchema#double">5</property:Duration>
		<property:Duration-2Dtype rdf:datatype="http://www.w3.org/2001/XMLSchema#string">jour(s)</property:Duration-2Dtype>
		<property:Introduction rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Pour commencer, je vais:

* mesurer température/humidité/qualité de l'air,
* contrôler les radiateurs qui disposent d'un fil pilote,
* ensuite, on verra…

Ah, j'oubliais, tout ça doit se faire:

- à distance depuis n'importe où via Internet (et avec un peu de sécurité),
- avec n'importe quel terminal du type smartphone ou PC</property:Introduction>
		<property:Licences rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Attribution (CC BY)</property:Licences>
		<property:Material rdf:datatype="http://www.w3.org/2001/XMLSchema#string">J'utilise:

    - 1 Arduino Uno avec 1 Shield Ethernet W5100 pour Arduino
    ou bien, 
    - 1 Nano v3 avec 1 Shield Ethernet ENC28J60 v1

    - 1 capteur  DHT-22 de température au 1/10° et d'humidité, remplacé finalement par un Si7021
    - 1 capteur MQ135 qualité de l'air
    - divers composants pour le fil pilote

Pour centraliser les données: l'application du projet Gladys que je fais tourner sur un raspberry PI 3. Il peut tourner sur à peu près n'importe quoi, y compris un PC puisque c'est du NodeJS. (PC sous Linux, cela va sans dire. Ne pensez même pas à utiliser un système M$, sauf si vous préférez les problèmes plutôt que les solutions)</property:Material>
		<property:Notes rdf:datatype="http://www.w3.org/2001/XMLSchema#string">* le projet domotique Gladys : [https://gladysproject.com/ le site de Pierre-Gilles Leymarie]
* la carte du fil pilote : [https://telefab.fr/2013/11/10/controle-a-distance-des-radiateurs/ le site FabLab de l’IMT Atlantique]
* "Bug 510 Ohms" du W5100 chinois : [https://forum.arduino.cc/index.php?topic=351477.30 Discussion Arduino sur le problème et le fix]
* L'API http Domoticz : [https://www.domoticz.com/wiki/Domoticz_API/JSON_URL%27s#Temperature API Domoticz]
* L'API serial Domoticz : [https://www.mysensors.org/download/serial_api_20 Serial API Domoticz]</property:Notes>
		<property:Step_Content rdf:datatype="http://www.w3.org/2001/XMLSchema#string">En bref, il faudra faire:

* 1) Branchement des 2 capteurs sur le Arduino
* 2) Branchement de la shield Ethernet
* 3) Installation de Gladys et configuration
* 4) Création du circuit de contrôle du fil pilote et branchement à l'Arduino (Merci à Vincent pour avoir vu les problèmes de soudure)
* 5) Ecriture du code Arduino pour envoyer les 3 mesures à Gladys
* 6) Mise à jour du code Arduino pour prendre en compte les commandes HTTP pour les 4 modes du fil pilote</property:Step_Content>
		<property:Step_Content rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Voici les 2 versions:
* Arduino et 
* Nano, 

avec chacune leur shield respectif, le capteur DHT22 et le capteur MQ135.

Il y a aussi au milieu l'électronique du fil pilote (plaque verticale avec un fusible) qui n'est que sur la version Arduino actuellement.</property:Step_Content>
		<property:Step_Content rdf:datatype="http://www.w3.org/2001/XMLSchema#string">(Merci Clément pour le dessin qui parle de lui-même ;-) )

En bref, depuis smartphone ou ordinateur, à travers internet, je visualise les graphes des mesures dans différents lieux, j'active ou désactive des appareils, je choisi le mode de chauffage.</property:Step_Content>
		<property:Step_Content rdf:datatype="http://www.w3.org/2001/XMLSchema#string">* Alimentation

Sans surprise, il faut passer par une alimentation sur VIN car l'alim par usb ne suffit plus quand les 2 capteurs et le shield sont branchés.

* 1er déboire) La carte W5100. 

Tout d'abord, le "bug" chinois: erreur sur la résistance sur la prise RJ45. La bonne résistance aurait dû être “510” = 51 x 10^0 = 51 Ohms et non pas 51 x 10^1 = 510 Ohms, sinon pas de connexion au-delà de 10Mbps !

Ensuite, le couple Arduino/W5100 parait peut fiable. J'ai de nombreux crash aléatoires et inexpliqués. En désespoir de cause, je passe sur nano v3 + shield Ethernet ENC28J60 v1.

* 2nd déboire) Le DHT22 (AM2302)

Le DHT22 ne semble pas fonctionner sur le nano! Merci à Philippe pour l'utilisation de l'oscilloscope numérique. On voit sur l'image que le signal série est bien visible, mais le niveau 0 ne redescend pas en dessous de 1,5 V sur le modèle de marque "ASAIR" (1V/graduation) ! Sans doute un problème de résistance "pull-up". En attendant, heureusement le DHT 22 de "AOSONG", lui, fonctionne sur le nano. 

* 3ie déboire) Encore le DHT22

Finalement pas fiable. Parfois 1 mesure sur 10, parfois aucune. Que me dit Internet? OK, je passe sur Si7021.
Et le mesures deviennent fiables. J'obtiens de belles courbes sur Gladys.

* 4ie déboire) La librairie UIPEthernet.h

Sur le papier, l'idée est géniale: compatibilité totale avec la librairie Ethernet.h de la carte W5100. Rien à changer dans le code si ce n'est le "#include".
Mais voilà, il y a un "mais". Cette librairie consomme 70% de la mémoire avant même d'avoir écrit 1 ligne de code. Les résultats sont bons au début, puis mon programme s'étoffe et j'arrive aux limites. Encore bloqué.

Je peux réduire de 50% la conso de la librairie en désactivant UDP. Cela ne m'aide pas car j'en ai besoin pour le DHCP. Sinon le système perd sa capacité plug&amp;play.

Je passe alors sur la librairie EtherCard.h. Malheureusement elle est très peu documentée. Avec les exemples on s'en sort, et finalement le code est plus simple qu'avec Ethernet .h</property:Step_Content>
		<property:Step_Content rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Sur Gladys, un dashboard permet en un coup d'oeil de voir:
* la temperature mesurée
* la comande envoyée depuis internet
* le mode pilote réellement appliqué
Avec à chaque fois l'heure de modification.
Le mode pilote diffère de la commande lorsque le bouton local a été actionné. Il montre l'état réel.</property:Step_Content>
		<property:Step_Content rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Contrôler à distance avec un appareil c'est bien.
mais quand on se trouve juste devant le boîtier, ne pas connaître l'état courant, ni pouvoir le changer, c'est frustrant.

Pour cela 2 leds de couleurs sont ajoutées avec une étiquette explicative.
Chaque led est connectée directement sur l'une des 2 sorties qui partent vers la carte Pilote. C'est le plus simple, et cela permet de vérifier le bon fonctionnement.

Le bouton poussoir change l'état de manière circulaire. Les leds reflètent immédiatement le nouvel état. Pour gérer tout conflit entre les 2 sources de commande (bouton ou Internet), la date des derniers changements de chacun est conservée. La modification la plus récente s'applique.</property:Step_Content>
		<property:Step_Content rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Voici la version du dashboard cette fois pour Domoticz.
Avec:
* la temperature et l'humidité mesurée
* la comande envoyée depuis internet sous forme de boutons
* le mode pilote réellement appliqué
Et un graphe puissant avec zoom et historique sur 7 jours.
Les codes arduino sont adaptés pour la connexion directe USB ([https://forum.arduino.cc/index.php?topic=564895.0 explications ici]), et pour la connexion HTTP avec l'API Domoticz.</property:Step_Content>
		<property:Step_Content rdf:datatype="http://www.w3.org/2001/XMLSchema#string">En local, pourquoi passer par Ethernet?
J'ai donc fait une version avec connexion directe sur le Raspberry Pi qui héberge Gladys.

Le code est disponible là:

[https://gitlab.com/sylvaingiraud/gladys-usb-sensor/ Lien vers le code .ino version Gladys sur gitlab]

[https://gitlab.com/sylvaingiraud/domoticz-usb-serial Lien vers le code .ino version Domoticz sur gitlab]

Une fois les numéros des métriques alignés entre Gladys et le code (ici 13,14,15), il faut brancher l'usb et faire un "Configuration" dans le module "Serial-Isokar" de Gladys.
Ensuite ça marche tout seul.</property:Step_Content>
		<property:Step_Content rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Nouvelle étape: ajout d'une base InfluxDB et d'un  Graphana.
Cela se fait nativement dans Domoticz: Options/Push/InfluxDB.
J'ai mis un container qui inclut InfluxDB et Graphana et se déploie en quelques minutes.

Merci à :
- [https://github.com/philhawthorne/docker-influxdb-grafana Lien vers le container Influx/Graphana]


Note: les calculs restent approximatifs.</property:Step_Content>
		<property:Step_Content rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Le circuit comprend 2 opto-coupleurs, chacun avec une diode afin de contrôler le signal du fil pilote.
L'image montre l'ordre envoyé, selon la sinusoide générée.

Je suis plutôt fâché contre les concepteurs de ce standard: des gens peut être bien intentionnés, mais qui n'ont pas la moindre notion de modération énergétique.

En effet, on voit que lorsque le signal est coupé, le chauffage '''démarre à fond, en mode Confort''' ! Donc si le boîtier de contrôle n'est plus alimenté, vous verrez votre '''consommation exploser'''. Il va falloir m'expliquer pourquoi ce choix qui me semble absurde !!

"'''Hors-gel'''" ou à la limite "'''Eco'''" auraient été de bien meilleurs choix à mon avis.

En conséquence, pour éviter ce risque il va falloir modifier le circuit et remplacer un des opto-coupleurs par un relai. Ainsi, lorsque le contrôleur est coupé, le relai laissera passer le signal "-115 V" ce qui correspond au mode "'''Hors Gel'''". Avec les inconvénients: le relai est mécanique, la bobine sera en permanence alimentée en mode "'''Confort'''" ou "'''Arrêt'''", il tombera en panne un jour ou l'autre.

&lt;p&gt;
&lt;div class="icon-instructions-image"&gt;[[File:Icon-idea.jpg|link=]]&lt;/div&gt;
&lt;div class="icon-instructions-text"&gt;Toute meilleure idée est la bienvenue.&lt;/div&gt;
&lt;/p&gt;

Je suis aussi preneur du schéma Kicad pour réaliser le PCB, si quelq'un veut s'y atteler. Contact [https://www.hatlab.fr/contacter-le-mesnilab/ ici].</property:Step_Content>
		<property:Step_Content rdf:datatype="http://www.w3.org/2001/XMLSchema#string">* 5ième étape du plan.

Victoire! ENC28J60 et librairie EtherCard.h, c'est la paire gagnante. Je recommande.
La librairie est plus simple et beaucoup plus fiable que l'autre.
Testé sur plusieurs semaines, j'ai des courbes 100% complètes et aucune panne.

Finalement le réseau cible ne me permettra pas d'envoyer des commandes à l'arduino car je ne pourrais pas maîtriser le NAT distant. Donc je passe en mode polling: l'arduino va venir interroger le Gladys pour récupérer la consigne. Autre avantage: c'est plug&amp;play.
Brancher le module n'importe où ''dans le monde'', il marche de suite sans configuration à faire.

* Des améliorations pour la suite:

Gérer les 2 cas DNS et IP local ( Surtout chez orange qui aime bien compliquer les choses simple :-( !!  ) et les reconnexions sans reboot.

Ajouter les boutons de contrôle.</property:Step_Content>
		<property:Step_Content rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Voici le circuit électronique complet.
Il contient:
* Le Nano
* Le shield ENC28J60 avec connecteur Ethernet
* Le capteur de température/humidité Si2170
* Le capteur MQ135
* Le circuit Pilote relié au fil pilote central: 2 optocoupleurs + 2 diodes
* Un bouton de contrôle local
* 2 leds pour visualiser l'état</property:Step_Content>
		<property:Step_Content rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Avec un capteur de courant SCT-013:
* https://www.moussasoft.com/sct-013-000-capteur-de-courant-ac-avec-arduino/
* https://www.forumphotovoltaique.com/sct013-arduino/
* https://jeremyrenove.com/wp-content/uploads/2018/11/Utiliser-un-capteur-de-courant-SCT013-et-un-arduino.pdf
* https://diyprojectslab.com/measure-ac-current-using-arduino-and-sct-013/</property:Step_Content>
		<property:Step_Title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Les déboires</property:Step_Title>
		<property:Step_Title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Faire un plan de toutes les étapes</property:Step_Title>
		<property:Step_Title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Réalisation</property:Step_Title>
		<property:Step_Title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Schéma de principe</property:Step_Title>
		<property:Step_Title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Capteur connecté en USB</property:Step_Title>
		<property:Step_Title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Carte avec Gestion du Fil Pilote</property:Step_Title>
		<property:Step_Title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Mise en boitier</property:Step_Title>
		<property:Step_Title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Tableau de bord version Gladys</property:Step_Title>
		<property:Step_Title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Tableau de bord version Domoticz</property:Step_Title>
		<property:Step_Title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Statistiques dans Graphana</property:Step_Title>
		<property:Step_Title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Codage du signal fil pilote</property:Step_Title>
		<property:Step_Title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Tests longue durée</property:Step_Title>
		<property:Step_Title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Mesure de consommation électrique</property:Step_Title>
		<property:Tags rdf:datatype="http://www.w3.org/2001/XMLSchema#string">domotique</property:Tags>
		<property:Tags rdf:datatype="http://www.w3.org/2001/XMLSchema#string">capteur</property:Tags>
		<property:Tags rdf:datatype="http://www.w3.org/2001/XMLSchema#string">chauffage</property:Tags>
		<property:Tags rdf:datatype="http://www.w3.org/2001/XMLSchema#string">pilote</property:Tags>
		<property:Tags rdf:datatype="http://www.w3.org/2001/XMLSchema#string">carte-arduino</property:Tags>
		<property:Tools rdf:datatype="http://www.w3.org/2001/XMLSchema#string">* De quoi souder
* Un PC Linux avec Firefox et l' "Arduino IDE"
* De la persévérance</property:Tools>
		<property:Type rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Technique</property:Type>
		<swivt:wikiPageModificationDate rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2025-03-12T21:54:53Z</swivt:wikiPageModificationDate>
		<property:Modification_date-23aux rdf:datatype="http://www.w3.org/2001/XMLSchema#double">2460747.4131134</property:Modification_date-23aux>
		<swivt:wikiPageSortKey rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Centrale Domotique</swivt:wikiPageSortKey>
	</swivt:Subject>
	<owl:DatatypeProperty rdf:about="http://semantic-mediawiki.org/swivt/1.0#creationDate" />
	<owl:Class rdf:about="http://https://wikifab.hatlab.fr/Special:URIResolver/Category-3ATutoriels" />
	<owl:ObjectProperty rdf:about="http://semantic-mediawiki.org/swivt/1.0#page" />
	<owl:DatatypeProperty rdf:about="http://semantic-mediawiki.org/swivt/1.0#wikiNamespace" />
	<owl:DatatypeProperty rdf:about="http://semantic-mediawiki.org/swivt/1.0#wikiPageContentLanguage" />
	<owl:ObjectProperty rdf:about="http://https://wikifab.hatlab.fr/Special:URIResolver/Property-3AArea" />
	<owl:DatatypeProperty rdf:about="http://https://wikifab.hatlab.fr/Special:URIResolver/Property-3ACost" />
	<owl:DatatypeProperty rdf:about="http://https://wikifab.hatlab.fr/Special:URIResolver/Property-3ACurrency" />
	<owl:DatatypeProperty rdf:about="http://https://wikifab.hatlab.fr/Special:URIResolver/Property-3ADescription" />
	<owl:DatatypeProperty rdf:about="http://https://wikifab.hatlab.fr/Special:URIResolver/Property-3ADifficulty" />
	<owl:DatatypeProperty rdf:about="http://https://wikifab.hatlab.fr/Special:URIResolver/Property-3ADuration" />
	<owl:DatatypeProperty rdf:about="http://https://wikifab.hatlab.fr/Special:URIResolver/Property-3ADuration-2Dtype" />
	<owl:DatatypeProperty rdf:about="http://https://wikifab.hatlab.fr/Special:URIResolver/Property-3AIntroduction" />
	<owl:DatatypeProperty rdf:about="http://https://wikifab.hatlab.fr/Special:URIResolver/Property-3ALicences" />
	<owl:DatatypeProperty rdf:about="http://https://wikifab.hatlab.fr/Special:URIResolver/Property-3AMaterial" />
	<owl:DatatypeProperty rdf:about="http://https://wikifab.hatlab.fr/Special:URIResolver/Property-3ANotes" />
	<owl:DatatypeProperty rdf:about="http://https://wikifab.hatlab.fr/Special:URIResolver/Property-3AStep_Content" />
	<owl:DatatypeProperty rdf:about="http://https://wikifab.hatlab.fr/Special:URIResolver/Property-3AStep_Title" />
	<owl:DatatypeProperty rdf:about="http://https://wikifab.hatlab.fr/Special:URIResolver/Property-3ATags" />
	<owl:DatatypeProperty rdf:about="http://https://wikifab.hatlab.fr/Special:URIResolver/Property-3ATools" />
	<owl:DatatypeProperty rdf:about="http://https://wikifab.hatlab.fr/Special:URIResolver/Property-3AType" />
	<owl:DatatypeProperty rdf:about="http://semantic-mediawiki.org/swivt/1.0#wikiPageModificationDate" />
	<owl:DatatypeProperty rdf:about="http://https://wikifab.hatlab.fr/Special:URIResolver/Property-3AModification_date-23aux" />
	<owl:DatatypeProperty rdf:about="http://semantic-mediawiki.org/swivt/1.0#wikiPageSortKey" />
	<!-- Created by Semantic MediaWiki, https://www.semantic-mediawiki.org/ -->
</rdf:RDF>