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

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 <\>.
dominique
Messages : 32
Inscription : 14 mai 2016, 21:08

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

Message 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
Dernière modification par dominique le 12 sept. 2020, 09:11, modifié 1 fois.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

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

Message 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 ;)
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
dominique
Messages : 32
Inscription : 14 mai 2016, 21:08

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

Message 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
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

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

Message 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.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
dominique
Messages : 32
Inscription : 14 mai 2016, 21:08

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

Message 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
thier
Messages : 807
Inscription : 26 sept. 2015, 10:32
Localisation : charente

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

Message par thier »

Tu n'aurais pas la sauvegarde automatique de la data base toutes les heures?
PI3+, Buster, Domoticz V2020.2, rflink, zwave, chauffage piloté par qubino, sondes oregon et Vil1d, boite aux lettres détection passage facteur, volets roulants qubino fibaro.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

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

Message par Keros »

C'est en effet curieux que toutes ces erreurs se fassent à une heure pile. Bien vu thier ;)
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
dominique
Messages : 32
Inscription : 14 mai 2016, 21:08

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

Message par dominique »

en cherchant dans les paramètres, j'ai bien la sauvegarde automatique active mai je ne sais pas quand elle se fait
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

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

Message 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.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
dominique
Messages : 32
Inscription : 14 mai 2016, 21:08

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

Message 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
Répondre