Page 13 sur 16

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

Publié : 03 avr. 2018, 19:56
par vil1driver
Ah tu utilises https...
Tu as mis un certificat ?

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

Publié : 03 avr. 2018, 20:04
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'

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

Publié : 03 avr. 2018, 20:12
par vil1driver
L'intérêt dans des scripts ?

Essai juste http

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

Publié : 03 avr. 2018, 20:14
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 ;)

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

Publié : 03 avr. 2018, 23:31
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

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

Publié : 04 avr. 2018, 17:55
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) ;)

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

Publié : 13 avr. 2018, 14:41
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.

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

Publié : 14 avr. 2018, 09:43
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 ???

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

Publié : 15 avr. 2018, 21:37
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


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

Publié : 09 mai 2018, 11:48
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: