Help bout de script

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 <\>.
Phebus06
Messages : 213
Inscription : 26 janv. 2017, 09:25

Help bout de script

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

Re: Help bout de script

Message par vil1driver »

Salut,

Commence par ajouter quelques print de debug et t'aider des messages d'erreur
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
Phebus06
Messages : 213
Inscription : 26 janv. 2017, 09:25

Re: Help bout de script

Message 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 ;)
Phebus06
Messages : 213
Inscription : 26 janv. 2017, 09:25

Re: Help bout de script

Message par Phebus06 »

oui merci vil1driver c'est ce que j'ai fait... j'ai toujours ta phrase en tête ... mettre des print LOL
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Help bout de script

Message par vil1driver »

Regarde le tout dernier paragraphe de cette page

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

Ça devrait t'aider
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
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Help bout de script

Message 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.
Dernière modification par denis_brasseur le 18 mai 2019, 18:29, modifié 1 fois.
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Help bout de script

Message 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:
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Phebus06
Messages : 213
Inscription : 26 janv. 2017, 09:25

Re: Help bout de script

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

Re: Help bout de script

Message 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
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
Phebus06
Messages : 213
Inscription : 26 janv. 2017, 09:25

Re: Help bout de script

Message 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
Répondre