Page 1 sur 1

'ON FOR' ne vas pas fort !

Publié : 15 févr. 2020, 21:13
par freulon9292
Bonjour,

j'ai un deux scripts qui lancent mon poele à bois via un relais sous tasmota. J'ai un soucis sur la durée de fonctionnement.
Que ce soit le lancement automatique via contrôle de la température, ou le lancement manuel via le déclenchement d'un pushbutton, le poele se lance, mais ne s'arrête jamais.

Pourtant, la fonction ON FOR devrait fonctionner.
Qu'est-ce que je rate ?


Code : Tout sélectionner

-- Declenchement manuel poele RIKA

local dureetimer = 30
local Rikadeclencheur = 'Tasmota 3 Rika'
local Rikaswitch = 'Tasmota 1a Rika'
local log = '*-*-* RIKA *-*-* '
local cmd = "tail -n 1000 /tmp/domoticz.txt |grep \'RIKA\'|sed 's/$/<BR>/'"

tc=next(devicechanged)
device=tostring(tc)


commandArray = {}

-- déclenchement manuel


if (device == Rikadeclencheur) then

print (log..'Poele Rika lancé manuellement pour une durée de '..dureetimer)
commandArray[Rikaswitch]='On FOR ' ..dureetimer

                                -- Envoi log par mail
                                local f = assert(io.popen(cmd,'r'))
                                local retourf = assert(f:read('*a'))
                                commandArray ['SendEmail'] = log..'#RIKA <BR>'..retourf..'#xxx@xxx'
end


return commandArray


Code : Tout sélectionner

-- Declenchement automatique poele RIKA

local log = 'oo Presence oo ->   '
local presence = 'Niveau_Presence_counter'
local time = os.time()
local tminutes=tonumber(os.date('%M',time))
local dureetimer = 90
local Rikaswitch = 'Tasmota 1a Rika'
local log = '*-*-* RIKA *-*-* '
local cmd = "tail -n 1000 /tmp/domoticz.txt |grep \'RIKA\'|sed 's/$/<BR>/'"
local temp = 'Moyenne Sejour'
local templevel = 21    -- temperature demandée

commandArray = {}

-- déclenchement toutes les 10mn
if (string.sub(tminutes,2,2) == "2" ) then

-- verif si poele On ou Off
if otherdevices[Rikaswitch] == "Off" then

-- verif jour et présence
if (timeofday['Daytime']) and (uservariables[presence] == 1) then
print (log..'il fait jour et il y a du monde')

-- il fait jour ET il y a du monde : on teste la temperature
                if tonumber(otherdevices[temp]) > templevel then
                print (log..'temperature chaude : '..tonumber(otherdevices[temp]))
                else
                print (log..'temperature froide : '..tonumber(otherdevices[temp]))
                print (log..'Poele lancé de '..dureetimer..' mn')
                commandArray[Rikaswitch]='On FOR ' ..dureetimer
                                -- Envoi log par mail
                                local f = assert(io.popen(cmd,'r'))
                                local retourf = assert(f:read('*a'))
                                commandArray ['SendEmail'] = log..'#RIKA <BR>'..retourf..'#xxx@xxx'
                end
else
-- il n'y a personne OU c'est la nuit, on eteint le poele
                               print (log..'il n\'y a personne ou c\'est la nuit')
                               print (log..'compteur Rika ramené à 0')
                               print (log..'Rika basculé à Off')
                               commandArray[Rikaswitch]='Off'
end
else
end
end


return commandArray
Merci de votre aide.

Re: 'ON FOR' ne vas pas fort !

Publié : 16 févr. 2020, 07:11
par denis_brasseur
Effectivement, ON FOR n'est pas très "performant".
Utilise plutôt le On, suivi d'un Off AFTER xx, la durée étant exprimé en secondes.

Code : Tout sélectionner

	commandArray[#commandArray + 1]={[Rikaswitch] = 'On'}
	commandArray[#commandArray + 1]={[Rikaswitch] = 'Off AFTER '..dureetimer}
Et utilise bien la syntaxe commandArray[#commandArray + 1],dans le cas contraire, seul le Off AFTER xx serait exécuté.

[Resolu : 'ON FOR' ne vas pas fort !

Publié : 17 févr. 2020, 09:17
par freulon9292
heeyyyyyy...


ça à l'air de le faire.

Merci !!!

Re: 'ON FOR' ne vas pas fort !

Publié : 21 févr. 2020, 05:24
par Wolfen38
J'avais le même style de soucis.

Je demandais à la lumière de s'allumer pour 2 min, et ca fonctionnait pas terrible.

Maintenant je demande a éteindre après 2min, et c'est nickel.