Bug LUA

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
shaun
Messages : 4
Inscription : 04 févr. 2019, 20:17

Bug LUA

Message par shaun »

Bonjour à tous,
J'utilise domoticz depuis maintenant plusieurs années pour gérer mon chauffage et aucun problèmes jusqu'a ya quelques jours où mes scripts lua ont commencés à déconner sans aucune modification !
Je vous explique : avec des sondes de températures je contrôle la température des pièces et avec des relais qubino j'active ou pas le radiateur. on pas de problèmes là dessus.
Mon radiateur de SDB est géré avec un timer pour chauffer 1h30 à partir de 5h30 et quand je lui dit de s'allumer il se met en route pour 1h30 maximum. Pour le ON à 5h30 c'est un timer. Pour gérer la tempo j'avais fait 2 scripts LUA : script_device qui dit que quand le switch passe à ON on met 90 dans une variable géré par domoticz et ensuite toutes les minutes un script_time décrémente la variable et regarde si on est à 0 et que le switch est ON on le passe à OFF.
Facile et ça marchait nickel mais donc du jour en lendemain le système s'est emballé, domoticz n'envoyait plus la commande OFF ! La variable arrivait bien à 0 mais il ne se passait rien. J'ai regardé les logs, fait des tests etc.
Pour que cela refonctionne je dois faire un "restart system" et ça remarche pour quelques jours.
Je n'ai pas touchés à mes scripts lua depuis des années et je ne mets pas à jour mon domoticz (quand tout marche bien j'évite de bidouiller surtout en ce moment où j'ai vraiment besoin de chauffage !)
Je ne comprends pas comment c'est possible ce problème en fait... Et en quoi redémarrer remet d'aplomb le système pour quelques temps.
Ma seule hypothèse c'est que c'est la carte SD du raspberry qui flanche ?
Pièces jointes
on voit que je passe bien dans la boucle
on voit que je passe bien dans la boucle
LOG.png (12.24 Kio) Consulté 5348 fois
modification du script pour afficher qu'on passe bien dans la boucle
modification du script pour afficher qu'on passe bien dans la boucle
SCRIPT.png (35.32 Kio) Consulté 5348 fois
tout allait bien jusqu'au 18 janvier où mon radiateur a chauffé toute la journée...
tout allait bien jusqu'au 18 janvier où mon radiateur a chauffé toute la journée...
switchSDB.png (90.38 Kio) Consulté 5348 fois
lmet
Messages : 252
Inscription : 30 juin 2017, 18:16
Localisation : Val d'Oise
Contact :

Re: Bug LUA

Message par lmet »

Bonsoir,
Pourquoi tu t'embêtes tu donnes simplement une heure de départ et de fin dans le planning du radiateur de ta SDB
Comme ici par exemple :
img_001.jpg
img_001.jpg (60 Kio) Consulté 5329 fois
Tu mets juste 5h30 pour le "On" et 7h00 pour le "Off", tu peux aussi choisir les jours.
Domoticz : V4.10717
Zigate : V4.11230 plugin:4.5.4 firmware:031a
Mon petit blog domotique
shaun
Messages : 4
Inscription : 04 févr. 2019, 20:17

Re: Bug LUA

Message par shaun »

Oui je sais bien mais je veux aussi le déclencher quand à la "main" avec un interrupteur quand j'ai besoin (genre le soir quand je donne le bain à ma fille...).
En plus je ne vous ai pas tout dis :mrgreen: j'ai aussi des switchs virtuels qui déclanchent des boosts un peu de la même façon et c'est pareil quand ça bug ils ne fonctionnent plus cad que quand je les activent ils n'activent pas le vrai interrupteur...
Sinon ça faisait bien 10 jours que ça fonctionnait suite à un reboot et là ça s'est remis à déconner... Ca me rend ouf parce que je ne comprends pas ce qui peut causer un problème comme ça
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Bug LUA

Message par vil1driver »

Salut,

Remplace ==0 par <=0

Ps: toujours spécifier le type de script quand tu le postes
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Fredok
Messages : 90
Inscription : 12 août 2016, 15:04

Re: Bug LUA

Message par Fredok »

Bonjour, la méthode décrite est un peu capillotractée doit fonctionner. Je fais comme ceci dans un time device en utilisant la fonction timedifference.

Code : Tout sélectionner

function timedifference (str) 
 year = string.sub(str, 1, 4)
 month = string.sub(str, 6, 7)
 day = string.sub(str, 9, 10)
 hour = string.sub(str, 12, 13)
 minutes = string.sub(str, 15, 16)
 seconds = string.sub(str, 18, 19)
 t1 = os.time()
 t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
 difference = os.difftime (t1, t2) --résultat en secondes
 return difference
end

function timeDiffDevice(s)
    local val=otherdevices_lastupdate[s]
    if(val==nil) then
        print("Erreur ds timeDiffDevice .... arg s="..s)
        return 0 
    else
        return timedifference(val)
    end
end

if (otherdevices['mon_capteur']=='On' and timeDiffDevice('mon_capteur')>90*60) then
	commandArray['mon_capteur']='Off'
end
Opi
RFXCOM
RFLINK 433 & 315
Mysensors
Wifi & Mqtt
EspEasy - Tasmota
Zigate+
shaun
Messages : 4
Inscription : 04 févr. 2019, 20:17

Re: Bug LUA

Message par shaun »

vil1driver a écrit : 15 févr. 2019, 19:00 Salut,

Remplace ==0 par <=0

Ps: toujours spécifier le type de script quand tu le postes
OK je peux essayer ça mais ma variable stockée n'est jamais négative, elle reste à 0 mais le script LUA n'active pas l'interrupteur.

En fait je me pose la question du pourquoi ça déconne :?:
shaun
Messages : 4
Inscription : 04 févr. 2019, 20:17

Re: Bug LUA

Message par shaun »

Fredok a écrit : 15 févr. 2019, 19:15 Bonjour, la méthode décrite est un peu capillotractée doit fonctionner. Je fais comme ceci dans un time device en utilisant la fonction timedifference.

Code : Tout sélectionner

function timedifference (str) 
 year = string.sub(str, 1, 4)
 month = string.sub(str, 6, 7)
 day = string.sub(str, 9, 10)
 hour = string.sub(str, 12, 13)
 minutes = string.sub(str, 15, 16)
 seconds = string.sub(str, 18, 19)
 t1 = os.time()
 t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
 difference = os.difftime (t1, t2) --résultat en secondes
 return difference
end

function timeDiffDevice(s)
    local val=otherdevices_lastupdate[s]
    if(val==nil) then
        print("Erreur ds timeDiffDevice .... arg s="..s)
        return 0 
    else
        return timedifference(val)
    end
end

if (otherdevices['mon_capteur']=='On' and timeDiffDevice('mon_capteur')>90*60) then
	commandArray['mon_capteur']='Off'
end
OK oui je vois où tu veux en venir dans ton script mais pour ma part mon besoin est de pouvoir stopper mon boost avant le délai et surtout je pense que ce ne fonctionnera pas mieux parce que c'est vraiment la commande "On" ou "Off" qui n'est pas envoyé à mon device.
patoche
Messages : 192
Inscription : 25 oct. 2015, 15:51

Re: Bug LUA

Message par patoche »

As tu d'autres scripts, pour la météo par exemple ?
RPI2 OSMC + domoticz + Rfx 433e + chacon dio, teleinfo 433 via arduino nano, sonde T° innovaley et TFA 303139, sonde T° piscine DIY 433 oregon, OWL 180, RPI zero W + camera
Répondre