17. DIY
17.1 Domotiser un SPA (ou une piscine)
Ce paragraphe contient différentes parties qui peuvent être indépendantes ou liées suivant le choix de chacun :
La réalisation d’un boitier électronique de mesures de PH, Redox, Températures, Débit de la filtration, les mesures étant envoyées sur un serveur MQTT;Cette réalisation est décrite dans le paragraphe 17.2 monitoring pour spa, réalisation
La création de capteurs virtuels dans Domoticz qui récupère les valeurs envoyées par le serveur MQTT et les envoie vers la base de données de Monitor ; il envoie également des alertes sur la TV comme pour les poubelles et la fosse septique.
La création d’une page dans Monitor pour afficher les données sur une page dédiée, afficher des alertes et commander s’il y a lieu le chauffage, les pompes ,…
17.1.1. Création de capteurs virtuels dans Domoticz
Pour mémoire
Avertissement
C’est Domoticz qui fournit l’IDX, il faut donc modifier cet IDX dans EasyEsp ;Pour le PH, le redox, le débit, les capteurs sont « Custom « .
Dans EasyEsp
17.1.2. Création des tables PH, Redox, temp, …
dans la base de données
Note
Dans phpMyAdmin, il n’est pas possible de faire des copier/coller, aussi il faut enregistrer les lignes ci-dessous dans un fichier et l’importer pour éviter de taper toutes les lignes.
4 ou 5 caractères sont nécessaires pour la valeur (5 caractères reçus par Dz de MQTT , réduits à 4 avec round(deviceValue, 1) dans le script lua).
La commande SQL :
CREATE TABLE `ph_spa` (
`num` int(5) NOT NULL,
`date` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`valeur` varchar(5) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `debit_spa` CHANGE `num` `num` INT(5) NOT NULL AUTO_INCREMENT, add PRIMARY KEY (`num`);
Faire de même pour les autres tables , en remplaçant le nom de la table dans le fichier ; exemple : CREATE TABLE `orp_spa`
17.1.3 Envoi des données à la BD de monitor par Domoticz
Le paragraphe 6.2 traite de ce sujet (envoie de températures issues de capteurs réels ou virtuels).
Il suffit donc d’ajouter les données PH, Redox, etc… dans le script export_sql dans Evènements de Domoticz :
Note
Pour rappel fabric appelle le script python sqlite_mysql.py de monitor
Les valeurs si dessous ne sont pas réelles, la sonde PH n’est pas branchée.
17.1.4. – Affichage dans Monitor
Avertissement
Pour que Monitor reçoive les données, il faut enregistrer les capteurs dans la BD et les ajouter dans un plan dans Domoticz plan, voir les $
0.3.1 Les Tables « dispositifs(variables) » & « text-image »
17.1.4.1 la page spa.php
cette page a la particularité d’affichher un écran à pages multiples défilantes
<!-- section SPA start -->
<div id="spa" class="spa">
<div class="container">
<div class="columns">
<div class="column is-12">
<p>
<h1 class="title is-1 has-text-centered">SPA<span style="margin-left:20px;font-size: 20px;"> contrôle qualité</span></h1><br>
</p>
<?php include ("ph-redox_svg.php");?>
</div>
</div> </div> </div>
<script>
num_ecran=0;nb_ecran=<?php echo NB_ECRAN_SPA;?>;
function next_ecran(num_ec){
num_actuel=num_ecran;num_ecran=num_ecran+num_ec;
if (num_ecran>=nb_ecran || num_ecran<0) {num_ecran=0;}
div_suiv="ecran"+num_ecran;div_prec="ecran"+num_actuel;
document.getElementById(div_prec).style.display="none";document.getElementById(div_suiv).style.display="block";
var ecranspa=<?php echo '["' . implode('", "', ECRANSPA) . '"]' ?>;
nbec=0;
while (nbec<=nb_ecran-2){//console.log(nbec+" .. "+ecranspa[nbec]);
graph(ecranspa[nbec]+'_spa','text_svg','graphic_'+ecranspa[nbec]);
nbec++; } }
</script>
Explication de cette ligne
var ecranspa=<?php echo '["' . implode('", "', ECRANSPA) . '"]' ?>;
C’est la façon de passer un array PHP à une fonction JavaScript
La fonction graph de la page graphique est utilisée
Dans config.php : (permet d’ajouter facilement une autre page)
Il suffira alors simplement d’ajouter cette page à l’image svg, voir le § 17.1.4.2 ajout d’un ID dans l’image svg pour le 2eme écran (ecran1)
//SPA
define('ON_SPA',true);// mise en service SPA
define('NB_ECRAN_SPA',6);
define('ECRANSPA', array(
0 => "ph",// si nb ecran >=2
1 => "orp",// si nb ecran >=3
2 => "debit", //débit en M3 // si nb ecran >=4
3 => "temp", //si nb ecran >=5
4 => "temp_ext", //si nb ecran >=6
));
Avertissement
NE PAS OUBLIER d’ajouter la page au menu , à index_loc.php et son ID aux CSS, voir le paragraphe 16. Ajouter des pages ou des alertes
17.1.4.1.a L’image svg support de l’affichage
https://raw.githubusercontent.com/mgrafr/monitor/main/include/ph-redox_svg.php
Enregistrer les capteurs dans la table « dispositifs »
voir le § 0.3.2 Les Dispositifs
Monitor reçoit
17.1.4.2 ajout d’un ID dans l’image svg pour le 2eme écran (ecran1)
qui affichera les données de la BD
<g id="graphic_ph" transform="matrix(1 0 0 1 70 65)" class="spa2 spa3"></g>
|image935|
17.1.4.2.a Les autres fichiers concernés
fonctions.php graph()
export_tab_sqli.php
Important
L’écran de mesure est petit , l’affichage est limité à 10 analyses ; pour un historique plus long , utiliser page graphique et « infos_bd »
L’image svg n’accepte pas les retours à la ligne <br> , pour chaque ligne il faut définir un <text>…</text> ; le fichier fonctions.php est donc modifié en conséquence.
<text transform="matrix(1 0 0 1 0 '.$ccc.')" class="spa2 spa3">'.$xdate[$i].'='.$yvaleur[$i].'</text>
Avertissement
Les lignes non indispensables sont supprimées pour $periode= « text_svg »;
en remplacement, affichage de « connected » : echo “<text transform= »matrix(1 0 0 1 0 0) » class= »spa2 spa3 »>Connected</text>”;
17.1.4.3 ajout d’un ID dans l’image svg pour 3eme écran
qui affiche les données Redox de la même façon que pour le PH ci-dessus
17.1.4.4 ajout d’autres écrans
Mesure de la température de l’eau, de l’air, le débit de la filtration,…
Calcul du débit de la filtration
Impulsion de débit : F(Hz)=(0.20xQ)-3%
Q=L/min
F= 0,2 L/mn
dans EasyEsp les données envoyées sont :
Domoticz reçoit
Pour envoyer à la BD le débit : script lua « export_sql »
t = {};
...
elseif (deviceName=='Debit_filtration_SPA') then
print ("debit:"..deviceValue);c=0;
for i in string.gmatch(deviceValue,"[^;]+") do
t[c]=i;c=c+1;
end
libelle="debit_spa#valeur";don=" "..libelle.."#"..t[0].."#"..datetime
envoi_fab(don)
Dans monitor, ajout du 3eme écran(ecran2) à l’image svg
<g id="ecran3" style="display:none">
<rect x="43" y="36.5" class="spa9" width="256.7" height="145.9"/>
<text transform="matrix(1 0 0 1 70 55)" class="spa2 spa3">Dernières Mesures de Débit :</text>
<g id="graphic_debit" transform="matrix(1 0 0 1 70 65)" class="spa2 spa3"></g>
</g>
17.1.4.4.a ecran4 , ecran5
17.2 monitoring pour spa, réalisation
pour les mesures :
PH
Redox
Température de l’eau
Débit de la filtration
Température de l’air
inspiré de https://easydomoticz.com/forum/viewtopic.php?t=11590
17.2.1 Matériel
En plus d’un coffret électrique étanche,
Note
ADS1115
Large plage d’alimentation : 2,0 V à 5,5 V
2 modules de contrôle avec interface BNC
1 capteur de débit d’eau
Des fils Dupont
Note
Le bus à 1 fil (1 Wire) nécessite que le signal de commande soit tiré vers le haut afin que le périphérique maître puisse le tirer vers le bas pour demander des données; le périphérique esclave peut le tirer vers le bas pour donner les données; Ceci permet d’installer plusieurs appareils sur le même « 1 wire ».
17.2.2 Cablâge et connexion au PC
Avec les fils Dupont mais pour les sondes de température une résistance est à insérer entre le 3 Volts et le fil de données ;j” ai utilisé des prises aviation pour raccorder les sondes à l’extérieur du boitier , la résistance est soudée ente PLUS et DATA dur l’un des connecteurs.
17.2.2.1 Alimentation des différents composants
17.2.2.2 circuits des données
17.2.2.3 Le firmware
S’assurer que la carte est bien reconnue, connecter la micro USB du NodeMcu à une prise USB du PC
Ouvrir le gestionnaire de périphériques
Si le drivers n’est pas reconnu, l’installer ; Noter le port COM et choisir 115200 Bauds
Télécharger le firmware
17.2.1.3.a Pour un esp¬8266
https://github.com/letscontrolit/ESPEasy/releases
Dans ESPEasy_binaries.zip , choisir un fichier pour le firmware:
17.2.1.3.b Pour un esp¬32
Important
Pour une liaison série il faut choisir un fichier avec une extension « factory »
17.2.3 Flashage de l’ESP
Choisir un programme dans ESPEasy_dist.zip,
j’ai l’habitude d’utiliser Expressif_flash_download_tools :
https://www.espressif.com/en/support/download/other-tools?keys=&field_type_tid%5B%5D=14
17.2.3.1 NodeMcu avec esp 8266
Lancer flash_download_tools
Appuyer sur le bouton Flash du NodeMcu et ensuite sur START du programme avant de relacher la pression sur le bouton.
Avec kit de développement NodeMCU, c’est facile la connexion USB peut tirer GPIO0 vers le bas en affirmant DTR et réinitialiser la carte en affirmant RTS.
17.2.3.2 NodeMcu avec esp 32
Lancer flash_download_tools
Apputer sur START et sur BOOT du esp32
17.2.4 Programmation de l’ESP
Débrancher le NodeMcu du PC et mettez le sous tension avec l’alimentation
Connecter le PC sur le point d’accès ESP-Easy (la clé est affiché ci-dessous):
Le PC est connecté sur 192.168.4.1
Choisir un routeur et indiquer le mot de passe
17.2.4.1 Choisir un contrôleur
j’ai un serveur MQTT installé sur Proxmox et Domoticz qui reçoit et émet les données, c’est Domticz-MQTT qu’i faut choisir et l’adresse IP du serveur MQTT
17.2.4.2 Choisir la configuration
17.2.4.3 Ajouter les dispositifs
Enregistrer le 1er dispositif :
**la mesure du PH par le ADS1115==
Avertissement
un message apparaitra dans log de Domoticz car le capteur n’existe pas mais cela permet de contrôler le bon fonctionnement de MQTT
Nombre de décimales et valeur de la données
Installer la sonde de température d’eau : DS18b20
https://espeasy.readthedocs.io/en/latest/Plugin/P004_DS18b20.html
Avertissement
Une fois la sonde programmée la désactiver et la débrancher. Il faut procéder ainsi afin que chaque sonde obtienne automatiquement sa propre adresse
Installer le capteur de débit
https://espeasy.readthedocs.io/en/latest/Plugin/P003.html https://espeasy.readthedocs.io/en/latest/Plugin/P003_YFS401.html#p003-yfs401-page
à suivre
17.3 Extension Pompes perisaltiques pour réguler PH et REDOX
en cours de rédaction











































































