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.


 

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

Geef een reactie

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