pixel

Mechanische afzuiging met timer uitzetten Domoticz en Lua

0
(0)

Je wilt graag je douche netjes houden en je afzuiging niet uren en uren laten draaien zolang dit niet nodig is, ik schakel hem bijvoorbeeld uit met een klik aan klik uit wandcontactdoos. Nu kan je dit zelf doen maar dit kan je ook automatische uit laten schakelen. Dit gaat met een timer die je zelf in kunt stellen.

Mechanische afzuiging met timer uitzetten Domoticz en Lua 1

Om te beginnen ga je naar instellingen
en daarna ook instellingen
daarna klik je het knopje overige aan

Mechanische afzuiging met timer uitzetten Domoticz en Lua 2

Nu zal bijna onder aan het vakje DZEVENTS staan hier moet het vinkje voor staan. En nu moet je boven aan de pagina op Bewaar Instellingen drukken anders slaat hij het niet op.



Advertentie :


Het script en de behorende uitleg volgt hieronder:

Nu mag je weer naar instellingen gaan , daarna naar meer opties.
Daarna naar Gebeurtenissen.
En mag je op het plusje drukken. (plaatje is van pvoutput maar stappen zijn het zelfde)

Mechanische afzuiging met timer uitzetten Domoticz en Lua 3

Hier ga je naar DZEVENTS en dan Timer.
(dit zorgt er voor dat het script een aantal minuten gaat aftellen en dan de schakelaar om haalt en je een bericht via telegram krijgt wat er gebeurd)

Mechanische afzuiging met timer uitzetten Domoticz en Lua 4

En hier geef je aan welke gegevens je wilt gaan gebruiken, verander de tijden naar je eigen tijden welke je wilt gaan gebruiken.

       local klaarDelay = 30 -- tijd in minuten
        local OffDelay = 60 - klaarDelay -- tijd in minuten

Verander hier de naam van je Badkamer_afzuiging of een ander apparaat wat je automatische uit wilt laten schakelen en ook bij de andere plekken waar die naam staat.

local myDevicename = 'Badkamer_afzuiging'

[wpdm_package id=’6348′]

De Complete gebruikte code staat hieronder en na eigen instellingen veranderen.

Nu selecteer je onderstaande script en plakt deze er in :

--[[ Badkamer_afzuiging dzVents script time
     Script gedownload van huizebruin.nl
    Te gebruiken voor domoticz versie >= V4.11305
]]--
local myDevicename = 'Badkamer_afzuiging'
local myEvent = 'Badkamer'

return
{
    on =
    {
        devices =
        {
            myDevicename,           
        },
        customEvents =
        {
            myEvent,
        },
    },
   
    logging =
    {
        level = domoticz.LOG_DEBUG,  -- change to LOG_ERROR when ok
        marker = 'Badkamer_afzuiging',
    },

    execute = function(dz, item)
       
        local myDevice = dz.devices(myDevicename)
       
        local msgAan = 'De Badkamer_afzuiging is aangezet!'
        local msgKlaar = 'Het douchen is klaar om Badkamer_afzuiging na te laten draaien!'
        local msgWordt = 'De Badkamer_afzuiging staat nog aan en wordt nu uitgezet!'
        local msgUit = 'De Badkamer_afzuiging is uitgezet!'
      
        local klaarDelay = 30 -- tijd in minuten
        local OffDelay = 60 - klaarDelay -- tijd in minuten
       
       
        local function osCommand(cmd, foreGround)
            local foreGround = foreGround and '' or ' &'
            local cmd = cmd .. foreGround
           
            dz.log('Executing Command: ' .. cmd,dz.LOG_DEBUG)
           
            local fileHandle = assert(io.popen(cmd .. ' 2>&1 || echo ::ERROR::', 'r'))
            local commandOutput = assert(fileHandle:read('*a'))
            local returnTable = {fileHandle:close()}

            if commandOutput:find '::ERROR::' then     -- something went wrong
                dz.log('Error ==>> ' .. tostring(commandOutput:match('^(.*)%s+::ERROR::') or ' ... but no error message ' ) ,dz.LOG_DEBUG)
            else -- all is fine!!
                dz.log('ReturnCode: ' .. returnTable[3] .. '\ncommandOutput:\n' .. commandOutput, dz.LOG_DEBUG)
            end

            return commandOutput,returnTable[3] -- rc[3] contains returnCode
        end
       
       
        local function sendMQTT(message, topic)
            local MQTTTopic = topic or 'domoticz/out'
            local json = {} json.msg = message
            json = dz.utils.toJSON(json)
        
            osCommand ( 'mosquitto_pub' ..  ' -t '  .. MQTTTopic .. " -m '" .. json .. "'")
        end
       
        local function sendMessage(message, emitMinutes)
           
            local subject = (dz.moduleLabel or 'Badkamer_afzuiging'):gsub('#','')
            dz.notify(subject, message, dz.PRIORITY_MEDIUM, dz.SOUND_PERSISTENT, nil, dz.NSS_TELEGRAM)

            sendMQTT(message)
           
            dz.log(message,dz.LOG_DEBUG)
            if emitMinutes ~= nil then dz.emitEvent(myEvent, emitMinutes).afterMin(emitMinutes) end
            -- if emitMinutes ~= nil then dz.emitEvent(myEvent, emitMinutes).afterSec(emitMinutes) end -- for test only
        end
       
        if item.isDevice and item.state == 'On' then
            sendMessage(msgAan, klaarDelay)
                       
        elseif item.isCustomEvent and myDevice.state == 'On' and tonumber(item.data) == klaarDelay then
            sendMessage(msgKlaar, OffDelay)
           
        elseif item.isCustomEvent and myDevice.state == 'On' and tonumber(item.data) == OffDelay then
            myDevice.switchOff().silent()
            sendMessage(msgWordt)
           
        elseif item.isDevice and item.state == 'Off' then
            sendMessage(msgUit)
           
        end
    end
}

Deze sla je op als Badkamer_fan dzVents script
Nu druk je op AAN en daarna op OPSLAAN.

Mechanische afzuiging met timer uitzetten Domoticz en Lua 5

Nu zou je script moeten gaan lopen zodra je de schakelaar van je Badkamer_afzuiging hebt aangezet. .


( voor de test of het werkt kan je de tijd aanpassen naar een paar minuten later nadat je hem hebt aangezet )
Mits je dit verandert hebt.
check je log voor eventuele fouten

Zorg wel dat je telegram al hebt ingesteld zie ook
Zorg ook dat je al een schakelaar hebt met de naam Badkamer_afzuiging en deze al werkt.




Spelfouten, taalfouten of inhoudelijke fouten ontdekt?
Stuur dan een mailtje naar de auteur van dit artikel!

Tevreden met deze website?

Wat vond je van deze post?

Klik op een ster om deze te beoordelen!

Gemiddelde score 0 / 5. Aantal stemmen: 0

Tot nu toe geen stemmen! Wees de eerste die dit bericht beoordeelt.

Geef een reactie...

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.

6 gedachten over “Mechanische afzuiging met timer uitzetten Domoticz en Lua”

  1. Andere discussie wellicht, maar er zit niet voor niets geen uit knop op je mechanische ventilatie. Deze hoort altijd aan te staan. Iets met lucht kwaliteit in huis

    1. Hallo ralph.

      Bedankt voor je reactie.
      Hier zit hij alleen aangesloten op de douche en niet voor het gehele huis.
      vandaar dat hij soms uit staat.

  2. Ik meen vast te stellen dat dit script alleen gaat werken als je MQTT werkend hebt. Ik wil dat wel overwegen te gaan bouwen. Maar alleen als andere vraag ook helder voor me is…

    Verder zou ik willen weten of de timer ook verlengd wordt als er na de start van de eerste puls van sensor een nieuwe puls volgt bij latere beweging die door sensor wordt waargenomen en door Domoticz wordt geregistreerd. Dat is het probleem van mijn huidige script: als de eerste gebruiker 20 minuten gedouched heeft is de naloop nog 10 minuten. Als de volgende gebruiker dan 3 minuten doucht is de naloop nog maar 7 minuten. Timer wordt tussentijds niet gereset. Ik zou dan graag reset van timer willen zien. Maar ik kan dat in jouw script nergens terug vinden. Kun je daar iets over zeggen?

    1. Hallo Pieter,

      Persoonlijk ben ik overgestapt naar de Het maken van de auto off device domoticz. deze staat in het voorbeeld op een 45min, en dit is voldoende bij ons. ik schakel de afzuiging momenteel nog met een 433Mhz (klik aan klik uit) ontvanger. hij is bij ons dus aan of uit.
      zodra ik hem nu langer wil gebruiken zet ik hem zelf even uit en weer aan met de knop in domoticz of op de afstandsbediening.
      voordeel van dit script dat je hem bij meerdere apparaten kunt gebruiken.

    1. hallo Gertjan,
      Bedankt voor je aanvulling.
      Ik heb je link even aangepast naar de juiste link, kreeg 404 error’s.
      Mijn volgende idee was ook om een print te gaan maken met sensoren.
      Maar dit werkt voorlopig.

Winkelwagen
Scroll naar boven