[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.
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 »

Ah tu utilises https...
Tu as mis un certificat ?
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
beuz33
Messages : 72
Inscription : 19 oct. 2015, 16:30

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

Message par beuz33 »

vil1driver a écrit :Ah tu utilises https...
Tu as mis un certificat ?
non j'ai pas réussi à mettre de certificat
par contre, j'utilise déjà des commandes comme ça dans d'autres scripts et ça marche

commandArray['OpenURL']='https://192.168.1.10:8443/json.htm?type ... &svalue=33'
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 »

L'intérêt dans des scripts ?

Essai juste http
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
beuz33
Messages : 72
Inscription : 19 oct. 2015, 16:30

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

Message par beuz33 »

vil1driver a écrit :L'intérêt dans des scripts ?

Essai juste http

aucun intérêts tu as raison et en plus ça fonctionne en http.

MERCI ;)
beuz33
Messages : 72
Inscription : 19 oct. 2015, 16:30

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

Message par beuz33 »

Bonsoir tout le monde,
j'ai une petite question, vil1driver m'a aidé a faire un script pour faire varier une intensité avec le cube xiaomi, ça fonctionne très bien mais quand je passe par le "speedup" l'intensité augmente au lieu de diminuer

if ((devicechanged[cube] == 'anti_clock_wise') and (otherdevices[lumiere] ~= 'Off')) then
local newLevel = math.floor(100*(otherdevices_svalues[lumiere]-1)/15)
if newLevel < 10 then newLevel = 10 end
commandArray[lumiere]='Set Level '.. newLevel
end

==>intensité diminue

if ((devicechanged[cube] == 'anti_clock_wise') and (otherdevices[lumiere] ~= 'Off')) then
local newLevel = math.floor(100*(otherdevices_svalues[lumiere]-1)/15)
if newLevel < 10 then newLevel = 10 end
switchOn(lumiere,newLevel)
end

==>intensité augmente

quelqu'un peut m'expliquer

merci
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 »

car pour le coup, json n'utilise pas le pourcentage mais le niveau soit 15 maxi dans ton cas

Code : Tout sélectionner


if ((devicechanged[cube] == 'anti_clock_wise') and (otherdevices[lumiere] ~= 'Off')) then
	local newLevel = otherdevices_svalues[lumiere]-1
	if newLevel < 1 then newLevel = 1 end
	switchOn(lumiere,newLevel)
end

ps : poster du code = le placer entre balises [ Code] mon code [ /Code] (les boutons au dessus de la zone de saisie) ;)
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
Sopalin
Messages : 97
Inscription : 04 juil. 2016, 10:07

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

Message par Sopalin »

Merci beaucoup pour ces fonctions. Qui aurait cru que passer par l'API serait plus rapide que du code direct lua,bref.

Ayant configuré Domoticz en HTTPS pour la gestion via Alexa, j'ai ajouté l'option -k dans le curl pour bypasser le contrôle du certificat si vous utilisé un certificat auto-signé comme moi.

C'était mon gravier à l'édifice.
rimram31
Messages : 659
Inscription : 04 oct. 2015, 11:22
Localisation : Toulouse

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

Message par rimram31 »

Sopalin a écrit :Merci beaucoup pour ces fonctions. Qui aurait cru que passer par l'API serait plus rapide que du code direct lua...
Ce n'est pas le souci, le problème vient de l'implémentation même de domoticz. Domoticz permet l'appel de scripts lua et a prévu qu'ils puissent retourner une liste qui est traitée comme une liste de commandes a exécuter.

Le problème c'est que ces commandes ne sont pas exécutées de façon synchrone et même pas "dans la foulée" mais mis dans une "queue" pour être exécutées ensuite de façon asynchrone. Mais les tempos et autres boucles prennent un temps fou d'ou cette mauvaise réactivité quand on veut une action/réaction.

La solution (que je découvre depuis :-)) permet d'appeler de façon parfaitement synchrone ... Attention quand même a pas nous faire partir dz en boucle infinie avec des appels réentrants :lol:

Heu ... d'ailleurs ça ne serait pas ton problème ici viewtopic.php?f=10&t=6329#p52866 ???
Raspberry Pi 2 + carte RF pi "maison" + Domoticz
Sonde Oregon + Aliexpress - Prises Chacon (3500W) - 1wire DS18B20
Globulus
Messages : 2
Inscription : 10 avr. 2018, 13:36

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

Message par Globulus »

Bonjour à tous,
Quelque chose doit m'échapper : l'utilisation de modules.lua n'accélère pas du tout mes scripts. Le temps d'exécution est même plus important à base de curl ... j'ai du louper un truc ou alors mon pb est ailleurs.
Exemple :
Pour un enchaînement appui bouton allumage de lampe, j'ai :
- blocky : 1 seconde 400 ms
- lua avec commandArray : 1 sec 080 ms
- lua avec curl : 1 sec 220 ms
Je m'attendais à ce que l'ordre soit inverse entre commandArray et curl ?

Les logs :
- blocky :

Code : Tout sélectionner

 2018-04-15 21:20:18.223 EventSystem: Event triggered: Eclairage Ch Vincent X_1
2018-04-15 21:20:18.620 (Xiaomi) Light/Switch (Chambre Vincent switch X)
2018-04-15 21:20:18.621 {"cmd":"report","model":"sensor_switch.aq2","sid":"158d0001b8701c","short_id":62380,"data":"{\"status\":\"click\"}"}
2018-04-15 21:20:19.629 (rfx) Lighting 2 (Leds Chambre Vincent) 
- lua avec commandArray :

Code : Tout sélectionner

 2018-04-15 21:22:06.302 EventSystem: Script event triggered: Eclairage Ch Vincent X 3
2018-04-15 21:22:06.313 (Xiaomi) Light/Switch (Chambre Vincent switch X)
2018-04-15 21:22:06.313 {"cmd":"report","model":"sensor_switch.aq2","sid":"158d0001b8701c","short_id":62380,"data":"{\"status\":\"click\"}"}
2018-04-15 21:22:07.385 (rfx) Lighting 2 (Leds Chambre Vincent) 
- lua avec curl :

Code : Tout sélectionner

 2018-04-15 21:28:18.308 (Xiaomi) Light/Switch (Chambre Vincent switch X)
2018-04-15 21:28:18.309 {"cmd":"report","model":"sensor_switch.aq2","sid":"158d0001b8701c","short_id":62380,"data":"{\"status\":\"click\"}"}
2018-04-15 21:28:18.431 User: Admin initiated a switch command (34/Leds Chambre Vincent/On)
2018-04-15 21:28:19.527 (rfx) Lighting 2 (Leds Chambre Vincent) 
Autre curiosité, quand j'utilise le script avec curl, je n'ai pas de log du type

Code : Tout sélectionner

EventSystem: blabla
Pour info, voici les deux scripts :
commandArray :

Code : Tout sélectionner

commandArray = {}

if (devicechanged['Chambre Vincent switch X'] == 'Click') then
    commandArray['Leds Chambre Vincent']='On'
elseif (devicechanged['Chambre Vincent switch X'] == 'Double Click') then
    commandArray['Leds Chambre Vincent']='Off'
end

return commandArray
curl :

Code : Tout sélectionner

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

commandArray = {}

if (devicechanged['Chambre Vincent switch X'] == 'Click') then
    switchOn('Leds Chambre Vincent')
elseif (devicechanged['Chambre Vincent switch X'] == 'Double Click') then
    switchOff('Leds Chambre Vincent')
end

return commandArray

Doudy
Messages : 457
Inscription : 07 mai 2016, 17:23

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

Message par Doudy »

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:
RaspberryPi - RFLink - Zwave - WH2600
Domoticz : 2020.2 | Dashticz : V3.12 Master | dzvents : 3.0.2 | Python : 3.7.3
Répondre