Humidity control tijdens douchen in Domoticz

Afgelopen week heb je een artikel kunnen lezen hoe je de mechanische ventilatie vanuit Domoticz kunt bedieningen. Nu gaan we een stapje verder: het ventilatie-systeem moet automatisch aan gaan, zodra de luchtvochtigheid binnen een enkele minuten een paar procent omhoog gaat: humidity control. Dit is bijvoorbeeld het geval tijdens het douchen. Hiervoor moeten we een temperatuur- /luchtvochtigheidssensor in de badkamer plaatsen.

Benodigdheden

Vochtigheidssensor

We gaan een LUA-script gebruiken welke hoeveel het percentage van de luchtvochtigheid is gestegen in een bepaalde periode. Uiteraard hebben we daar een temperatuursensor voor nodig die ook de luchtvochtigheid aangeeft én compatible is met RFXCom. De sensor hoeft niet geijkt te zijn, aangezien het werkelijke percentage niet van belang is: voor het douchen is de luchtvochtigheid X, tijdens het douchen loopt dat op naar Y en uiteindelijk moet het script ervoor zorgen dat de luchtvochtigheid weer zo snel mogelijk X is. Deze sensor van een euro of 7 voldoet prima!

User Variables

Allereerst dienen we een aantal gebruikersvariabelen aan te maken: SETPU > MORE OPTIONS > USER VARIABLES. Maak onderstaande variabelen aan (wijzig de naam niet en zet de waarde op “0” !).

  • humCounter (type=integer, value=0)
  • humidityTmin5 (type=integer, value=0)
  • humidityTmin10 (type=integer, value=0)
  • targetFanOffHumidity (type=integer, value=0)
  • fanMaxTimer (type=integer, value=0)
  • fanFollowsProgram (type=integer, value=0)

Humidity control script

Hieronder vind je het script dat we gaan gebruiken. Sla dit script op met de naam script_time_humidity.lua in de folder /home/pi/domoticz/scripts/lua/. Het script zal nu automatisch iedere minuut draaien. In regel 11 zet je de switch-naam van jouw ventilatie systeem en in regel 12 de naam van de temperatuur-/luchtvochtigheidssensor.

Werking van het script: Iedere 5 minuten wordt de luchtvochtigheid gemeten. De laatste twee meting worden in de gebruikersvariabelen (humidityTmin5 en humidityTmin10) opgeslagen. De metingen van de laatste 10 minuten zijn dus bekend. Vervolgens wordt de laagste van de twee waarden vergeleken met de nieuwste meting en wordt het verschil berekend. Indien het verschil 3 of meer is dan zal het ventilatiesysteem aangezet worden het het ‘luchtvochtigheidsdoel’ berekend worden. Vanaf nu wordt iedere 5 minuten de huidige luchtvochtigheid vergeleken met het doel. Zodra dit doel bereikt wordt zal het ventilatiesysteem weer uitgaan.

Uiteraard is het mogelijk dat het doel nooit gehaald wordt (bv. als het buiten gaat regenen). Daarvoor zit er een failsafe (FAN_MAX_TIME) ingebouwd, het ventilatiesysteem zal na deze tijd automatisch uitgaan. Ook zal het script zien wanneer het ventilatiesysteem handmatig is aangezet, voordat het programma start of als het uitgezet wordt tijdens het programma.


 

38 gedachten over “Humidity control tijdens douchen in Domoticz

  • 30 september 2018 om 09:45
    Permalink

    Ik ben een noob met Lua en bovenstaande kreeg ik met blocky niet voor elkaar. Ik zat nogal te stoeien met tijden en vaste vochtigheidpercentages.
    Dit script (samen met de script van gecombineerde sensor) is precies wat ik nodig had. Nu gaat de MV veel sneller aan en weer uit en ben daarom zeer blij dat jij jouw project wilde delen.

    Ik gebruik de Everspring ST814 Temperature and Humidity Sensor.

    Heel erg bedankt.
    Ik houd je website en projecten in de gaten.

    Beantwoorden
  • 12 januari 2019 om 17:29
    Permalink

    Hallo Joost,

    Ben al een paar dagen aan het pielen met dit script en het wil maar niet lukken.

    Als ik de douche aanzet springt hij netjes aan en zie je ook in de variabelen het vochtgehalte netjes oplopen. Maar het duurt echter geen 5 minuten om T5 of T10 te vullen met waarden. Deze komen er meteen in. Wat ik dan wel zie terwijl de afzuiging aan is is targetFanOffHumidity bijvoorbeeld 35, maar als de douche uit gezet wordt dan springt deze na minder dan 1 minuut op 0.

    Hij springt dus tijdens het douchen al meerdere malen uit en weer aan en dat terwijl het vochtgehalte steeds oploopt of gelijk blijft.

    Ik heb al door het hele script gelopen en heb dit 1 op 1 overgenomen en alleen mijn FAN en SENSOR erin gezet. Ben wel al met de waarden 5 en 24 aan het spelen geweest, maar ook daarmee blijft het gelijk.

    Heb jij een oplossing hiervoor?

    Beantwoorden
    • 13 januari 2019 om 23:10
      Permalink

      Het is al in orde. Has dit LUA script in Domoticz gebruikt op mijn Synology en moest dus bij de dropdown Time selecteren i.p.v. All.

      Weet niet of je dit op de Pi ook moet instellen om te laten werken, maar heb er even geen liggen waar Domoticz op staat dus dat heb ik niet kunnen testen.

      Probleem is dus hiermee opgelost. Stom dat ik het over het hoofd gezien heb. Misschien wel handig om dit in je artikel te vermelden zodat anderen hier ook wat aan hebben.

      Script werkt dus perfect en een bedankje hiervoor lijkt me wel op zijn plaats.

      Bedankt Joost.

      Beantwoorden
  • 30 mei 2019 om 21:07
    Permalink

    Hi Joost,

    Probeer dit met Domoticz op de Synology met een Sonoff.
    Uit voorzorg eerst “droog” getest.
    Schakelt bij RV+3% binnen vijf minuten.

    Nu op zoek naar een goede buisventilator en bedenken waar ik de sensor ga plaatsen.
    Ik ga testen met een bypass (een Y-stuk op zijn kop) in de buis boven het plafond, dan kan ik de sensor, de Sonoff en de fan makkelijk bereiken en onderhouden op de verdieping erboven.

    Beantwoorden
  • 2 oktober 2019 om 10:08
    Permalink

    Ik krijg de volgende foutmelding:

    Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_time_humidity.lua: /home/pi/domoticz/scripts/lua/script_time_humidity.lua:75: bad argument #1 to ‘min’ (number expected, got nil)

    Beantwoorden
    • 3 oktober 2019 om 07:14
      Permalink

      Controleer of de user variable humidityTmin5 en humidityTmin10 goed zijn aangemaakt.

      Beantwoorden
      • 3 oktober 2019 om 09:07
        Permalink

        Ik heb het allemaal gekopieerd dus ziet er normaal uit.
        2019-10-03 09:00:00.271 Status: LUA: Current humidity:62
        2019-10-03 09:00:00.271 Status: LUA: targetFanOffHumidity:0
        2019-10-03 09:00:00.271 Status: LUA: humidityTmin5: 0
        2019-10-03 09:00:00.271 Error: EventSystem: in script_time_humidity.lua: [string “commandArray = {} …”]:51: attempt to concatenate global ‘humidityTmin10’ (a nil value)

        Beantwoorden
  • 10 februari 2020 om 20:51
    Permalink

    Als hij bij mij op humcounter 4 is, krijg ik in het log een melding en ook al is de juiste vochtigheidsgraad bereikt gaat hij niet meer uit en loopt het script ook niet meer elke minuut.
    /home/pi/domoticz/scripts/lua/script_time_humidity.lua: /home/pi/domoticz/scripts/lua/script_time_humidity.lua:153: attempt to compare number with nil

    soms ook op regel 119

    Beantwoorden
    • 10 februari 2020 om 20:55
      Permalink

      correctie : regel 119 is het .
      if (fanMaxTimer > 0) then
      — possible that someone started the ventialator manually
      fanMaxTimer = fanMaxTimer – 1
      end

      Beantwoorden
    • 13 december 2020 om 17:26
      Permalink

      Ik heb nu hetzelfde probleem . Hoe heb jij dat opgelost?

      Beantwoorden
  • 23 maart 2020 om 20:26
    Permalink

    Vandaag domoticz geupdate naar (stable) versie 2020.1. Na de update krijg ik een foutmelding in mijn log van domoticz:
    2020-03-23 19:49:00.573 Error: EventSystem: Error updating variable humidityTmin5: Not a valid integer

    Enig idee wat hier het probleem zou kunnen zijn?

    gr

    Beantwoorden
  • 1 april 2020 om 17:28
    Permalink

    Ik krijg een foutmelding in regel 60 [string “commandArray = {}…”]:60: ‘)’ expected near ‘;’
    Regel 60: if (humCounter >= SAMPLE_INTERVAL) then

    Waar gaat het niet goed?

    Beantwoorden
    • 2 april 2020 om 12:46
      Permalink

      Het blijkt dat met knippen/plakken de code niet goed is meegenomen ipv het > teken komt er &gt: in de code te staan. Nu wel het probleem dat de humidityTmin5 en 10 “not a valid integer” zijn. Ik heb domoticz ook geupdate naar 2020.1

      Beantwoorden
    • 30 augustus 2020 om 18:54
      Permalink

      Ik heb dit ook met Blockly geprobeerd maar hij schakelde gewoon niet in.

      Nu met dit script schakelt hij wel in als je even onder de douche staat maar hij schakelt veel te snel weer uit. Net was hij al uit en ging de luchtvochtigheid nog van 91% naar 92%.

      Wat is er mis?

      Beantwoorden
  • 2 april 2020 om 19:01
    Permalink

    Vanuit het “Domoticz version 2020.1 released (Stable)” forum is er antwoord gegeven op het “not a valid integer probleem”.

    Looking at this source and the error message it looks like the domoticz uservariable is defined as integer and the script expects it to be string.
    Can you check how the uservariables are set in domoticz ?

    Met deze aanpassing geen fouten meer gezien.

    Beantwoorden
  • 3 april 2020 om 11:04
    Permalink

    Hallo,
    Ik heb het dezelfde probleem,
    2020-04-03 10:58:37.375 Error: EventSystem: Error updating variable humidityTmin5: Not a valid integer
    2020-04-03 10:58:37.376 Error: EventSystem: Error updating variable humidityTmin10: Not a valid integer

    wat ik kan vinden is..
    Try changing humidityTmin5 to math.floor(humidityTmin5) in the line where you get this error.

    ik krijg geen line nr. door dus weet niet wat ze bedoelen.

    van welke site heb jij dit probleem opgelost?
    mvg Erwin

    Beantwoorden
    • 3 april 2020 om 21:38
      Permalink

      Hi,

      De gebruiksvariabelen Tmin5 en Tmin10 zijn gemaakt als type “integer”. Als je deze verander naar “string” dan werkt alles weer.

      Beantwoorden
      • 13 april 2020 om 10:24
        Permalink

        Hi Remelco,

        Zou je een deel van het script (of desnoods het hele script) kunnen plaatsen want ik heb geen idee hoe ik dit moet aanpakken?

        Bij voorbaat dank!

        Beantwoorden
        • 14 april 2020 om 16:46
          Permalink

          Diederik,

          Het is het script als zoals beschreven aan het begin van dit Topic.
          Hier staat ook beschreven hoe je een user variabele aanmaakt.

          User Variables

          Allereerst dienen we een aantal gebruikersvariabelen aan te maken: SETPU > MORE OPTIONS > USER VARIABLES. Maak onderstaande variabelen aan (wijzig de naam niet en zet de waarde op “0” !).

          humCounter (type=integer, value=0)
          humidityTmin5 (type=integer, value=0)
          humidityTmin10 (type=integer, value=0)
          targetFanOffHumidity (type=integer, value=0)
          fanMaxTimer (type=integer, value=0)
          fanFollowsProgram (type=integer, value=0)

          Echter moet humidityTmin5 en humidityTmin10 het type= string zijn (en niet meer integer zoals hierboven beschreven)

          Beantwoorden
          • 3 mei 2020 om 11:19
            Permalink

            Werkt perfect, dank je wel!

        • 15 april 2020 om 16:04
          Permalink

          Ik had hetzelfde probleem. Het script heb ik gelaten voor wat het was maar ik heb in Domoticz onder Setup –> More options –> User variables de humidityTmin5 en humidityTmin10 veranderd naar “string” Deze stonden op “integer”.
          Hiermee werkt het weer.

          Beantwoorden
  • 13 december 2020 om 15:04
    Permalink

    Ik heb een nieuwe NAS. Programma opnieuw in Domoticz gezet. Echter komt nu foutmelding “attempt to compare number with nil” in beeld.
    Iemand een idee hoe ik dit kan oplossen?

    Beantwoorden
  • 9 januari 2021 om 07:33
    Permalink

    Hallo, hier ook een Domoticz fan zonder al teveel skills vwb LUA 🙂
    Een vraagje:
    Ik had ruim voordat ik aan Domoticz begin zelf al een KAKU gemaakt op miujn centrale afzuiging, dus ik heb momenteel een switch binnen Domoticz die gewoon AAN of UIT kan. (Bij AAN gaat de afzuiging op stand 3, bij UIT gaat de afzuiging op stand 1).

    Voor de de duidelijkheid:
    Ik heb een sensor besteld (de TFA Dostmann 30.3139) en wil deze koppelen en gebruiken met een script. Wat ik dus wil: Automatisch AAn en UIT als de luchtvochtigheid hoog is (grens bij 55%, want als ik een paar dagen niet douche is het altijd zo rond de 50% a 52%, bij douchen loopt het op tot 99% (verder kan de sensor niet die ik nu even gebruik om die waardes te bekijken).

    Kan ik het script van hier daarvoor gebruiken?
    Omdat mijn switch de naam ‘Afzuiging’ heeft zal ik waarschijnlijk de naam bijvoorbeeld al moeten aanpassen? En wss ook wel een wijziging in de standen (fan1, fan2 en fan3 want dat heb ik niet).

    Hopelijk heeft iemand advies, thanks!

    JP

    Beantwoorden
  • 10 januari 2021 om 12:04
    Permalink

    Beste JP

    Ook ik maak gebruik van Kaku om de afzuiging te schakelen. En idd ook geen echt “Lua”scripter. Hetgeen ik hier schrijf staat kan dan ook niet tippen aan het script maar werkt redelijk.
    Het geeft je in elk geval wat tijd om met het script te experimenteren.

    Even vooraf
    Vocht varieert in mijn huis tussen de 50-60% met af en toe een uitschieter
    Badkamer bij douchen of badderen komt makkelijk boven 75%.

    Via blockly een routine aangemaakt die in het kort op het volgende neer komt.
    Afzuiging gaat aan bij “licht aan”
    Afzuiging gaat aan bij “vocht >70%”
    Afzuiging gaat automatisch “uit na 60min” (en dus weer aan als vocht te hoog is)

    Nadeel van dit “blockly”
    Ook als je het licht 2 seconden aan hebt blijft je afzuiger 60min draaien.
    Als je huis boven 70% komt blijft het draaien.
    Houdt geen rekening met vochtigheid in huis.
    Er is geen echt commando “Afzuiging Uit”

    Neem in elk geval de trigger “vocht” ruim, met 2-3% verschil met normaal staat het ding de hele dag te “klapperen”.

    Succes

    Beantwoorden
  • 10 januari 2021 om 15:02
    Permalink

    Hallo Henk, dank voor je reactie!
    Ik zal even kijken wat ik er precies van ga bakken, zal een combi worden van meerdere scripts.
    Liefst gewoon een Blockly die zegt: “als de luchtvochtigheid hoger is dan 55% ga dan aan, totdat de luchtvochtigheid weer 55% is”.

    Wacht nog even op de sensor en ga dan testen.
    Hoop dat ik gewoon met blockly dat >55% kan gebruiken, de rest is niet nodig.
    Kan binnen Domoticz sowieso iedere switch eenvoudig timen, dus gaat uit na bv 2 uur etc, dat zit wel goed.

    Vraag me af wat in de praktijk gebeurt als ie de waardes vergelijkt en hoe vaak hij aangaat (en hoe lang).

    Ik monitor de percentages al een tijdje en na ca 1,5 tot max 2 uur is het altijd weer

    Gr J.P

    Beantwoorden
  • 20 januari 2021 om 19:05
    Permalink

    Hallo, kan iemand mij een lucjtvochtigheidsensor adviseren die 100% werkt binnen Domoticz?
    Ik heb nu al de 2e TFA geprobeerd, maar beide worden niet gevonden binnen de apparaten.
    Probeer het nu met het model: TFA Dostmann 30.3221.02 Combisensor Draadloos 433 MHz

    (zie: > https://www.conrad.nl/p/tfa-dostmann-30322102-combisensor-draadloos-433-mhz-1642587 )

    Of doe ik iets fout?

    Heb binnen Domoticz het ‘toelaten gedurende 5 minuten’ aangevinkt.

    Alles tips zijn welkom!

    Beantwoorden
  • 22 januari 2021 om 20:20
    Permalink

    EDIT:

    Volgens de online verkoper (winkel) zou dit model moeten werken…we gaan het zien komende dagen > “BR-7009993 Thermo Hygro sensor” (Zal de uitkomst nog even posten tzt)

    Beantwoorden
  • 26 januari 2021 om 16:31
    Permalink

    zo, een update:

    Heb uiteindelijk deze sensor gekocht:

    https://weerhuisje.nl/nl/accessoires/bresser/br-7009993-thermo-hygro-sensor/a-14808-10000095

    Met dit LUA-script de luchtvochtigheid gesplitst van de temperatuur

    https://ehoco.nl/gecombineerde-sensor-in-domoticz-splitsen/

    Een een Blockly gemaakt met:

    Als luchtvochtigheid = >55% > afzuiging AAN
    Als luchtvochtigheid = afzuiging UIT

    Heb een maand de luchtvochtigheid bijgehouden, is op zn laagste 45%, loopt zeer snel op bij douchen tot einde bereik vd sensor (99%). Prima als ie rond de 55% weer stopt.

    Nu testen met waardes, maar veel makkelijker dan de LUA’s die ik zag en foutmeldingen gaven 🙂

    Beantwoorden
  • 11 maart 2021 om 14:54
    Permalink

    super mooi dat dit kan maar helaas ben ik al een paar dagen aan het rommelen met deze foutmelding: Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_time_humidity.lua: attempt to compare number with nil

    Script gekopieerd en zoals in eerdere reacties humidityTmin5 en humidityTmin10 het type= string zijn (en niet meer integer zoals hierboven beschreven) aangepast. Toch veranderd de waarde humCounter elke keer naar 4.
    Huidige setup die ik gebruik:
    Raspberry met Domoticz 2020.2 (build 13058)
    Sonoff TH16 6.6.0(release-sonoff)

    De Sonoff zou moeten schakelen tussen uit/aan geen stand 1,2 of 3

    Iemand een idee hoe ik dit aan de gang krijg

    Beantwoorden
  • 25 maart 2021 om 18:25
    Permalink

    Script werk perfect. Was alleen benieuwd of het ook aangepast kan worden met 2.standen op de ventilator.

    Beantwoorden
  • 10 april 2021 om 08:31
    Permalink

    Mogguh, toch nog een vraagje;

    Als ik wil dat de afzuiging wat gevoeliger wordt, dus eerder aangaat.
    Wat kan ik het beste wijzigen?

    SAMPLE_INTERVAL = 5 > deze tijd verkorten naar bv 3 minuten?!
    FAN_DELTA_TRIGGER = 3 > deze waarde verlagen naar bv 2 zodat het verschil in waarde X – Y kleiner hoeft te zijn voordat eea getriggerd wordt?

    Of een combi van beide waardes?
    Ik ga er nu even mee testen, maar hoor graag wat wijsheid is.

    Greetz

    Beantwoorden
    • 10 april 2021 om 11:00
      Permalink

      Bij mij is fan delta niet zo belangrijk want bij douchen gaat hij toch ineens >10/20 of zo. Zou dan inderdaad de tijd verkorten.

      Beantwoorden
      • 10 april 2021 om 19:52
        Permalink

        De fan_delta geeft bepaald het verschil tussen aan en uit.
        Als je dit verschil te klein maakt (bv 1) dan zou de fan bijvoorbeeld op 51% aan gaan om op 50% weer uit te gaan.
        Met een delta=3 zou dit 54 aan en 50 uit zijn.

        Je wilt (denk ik niet dat de ventilatie al aan gaat als je heet water pakt waardoor de vochtigheid slechts 1 of 2 % stijgt.

        Wil je het systeem sneller laten reageren dan kun je het beter vaker laten testen.
        Dit doe je door de interval kleiner te maken.

        Ps.
        Delta 3 is overigens geen 3% maar dat heb ik even als voorbeeld gebruikt

        Beantwoorden
  • 10 april 2021 om 22:20
    Permalink

    Thanks! Heb de SAMPLE-INTERVAL verlaagd naar 3 en merkte tot twee keer toe dat ie an na 2 minuten douchen aansprong. Helemaal top!

    Beantwoorden
  • 11 april 2021 om 06:49
    Permalink

    PS Zie wel dat ik altijd bij het aangaan (alleen bij AAN) van de fan een foutmelding krijg; is dit omdat hij dan nog geen referentiegetal heeft of iets dergelijks?

    Dit is de melding:

    “EventSystem: Error updating variable targetFanOffHumidity: Not a valid integer”

    Beantwoorden
  • 1 november 2021 om 13:04
    Permalink

    een korte vraag:
    Soms duurt het best lang voordat de afzuiging aangaat, nu is het wel binnen 5 minuten, maar ik merk dat ik het fijner vind als hij al aanstaat bij de start van het douchen.
    Als ik nu handmatig de fan aanzet, wat doet het script dan?
    Er staat het volgende in het script:

    else
    if (fanMaxTimer > 0) then
    — possible that someone started the ventialator manually
    fanMaxTimer = fanMaxTimer – 1
    end

    Hoe moet ik dit lezen?
    Kan ik dit doen en gaat het script dan vervolgens gewoon netjes meten, ondanks het feit dat de fan al aan is? Niet dat ik hem overrule en dat het script stopt zeg maar.

    Beantwoorden

Laat een antwoord achter aan Diederdik Reactie annuleren

Het e-mailadres wordt niet gepubliceerd.