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

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
marsflow
Messages : 83
Inscription : 25 mai 2017, 20:42
Localisation : Landes

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

Message 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
Dernière modification par marsflow le 08 juil. 2017, 23:49, modifié 2 fois.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

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

Message 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
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
marsflow
Messages : 83
Inscription : 25 mai 2017, 20:42
Localisation : Landes

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

Message 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:
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

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

Message 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
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
marsflow
Messages : 83
Inscription : 25 mai 2017, 20:42
Localisation : Landes

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

Message 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
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

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

Message par vil1driver »

oui ou utiliser les maths.. ;)

Code : Tout sélectionner

commandArray['chambre'] = 'Set Level ' .. 100*level/15
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
marsflow
Messages : 83
Inscription : 25 mai 2017, 20:42
Localisation : Landes

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

Message par marsflow »

Salut,
Ah oui tout bête merci beaucoup
Répondre