Page 1 sur 1

faire varier lampes avec technologie dio/zwave avec interrupteur dummy [résolu]

Publié : 27 juin 2017, 01:30
par marsflow
Bonjour,

j'ai tenté de piloter en premier lieu 1 lampe grâce à un dummy
j'aimerai pouvoir piloter mes lampes dans le salon qui n'ont pas la même technologie (un zwave et un dio)(pas le même réseau électrique) avec un interrupteur dummy que je peux par la suite transformer en interrupteur physique si il faut.

j'ai tenté déja en créant un dummy et en le pilotant.

voici mes 2 scripts d'essais.

Code : Tout sélectionner

commandArray = {}

-- avec on ça marche

if (devicechanged['dim1'] == 'On')

 
 -- avec Set Level ça ne marche pas.
if (devicechanged['dim1'] == 'Set Level 53') then
   
  commandArray['chambre']='Set Level 50'
  
  end
  
  return commandArray

j'aurai voulu que ça soit comme ça

Code : Tout sélectionner

--si interrupteur idxB change de luminosite alors idxA change copie la même luminosite

IDXA = 1  -- chambre
IDXB = 96 -- dim1

commandArray = {}

if (devicechanged['dim1'] == 'Set Level 1' then
  commandArray['chambre'] = 'Set Level 1'
  
if (devicechanged['dim1'] == 'Set Level 2' then 
  commandArray['chambre'] = 'Set Level 2'
 
if (devicechanged['dim1'] == 'Set Level 3' then
  commandArray['chambre'] = 'Set Level 3'
  
if (devicechanged['dim1'] == 'Set Level 4' then
  commandArray['chambre'] = 'Set Level 4'

if (devicechanged['dim1'] == 'Set Level 5' then
  commandArray['chambre'] = 'Set Level 5'
  
if (devicechanged['dim1'] == 'Set Level 6' then
  commandArray['chambre'] = 'Set Level 6'
 
if (devicechanged['dim1'] == 'Set Level 7' then
  commandArray['chambre'] = 'Set Level 7'
  
if (devicechanged['dim1'] == 'Set Level 8' then
  commandArray['chambre'] = 'Set Level 8' 

if (devicechanged['dim1'] == 'Set Level 9' then
  commandArray['chambre'] = 'Set Level 9'
  
if (devicechanged['dim1'] == 'Set Level 10' then
  commandArray['chambre'] = 'Set Level 10'
 
if (devicechanged['dim1'] == 'Set Level 11' then
  commandArray['chambre'] = 'Set Level 11'
  
if (devicechanged['dim1'] == 'Set Level 12' then
  commandArray['chambre'] = 'Set Level 12'

if (devicechanged['dim1'] == 'Set Level 13' then
  commandArray['chambre'] = 'Set Level 13'
  
if (devicechanged['dim1'] == 'Set Level 14' then
  commandArray['chambre'] = 'Set Level 14'
 
if (devicechanged['dim1'] == 'Set Level 15' then
  commandArray['chambre'] = 'Set Level 15'
  
if (devicechanged['dim1'] == 'Set Level 16' then
  commandArray['chambre'] = 'Set Level 16'  
	  
end

return commandArray

je n'ai pas vu dans les bases de données de domoticz
un code comme ça
if (devicechanged['dim1'] == 'Set Level 16' then
mais celui qui ne tente rien à rien, je suis là pour apprendre.
je m'excuse de vous demandez pleins de choses, des choses que j'espère aideront d'autres personnes comme moi. :D

Re: faire varier lampes avec technologie dio/zwave avec interrupteur dummy

Publié : 27 juin 2017, 09:43
par vil1driver
Salut,

Code : Tout sélectionner

if (devicechanged['dim1']) then
	local level = otherdevices_svalues['dim1']
	print('niveau dim1 : ' .. level)
	if (otherdevices['dim1'] ~= 'Off') then
		commandArray['chambre'] = 'Set Level ' .. level
	else
		commandArray['chambre'] = 'Off'
	end	
end

Re: faire varier lampes avec technologie dio/zwave avec interrupteur dummy

Publié : 28 juin 2017, 00:18
par marsflow
Salut,

la fonction ne marche pas, j'ai en retour ceci

Code : Tout sélectionner

2017-06-28 00:25:49.290 LUA: niveau dim1 : 7
2017-06-28 00:25:49.291 Error: EventSystem: in /volume1/.@plugins/AppCentral/domoticz/scripts/lua/script_device_lumsalon.lua: ...pCentral/domoticz/scripts/lua/script_device_lumsalon.lua:5: attempt to index global 'commandArray' (a nil value))
commandArray['chambre'] = 'Set Level ' .. level

si je comprend le schéma
commandArray['DimmableDevice']='Set Level 50'

donc l'erreur c'est quand ça décode la fonction n'est pas bonne ou je fais fausse route totalement XD

commandArray['chambre'] = 'Set Level ' .. level
exemple : commandArray['chambre'] = 'Set Level ' 5
au lieu de commandArray['DimmableDevice']='Set Level 5'

j'ai essayé pleins de façon sans succès normal en réfléchissant :D

commandArray['chambre'] = ''Set Level ' .. level'
commandArray['chambre'] = ''Set Level ' 5'

commandArray['chambre'] = 'Set Level .. level'
commandArray['chambre'] = 'Set Level error'

commandArray['chambre'] = "'Set Level ' .. level"
commandArray['chambre'] = "Set Level ' error"


je suis bloqué :shock:

Re: faire varier lampes avec technologie dio/zwave avec interrupteur dummy

Publié : 28 juin 2017, 09:59
par vil1driver
mais si ça fonctionne..

travail dessus et essai de comprendre ton erreur au lieu de faire du bricolage en créant des erreurs de syntaxe..

tu as bien déclaré commandArray en début de script ?

Code : Tout sélectionner

commandArray = {}
après il faudra peut être convertir les niveaux.. car di.o est sur 16 niveaux et zwave souvent sur 100.. mais c'est une autre histoire

Re: faire varier lampes avec technologie dio/zwave avec interrupteur dummy

Publié : 28 juin 2017, 14:58
par marsflow
c'est bon ça marche, j'ai refait un copié coller et là ça marche et oui il faut convertir les niveaux de 1 à 15 vers du 0 à 100
j'ai récupérer les données, maintenant il faut indexer

Code : Tout sélectionner

 a[ 1] = "un" a[ 2] = "deux" 
 print( a[ 1], a[ 2], a[ 3]) 


[1] level = "6" level
[2] level = "13" level
[3] level = "20" level
[4] level = "26" level
[5]level = "33" level
[6]level = "40" level
[7] level = "46" level
[8] level = "53" level
[9] level = "60" level
[10] level = "66" level
[11] level = "73" level
[12] level = "80" level
[13] level = "86" level
[14] level = "93" level
[15] level = "100" level

Re: faire varier lampes avec technologie dio/zwave avec interrupteur dummy

Publié : 28 juin 2017, 15:01
par vil1driver
oui ou utiliser les maths.. ;)

Code : Tout sélectionner

commandArray['chambre'] = 'Set Level ' .. 100*level/15

Re: faire varier lampes avec technologie dio/zwave avec interrupteur dummy

Publié : 29 juin 2017, 16:22
par marsflow
Salut,
Ah oui tout bête merci beaucoup