Bonjour,
J'ai un Raspberry Pi 2 avec une clé USB Z-Wave, Domoticz installé et un module Fibaro RGBW (Plus d'autres modules sans intérêt pour ce sujet).
Tout cela fonctionne bien mais voila mon souci :
Je cherche à créer une ambiance lumineuse avec mon bandeau lumineux commandé par le module RGBW.
J'ai donc créé un variateur virtuel qui est scruté par un script Lua qui fait varier les couleurs plus ou moins vite selon la valeur du variateur.
Toujours jusque là : Tout va bien ... Sauf ...
Si je cherche à aller trop vite, à un moment, dans le log de Domoticz, j’aperçois des Timeout venant de commandes envoyées qui n'ont pas reçu de réponse. Du coup le changement de couleur s'arrête jusqu'à ce que le timeout arrive et passe à la suite.
Je me demande donc si, pour le module RGBW, le temps de ce programme d’ambiance, je ne peux pas désactiver l'attente de confirmation de commande.
Ce n'est pas grave si une couleur n'est pas reçu par le module, vu que j'en envoi une toutes les secondes.
Voila, je n'ai pas trouvé en cherchant sur les forums alors je me permet de poser la question ici.
Merci d'avance pour votre aide
Fabrice
Désactiver l'attente de la confirmation d'action
Re: Désactiver l'attente de la confirmation d'action
Hello,
Si j'ai bien compris, tu veux pas avoir un retour de ton device ? Si tel est le cas, je ne crois pas que cela soit possible
Par contre, je suis intéressé par ton script LUA pour la gestion de l'ambiance lumineuse 
Si j'ai bien compris, tu veux pas avoir un retour de ton device ? Si tel est le cas, je ne crois pas que cela soit possible
Re: Désactiver l'attente de la confirmation d'action
Salut LiPeR,
T'avais bien compris la question. Donc tant pis, je ralentirais la vitesse minimale.
Pour te récompenser d'avoir répondu à ma question, voici mon script :
Le principe :
Faire changer de couleur le bandeau lumineux à intervalle régulier selon la valeur du variateur virtuel.
On ne change qu'une couleur à la fois pour ne pas avoir trop de trafic sur le réseau zwave.
La couleur changée n'est jamais la même que précédemment.
Si la vitesse de défilement est rapide, on désactive l'effet de transition des couleurs du bandeau.
Le code :
... enfin c'est se qu'il en reste après suppression de plein d'autres évènements (selon la luminosité de la pièce, des mouvements ou encore l'allumage de la télé
).
Donc il peut y avoir des bugs alors n'hésite pas à revenir si tu as des problèmes d'intégration.
Fabrice
T'avais bien compris la question. Donc tant pis, je ralentirais la vitesse minimale.
Pour te récompenser d'avoir répondu à ma question, voici mon script :
Le principe :
Faire changer de couleur le bandeau lumineux à intervalle régulier selon la valeur du variateur virtuel.
On ne change qu'une couleur à la fois pour ne pas avoir trop de trafic sur le réseau zwave.
La couleur changée n'est jamais la même que précédemment.
Si la vitesse de défilement est rapide, on désactive l'effet de transition des couleurs du bandeau.
Le code :
Code : Tout sélectionner
-- Gère la lumière d'ambiance
-- Nom des variables utilisateur :
local Ambiance_last = 'Ambiance_Last' -- Dernière couleur changée : 0 = R / 1 = V / 2 = B
local Ambiance_speed = 'Ambiance_Speed' -- Dernière vitesse de défilement demandée
local Ambiance_color_r = 'Ambiance_Color_R' -- Dernière couleur rouge définie
local Ambiance_color_v= 'Ambiance_Color_V' -- Dernière couleur verte définie
local Ambiance_color_b = 'Ambiance_Color_B' -- Dernière couleur bleue définie
-- Nom des appareils :
local Variateur = 'RPI - Ambiance' -- Nom du variateur virtuel
local Rouge = '$RGB1 - Rouge' -- Nom du variateur de rouge du module RGBW
local Vert = '$RGB1 - Vert' -- Nom du variateur de vert du module RGBW
local Bleu = '$RGB1 - Bleu' -- Nom du variateur de bleu du module RGBW
local Module_Rgbw = '12' -- Node ID du module RGBW (+1) : Aller dans le "OpenZWave Control Panel" (Réglages / Matériel / Réglages / Gestion de noeud / Panneau de commade) et ajouter 1 au "Node Id" du "FIBARO System FGRGBWM441 RGBW Controller"
-- Nom du fichier de Log :
local LogFile = 'Log_ambiance.txt'
-- Adresse du fichier json :
local Json = 'http://10.0.0.10:8080/json.htm'
-- *** Fin des variables *** --
-- Fonctions :
math.randomseed(os.time())
math.random(); math.random(); math.random()
function trace(str)
-- Dé-commenter les lignes ci-dessous pour activer le retour dans le Log Domoticz
-- print("Ambiance : "..str)
-- TextToLogFile = TextToLogFile..str..'\r\n'
end
-- Gestion des évènements :
commandArray = {}
year = string.sub(last_move_off, 1, 4)
month = string.sub(last_move_off, 6, 7)
day = string.sub(last_move_off, 9, 10)
hour = string.sub(last_move_off, 12, 13)
minutes = string.sub(last_move_off, 15, 16)
seconds = string.sub(last_move_off, 18, 19)
avant = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
maintenant = os.time()
TextToLogFile = ''
if (otherdevices[Variateur] ~= 'Off') then
local speed = tonumber(otherdevices_svalues[Variateur])
local speed_old = tonumber(uservariables[Ambiance_speed])
local last_value = tonumber(uservariables[Ambiance_last])
local last_change = uservariables_lastupdate[Ambiance_last]
if (speed == 0) then
-- Allumage du mode ambiance
speed = 1
commandArray[Variateur]=tostring('Set Level ' .. 7)
end
if (speed > 2) then
speed = speed ^ 2
end
if (speed_old ~= speed) then
if (speed > 2) then
-- Vitesse de transition à 10
oss = "curl '".Json."?type=command¶m=applyzwavenodeconfig&idx=".Module_Rgbw."&valuelist=10_MTA%3D'&"
else
-- Vitesse de transition à 0
oss = "curl '".Json."?type=command¶m=applyzwavenodeconfig&idx=".Module_Rgbw."&valuelist=10_MA%3D%3D'&"
end
os.execute(oss)
commandArray['Variable:'..Ambiance_speed] = tostring(speed)
end
year = string.sub(last_change, 1, 4)
month = string.sub(last_change, 6, 7)
day = string.sub(last_change, 9, 10)
hour = string.sub(last_change, 12, 13)
minutes = string.sub(last_change, 15, 16)
seconds = string.sub(last_change, 18, 19)
avant = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
-- Nombre de secondes depuis le dernier changement de couleur :
diff = os.difftime (maintenant, avant)
if (diff >= speed) then
-- On va changer une couleur
trace('musique a vitesse ' .. speed)
if (last_value == 0) then
last_value = math.random(1, 2)
elseif (last_value == 1) then
last_value = math.random(0, 1)*2
else
last_value = math.random(0, 1)
end
commandArray['Variable:'..Ambiance_last] = tostring(last_value)
-- On recherche une nouvelle valeur pour la couleur
local actu_color = 0
if (last_value == 0) then
actu_color = tonumber(uservariables[Ambiance_color_r])
elseif (last_value == 1) then
actu_color = tonumber(uservariables[Ambiance_color_v])
else
actu_color = tonumber(uservariables[Ambiance_color_b])
end
local next_color = math.random(0, 100)
while (math.abs(next_color-actu_color)<25) do
next_color = math.random(0, 100)
end
if (last_value == 0) then
commandArray[Rouge]=tostring('Set Level ' .. next_color)
commandArray['Variable:'..Ambiance_color_r] = tostring(next_color)
elseif (last_value == 1) then
commandArray[Vert]=tostring('Set Level ' .. next_color)
commandArray['Variable:'..Ambiance_color_v] = tostring(next_color)
else
commandArray[Bleu]=tostring('Set Level ' .. next_color)
commandArray['Variable:'..Ambiance_color_b] = tostring(next_color)
end
end
elseif (devicechanged[Variateur] == 'Off') then
commandArray['Variable:'..Ambiance_speed] = '0'
-- Vitesse de transition remise à 10 si jamais on était passé en dessous
oss = "curl '".Json."?type=command¶m=applyzwavenodeconfig&idx=".Module_Rgbw."&valuelist=10_MTA%3D'&"
os.execute(oss)
commandArray[Rouge]=tostring('Set Level ' .. 0)
commandArray[Vert]=tostring('Set Level ' .. 0)
commandArray[Bleu]=tostring('Set Level ' .. 0)
end
-- Fin de la gestion de l'ambiance
if (TextToLogFile ~= '') then
fichier = io.open(LogFile, "a")
TextToLogFile = os.date('%x %X')..' : '..TextToLogFile
fichier:write(TextToLogFile)
fichier:close()
os.execute("chmod 777 "..TextToLogFile)
end
return commandArray
Donc il peut y avoir des bugs alors n'hésite pas à revenir si tu as des problèmes d'intégration.
Fabrice