Page 1 sur 5

script non exécuté de manière aléatoire

Publié : 11 sept. 2020, 09:42
par dominique
Bonjour, je viens vers vous pour m'aider à comprendre pourquoi mes scripts que j'utilise depuis plusieurs années sur mon vieux pi B+ ne fonctionnent plus de manière fiable.
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

Re: script non exécuté de manière aléatoire

Publié : 11 sept. 2020, 13:08
par Keros
Il existe des balises pour afficher le code dans un cadre. Si tu peux éditer ton post précédent, il serait beaucoup plus lisible ;)

Re: script non exécuté de manière aléatoire

Publié : 12 sept. 2020, 10:11
par dominique
Bonjour Keros,
désolé je n'avais pas trouvé cette fonction.
c'est fait.
je ne pense pas que le problème vienne du code.
d’où mon appel à l'aide.
bon week-end

Re: script non exécuté de manière aléatoire

Publié : 12 sept. 2020, 10:50
par Keros
C'est beaucoup plus lisible, merci

Je ne vois rien de particulier dans ton code. Peut-être l'espace après selector_switch > if (devicechanged[selector_switch ]) then

Tu as remarqué ce soucis sur ce script uniquement où tu en a d'autres avec les mêmes symptômes ?

Tu peux essayer de créer un script dans Configuration / Plus d'options / Evènements et d'y mettre juste le code pour avoir le log dans deuxième fichier. C'est pour voir si c'est un problème d'exécution.

Re: script non exécuté de manière aléatoire

Publié : 12 sept. 2020, 12:19
par dominique
Merci de ton aide.
J'ai 1 script par volet donc 14 je change juste le nom du device au début.
Je vais essayer de supprimer cet espace
et on verra j'ai aussi plusieurs scripts qui font des accès fichiers ils provoquent des défaut délai 10 secondes dépassés de temps en temps bizarrement toujours à des heures juste d’où mon interrogation.

Code : Tout sélectionner

 2020-09-10 15:00:12.920 Error: EventSystem: Warning!, lua script /home/pi/domoticz/scripts/lua/script_time_hauteur_cuve_fichier.lua has been running for more than 10 seconds
2020-09-10 16:00:12.868 Error: EventSystem: Warning!, lua script /home/pi/domoticz/scripts/lua/script_time_eau_usb.lua has been running for more than 10 seconds
2020-09-10 17:00:16.825 Error: EventSystem: Warning!, lua script /home/pi/domoticz/scripts/lua/script_time_hauteur_cuve_fichier.lua has been running for more than 10 seconds
2020-09-10 19:00:13.234 Error: EventSystem: Warning!, lua script /home/pi/domoticz/scripts/lua/script_time_eau_usb.lua has been running for more than 10 seconds
2020-09-10 20:00:13.953 Error: EventSystem: Warning!, lua script /home/pi/domoticz/scripts/lua/script_time_tension_pic_DS2438_fichier.lua has been running for more than 10 seconds
2020-09-11 00:00:14.401 Error: EventSystem: Warning!, lua script /home/pi/domoticz/scripts/lua/script_time_chauffage_ventilateur_SAM.lua has been running for more than 10 seconds
2020-09-11 01:00:13.836 Error: EventSystem: Warning!, lua script /home/pi/domoticz/scripts/lua/script_time_eau_usb.lua has been running for more than 10 seconds
2020-09-11 02:00:14.785 Error: EventSystem: Warning!, lua script /home/pi/domoticz/scripts/lua/script_time_hauteur_cuve_fichier.lua has been running for more than 10 seconds
2020-09-11 06:00:12.966 Error: EventSystem: Warning!, lua script /home/pi/domoticz/scripts/lua/script_time_tension_pic_DS2438_fichier.lua has been running for more than 10 seconds
2020-09-11 09:00:13.506 Error: EventSystem: Warning!, lua script /home/pi/domoticz/scripts/lua/script_time_chauffage_ventilateur_SAM.lua has been running for more than 10 seconds
2020-09-11 10:00:13.823 Error: EventSystem: Warning!, lua script /home/pi/domoticz/scripts/lua/script_time_eau_usb.lua has been running for more than 10 seconds
2020-09-11 11:00:12.751 Error: EventSystem: Warning!, lua script /home/pi/domoticz/scripts/lua/script_time_chauffage_ventilateur_chambre.lua has been running for more than 10 seconds
2020-09-11 15:00:12.657 Error: EventSystem: Warning!, lua script /home/pi/domoticz/scripts/lua/script_time_chauffage_ventilateur_chambre.lua has been running for more than 10 seconds

Re: script non exécuté de manière aléatoire

Publié : 12 sept. 2020, 12:23
par thier
Tu n'aurais pas la sauvegarde automatique de la data base toutes les heures?

Re: script non exécuté de manière aléatoire

Publié : 12 sept. 2020, 14:29
par Keros
C'est en effet curieux que toutes ces erreurs se fassent à une heure pile. Bien vu thier ;)

Re: script non exécuté de manière aléatoire

Publié : 12 sept. 2020, 16:54
par dominique
en cherchant dans les paramètres, j'ai bien la sauvegarde automatique active mai je ne sais pas quand elle se fait

Re: script non exécuté de manière aléatoire

Publié : 12 sept. 2020, 17:03
par Keros
La sauvegarde automatique se fait toutes les heures. Comme elle doit être un peu longue et gourmande en ressource, tes scripts mettent plus de temps à s’exécuter à ce moment là.

Tes scripts time s’exécute toutes les minutes ou toutes les heures ? Tu peux peut-être éviter qu'ils se lancent à l'heure pile.

Re: script non exécuté de manière aléatoire

Publié : 12 sept. 2020, 17:26
par dominique
les scripts sont sont exécutés toutes les minutes.
l’essentiel servent à actualiser des dummy.
cette fréquence me va bien.
si j'ai bien compris je devrai essayer de tester si les minutes sont à 0 et sauter le script.
je laisse passer le week-end pour voir si c'est mieux sinon j'essaye cette solution.
merci de ton aide