Page 10 sur 16

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

Publié : 22 nov. 2017, 14:40
par Phebus06
landaisbenj a écrit :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'" &')
Oui c'est moi :D ... et je ne fais pas de fixette sur les rubans et ampoules RGB mais comme j'en ai autant les utiliser au mieux lol

Alors oui c'est volontaire d'avoir mis un brightness à 5% dans le modules.lua (mais comme tu l'a noté plus haut, il me semble aussi que quelque soit la valeur cela ne fonctionne pas), car au cas ou ça fonctionne, ça évitera d'avoir un flash quand ça s'allume car d'abord une commande qui allume à 100% et choisi la couleur, et ensuite mettre une intensité plus faible c'est pas très waf...

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

Publié : 22 nov. 2017, 14:56
par Phebus06
hihi je viens de voir que j'avais écrit mes lignes à l'envers pour ma logique du flash que j'expliquais lol
évidement j'avais écrit ça :

Code : Tout sélectionner

 switchColor('ruban led salon', '2E64FE')      --donc au pire si l'intensité fonctionne ça s'allume à 5%
 switchOn('ruban led salon', '50')                 --puis intensité à 50%
je l'ai pensé comme ça car je pouvais sur la page de domoticz, choisir la couleur sur la palette avant d'allumer le ruban led. Mais peut être quand ligne de commande ça ne peut fonctionner.

Du coup faut que j'essaie dans l'autre sens aussi voir ce que ça fait.

Par contre tu as raison je dois pouvoir faire tout ça avec la même fonction switchOn('mondevice','couleur','intensité')

Bon j'ai encore pas mal d'essai à faire ce soir. C'est ma femme qui va être contente MDR...

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

Publié : 24 nov. 2017, 15:22
par Nissa
Bonjour,
Ca ne fonctionne pas chez moi erreur :
/home/pi/domoticz/scripts/lua/modules.lua:494: attempt to concatenate field '?' (a nil value)
La ligne 494

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..'" &')
Je suppose qu'il s'agit d'un problème sur domoticzPSWD et du domoticzPASSCODE.
J'ai essayé renseigné ou non renseigné, toujours la même erreur.
Une idée ?

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

Publié : 24 nov. 2017, 15:32
par landaisbenj
Montre nous les variables et la commandes de ton script

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

Publié : 24 nov. 2017, 15:44
par Nissa
Le script fonctionne correctement avec les commandArray

Code : Tout sélectionner

   
 if(otherdevices[switch]=='Off') then
      -- commandArray[switch]='On'
      switchOn('switch')
 end 
 
et mes déclarations dans modules.lua :

Code : Tout sélectionner

-- domoticz
domoticzIP = '192.168.22.xx'	--'127.0.0.1'
domoticzPORT = '8080'
domoticzUSER = 'xxx'		-- nom d'utilisateur
domoticzPSWD = 'xxx'		-- mot de pass
domoticzPASSCODE = 'xxx'	-- pour interrupteur protégés
domoticzURL = 'http://xxxxx:8080'
Pour PASSCODE, je n'utilise pas d'interrupteur protégé, (je ne sais d'ailleurs pas où cela se configure !), j'ai donc mis le même mot de passe que PSWD
Merci pour ton aide

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

Publié : 24 nov. 2017, 17:44
par vil1driver
Remplace

Code : Tout sélectionner

switchOn('switch')
Par

Code : Tout sélectionner

switchOn(switch)
Car dans ton cas switch est une variable et non le nom de ton inter

domoticzURL n'a pas à être modifié comme tu l'as fait

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

Publié : 24 nov. 2017, 18:04
par Nissa
Ooops, oui effectivement, j'ai bêtement collé mon URL dans domoticzURL, j'avais pas vu qu'il fallait mettre les variables précédemment déclarées.
Et là ça fonctionne !!!!
Une fois de plus, mille mercis VIL1DRIVER
A+

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

Publié : 24 nov. 2017, 19:43
par Phebus06
Bonjour,
Alors voici Speedup.lua avec le choix de la couleur pour les ampoules, ruban RGB qui fonctionne bien chez moi :D .

Speedup.lua

Code : Tout sélectionner

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

Dans tous mes script_device_blabla.lua dans lesquels je souhaite avoir un gain de réactivité,
je dois ajouter au tout début ces 2 lignes pour charger Speedup.lua

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

]]

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

domoticzIP = '192.168.1.92'
domoticzPORT = '8080'
domoticzUSER = 'toto' --bien sur a changer par le sien
domoticzPSWD = 'zéro' --idem mettre son code
domoticzURL = 'http://'..domoticzIP..':'..domoticzPORT


-- switch On a device and set level if dimmmable
function switchOn(device, level)
   if level ~= nil then
      os.execute(curl..'-u '..domoticzUSER..':'..domoticzPSWD..' "'..domoticzURL..'/json.htm?type=command&param=switchlight&idx='..otherdevices_idx[device]..'&switchcmd=Set%20Level&level='..level..'" &')
   else   
      os.execute(curl..'-u '..domoticzUSER..':'..domoticzPSWD..' "'..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..'-u '..domoticzUSER..':'..domoticzPSWD..' "'..domoticzURL..'/json.htm?type=command&param=switchlight&idx='..otherdevices_idx[device]..'&switchcmd=Off" &')
end

-- Toggle a device
function switch(device)
   os.execute(curl..'-u '..domoticzUSER..':'..domoticzPSWD..' "'..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..'-u '..domoticzUSER..':'..domoticzPSWD..' "'..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..'-u '..domoticzUSER..':'..domoticzPSWD..' "'..domoticzURL..'/json.htm?type=command&param=switchscene&idx='..otherdevices_scenesgroups_idx[device]..'&switchcmd=Off" &')
end

-- 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=false&iswhite=false" &')
end


--[[

commandArray['ma lampe']='On'             devient      switchOn('ma lampe')
commandArray['ma lampe']='On FOR 30'      devient      switchOnFor('ma lampe', '30')
commandArray['ma lampe']='Off'            devient      switchOff('ma lampe')
commandArray['ma lampe']='Toggle'         devient      switch('ma lampe')
commandArray['ma lampe']='Set Level 50'   devient      switchOn('ma lampe', 50)
								devient      switchColor('ma lampe RGB', 'couleur HTML')
commandArray['Group:mon groupe']='On'     devient      groupOn('mon groupe')
commandArray['Group:mon groupe']='Off'    devient      groupOff('mon groupe')
commandArray['Scene:ma scène']='On'       devient      groupOn('ma scène')

]]

Et un petit exemple qui chez moi allume un ruban led dans la chambre quand on passe dans le couloir. Ca ne sert à rien lol c'était pour faire les test...
script_device_essai.lua

Code : Tout sélectionner

-- chargement des modules
dofile('/home/pi/domoticz/scripts/lua/Speedup.lua')
local debug = true  -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir

commandArray = {}

-- si le capteur de mouvement de l'entrée = On alors allume le ruban de led de la chambre pendant 60 secondes, avec la couleur rose, à l'intensité de 3%
if (devicechanged['Xiaomi Détecteur de Mouvement Entrée'] == 'On' ) then

switchOnFor('Ruban Led de la Chambre', '60')
switchColor('Ruban Led de la Chambre', '000501')
switchOn('Ruban Led de la Chambre', '3')

   
end
return commandArray
ATTENTION, les actions se font de haut en bas donc il faut bien respecter l'ordre pour que cela fonctionne.
Et maintenant amusez-vous bien :D

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

Publié : 24 nov. 2017, 22:54
par landaisbenj
Bien joué !

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

Publié : 20 déc. 2017, 09:30
par plouf34
Bonjour à tous
Je tourne maintenant sur Windows, cette ligne pour l’appel du modules.lua bien entendu ne fonctionne plus

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

Que dois je mettre sachant que le fichier est dans c:\program files (x86)\domoticz\......

Merci d’avance.