Slimme waterontharder “Salt”

Last Updated on 16 november 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

Note 15-11-2024: Om Salt wat beter te kunnen beheren heb ik er voor gekozen om Tasmota te installeren op de Wemos D1 mini, zie ook Stap 2a. Dit werkt echter alleen in combinatie met de vl51l0x TOF sensor, voor de VL6180X is er geen driver beschikbaar binnen Tasmota. Daarom heb ik de MicroPython variant laten staan in stap 2b.

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:

AttribuutTasmotaMicropython
WanneerGroter of GelijkMinder of Gelijk
Waarde255
Aangepast berichtZout waterontharder bijvullenZout 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 2a. Tasmota flashen op de Wemos D1 mini en configureren

Let op !! Tasmota ondersteund de vl6180x TOF sensor niet, onderstaande methode werkt alleen met de vl51l0x TOF sensor waarvoor Tasmota een driver beschikbaar heeft.

Installeer Tasmota m.b.v. de webtool op https://tasmota.github.io/install/. Kies voor de Tasmota Sensors release, de rest wijst zich zelf dit inclusief het instellen van je WiFi SSID en Password.

Nadat je de WiFi hebt geconfigureerd en de Wemos geherstart is kom je het op hoofdmenu uit. Kies hier voor Configuration en daarna voor Configure module, het volgende scherm verschijnt:

Toelichting op niet default waarden:

AttribuutWaardeToelichting
Module typeGeneric (18)Verander deze waarde eerst en sla deze op, de wemos reboot en daarna kun je onderstaande waarden aanpassen
D2 GPIO4I2C SCLClock van Seriële bus
D1 GPIO5I2C SDASerial data
D5 GPIO14VL53LXX XSHUT 1Enable XSHUT (vergeet niet de jumper te plaatsen)

Save de aangepaste waarden en de Wemos reboot en je komt terug in het hoofdmenu. Kies hier wederom voor Configuration en daarna voor Configure WiFi. Het volgende scherm verschijnt:

Toelichting op niet default waarden:

AttribuutWaardeToelichting
WiFi NetworkSSID van je WiFi netwerkHeb je al aangepast na het flashen van Tasmota
WiFi PasswordPassword van je WiFi netwerkHeb je al aangepast na het flashen van Tasmota
HostnamesaltOf kies een andere herkenbare hostname

Save de aangepaste waarden en de Wemos reboot en je komt terug in het hoofdmenu. Kies hier wederom voor Configuration en daarna voor Configure MQTT. Het volgende scherm verschijnt:

Toelichting op niet default waarden:

AttribuutWaardeToelichting
Hostip-address of FQDN van je MQTT serverVul hier het ip-address of FQDN in van je MQTT server

Save de aangepaste waarden en de Wemos reboot en je komt terug in het hoofdmenu. Kies hier wederom voor Configuration en daarna voor Domoticz. Het volgende scherm verschijnt:

Toelichting op niet default waarden:

AttribuutWaardeToelichting
Sensor idx 5 Illuminance<idx>Vul hier het idx in van de Domoticz Zoutontharder sensor die je in stap 1. hebt aangemaakt

Save de aangepaste waarden en de Wemos reboot en je komt terug in het hoofdmenu. Kies nu voor Console Het volgende scherm verschijnt:

Type op de command regel de volgende commando’s, en bevestig ze stuk voor stuk met enter:

TelePeriod 3600
backlog i2cdriver16 0;i2cdriver40 0;i2cdriver31 1;i2cdriver54 0

Toelichting:
CommandoToelichting
TelePeriod 3600Zorgt er voor dat er iedere 3600 seconden (1 uur) een meting wordt gedaan
backlog i2cdriver16 0;i2cdriver40 0;i2cdriver31 1;i2cdriver54 0Disabled de TSL2561 (driver 16), TSL2591 (driver 40) en VL53L1X (driver 54) drivers en enabled de VL53L0X (driver 31)

Klik op Main Menu om terug te keren naar het Hoofdmenu, en reboot de wemos door op Reboot te klikken. Nadat de Wemos opnieuw opgestart is zie je de gemeten waarde van de VL53L0X sensor op het hoofdscherm:

Je bent nu klaar met Tasmota en kunt stap 2b overslaan.

Stap 2b. Micropython flashen op de 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: https://drive.google.com/file/d/1qfGHaxPTnLpMtX5vw9IXX2l3OrhnaFNT/view?usp=drive_link, 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

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