Page 1 sur 2

Help bout de script

Publié : 18 mai 2019, 16:11
par Phebus06
Bonjour,

Avec le bout de script ci dessous qui fonctionne :
elseif command == 'Tv' then
local text = get(deviceValue, 2):gsub("%W", ""):lower()
local value = get(deviceValue, 3)
for Tv,words in pairs(Tv) do
for word in words:gmatch("%w+") do
if text == word then
commandArray[Tv] = 'Set Level: ' .. value
end
end
end
je voudrais pouvoir sortir une valeur x10
j'ai essayé ça mais ça ne fonctionne pas ???
elseif command == 'Tv' then
local text = get(deviceValue, 2):gsub("%W", ""):lower()
local value = get(deviceValue, 3)
for Tv,words in pairs(Tv) do
for word in words:gmatch("%w+") do
if text == word then
local chaine = Tv
if (tonumber(chaine) < 10) then
local chaine = chaine *10
commandArray[Tv] = 'Set Level: ' .. chaine
elseif chaine > 9 then
local chaine = chaine + 20
commandArray[Tv] = 'Set Level: ' .. chaine
end
end
end

Re: Help bout de script

Publié : 18 mai 2019, 17:18
par vil1driver
Salut,

Commence par ajouter quelques print de debug et t'aider des messages d'erreur

Re: Help bout de script

Publié : 18 mai 2019, 17:31
par Phebus06
Bon j'ai trouvé ça donne ceci :
elseif command == 'Tv' then
local text = get(deviceValue, 2):gsub("%W", ""):lower()
local value = get(deviceValue, 3)
for Tv,words in pairs(Tv) do
for word in words:gmatch("%w+") do
if text == word then
local chaine = value
if (tonumber(chaine) < 10) then
local chaine = chaine *10
commandArray[Tv] = 'Set Level: ' .. chaine
maintenant je veux essayer de décomposer le chiffre trouvé dans chaine en ayant deux chiffre la dizaine d'un coté et l'unité de l'autre :
ex : 12 doit donner 1 et 2

si quelqu'un connait ... je vais chercher ;)

Re: Help bout de script

Publié : 18 mai 2019, 17:33
par Phebus06
oui merci vil1driver c'est ce que j'ai fait... j'ai toujours ta phrase en tête ... mettre des print LOL

Re: Help bout de script

Publié : 18 mai 2019, 18:06
par vil1driver
Regarde le tout dernier paragraphe de cette page

http://www.luteus.biz/Download/LoriotPr ... haine.html

Ça devrait t'aider

Re: Help bout de script

Publié : 18 mai 2019, 18:21
par denis_brasseur
Phebus06 a écrit : 18 mai 2019, 17:31 maintenant je veux essayer de décomposer le chiffre trouvé dans chaine en ayant deux chiffre la dizaine d'un coté et l'unité de l'autre :
ex : 12 doit donner 1 et 2

si quelqu'un connait ... je vais chercher ;)
Plein de solution, comme l'utilisation de string.sub.
Moi, j'aime bien l'utilisation de modulo.
Tu divise par 10 pour obtenir le chiffre des dizaines (1 dans ton exemple), et tu utilise le modulo pour obtenir le reste de la division par 10 (2 dans ton exemple)

Code : Tout sélectionner

valeur_dizaine = math.floor(chaine /10)
valeur_unite = chaine%10 --reste de la division par 10
Avec l'avantage de ne pas avoir besoin de tester si la valeur est < à 10.

Re: Help bout de script

Publié : 18 mai 2019, 18:23
par denis_brasseur
vil1driver a écrit : 18 mai 2019, 18:06 Regarde le tout dernier paragraphe de cette page

http://www.luteus.biz/Download/LoriotPr ... haine.html

Ça devrait t'aider
Tu es plus rapide que moi, même idée :lol:

Re: Help bout de script

Publié : 18 mai 2019, 18:59
par Phebus06
Super, merci vil1driver
elseif command == 'Tv' then
local text = get(deviceValue, 2):gsub("%W", ""):lower()
local value = get(deviceValue, 3)
for Tv,words in pairs(Tv) do
for word in words:gmatch("%w+") do
if text == word then
local chaine = value
if (tonumber(chaine) < 10) then
local chaine = chaine *10
commandArray[Tv] = 'Set Level: ' .. chaine
elseif (tonumber(chaine) > 9) then
local chaine1 = (string.sub(chaine,1,1) *10)
local chaine2 = (string.sub(chaine,2,2) *10)
print (chaine1)
print (chaine2)
commandArray[Tv] = 'Set Level: ' .. chaine1
commandArray[Tv] = 'Set Level: ' .. chaine2 AFTER 1
end
end
end
end
bon j'ai encore une erreur sur cette ligne commandArray[Tv] = 'Set Level: ' .. chaine2 AFTER 1
je n'arrive pas à trouver la façon de placer le AFTER ???

Re: Help bout de script

Publié : 18 mai 2019, 19:01
par vil1driver
je ne sais pas s'il est possible de mixer set level et after..
mais si cela l'est il faudrait plutôt écrire

Code : Tout sélectionner

commandArray[1] = {[Tv] = 'Set Level: ' .. chaine1}
commandArray[2] = {[Tv] = 'Set Level: ' .. chaine2 .. ' AFTER 1'}
en sachant que AFTER est en seconde

Re: Help bout de script

Publié : 18 mai 2019, 19:21
par Phebus06
INCROYABLE vil1driver tu as encore la bonne réponse :D :D :D :D :D

C'est super. Maintenant grâce à ça que j'ai incorporé dans le programme de bierdok : Piloter sa box Domoticz avec Google Assistant
viewtopic.php?f=17&t=7125
je peux changer toutes les chaînes de ma Tv par la Google Home mini :D :D :D :D :D

C'est le Top