Slimme waterontharder “Salt”

Last Updated on 30 augustus 2024 by Syds

Sommige waterontharders zijn al slim, en sturen een notificatie wanneer het zout bijgevuld moet worden. Die van mij is totaal niet slim, dus met enige regelmaat vergeet ik tijdig het zout bij te vullen. En dan heeft die dure waterontharder totaal geen functie. Een leuk projectje om een “dom” apparaat slimmer te maken.

Mijn waterontharder is een E-duo compact van Amysoft. Deze bestaat uit twee gescheiden componenten, een zoutreservoir (links) en harstank (rechts).

Om het zoutreservoir bij te vullen kun je het deksel van het zoutreservoir afnemen. Hier staat geen waterdruk op, het reservoir functioneert ook prima zonder deksel. Mijn plan is om in dit deksel een gaatje te boren, hier een afstandssensor met een Wemos D1 mini op te bevestigen, en op die manier de afstand van deksel tot zoutvoorraad te meten.

Deze meetgegevens worden doorgegeven naar een virtuele afstand sensor in Domoticz van waaruit vervolgens een notificatie wordt verstuurd zodra de gemeten afstand groter is dan de diepte van het zoutreservoir + een marge van 3 tot 5 cm.

Onderdelenlijst

AantalOnderdeelTe bestellen bijKosten
1Wemos D1 miniwww.aliexpress.com€ 2,75
1vl53l0x of vl6180x ToF Sensormodulewww.bitsandparts.nl€ 3,95
28-pins male headerUit voorraad
16-pins female stackable headerUit voorraad
16-pins male headerUit voorraad
28-pins female headerUit voorraad
12-pins male headerUit voorraad
1Optioneel: 2-pins jumperUit voorraad
12-pins screwterminalUit voorraad
1PCBwww.nextpcb.com$ 10,55 (per 5)
20cmDubbelzijdig klevende tapeUit voorraad
15v voedingUit voorraad
26 gramPLAUit voorraad

Keuze afstandssensor:

Het zoutreservoir van mijn E-duo compact is 36,5cm diep. Proeven met de vl6180x afstandssensor, die volgens de datasheet tot 100mm de afstand zou kunnen meten, maar volgens div. websites tot 200 en zelfs tot 300mm, leverden bij mij maximale afstanden tot 170mm op. Voordeel van de vl6180x is dat deze begint te meten bij 0mm, en tot 10cm zeer nauwkeurig is. Dus mocht de diepte van je zoutreservoir pak hem beet onder de 200mm liggen, kies dan voor de vl6180x. Ik heb gekozen voor de vl53l0x, volgens de datasheet kan deze nauwkeurige metingen doen van 50 tot 1200mm. Omdat je toch nooit het zoutreservoir zover vult dat het deksel er niet meer oppast is de onnauwkeurigheid onder de 5cm geen probleem. Gezien het zout wit is, heb je een goede reflectie en accurate metingen. Saillant detail is dat de SDA en SCL pins van de vl53l0x en vl6180x net omgedraaid zitten, gelukkig is dat softwarematig te ondervangen.

Benodigdheden:

  • Soldeerbout met tin
  • Boormachine met 6mm boortje en piramideboor
  • 3D printer
  • Stanley mes of schaar

Stap 1. Domoticz configureren

We voegen eerst een virtuele sensor toe aan Domoticz. Kies voor Instellingen, Hardware en op de regel “Virtuele devices” voor “Maak virtuele sensoren”:

Het volgende scherm verschijnt:

Geef de virtuele sensor een logische naam, bijvoorbeeld “Zout niveau Waterontharder” en als Sensor Type “Afstand”, en klik op OK:

Kies in het hoofdmenu van Domoticz voor het tabblad “Overige”, en zoek de virtuele sensor op die je net aangemaakt hebt. Klik op “Aanpassen”, het volgende scherm verschijnt:

Pas de Weergave aan naar “Centimeters”. Noteer het IDX-nummer voor de volgende stap, in mijn geval dus 336. En klik op “Aanpassen”. Je keert terug naar het overzicht met je sensors, klik nu op de knop “Notifications” van je virtuele sensor, het volgende scherm verschijnt:

Configureer het volgende, de rest blijft default:

AttribuutWaarde
WanneerMinder of Gelijk
Waarde5
Aangepast berichtZout waterontharder bijvullen

Zet al niet actieve systemen uit. Raadpleeg de Domoticz handleiding hoe je email, pushsafer of andere notificatie systemen kunt configureren. Mijn instellingen zien er dan als volgt uit:

Klik op Toevoegen. Dit zorgt ervoor dat je een notificatie krijgt wanneer het niveau van je zoutvoorraad in de waterontharder lager of gelijk is aan 5cm. Wil je eerder of later een notificatie ontvangen, verander dan het niveau door de “Waarde” hoger of lager te zetten.

Je bent klaar met het configureren van Domoticz.

Stap 2. Micropython flashen op Wemos D1 mini en installatie python-code

Flash Micropython op de Wemos D1 mini conform mijn blog “MicroPython flashen op Wemos D1 mini“.

Installeer ampy.py middels het DOS-commando: pip install adafruit-ampy

Download de source code van “salt.py” hier: <link nog toevoegen>, en unzip de bestanden op je laptop/desktop.

Open je favoriete editor (bijv. kladblok) en open de file “config.py”. Verander hierin minimaal de waarden van heightBin, DOM_Host, SensorIDX, wlan_id en wlan_pass naar de waarden van je eigen configuratie en apparaat en sla op. Hieronder een korte toelichting op de settings:

SettingDefault waardeToelichting
sampleFreq86400Frequentie dat er een meting wordt gedaan in seconden, default van 86400 is één keer per dag een meting
heightBin30.0Hoogte van je zoutreservoir in cm, met 1 decimaal achter de komma
sensorTypevl53l0xVul afhankelijk van je gekozen TOF senor hier vl53l0x of vl6810x in
offSet0.5Afstand tussen lens afstandsensor en onderkant van deksel zoutreservoir, in cm
DOM_Host<ip-address or FQDN>Vul hier het IP-address of FQDN van je Domoticz Server in
DOM_Port8080Pas hier eventueel het poortnummer van je Domoticz server aan, de defaultwaarde is 8080
DOM_username“”Als je de toegang tot Domoticz beveiligd hebt, vul hier de username in welke je de virtuele sensor wilt laten bijwerken, laat leeg als je de toegang tot Domoticz niet hebt beveiligd.
DOM_password“”Als je de toegang tot Domoticz beveiligd hebt, vul hier het password in van de user welke je de virtuele sensor wilt laten bijwerken
SensorIDX<IDX>Vul hier het IDX-nummer van je virtuele sensor in die je in Stap 1. hebt aangemaakt
wlan_id<SSID>Vul hier het SSID in van je 2.4Ghz WiFi netwerk
wlan_pass<wlan_secret>Vul hier het wachtwoord in van je 2.4Ghz WiFi netwerk

Open de opdrachtprompt door in je zoekbalk cmd.exe in toetsen. Ga naar de directory waarin je de files geunzipped hebt en installeer de bestanden op de Wemos D1 mini met behulp van:

install <com-poort>

verander <com-poort> in de com-poort waarop je de Wemos D1 mini hebt aangesloten, dus bijvoorbeeld als de Wemos D1 mini op com-poort 6 is aangesloten:

install com6

De software wordt nu naar je Wemos D1 mini gekopieerd en na reboot automatisch gestart.

Stap 3. Assembleer de PCB

Bestel de PCB bij je favoriete (chinese) PCB fabrikant, de Eagle & gerber files kun je hier downloaden:

FileDownload link
Eagle Schema filehttps://drive.google.com/file/d/1PgOeWsHSpNU_Rs1SfrT5Zg39x7m2QqeW/view?usp=drive_link
Eagle Board filehttps://drive.google.com/file/d/19sTYa5JcgYccmwE3t0Dt4bPgEbdeSjDn/view?usp=drive_link
Gerber fileshttps://drive.google.com/file/d/1UsqOn1BmsWwM27XZgrmxBCrOFG4VsUsC/view?usp=drive_link

De PCB ziet er als volgt uit:

Benodigd:

  • 1x Wemos D1 mini
  • 2x 8-pins male header
  • 1x vl53l0x of vl6810x afstandsensor
  • 1x 6-pins male header
  • 2x 8-pins female header
  • 1x 6-pins female header
  • 1x 2-pins male header
  • 1x 2-pins screwterminal
  • 1x PCB
  • optioneel: 1x 2-pins jumper

Soldeer de 2 8-pins male headers op de Wemos D1 mini. Soldeer de 6-pins male header op de afstandsensor. Soldeer vervolgens alle resterende headers en screwterminal op de PCB, wat waar komt wijst zich zelf. Indien je de vl53l0x gebruikt, plaats dan de stackable female header iets hoger op de PCB, ongeveer 5mm tussen PCB en header. Druk de Wemos D1 mini en afstandsensor op de PCB. Het eindresultaat ziet er dan zo uit:

Note: Mijn plan is om na het doen van een meting de Wemos D1 en sensor in deepsleep modus te laten gaan, en 1x per dag door de RTC chip te laten wekken en een nieuwe meting uit te laten voeren. Dit om de power consumptie zo laag mogelijk te houden. Heb deze functionaliteit zowel in de hardware als software ingebouwd, maar nog niet getest en geïmplementeerd. Hardware matig heb ik een jumper geplaatst tussen de GPIO14 (D5) van de Wemos en de XSHUT pin van de sensor, dit om “vreemd” gedrag tussen de Wemos D1 mini, software en de sensor te voorkomen. Maar hierover later meer.

Stap 4. Casing printen

Heb m.b.v. FreeCad een casing met deksel voor de PCB ontworpen

De CAD en STL bestanden zijn te downloaden:

BestandDownload link
CAD bestandhttps://drive.google.com/file/d/19zUfTtpYklXwX-PJKXdb6pvcBmXrVGSj/view?usp=drive_link
Salt-Casehttps://drive.google.com/file/d/1ybyfFF18K5719xwqWLLyNO6hDHZfihe5/view?usp=drive_link
Salt-Lidhttps://drive.google.com/file/d/1K891MNpQDYIka7BXlJD47sdyT1Z7hlOB/view?usp=drive_link

Hieronder de onderdelen, printtijd, kleur en verbruik van PLA

OnderdeelKleurDoorlooptijd in minutenGramFile
CasingGrijs11918Salt-Case.stl
DekselGrijs468Salt-Lid.stl

Het eindresultaat:

Note: Alleen een casing ontworpen voor de vl53l0x sensor. Je kunt het bijgevoegde CAD bestand downloaden en zelf met behulp van FreeCAD een casing ontwerpen voor de vl6108x.

Stap 5. Montage op deksel zoutreservoir

In het midden van het deksel van het zoutreservoir m.b.v. een piramideboor een gat gemaakt van 6mm. De contouren van de casing, met het gat van de sensor boven het in het deksel geboorde gat, overgenomen m.b.v. een watervaste stift. Vervolgens op de randen van de onderkant van de casing de dubbelzijdige tape geplakt en de casing vastgeplakt op het deksel van het zoutreservoir.

Haal de draad van je voeding/transformator door het gaatje in de zijkant van de casing, en schroef deze vast op de terminal. Links is ground en rechts is 5v. Plaats nu de PCB in de casing.

Draai het deksel van het zoutreservoir om en meet m.b.v. een (digitale) schuifmaat de afstand van de lens van de sensor tot de onderkant van het deksel.

oplus_262176

In mijn geval bedroeg die afstand 8.8mm. Dit is je waarde voor de configuratie parameter “offSet”. Default staat deze op 0.5cm. Pas m.b.v. een editor de config.py file aan, en pas de configuratie parameter aan naar jou gemeten waarde. In mijn geval dus:

...
offSet       = 0.88             # Distance in cm between lens sensor and bottom lid watersoftener
...

Haal de PCB uit de casing en sluit middels een USB-kabel aan op je laptop/desktop. Upload de aangepaste config file m.b.v. ampy, pas <com-poort> aan naar jou toegepaste com poort:

ampy --port <com-poort> --baud 115200 put config.py

Plaats de PCB terug in de casing, en druk het 3D geprinte deksel op de casing. Plaats het deksel van het zoutreservoir terug op het zoutreservoir en doe de voeding/transformator in het stopcontact.

Resultaat in Domoticz:

Note: Betreft testdata

Voorbeeld uit PushSafer:

Eindresultaat:

oplus_262176

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *