[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.
Phebus06
Messages : 213
Inscription : 26 janv. 2017, 09:25

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

Message par Phebus06 »

Alors la bravo, je suis vraiment une truffe...je m'en étais même pas rendu compte lol
A chercher la petite bête on ne voit pas la grosse.
Comme quoi c'est toujours bon que quelqu'un d'autre regarde ce qu'on fait :roll:
landaisbenj
Messages : 695
Inscription : 12 mars 2017, 19:24

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

Message par landaisbenj »

Phebus06 a écrit : Comme quoi c'est toujours bon que quelqu'un d'autre regarde ce qu'on fait :roll:
Je trouve aussi. Même quand un script fonctionne le montrer peut avoir de belle répercussion... Amélioration du code, correction de compréhension ou même partage...
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
totof60
Messages : 373
Inscription : 29 avr. 2016, 09:31

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

Message par totof60 »

J'utilise le module de vil1driver pour commander un éclairage sur détection de Pir.

La fonction qui m’intéressait était : switchOnFor

Je crois de comprendre que cette fonction n’est pas accélérée ?
En plus je pense que ce n'est pas trés utile de l'utiliser puisque dans les paramètres des devices on peux mettre un temps d'activation. :roll:
Mais j'ai voulu essayer!

J'ai donc remplacé

Code : Tout sélectionner

switchOn(device)
par

Code : Tout sélectionner

os.execute(curl..'-u '..domoticzUSER..':'..domoticzPSWD..' "'..domoticzURL..'/json.htm?type=command&param=switchlight&idx='..otherdevices_idx[device]..'&switchcmd=On&passcode='..domoticzPASSCODE..'" &')
Ai-je bien compris le principe ?
Domoticz V2022.2
sous Buster, Homebridge,RfLink
Raspberry pi3, Google home mini
plein de truc wifi !! de l'esp-01 jusque le nodemcu en passant par le wemos et même du DIY
landaisbenj
Messages : 695
Inscription : 12 mars 2017, 19:24

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

Message par landaisbenj »

totof60 a écrit : Je crois de comprendre que cette fonction n’est pas accélérée ?
switchOnFor utilise le curl, et accélère donc le traitement de la requete par rapport a commandArray['device']='On FOR 5'
(dans le cas ou mes informations sont a jour. Ca se trouve domoticz a ete nettoyé et est peut etre aussi rapide en commandArray qu'avec le JSON)
En plus je pense que ce n'est pas trés utile de l'utiliser puisque dans les paramètres des devices on peux mettre un temps d'activation. :roll:
A toi de voir comment tu l'utilise. Mais effectivement le temps d’extinction (et non d'activation dans le cas d'un On FOR) sera gérable dans le device.
Pour info ce n'est pas le FOR qui est accéléré(...) mais le On. Donc aucun rapport ici en terme de rapidité d’exécution.

J'ai donc remplacé

Code : Tout sélectionner

switchOn(device)
par

Code : Tout sélectionner

os.execute(curl..'-u '..domoticzUSER..':'..domoticzPSWD..' "'..domoticzURL..'/json.htm?type=command&param=switchlight&idx='..otherdevices_idx[device]..'&switchcmd=On&passcode='..domoticzPASSCODE..'" &')
Ai-je bien compris le principe ?
Tu as bien compris si tu as evidemment remplacer les variables dans la commande curl par les bonnes infos.
Dans ce cas, au lieu d'utiliser le commandArray tu utilise le curl et envoi l'info a ton device en direct. Et non, traité par le server en lui meme. Donc plus rapide au On.

En gros switchOn n'est qu'un raccourci pour ne pas écrire toute cette commande. Et du coup tu accélère les reponses domoticz en remplaçant commandArray['device'] par une ou l'autre de ces commandes. Moi j'ai pour instinct de me dire que utiliser la commande pure sera forcement plus rapide que d'utiliser un raccourci qui charge un fichier et qui utilise au final la même commande. Mais c'est très minime...
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
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 »

Merci à toi pour ton temps à expliquer les choses,
que tu as au passage très bien comprises
landaisbenj a écrit : (dans le cas ou mes informations sont a jour. Ca se trouve domoticz a ete nettoyé et est peut etre aussi rapide en commandArray qu'avec le JSON)

Je sais qu'il y avait une volonté en ce sens, il faudrait s'y intéresser effectivement..
landaisbenj a écrit :j'ai pour instinct de me dire que utiliser la commande pure sera forcement plus rapide que d'utiliser un raccourci qui charge un fichier et qui utilise au final la même commande. Mais c'est très minime...
;)
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
landaisbenj
Messages : 695
Inscription : 12 mars 2017, 19:24

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

Message par landaisbenj »

vil1driver a écrit : Je sais qu'il y avait une volonté en ce sens, il faudrait s'y intéresser effectivement..
Vu le dernier thème qui était annoncé il y a peu je suppose qu'ils vont s'y intéresser a ce moment? On verra en tout cas meme le fait de raccourcir facilement les commandes ça reste intéressant.

Des fichiers comme celui la aide largement a comprendre comment fonctionnent les interactions entre tous les services. Mais c'est surtout les remontés de chacun qui m'ont aidés. Du coup si je peux en faire profiter ça me plait.
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
Phebus06
Messages : 213
Inscription : 26 janv. 2017, 09:25

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

Message par Phebus06 »

Bon j'ai fini par réussir à faire fonctionner le script Speedup avec tous vos conseils :D

Maintenant je me disais que ça serai bien en plus de pouvoir allumer un ruban de led et de choisir son intensité, de pouvoir choisir la couleur donc est ce que vous pensez que je peux rajouter un truc comme ça dans le script :

Code : Tout sélectionner

-- switch Color device if RGB
function switchColor(device,color)
os.execute(curl..'-u '..domoticzUSER..':'..domoticzPSWD..' "'..domoticzURL..'/json.htm?type=command&param=setcolbrightnessvalue&idx='..otherdevices_idx[device]..'&hex='..color..'&brightness=5&iswhite=false'" &')
end
et on l’appellerait comme ceci dans un script_device_essai.lua

Code : Tout sélectionner

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

commandArray = {}

if ( devicechanged['Pir couloir'] == 'On' ) then

   switchOn('ruban led salon', '50')
   switchColor('ruban led salon', '2E64FE')
   
end
return commandArray 
j'ai essayé vite fait hier soir mais je n'ai pas l'impression que cela fonctionne ...

Pensez vous que l'idée soit bonne et que ce soit possible ???
landaisbenj
Messages : 695
Inscription : 12 mars 2017, 19:24

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

Message par landaisbenj »

C'est avec toi qu'on avait deja discuté d'une commande pour la couleur et l'intensité en meme temps ? Car en cherchant pour ta reponse je suis tombé la dessus sur l'API JSON de domoticz:
Plutôt que de spécifier des paramètres de teinte / luminosité, vous pouvez utiliser un triplet hexadécimal RVB via '& hex =' comme suit

Code : Tout sélectionner

/json.htm?type=command¶m=setcolbrightnessvalue&idx=99&hex=RRGGBB&brightness=100&iswhite=false
dans ce cas, l'intensité est inhérente à la valeur hexadécimale (c'est-à-dire que ff0000 représente le rouge de pleine luminosité alors que par exemple 3f0000 est également rouge pur mais sera plus faible) et le paramètre & brigntness ne fait rien. Le laisser dehors cependant semble causer des problèmes avec le scintillement de Philips Hue donc mieux le laisser à 100. Un site comme colorhexa peut être utilisé pour aider à choisir des valeurs hexadécimales selon les couleurs désirées.
Sinon oui, le faire comme ca en temps que fonction dois pouvoir fonctionner. Et tu aurais même pu faire "switchColor(device,color,intensite)"...

Je ne sais pas pourquoi cela ne fonctionne pas. Par contre ici:

Code : Tout sélectionner

   switchOn('ruban led salon', '50')
   switchColor('ruban led salon', '2E64FE')
Avec ta première commande tu demande la lumière a "ON" avec intensité a 50% et avec la deuxième tu demande en couleur avec intensité a 5%:

Code : Tout sélectionner

".'&hex='..color..'&[u]brightness=5[/u]&iswhite=false'" &')".
Je ne sais pas si c'est compatible tout ca... deux brightness et une couleur hexadecimal (suivant ce que j'ai collé en haut du post)

As-tu d'abord essayé ca avec un simple bouton test ?

Code : Tout sélectionner

os.execute(curl..'-u '..domoticzUSER..':'..domoticzPSWD..' "'..domoticzURL..'/json.htm?type=command&param=setcolbrightnessvalue&idx='..otherdevices_idx[device]..'&hex='..color..'&brightness=5&iswhite=false'" &')
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
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 »

Merci à toi pour ton temps à expliquer les choses,
que tu as au passage très bien comprises
@landaisbenj
Moi je dis que je viens d'apprendre plein de trucs et je dis bravo pour la pédagogie, çà coule de source
Tu dois être surement professeur :D
Version: 2023.1 sur VM Synology, docker Zwave Js UI (Z-stick GEN5, Fibaro...), Zigbeefordomoticz. Nextion RGB Led Screen
landaisbenj
Messages : 695
Inscription : 12 mars 2017, 19:24

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

Message par landaisbenj »

Jeff a écrit :
Merci à toi pour ton temps à expliquer les choses,
que tu as au passage très bien comprises
@landaisbenj
Moi je dis que je viens d'apprendre plein de trucs et je dis bravo pour la pédagogie, çà coule de source
Tu dois être surement professeur :D
Lol merci, mais non. Par contre j'ai tellement eu de mal a comprendre avec les profs ou mes parents quand je devez faire un simple probleme, que maintenant j'essai d'etre clair :lol:
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
Répondre