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.
Om te beginnen ga je naar instellingen
en daarna ook instellingen
daarna klik je het knopje overige aan
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.
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)
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)
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'
Badkamer_afzuiging dzVents-time-script.lua
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.
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.
bron huizebruin.nl
Een gedachte over “Mechanische afzuiging met timer uitzetten Domoticz en Lua”
Good day very nice blog!! Man .. Beautiful .. Superb ..
I will bookmark your web site and take the feeds also?
I am satisfied to seek out a lot of helpful info right here in the publish, we want develop extra
techniques in this regard, thank you for sharing. . . . .
.