Page 2 sur 3
Re: erreur de script lua à heure fixe
Publié : 11 avr. 2017, 17:46
par papoo
Le code incriminé fonctionne très bien 99% du temps
mais lorsqu'il se lance en même temps que les sauvegardes de BDD initiées par Dz (sauvegarde toutes les heures à 00) mon pi n'a pas les ressources suffisantes pour tout faire à la fois. Mais vous avez raison, il est surement possible de l'optimiser. Ce que je ne sais pas faire.
n’hésitez d'ailleurs pas à proposer des améliorations de mes scripts j'accepte la critique surtout lorsqu'elle est constructive
Re: erreur de script lua à heure fixe
Publié : 11 avr. 2017, 19:10
par balajol
Bonsoir,
J'ai le même type d'erreur dans un script très court qui me permet d'actualiser un dummy Thermostat avec les valeurs actuellement prises en comptes par le scipt Lua "thermostat"
Code : Tout sélectionner
--Mise a jour thermostat Val_Cons_Actu
time = os.date("*t")
Val_Cons_Actu_= "644"-- idx dummy Thermostat Val_Cons_Actu
consigne2=uservariables["consigne_thermostat"]
commandArray = {}
if ( time.min%2 == 0 ) then--Lancement Script toutes les 2 minutes
commandArray= { ['UpdateDevice'] = Val_Cons_Actu_..'|0|'..consigne2 }
end
return commandArray
J'ai longtemps cru que le script thermostat était en cause avant de m'apercevoir que
seules ces quelques lignes sont en cause et les ai donc sorties..

- Erreur scipt-Time.JPG (131.37 Kio) Consulté 7301 fois
consigne_thermostat est une variable utilisateur type decimal
cdt
Bertrand
Re: erreur de script lua à heure fixe
Publié : 11 avr. 2017, 20:02
par vil1driver
Je pense que ton problème aurait mérité son propre sujet..
2 choses,
Utilise un script de type variable c'est plus adapté
Ainsi il ne se lancerait pas inutilement.
Et, tu peux remplacer l'idx par otherdevices_idx['nom du device'], par simplicité d'usage
Bon tout ceci ne règlerait probablement pas ton souci..
Par contre tu peux tester au lieu du updatedevice un openurl vers la commande json qui va bien
J'ai souvent eu de meilleurs résultats ainsi
Re: erreur de script lua à heure fixe
Publié : 11 avr. 2017, 20:41
par balajol
Bonsoir,
Merci de ton retour,
J' ai pensé qu'il pouvait y avoir une cause commune (surement à tors

)
Je n'avais pas vu qu'il y avait la possibilité de scipt UserVariable .
Edit:
Précision: malgré le message d'erreur, le thermostat se met à jour.
Cdt
Bertrand
Re: erreur de script lua à heure fixe
Publié : 11 avr. 2017, 21:09
par Neutrino
Mon code est forcément le meilleur, vu que c'est le mien
@papoo, c'est lequel de tes scripts qui plante ?
Je sais par exemple qu'en mettant un timeout sur mes requêtes 'curl' (et en gérant la réponse null derrière) j'ai fait disparaître ces vilaines erreurs.
Re: erreur de script lua à heure fixe
Publié : 11 avr. 2017, 21:56
par papoo
Neutrino a écrit :
@papoo, c'est lequel de tes scripts qui plante ?
Il fonctionne très bien
il a juste un raté de temps à autre : Prévision de pluie en lua V2 =>
viewtopic.php?f=10&t=2788
mais aussi : export ThingSpeak =>
viewtopic.php?f=17&t=1925&p=25015
ou : export emoncms =>
viewtopic.php?f=17&t=2017
et un script qui n'est pas de moi :
http://66bis.familyds.com/wordpress/?p=676
à l'occas si tu pouvais m'expliquer la logique du modulo et du -1 car je dois être tordu, je ne comprend pas (mais ça marche super)
Re: erreur de script lua à heure fixe
Publié : 11 avr. 2017, 22:00
par vil1driver
Quand minute égale 1 ou 6 ou 11 ou 16 etc...
Moins un ça fait 0 ou 5 ou 10 ou 15 etc..
Donc c'est multiple de 5 comme précédemment
Le modulo correspond au reste d'une division euclidienne
Re: erreur de script lua à heure fixe
Publié : 11 avr. 2017, 22:07
par papoo
vil1driver a écrit :
Le modulo correspond au reste d'une division euclidienne
voila pourquoi je comprend pas
mais je commence à comprendre :
((time.min) % 5) == 0 à chaque fois que time.min et divisible par 5 avec un reste entier, la condition est juste
donc ((time.min-1) % 5) == 0 décale d'une minute time.min
mais je comprenais pas comment un moins pouvait faire plus
Re: erreur de script lua à heure fixe
Publié : 11 avr. 2017, 22:40
par Neutrino
Je pense que ce sont les lignes de ce genre qui ralentisse (et non plante

) le script :
Code : Tout sélectionner
commandArray[1]={['OpenURL']=url_emoncms ..'post?apikey=' .. API_key .. '&json=' .. fields }
Je ferais plutôt ça :
Code : Tout sélectionner
os.execute('curl -m3 "'..url_emoncms ..'post?apikey=' .. API_key .. '&json=' .. fields..'" &')
Re: erreur de script lua à heure fixe
Publié : 11 avr. 2017, 22:50
par papoo
merci je vais tenter ça
à quoi correspond le parametre -m3 je ne trouve rien s'y rapportant?