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

oO Ok alors je sais pas ce que j'ai foutu comme test mais j'ai jamais réussi a faire ça.....

C'est pour ça que je comprend pas depuis le début.

Je viens de re tester avec un interrupteur simple et ça a l'air de fonctionner. Merci je vais donc me rajouter ca dans mon modules.lua :( desolé encore
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
landaisbenj
Messages : 695
Inscription : 12 mars 2017, 19:24

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

Message par landaisbenj »

EDIT : Le temps que je réponde, le message a disparu ?
Oui car j'ai compris que j'avias plusieur erreure. J'ai supprimer mon message de test qui etait foireux.
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
rapinou
Messages : 119
Inscription : 17 nov. 2016, 01:44

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

Message par rapinou »

Parfait.
Maintenant que tu as compris le truc, tu vas pouvoir créer tes propres fonction au besoin ;)
RPI 3 - Raspbian 8 (Jessie) - Domoticz V3.5877
landaisbenj
Messages : 695
Inscription : 12 mars 2017, 19:24

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

Message par landaisbenj »

rapinou a écrit :Parfait.
Maintenant que tu as compris le truc, tu vas pouvoir créer tes propres fonction au besoin ;)
Oui merci. Franchement j’étais loin de penser que c’était possible de modifier ça:

Code : Tout sélectionner

commandArray['Motion test'] = "On AFTER 5"
Du coup je pousse un peu le vice (mais je ne peux pas tester car avec ma beta je ne peux pas creer de selector), est ce que tu peux me dire si c'est possible avec un interrupteur sélecteur ?

Par exemple si j'ai un sélecteur et les niveaux: OFF, ENTREE, GARAGE, FENETRE; est-ce que je peux écrire ça :

Code : Tout sélectionner

commandArray['CameraIP'] = "ENTREE AFTER 5"
?
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 »

J'aime beaucoup les fonctions visant à ajouter un délai à l'action dans un sujet traitant de comment diminuer le délai inéran au traitement de l'action :D

parlons de nouvelles fonctions dans le sujet qui va bien si vous le voulez bien ;)

viewtopic.php?f=17&t=3940&start=20

:mrgreen: :mrgreen:
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 »

:D tu as raison. J’ai machinalement pris celui là dans mon historique. A la rigueur je peux même créer un autre topic vu que ma question concerne directement l’implantation lua domoticz. J’espère seulement qu’on viendra me repondre.
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 »

Bonjour,

Petite question sur ce script qui m'intéresse pour gagner de la rapidité pour allumer la lumière dans le couloir quand une présence est détectée.

Ce script est il toujours d'actualité ou faut il le remplacer par l'autre script Modules.lua de vil1driver beaucoup plus complet mais qui ne m'intéresse pas pour l'instant car j'apprends tout doucement et je veux comprendre ce que je fait.

Car pour moi il ne fonctionne pas avec tous les essais que j'ai pu faire. Bon en même temps pour me connecter sur mon Domoticz même en local je demande une authentification, du coup j'ai essayé de le changer légèrement afin qu'il prenne le mot de passe mais c'est peut être ça qui fait que mon scripte tout simple ne fonctionne pas.

Donc le voici que j'ai appelé script_device_Speedup.lua :

Code : Tout sélectionner

-- /!\ require Domoticz v3.5776 and after /!\

curl = '/usr/bin/curl ' -- don't forgot the final space

domoticzIP = '192.168.1.92'
domoticzPORT = '8080'
domoticzUSER = 'xxxxx'		-- nom d'utilisateur
domoticzPSWD = 'xxxxx'	        -- mot de pass
domoticzURL = 'http://'..domoticzUSER..':'..domoticzPSWD..'@'..domoticzIP..':'..domoticzPORT

-- switch On a device and set level if dimmmable
function switchOn(device, level)
   if level ~= nil then
      os.execute(curl..'"'..domoticzURL..'/json.htm?type=command&param=switchlight&idx='..otherdevices_idx[device]..'&switchcmd=Set%20Level&level='..level..'" &')
   else   
      os.execute(curl..'"'..domoticzURL..'/json.htm?type=command&param=switchlight&idx='..otherdevices_idx[device]..'&switchcmd=On" &')
   end   
end

-- switch On a devive for x seconds
-- non compatible avec le script sendTwice
function switchOnFor(device, secs)
   switchOn(device)
   commandArray[device] = "Off AFTER "..secs
end

-- switch Off a device
function switchOff(device)
   os.execute(curl..'"'..domoticzURL..'/json.htm?type=command&param=switchlight&idx='..otherdevices_idx[device]..'&switchcmd=Off" &')
end

-- Toggle a device
function switch(device)
   os.execute(curl..'"'..domoticzURL..'/json.htm?type=command&param=switchlight&idx='..otherdevices_idx[device]..'&switchcmd=Toggle" &')
end

-- switch On a group or scene
function groupOn(device)
   os.execute(curl..'"'..domoticzURL..'/json.htm?type=command&param=switchscene&idx='..otherdevices_scenesgroups_idx[device]..'&switchcmd=On" &')
end

-- switch Off a group
function groupOff(device)
   os.execute(curl..'"'..domoticzURL..'/json.htm?type=command&param=switchscene&idx='..otherdevices_scenesgroups_idx[device]..'&switchcmd=Off" &')
end

et mon script :

Code : Tout sélectionner

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

commandArray = {}

-- si le capteur de mouvement = On alors allume la lumière du couloir
if devicechanged('79') == 'On'  then

   switchOn('63', 50)
   
end
return commandArray 
Il y a t'il des erreurs ?
Merci :)
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 :Bonjour,

Ce script est il toujours d'actualité ou faut il le remplacer par l'autre script Modules.lua de vil1driver beaucoup plus complet mais qui ne m'intéresse pas pour l'instant car j'apprends tout doucement et je veux comprendre ce que je fait.
Le script est d'actualité pour ce que tu veux en faire.
Il faut comprendre que le fichier ne contient que des raccourcis vers l'API JSON afin de shunter le déroulement de domoticz. Tu peux ajouter ou retirer ce que tu veux suivant tes besoins.

Du coup, la rapidité des commandes par rapports aux commandes normal (ex: commandArray['Lampe']='On') ne se fait que grace au curl JSON.
Tu ne te sert pas du fonctionnement interne de domoticz (qui prend plus de temps que l'API JSON) mais des commandes d'activation en curl qui sont tres direct et donc plus rapide.
(Dans mon exemple:

Code : Tout sélectionner

os.execute(curl 'http://USER:MDP@ADRESSEIP:PORT/json.htm?type=command&param=switchlight&idx=IDX&switchcmd=On')
)
Si ton besoin n'est que d’accélérer une seule commande, tu peux tout simplement te servir de la commande JSON en elle meme dans ton script a la place du commandArray ou du fichier de vil1driver.
(Dans ton exemple:

Code : Tout sélectionner

os.execute(curl 'http://USER:MDP@ADRESSEIP:PORT/json.htm?type=command&param=switchlight&idx=IDX&switchcmd=Set%20Level&level=50')
)

Pour ton fichier:
Car pour moi il ne fonctionne pas avec tous les essais que j'ai pu faire. Bon en même temps pour me connecter sur mon Domoticz même en local je demande une authentification, du coup j'ai essayé de le changer légèrement afin qu'il prenne le mot de passe mais c'est peut être ça qui fait que mon scripte tout simple ne fonctionne pas.

Donc le voici que j'ai appelé script_device_Speedup.lua :

Code : Tout sélectionner



domoticzIP = '192.168.1.92'
domoticzPORT = '8080'
domoticzUSER = 'xxxxx'		-- nom d'utilisateur
domoticzPSWD = 'xxxxx'	        -- mot de pass
domoticzURL = 'http://'..domoticzUSER..':'..domoticzPSWD..'@'..domoticzIP..':'..domoticzPORT
Tu vois bien ici qu'il faut que tu entre ton login mot de passe dans le fichier...
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 »

Ok, Ok je comprend mieux...

Du coup je vais essayer d'autre truc ce soir pour voir si j'ai compris le fonctionnement ;)...
landaisbenj
Messages : 695
Inscription : 12 mars 2017, 19:24

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

Message par landaisbenj »

D'ailleurs je viens de voir ca:
Donc le voici que j'ai appelé script_device_Speedup.lua
En fait le fichier n'est pas un script. C'est juste un fichier de fonction. Comme un annuaire par exemple. Du coups il ne faut pas le nommer comme un script au risque qu'il soit lancer par domoticz.
Tu le nomme simplement, et tu l'appel comme il est nommé, par ton script a toi.

Donc tu as un fichier 'annuaire' et un script reel. Dans ton script tu viens dire:

Je veux faire référence a mon fichier annuaire au cas ou: une fonction dont j'ai besoin n'existe que dans ce fichier.
Et quand tu appels une fonction (comme switchOn) alors il ira la chercher dans ton fichier si tu as mis la bonne adresse.

Toi tu nomme ton fichier script_device_Speedup.lua mais tu appels: /home/pi/domoticz/scripts/lua/Speedup.lua
Si tu veux l'appeler normalement il faudrait /home/pi/domoticz/scripts/lua/scrip_device_Speedup.lua à la rigueur.

Nomme ton fichier comme tu veux, mais appele le par la bonne adresse. Nous c'est un fichier modules.lua que l'on appel comme ca:

Code : Tout sélectionner

-- chargement des modules
dofile('/home/pi/domoticz/scripts/lua/modules.lua')
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
Répondre