[LUA] Speedup accélérer la réactivité de domoticz

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
landaisbenj
Messages : 695
Inscription : 12 mars 2017, 19:24

Re: Speedup accélérer la réactivité de domoticz

Message par landaisbenj »

Doudy a écrit :Bonjour,
J'ai un petit soucis avec mes tests de modules.lua
Je fais ceci :

Code : Tout sélectionner

-- chargement des modules
dofile('/home/pi/domoticz/scripts/lua/modules.lua')
commandArray = {}
	time = os.date("*t")
	print("time : " .. time)
return commandArray
j'obtiens le massage suivant :

Code : Tout sélectionner

2018-05-09 11:46:00.264 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_time_test.lua: /home/pi/domoticz/scripts/lua/script_time_test.lua:16: attempt to concatenate global 'time' (a table value)
Quelqu'un peu éclairer ma lanterne ?
:idea:
le format *t créé une table pour os.date. Une table c'est plusieur variable et valeur imbriquées. Ici time = os.date('*t') ressemble un peu a ca:

Code : Tout sélectionner

time = {year = 1998, month = 9, day = 16, yday = 259, wday = 4, hour = 23, min = 48, sec = 10, isdst = false}
Tu ne peux pas imprimer une table car c'est plusieur valeurs. Ils ne sait pas les intepreter a la suite. Si tu veux imprimer le temps il faut que tu change le format. En une seul valeur c'est mieux. Genre YY/MM/DD...

En fait os.date te retourne un format de temps sur le timestamp que tu lui entre. (ici tu n'en met aucun donc il s'agit du temps présent)
Essai avec les formats suivant:

Code : Tout sélectionner

	time = os.date("%X %x")
	print("time : " .. time)
La liste des formats.
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
Doudy
Messages : 457
Inscription : 07 mai 2016, 17:23

Re: Speedup accélérer la réactivité de domoticz

Message par Doudy »

Résultat de :

Code : Tout sélectionner

time = os.date("%X %x")
=

Code : Tout sélectionner

2018-05-09 15:54:00.303 LUA: time : 15:54:00 05/09/18
Merci pour la "La liste des formats."
J'aurais pu chercher longtemps...
;)
RaspberryPi - RFLink - Zwave - WH2600
Domoticz : 2020.2 | Dashticz : V3.12 Master | dzvents : 3.0.2 | Python : 3.7.3
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Speedup accélérer la réactivité de domoticz

Message par vil1driver »

Salut,

Comme tu charges modules.lua tu peux en utiliser ceci

Code : Tout sélectionner

print('heure : ' .. heure) 
;)
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
Doudy
Messages : 457
Inscription : 07 mai 2016, 17:23

Re: Speedup accélérer la réactivité de domoticz

Message par Doudy »

Ok merci
;)
RaspberryPi - RFLink - Zwave - WH2600
Domoticz : 2020.2 | Dashticz : V3.12 Master | dzvents : 3.0.2 | Python : 3.7.3
Jeff
Messages : 1007
Inscription : 17 nov. 2016, 20:54
Localisation : Rennes (35)

Re: Speedup accélérer la réactivité de domoticz

Message par Jeff »

Doudy a écrit :Résultat de :

Code : Tout sélectionner

time = os.date("%X %x")
=

Code : Tout sélectionner

2018-05-09 15:54:00.303 LUA: time : 15:54:00 05/09/18
Merci pour la "La liste des formats."
J'aurais pu chercher longtemps...
;)
Une grand découverte pour moi aussi et l'utilisation avec module.lua.
Je vais finir par comprendre quelque chose au script LUA un jour :lol:
Version: 2023.1 sur VM Synology, docker Zwave Js UI (Z-stick GEN5, Fibaro...), Zigbeefordomoticz. Nextion RGB Led Screen
Hexolite
Messages : 29
Inscription : 18 févr. 2019, 14:14

Re: Speedup accélérer la réactivité de domoticz

Message par Hexolite »

Bonjour,
Très intéressé pour accélérer mes scripts j'ai testé la mise en place de votre code.
J'ai procédé ainsi:
1) j'ai créé un fichier modules.lua sous /home/pi/domoticz/scripts/lua
2) j'ai ajouté le dofile et j'ai changé les command array par groupOn ou switchOn

Voilà mon code pour l'allumage de mes lampes:

Code : Tout sélectionner

-- heurez à laquelle on passe des ampoules au soleil
Seuil_Heure_Soir="23:00:00"
Seuil_Heure_Matin="08:30:00"
-- chargement des modules
dofile('/home/pi/domoticz/scripts/lua/modules.lua')

commandArray = {}

if (devicechanged['deCONZ - Motion Sensor'] == 'On') then
	print("mouvement 1") 
	if (tonumber(otherdevices['deCONZ - Motion Sensor (2)'])<15) then
		print("luminosité<15")
		Heure_Actuelle=os.date("%X")
		print (Heure_Actuelle)
		if Heure_Actuelle > Seuil_Heure_Matin then
			print ("il est plus de 8h30 heures")
			if Heure_Actuelle < Seuil_Heure_Soir then
				print ("il est entre 8h30 et 23 heures")
				--commandArray['Group:entree']='On' = mon ancienne commande
				groupOn('entree')
			else 
				print("il est plus de 23 heures")
				--commandArray['deCONZ - entree_soleil']='On' = mon ancienne commande
				switchOn('deCONZ - entree_soleil')
			end
		else
			print ("il est moins de 8h30 heures")
			--commandArray['deCONZ - entree_soleil']='On' = mon ancienne commande
			switchOn('deCONZ - entree_soleil')
		 end
	end
end
return commandArray

Et pour éteindre:

Code : Tout sélectionner

dofile('/home/pi/domoticz/scripts/lua/modules.lua')

commandArray = {}

if (devicechanged['deCONZ - Motion Sensor (2)'] == 'Off') then
	print("plus de mouvement") 
	--commandArray['Group:entree_totale']='Off'
	groupOn('entree_totale')
end
return commandArray
Je suis débutant alors j'ai sûrement loupé un truc! Merci par avance :)
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Speedup accélérer la réactivité de domoticz

Message par denis_brasseur »

Hexolite a écrit : 25 mars 2019, 22:37 Je suis débutant alors j'ai sûrement loupé un truc! Merci par avance :)

Tu nous dis que tu a loupé un truc, mais tu ne nous dis pas ce qui ne fonctionne pas, ni même si cela fonctionne.

Au premier regard quand même, dans le code d'extinction, tu a remplacé

Code : Tout sélectionner

--commandArray['Group:entree_totale']='Off'

Code : Tout sélectionner

groupOn('entree_totale')
Ca ne serait pas plutôt un groupOff ?
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Hexolite
Messages : 29
Inscription : 18 févr. 2019, 14:14

Re: Speedup accélérer la réactivité de domoticz

Message par Hexolite »

denis_brasseur a écrit : 26 mars 2019, 04:27
Hexolite a écrit : 25 mars 2019, 22:37 Je suis débutant alors j'ai sûrement loupé un truc! Merci par avance :)

Tu nous dis que tu a loupé un truc, mais tu ne nous dis pas ce qui ne fonctionne pas, ni même si cela fonctionne.

Au premier regard quand même, dans le code d'extinction, tu a remplacé

Code : Tout sélectionner

--commandArray['Group:entree_totale']='Off'

Code : Tout sélectionner

groupOn('entree_totale')
Ca ne serait pas plutôt un groupOff ?
Hello merci pour ton retour. Effectivement ce n'était pas du tout clair !

Effectivement là j'ai fait une erreur de copy pasta mais même le code pour l'allumage ne fonctionne pas...

Jai bien mes prints dans mon log, preuve que le script s'exécute bien. Mais ca n'allume pas mon groupe ni mon appareil selon ce qui doit s'allumer.
En bref, rien ne s'allume pour la version SpeedUp alors que ça marche avec la version de base...
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Speedup accélérer la réactivité de domoticz

Message par vil1driver »

Salut,

Soit modules.lua est vide
Soit l'ip 127.0.0.1 doit être remplacée (voir page 1)
Soit tu as changé le port
Soit curl n'est pas installé
Soit domoticz est soumis à mot de pass (voir page 2)
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
Wolfen38
Messages : 1983
Inscription : 19 oct. 2017, 14:49

Re: Speedup accélérer la réactivité de domoticz

Message par Wolfen38 »

J'ai du mal a voir la vitesse dans les log, mais en réel, je vois pas trop de différence

Sans le module

Code : Tout sélectionner

2019-04-01 18:49:34.698 (Zigate) UpdateDevice - (Interrupteur couloir) 1:00
2019-04-01 18:49:34.753 (Virtualsensor) Lighting 1 (Virtuel couloir)
2019-04-01 18:49:34.774 (Sonoff_espeasy) Light/Switch (Sonoff-couloir)
2019-04-01 18:49:34.812 (Zigate) UpdateDevice - (Interrupteur couloir) 1:40
2019-04-01 18:49:34.732 Status: EventSystem: Script event triggered: /home/pi/domoticz/scripts/lua/script_device_couloir2.lua
Avec le module

Code : Tout sélectionner

2019-04-01 18:51:10.053 (Zigate) UpdateDevice - (Interrupteur couloir) 1:00
2019-04-01 18:51:10.162 (Virtualsensor) Lighting 1 (Virtuel couloir)
2019-04-01 18:51:10.176 (Sonoff_espeasy) Light/Switch (Sonoff-couloir)
2019-04-01 18:51:10.192 (Zigate) UpdateDevice - (Interrupteur couloir) 1:40
2019-04-01 18:51:10.115 Status: EventSystem: Script event triggered: /home/pi/domoticz/scripts/lua/script_device_couloir2.lua
2019-04-01 18:51:10.165 Status: User: Admin initiated a switch command (125/Sonoff-couloir/On)
D'après les log, vous voyez une grosse différence de vitesse ?
Répondre