je suis passé de la version v3.4834 vers 2020.2
depuis je me suis rendu compte que certains de mes volets restaient fermé le matin ou ne se fermait pas le soir.
le volet est commandé par le planning d'un dummy "selector switch" puis un script Lua envoie une trame sur un bus rs485.
j'ai ajouté dans mon script un log dans un fichier à chaque fois que mon script voit le "devicechanged" correspondant à ma commande de volet est lue.
résultat j'ai bien dans le log de l'interrupteur les ordres passés
mais pas de traces dans le fichier de log de manière aléatoire
Ci joint mon script:
Code : Tout sélectionner
local chaine
local trame=''
local selector_switch = 'Bureau'
-- "position_V1" a remplacer par nom de l'interupteur domoticz
local ordre=tonumber(otherdevices_svalues[selector_switch])
local esclave='07'
local voie='1'
local adresse= "/dev/ttyUSB21"
commandArray={}
--print(' --------------------------------------------------------début script')
if (devicechanged[selector_switch ]) then
-- print(' --------------------------------------------------------script racine' ..esclave.. ' ' ..ordre.. ' ' ..voie)
if ordre==10 then
-- print('--------------------------------------------------------- '..ordre..esclave..' fermer')
trame=( 'A'..esclave..'V'..voie..'Of\n')
elseif ordre==20 then
-- print('--------------------------------------------------------- '..ordre..' partiel')
trame=( 'A'..esclave..'V'..voie..'Op\n')
elseif ordre==30 then
-- print('--------------------------------------------------------- '..ordre..' bloqué')
trame=( 'A'..esclave..'V'..voie..'Ob\n')
elseif ordre==40 then
-- print('--------------------------------------------------------- '..ordre..' ouvrir' )
trame=( 'A'..esclave..'V'..voie..'Oo\n')
elseif ordre==50 then
--print('--------------------------------------------------------- '..ordre..' init' )
trame=( 'A'..esclave..'V'..voie..'Oi\n')
end
--envoi de trame RS
os.execute('stty -F '..adresse..' 9600 cs8 -cstopb -parodd -onlcr -echo -echoe -echok -opost')
-- os.execute('stty 9600')
wserial=io.open(adresse,"w")
wserial:flush()
wserial:write("commande\n \n"..trame)
wserial:flush()
-- wserial=io.close()
print ('requette----------------------------------------------------------'..selector_switch..'----- '..trame)
-- bloc pour log des volets dans un fichier
n = string.len(selector_switch)
n=17-n
text=string.rep(" ", n)
local temp= os.date('%H:%M:%S')
local test = 'test_volets'
if otherdevices[test]=='On'
then
file=io.open('/home/pi/log_volets.txt',"a+") --ouverture du fichier
file:write( 'commande volet '..selector_switch..text..' ordre '..ordre..' heure '..temp..' \n' )
file:flush() --vide le tampon vers fichier
file=io.close() --ferme le fichier
end
-- rserial=io.open("/dev/ttyAMA0","r")
-- while chaine==nil do
-- chaine=rserial:read()
-- rserial:flush()
-- end
-- print('reponse--------'..chaine)
-- wserial=io.close()
end
return commandArray
pourquoi le script ne c'est pas déclenché à chaque fois environ 1 fois sur 5?
pi trop vieux ?
problème de compatibilité manque de RAM ?
Bug?
changer de raspberry pour un plus puissant ?
dites moi comment prendre le problème
j'ai 25 scripts divers dans le répertoire lua
le "CPU_Usage" tourne entre 65 et 85% dans le log rarement plus de 90%
le "Memory Usage" reste autour 20%
merci de votre aide
Code : Tout sélectionner