Journal hacker sa pompe de relevage !

Posté par  . Licence CC By‑SA.
51
5
juil.
2024

Sommaire

Avec un titre accrocheur et sachant que votre curiosité est aussi grande que votre intérêt pour le terme "hacker", je vous présente ce petit journal reprenant les bases techniques en ces temps clivants. Rien d'extravagant, juste l'essentiel.

Station de relevage KSB Evamatic

Ce journal couvrira légèrement les aspects électriques, mécaniques et informatiques d'un projet basé sur un ESP32. c'est fait à l'arrache car ce n'est pas un projet de longue date, c'est une panne imprévue qui a lancé le projet. Le code n'est pas écrit dans les règle de l'art, voir pas du tout je ne pense pas que vous apprendrez qqchoses avec celui ici, à mon grand regret

A. Présentation

Une pompe de relevage est une pompe située dans un réservoir attenant à une maison (principalement) qui permet d'évacuer les eaux usées dans un collecteur situé plus haut que la maison.

C'est assez courant, souvent oublié, et cela tombe régulièrement en panne si la maintenance n'est pas effectuée. pas tous les jours mais plutôt en années

J'en ai une pour ma maison avec un réservoir de 100 litres. c'est plutôt petit comme réservoir mais suffisant, par contre c'est très chère :O

B. Premier problème : commande marche/arret

Il y a un flotteur de déclenchement pour le niveau haut et pour le niveau bas, constitué d'une bille en acier qui fait contact selon la position du flotteur. Comme le montre ce petit schéma fait sous xfig, avec ce principe, la capacité totale de la cuve n'est pas utilisée, elle ne se vide jamais complètement et ne se remplit jamais complètement. En rouge sur la 1ere photo :

  1. Problème de gaz stagnant dans la cuve, attaquant les éléments comme le corps de pompe, les câbles et toutes les autres parties métalliques.
  2. Problème de boue stagnant au fond de la cuve, favorisant la création de gaz (H2S).
  3. La fréquence de marche/arrêt du moteur est plus élevée, entraînant une usure prématurée de la pompe.
  4. Chez moi, la pompe ne vidait que 30 litres à chaque fois. une vaste blague !

img

C. Première panne et 1ere solution Arduino

Suite à une panne et un flotteur défectueux, j'ai dû rapidement (de suite!) lancer le projet sur un Arduino, finalisé dans le weekend . Pour régler ce problème de fréquence de fonctionnement, j'ai placé un flotteur en haut de la cuve qui déclenche la pompe une fois la cuve pleine, et je coupe le moteur au bout de 38 secondes pour éviter de devoir détecter le niveau bas. le tuyau en acier de la pompe était rongé par l'h2s, le câble d’alimentation était aussi détérioré on voyait le cuivre des câbles, pourtant prévu pour être très résistant, h07rnf https://www.nexans.fr/fr/products/Building/Industrial/Flexibles-cables/TITANEX%C2%AE---TITANEX%C2%AE-H07RN-F.html
ou en partie.

J'ai ajouter par dessus chaque câble au contact de l'H2S dans la cuve de la gaine thermorétractable sur toute la longueur, gaines thermo en polyoléfine+colle, et d'après les recherches sur internet, cela résiste plutôt bien aux attaque chimiques corrosives.

J'utilise un Arduino, avec un Raspberry Pi A+. L'Arduino gère uniquement le déclenchement de la pompe et son arrêt, avec les sécurités suivantes :

  1. Le relais de sécurité de surveillance de courant haut et bas ne se déclenche pas.
  2. Le flotteur n'est pas bloqué en position haute.
  3. Si trop de sécurités se déclenchent de manière régulière, le moteur est coupé de façon définitive, un peu comme un fail2ban.

le code mais attention au yeux, vraiment :

https://github.com/ygueparm/lift_pump/blob/main/asservissementpompe.ino

img

on peut utiliser un relais Harmony RM35-J RM35JA32MW pour le contrôle de courant. On règle le courant tolérable le plus bas et le plus haut, en dehors desquels un contact se fait . J'utilise un modèle pas chère qui fonctionne correctement
GEYA GRI8-03/04 (15€ au lieu de 140€)

Pour commander mon moteur de 4A (et 8A par la suite avec 2 moteur), j'utilise un relais de commande jour nuit de ballon d'eau chaude de 25A Finder.

Le Raspberry Pi est utilisé uniquement pour m'envoyer un mail à chaque démarrage avec le temps de fonctionnement réel de la pompe. La difficulté réside dans le fait que cela doit fonctionner de manière fiable en production, car il n'est pas agréable de travailler avec une cuve d'eaux usées qui ne se vide pas.

Ça fonctionne parfaitement bien et remplit son rôle. J'ai eu des cheveux qui ont bloqué l'arbre de pompe, ce qui a coupé la pompe, envoyé un mail, et j'ai pu intervenir. Cela reste toujours satisfaisant, sans avoir à racheter une pompe (1000€) qui aurait griller a force de forcer sans réussir a vider la cuve.

Lors de ce dépannage, j'ai constaté que la cuve était quand même pleine de boue sur environ 15 cm et que les odeurs ne diminuaient pas, la cuve restait sale. Petit échec sur ce point malgré l'utilisation complète de la capacité de la cuve. Mauvais diagnostique de ma part et mauvaise solution pour le résoudre /o.

code rpi pi pour envoyer les mail avec le temps de fonctionnement de la pompe en utilisant msmtp https://marlam.de/msmtp/ :

#!/bin/bash
# controle du fonctionnement de la pompe de relevage
# initialisation port gpio
echo "4" > /sys/class/gpio/export 2>&1
echo "in" > /sys/class/gpio/gpio4/direction 2>&1

echo "initialisation port IO"
echo "demarrage surveillance"
#envoi mail initialisation
cat mail1 | msmtp login@domaine

while true
  do j=$((`cat /sys/class/gpio/gpio4/value`))  ;  
     i=$((j))
#debut test de la valeur du relais si 0 tourne en boucle
        while [ $i = 0 ]
 do i=$((`cat /sys/class/gpio/gpio4/value`))  ;  
        done

#si la valeur change j'imprime la date dans un nouveau mail et dans le fichier log
echo "Subject : pompe relevage" > mail
 printf -v DateDebut '%(%A %d %B à %H:%M:%S)T' -1  
 echo "démarrage le $DateDebut" >> log.txt
 printf -v start '%(%s)T' -1
#tant que la valeur reste a 1 j'attend
  while [ $i = 1 ]
 do j=$((`cat /sys/class/gpio/gpio4/value`))  ;
 i=$((j))
 done

#on ecrit le temps total de fonctionnement
printf -v DateFin '%(%A %d %B à %H:%M:%S)T' -1  
printf -v stop '%(%s)T' -1
duree=$(($stop-$start))
printf -v duree '%dh:%dm:%ds\n' $(($duree/3600)) $(($duree%3600/60)) $(($duree%60))
echo -e "$duree\n" >> log.txt
echo -e "temps de fonctionnement\n $duree\n" >> mail  
 echo -e "           "
#la on envoie le mail 
cat mail | sudo msmtp nom@domaine
done

étrangement je n'ai pas réussi a ce qu'il se lance et fonctionne au démarrage, je me connecte sur le rpi pi et lance un screen en root pour lancer le script puis me détacher, simple efficace. Comme je vais passer a un esp32 je n'ai pas approfondi le truc, j'ai des enfants et une femme a nourrir le week end et je sentais un peu de pression de ce coté au vue du temps passé :), le manager était pas trop chaud que je continue sur cette affaire.

Comme le montre la photo, faire les choses à l'arrache c'est bien, mais maintenant que tout fonctionne correctement, j'ai décidé de passer à un ESP32 pour simplifier cela et que cela soit plus propre. Enfin je l'espere :)

D. ESP32

Donc, je passe à un ESP32, surtout grâce à ChatGPT, qui m'aide à faire l'interface HTML et le serveur HTML. Pour ne pas m'embêter avec les variables et pensant que cela serait plus simple, je prends la stratégie de tout mettre dans un seul fichier .ino (arg ! très mauvaise idée).

copie d’écran du site internet img , un bouton marche forcé et arrêt forcé, le point gris passe au vert lorsque la pompe fonctionne. la possibilité aussi de régler le temps de fonctionnement de la pompe. afin d’éviter de devoir reprogrammer l'esp32 si on change de pompe et quelle tourne plus vite ou plus lentement

Le webdesign est un métier que je respecte beaucoup maintenant; actuellement, c'est très moche mais fonctionnel.

img

L'ensemble est effectivement plus simple et un peu mieux fini. Je teste le tout pendant 3 mois avant de le passer en production car c'est la merde si ça ne fonctionne pas littéralement. Après 3 mois de test réel sur une maquette, tout marche bien, pouf je le passe en prod. Je me vois lancer une entreprise pour modifier les pompes de relevage de l'ensemble de la région, acheter un utilitaire et devenir riche, merci ESP32 et Arduino !

j'ai toujours une petite appréhension, car supprimer qqchose qui fonctionne par qqchoses qui devrait fonctionner mieux est toujours délicat, comme je suis mon propre décideur, aucun pb la dessus !

le code à 60% aidé avec chatgpt n'ayant pas de connaissance sur la partie serveur (attention les yeux)
https://github.com/ygueparm/lift_pump/blob/main/pompe-serveur.ino

E. Le drame

Et là, c'est le drame : l'ESP32 se bloque de temps en temps et ne se relance pas. Entre 1 jour et 3 jours, il se met dans un mode figé et ne commande pas la pompe. J'ai juste connecté la maquette sur la vraie pompe ; avant, c'était sur une pompe de test. En diminuant la fréquence de fonctionnement à 80 MHz de l'esp32, ça ne se bloque plus mais arrive à redémarrer comme un grand tous les 1, 2 ou 3 jours. Je perds l'historique des démarrages car je n'utilise pas de fichier pour les stocker c'est directement dans la mémoire, ça fonctionne et c'est le plus important. Adieu mon business plan. Ça arrive assez souvent, pas mal de personnes ont ce problème de blocage de carte pour d'autre projet. J'ai supprimé la résolution du nom pompe.com dans l'esp32 pour me connecter directement a l'adresse ip, ca a l'air aussi d'aider un peu.

je mettrais des optocoupleur pour bien séparer les entrée et sortie sur l'esp32, car il n'y a pas de raison qu'a 5 mètres ca fonctionne parfaitement bien et là cela ne fonctionne plus :/

F. Suppression des boues eau vannes

Un autre problème qui me paraît important à résoudre est la présence de boue dans la cuve.
cela a une viscosité comme de la purée, de la boue qui ne se laisse pas entrainer par la pompe. Cela favorise le gaz H2S et C'est un vrai problème : le gaz H2S va détériorer les câbles présents dans la cuve ainsi que le corps de pompe et ce serait bien que cela soit aussi recyclé vu le prix du traitement des eaux que je paye.
Il existe une solution mécanique avec une bille dans une espece de Y qui bouche le conduit de lavage petit à petit et laisse le conduit d'évacuation au fur et à mesure, mais le prix est dissuasif et plutôt utilisé dans un environnement professionnel. C'est très élégant. c'est une sorte de vanne 3 voies automatique. La solution avec des vannes 3 voies motorisé est aussi beaucoup trop couteuses a cause du diamètre de 63mm, et qui dit moteur dit panne.

Ayant maintenant 2 pompes de relevage de secours en stock, j'ai placé une pompe en plus dans la cuve, branchée en parallèle de celle qui relève. Je l'ai laissée libre, c'est-à-dire qu'elle est juste posée au fond. Lorsque les pompes démarrent pour vider la cuve, l'une évacue le liquide (avec les morceaux) et l'autre, en aspirant vers le bas et refoulant à l'horizontale, provoque des remous suffisants pour mettre en suspension les boues qui vont être aspirées par la première.

Ça fonctionne plutôt bien, les 2 pompes sont gérées par le même relais de contrôle et l'ESP32, elles ont donc la protection nécessaire. Gros avantage : si je remplis la cuve avec de l'eau, cela lave la cuve en une fois et je peux travailler dessus sans aucune odeur. Autre effet intéressant : lorsque la cuve est presque vide a 30%, le jet important de la pompe qui tourne à vide fait comme un Kärcher ou un jet d'eau puissant. Les graisses et autres particules collantes sont décrochées de la cuve. On pourrait manger dedans ! j'y ai placé un réducteur de 63mm vers 50 mm pour augmenter la pression du jet et laisser les morceau passer. et ca fait un petit mixer pour tous ce qui est papier, et autres objet solide mais fragile.

img

G. Maintenance de la pompe

C'est peu connu, mais les pompes de relevage ont un réservoir de glycérine entre l'hélice et le moteur pour l'étanchéité de la pompe sur le raccord tournant. Ce réservoir devrait être contrôlé et rempli au moins une fois par an. Il faudrait également nettoyer la cuve au moins une fois par an aux jet d'eau pour limiter les boue.

https://www.ksb.com/resource/blob/1897120/d3c152c712eb774bacac1db48d4e577e/dow-produkt-2-seiter-fr-data.pdf
C'est la même pompe que moi, le réservoir de glycérine se trouve dans la partie orangé qui semble vide, il y a une petite vis de remplissage qui n'est pas sur le document. (prix 800€ la pompe qd même ca vaut le coup de faire le plein de glycérine a 5€)

Bon courage à tous ceux qui en ont une et qui probablement tombera en panne dans les 5 ans ou plus !

H. Futur

Apprenant de mes erreurs, en ce moment je redéveloppe de zéro, tranquillement, pour avoir un peu plus de respect pour le code, avoir des fichiers entête et des fichiers dédiés aux fonctions, et un peu de factorisation de tous cela.

Utiliser un CSS, ne plus placer en RAM le code HTML, bref, faire quelque chose de plus facile à maintenir et plus propre. Forcément, c'est plus long pour mes faibles capacité.

mais ca traine un peu donc je poste en l'etat ce que j'ai deja fait.

Et si jamais la nouvelle version plus propre ne plante plus l'ESP32, je me lancerai dans l'artisanat pour corriger et aider les milliers de pompes de relevage qui n'attendent que moi. €€€€
une gestion de pompe c'est dans les 500€, un esp32 5€, voyez vous la licorne qui pointe le bout de son nez ;) ?

  • # pompe de relevage

    Posté par  (site web personnel, Mastodon) . Évalué à 6. Dernière modification le 06 juillet 2024 à 04:18.

    Une pompe de relevage, cela peut-être plein de truc. Moi j'ai pensé au relevage d'un tracteur:les bras à l'arrière chargé de lever l'engin agricole qui y est placé. La pompe de relevage est alors la pompe hydraulique chargé de mettre sous pression le liquide pour actionner le relevage. Bref c'est bien une pompe dont le but est bien de relever mais rien à voir. 🤣

    Sous licence Creative common. Lisez, copiez, modifiez faites en ce que vous voulez.

    • [^] # Re: pompe de relevage

      Posté par  (site web personnel) . Évalué à 5.

      Généralement, dans mon coin (pan?) on parlait de "la pompe du relevage" dans le cas que tu invoques, pas "pompe de relevage".

    • [^] # Re: pompe de relevage

      Posté par  . Évalué à 4.

      la formulation exacte serait : "station de relevage pour eaux usées" ; lors de cette recherche, on peut voir des combinés comprenant cuve + pompe avec des tarifs variant de 500 à 1000€.

      Par la suite, concernant la maintenance, on peut supposer qu'il est nécessaire de changer uniquement "la pompe de relevage".

    • [^] # Re: pompe de relevage

      Posté par  (site web personnel) . Évalué à 3.

      Dans les bâtiments collectifs (dans mon expérience, les collèges et lycées), dans la chaufferie on pratique une fosse qui collectera tous les liquides pouvant tomber par terre, qui ensuite seront renvoyés vers l'égout par une pompe de relevage semi-immergée.

      Dans tous les établissements où je suis passé, je voyais des cadavres de ces pompes, qui semblent tout le temps tomber en rade. L'information donnée d'un consommable de glycérine est fascinante. Si cela concerne aussi le type d'appareils que je connais, cela voudrait dire que les pros que j'ai payés depuis vingt ans pour faire l'entretien de ces chaufferies se f. de moi et du contribuable, et n'assuraient pas ce travail de prévention basique. Ho-ho… |-(

      Intendant, donc méchant, mais libre !

      • [^] # Re: pompe de relevage

        Posté par  . Évalué à 1.

        effectivement, la glycerine se dilue et l'eau la remplace dans le réservoir petit à petit, ça attaque les roulement et envahit le moteur -> poubelle

        j achète en pharmacie la glycérine , je reconnais que devoir démonter la pompe, démonter l’hélice pour accéder a la vis de remplissage est toujours un petit régal qui me prend la journée. Et dans les doc de maintenance fabricant, il doit y avoir 2 lignes en faisant mention sur 20 pages

  • # Vecteur d'attaque

    Posté par  . Évalué à 5.

    Fatalement, le vecteur d'attaque sera par une jumbo frame 💩 qui provoquera un buffer overflow.

  • # Mais c'est la caverne d’Alibaba chez toi

    Posté par  . Évalué à 5.

    Dis donc, ils sont bien remplis tes tiroirs pour, pendant le week-end, assembler le montage montré en photo (le Pi, l'Arduino, les relais etc)

    Sinon, c'est plutôt rigolo, j'aime bien le style global … un peu à l'arrache, genre utiliser Xfig :)

    Pour les gaz sulfurés, je t'aurais suggéré un simple ventilateur extracteur, mais apparemment la cuve est à l'intérieur. Finalement, la solution retenue, avec 2 pompes, est assez astucieuse (si ce n'est qu'il y a deux moteurs qui tournent au lien d'un): ça traite les boues et les mauvaises odeurs. Et tu as une pompe de relevage de rechange quasiment prête à servir.

    Je n'ai pas trop saisi l'histoire de la vanne 3 voies (c'est pas grave) et, est tu certain que la lubrification se fait à la glycérine ? Ce serait bien la première fois que je vois ça.

    "Si tous les cons volaient, il ferait nuit" F. Dard

    • [^] # Re: Mais c'est la caverne d’Alibaba chez toi

      Posté par  . Évalué à 3.

      J'aime bien acheter des trucs à la mode comme un Arduino ou un Raspberry Pi. Ça traîne dans les tiroirs, comme les 4 relais commandés en bleu sur la photo de l’Arduino. Coup de bol d'avoir tout sous la main, comme le convertisseur DC-DC pour le Raspberry Pi.

      Concernant la vanne à trois voies, je vais faire un dessin. La vanne à trois voies va diriger l'eau de nouveau dans la cuve pour soulever les boues avec des remous, puis toujours en fonctionnement, on évacue tout cela.

      Il existe un élément uniquement mécanique qui le fait avec un déplacement de bille, ou il faut utiliser une vanne motorisée pour le faire.

      Vanne à trois voies

      au demarrage de la pompe c'est diriger en 1, puis on ferme le 1 pour evacuer en 2

      • [^] # Re: Mais c'est la caverne d’Alibaba chez toi

        Posté par  . Évalué à 4.

        pour la glycerine je pense que c'est plus pour l'etancheité du raccord tournant, j'avais trouvé des doc de maintenance en anglais qui le mentionnait. Les pompe flyght on aussi ce petit réservoir, après ca concerne les pompe de plus de 800€

        • [^] # Re: Mais c'est la caverne d’Alibaba chez toi

          Posté par  . Évalué à 7.

          Avec le schéma, c'est très clair à présent merci.
          Effectivement, avec les diamètres de la tuyauterie et l'environnement agressif, j'imagine qu'il faut taper dans de la fourniture professionnelle à un prix assez conséquent.

          Je viens de faire une rapide recherche, et oui, la glycérine est couramment utilisée pour entretenir les joints en caoutchouc.
          J'ai appris un truc aujourd'hui.

          "Si tous les cons volaient, il ferait nuit" F. Dard

      • [^] # Re: Mais c'est la caverne d’Alibaba chez toi

        Posté par  (site web personnel) . Évalué à 7.

        Le principe de la vanne 3 voies est intéressant. Mais plutôt que d'utiliser une vanne, ça marcherait pas avec juste un piquage de diamètre inférieur (20mm)? Le fond de la cuve serait alors remué en continu, et j'imagine qu'il y aurait toujours assez de pression pour faire remonter le liquide dans le tuyau principal.

        Un LUG en Lorraine : https://enunclic-cappel.fr

  • # Watchdog timer

    Posté par  . Évalué à 6.

    Salut, projet passionnant s'il en est :).

    Pour fiabiliser, tu peux regarder du côté des WDT, les Watchdog Timers, qui sont des mécanismes matériels intégrés à l'ESP32 et aux puces AVR. L'idée est de faire redémarrer la puce "d'en dehors du programme" si un timer n'est pas réinitialisé assez vite. En cas de bug (boucle infinie, événement qui n'arrive jamais…), paf ça reboot.

    Dans le même ordre d'idée, il y a le "Brownout detector" pour gérer les instabilités d'alimentation.

  • # Évacuation du gaz

    Posté par  . Évalué à 2.

    Très intéressant. Je viens juste d'en installer une très similaire et je ne m'inquiétais pas du tout de ces problèmes… J'ai un tuyau d'évacuation des gaz qui sort de la cuve vers l’extérieur. Je ne sais pas si tu en as un mais j'imagine que ça limite la concentration du gaz. Comme il semble plus lourd que l'air cela ne sert peut-être pas beaucoup. Va falloir que je m'en préoccupe, j'ai l'impression…

    • [^] # Re: Évacuation du gaz

      Posté par  . Évalué à 2.

      oui ça sert plutôt d'event, pour éviter d'aspirer l'air par les siphons et de les vider tous cela lors de la vidange de la cuve.

      • [^] # Re: Évacuation du gaz

        Posté par  (site web personnel) . Évalué à 1.

        Une autre solution serait de maintenir un biofilm d'épuration dans la cuve, qui (commencerait à) consommer les matières en phase aérobie, plutôt qu'anaérobie et donc avec émission de H2S. Bon, pour que ça marche, il faut oxygéner le milieu, et ça devient corrosif aussi, un peu moins. J'avais testé un système de dépollution de ce genre au boulot : https://intendancezone.net/spip.php?article521

        Intendant, donc méchant, mais libre !

  • # Super intéressant !

    Posté par  . Évalué à 1.

    J'ai un peu le même système mais pour l'eau de pluie (pas de problème de gaz).
    Au lieu de mettre la pompe immergée à l'intérieur, elle est à l'extérieur en haut de la cuve. Ca évite les problèmes de corrosion. Par contre on ne peut évidemment pas vider entièrement la cuve sinon ça désamorce…

    J'attends avec impatience ton retour sur les plantage de l'ESP. J'ai eu un problème similaire ou l'activation d'un relai faisait redémarrer l'ESP. J'ai évidemment pensé à une histoire d'EMP mais n'ai pas trouvé de solution…

    • [^] # Re: Super intéressant !

      Posté par  (site web personnel) . Évalué à 3.

      J'ai évidemment pensé à une histoire d'EMP mais n'ai pas trouvé de solution…

      euh, vraiment une EMP   ?!
      ya une centrale nucléaire qui a explosé près de chez toi !? (on nous cache tout ! on nous dit rien ! :p)

  • # Pompe de relevage après fosse

    Posté par  (site web personnel) . Évalué à 1.

    J'ai également une pompe de relevage mais à la sortie d'une fosse toutes eaux donc je n'ai pas de problème au niveau des boues, le liquide rejeté étant très clair (les boues restent dans la fosse).

    L'avantage est que la pompe utilisée est beaucoup moins chère, une centaine d'euros max. Mais ça ne l'empêche pas de tomber en panne aussi… ce qui m'est arrivé l'année dernière. Bon ça se voit assez vite, car le caca déborde sur la pelouse, mais évidemment ça arrive toujours un dimanche.

    Point d'Arduino, j'ai juste une pompe de rechange.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.