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 ,…

image914

17.1.1. Création de capteurs virtuels dans Domoticz

Pour mémoire

image915

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 « .

image916

Dans EasyEsp

image917

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`);

image918

Faire de même pour les autres tables , en remplaçant le nom de la table dans le fichier ; exemple : CREATE TABLE `orp_spa`

image919

Important

Si la création est manuelle , ne pas oublier Auto incrémenter « num »

image920

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 :

image921

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.

image922

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 $

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>

image923

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

image925

17.1.4.1.a L’image svg support de l’affichage

https://raw.githubusercontent.com/mgrafr/monitor/main/include/ph-redox_svg.php

image928

image929

image930

  • Enregistrer les capteurs dans la table « dispositifs »

voir le § 0.3.2 Les Dispositifs

  • Monitor reçoit

image932

La 1ère page

image933

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

image934

  <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

image936

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>

image937

image938

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

image939

image940

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 :

image941

  • Domoticz reçoit

image942

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)

image944

  • 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>

image947

17.1.4.4.a ecran4 , ecran5

image949

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

image1438

17.2.1 Matériel

En plus d’un coffret électrique étanche,

  • 1 module NodeMcu V3 et un kit de développement

  • 1 module ADC ADS1115

    image1439

    image1440

  • 2 modules de contrôle avec interface BNC

    image1442

  • 1 capteur de débit d’eau

    image1443

  • Des fils Dupont

    image1444

  • 1 résistance de 4,7kὨ image1445

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 ».

  • 2 sondes de température

    . pour la température de l’eau

    image1446

    . pour la température de l’air

    image1447

  • 1 sonde PH

    image1450

  • 1 sonde ORP

    image1451

  • 1 alimentation 230V/12 Volts; elle peut être interne ou externe

    image1448 image1449

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

image1452

17.2.2.2 circuits des données

image1453

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

image1454

  • Ouvrir le gestionnaire de périphériques

Si le drivers n’est pas reconnu, l’installer ; Noter le port COM et choisir 115200 Bauds

image1455

  • Télécharger le firmware

17.2.1.3.a Pour un esp¬8266

https://github.com/letscontrolit/ESPEasy/releases

image1456

Dans ESPEasy_binaries.zip , choisir un fichier pour le firmware:

image1457

17.2.1.3.b Pour un esp¬32

Important

Pour une liaison série il faut choisir un fichier avec une extension « factory »

image1458

17.2.3 Flashage de l’ESP

Choisir un programme dans ESPEasy_dist.zip,

image1459

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

image1460

17.2.3.1 NodeMcu avec esp 8266

Lancer flash_download_tools

image1461

image1463

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.

image1464

image1465

17.2.3.2 NodeMcu avec esp 32

Lancer flash_download_tools

image1462

image1466

Apputer sur START et sur BOOT du esp32

image1467

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):

    image1468

  • Le PC est connecté sur 192.168.4.1

    image1469

  • Choisir un routeur et indiquer le mot de passe

    image1470

    image1471

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

image1472

image1473

image1474

image1475

17.2.4.2 Choisir la configuration

image1476

17.2.4.3 Ajouter les dispositifs

image1477

  • Enregistrer le 1er dispositif :

**la mesure du PH par le ADS1115==

image1478

image1479

image1480

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

image1482

  • Nombre de décimales et valeur de la données

image1481

La mesure REDOX par le ADS1115

image1483

Installer la sonde de température d’eau : DS18b20

https://espeasy.readthedocs.io/en/latest/Plugin/P004_DS18b20.html

image1487

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 la sonde de température extérieur : DS18b20

image1484

à suivre

17.3 Extension Pompes perisaltiques pour réguler PH et REDOX

en cours de rédaction