Page 2 sur 3
Re: Pb mise à jour COUNTER
Publié : 10 juil. 2017, 19:05
par TheFFF
Oula, est en Français spécial débutant ?
Je rajoute le END juste avant cette ligne ?
if (otherdevices[switch2]=='On') then
Re: Pb mise à jour COUNTER
Publié : 10 juil. 2017, 19:39
par vil1driver
C'est a ça que je pensais oui,
Tant que tu ne clôtures pas un if, tout ce qui suit en dépend..
Re: Pb mise à jour COUNTER
Publié : 10 juil. 2017, 20:11
par TheFFF
Merci de ton aide, mais la valeur ne bouge pas. Pas mieux.
Je lit et relit les messages précédents, et je ne comprends pas ou je bloque. Rageant.
Re: Pb mise à jour COUNTER
Publié : 10 juil. 2017, 20:28
par vil1driver
c'est normal car tu lit la variable pour mettre a jour ton compteur..
et celle ci n'est pas incrémentée.. quelle que soit la valeur que tu lui donne dans le script, elle ne prendra cette valeur qu'à la toute fin du script..
il te faut utiliser le calcule et non la variable
Re: Pb mise à jour COUNTER
Publié : 10 juil. 2017, 20:32
par TheFFF
Mais déjà, la variable ne varie pas.
Je croit que je patauge complètement du coup. Ce script fonctionne si je ne met qu'un "objet" à surveiller, la valeur s’incrémente bien, et le compteur aussi.
Mais si j'ajoute dans le script un second "objet", je "casse" le script et plus rien ne marche.
Haaaaaa !!!!
Re: Pb mise à jour COUNTER
Publié : 10 juil. 2017, 20:41
par vil1driver
fais voir le script qui fonctionne
Re: Pb mise à jour COUNTER
Publié : 10 juil. 2017, 21:32
par TheFFF
Ce script là fonctionne si je le met seul
Code : Tout sélectionner
-- Ce script permet de remonter la durée de fonctionnement d'un appareil de type "Counter Incremental"
--------------------------------
------ Variables à éditer ------
--------------------------------
local switch = 'Célia Téléphone' -- Nom de l'interrupteur virtuel dans Domoticz
local counter = 57 -- Numéro idx du Counter Incremental dans Domoticz
local current_date = (os.date("01/01/2017")) -- Date courante
local current_heure = (os.date("00:01")) -- Heure courante
--------------------------------
-- Fin des variables à éditer --
--------------------------------
-------------------
-- Fonction time --
-------------------
time = os.date("*t")
function timedifference(d)
s = otherdevices_lastupdate[d]
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
t1 = os.time()
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = os.difftime (t1, t2)
return difference
end
------------------- --------------------
-- Fonction arrondir à deux décimales --
------------------- --------------------
-- Le chiffre"x" (dec or x) correspond au nombre de décimales à prendre en compte dans le resultat
function arrondir(num, dec)
if num == 0 then
return 0
else
local mult = 10^(dec or 2)
return math.floor(num * mult + 0.5) / mult
end
end
commandArray = {}
-----------------------------------------------------------------------------------------------------
--------------------Calcul du temps de fonctionnement du téléphone de Célia -------------------------------
-----------------------------------------------------------------------------------------------------
-- Si chauffage ON incrémentation de la variable Domoticz "Total_Téléphone_Célia" --
if (otherdevices[switch]=='On') then
commandArray['Variable:Total_Téléphone_Célia']= tostring(uservariables["Total_Téléphone_Célia"] +1)
end
-- Envoi de la varaible valeur Total_Téléphone_Lylou dans le Custom Counter Valeur_Compteur --
Valeur_Compteur = tostring(uservariables["Total_Téléphone_Célia"])
-- Envoi de la valeur dans le compteur "counter" --
commandArray['UpdateDevice'] = counter .. '|0|' .. tostring(Valeur_Compteur)
-- Envoi des informations dans le LOG si téléphone ON --
if (otherdevices[switch]=='On') then
print("")
print("Cumul du temps de fonctionnement du téléphone de Célia "..Valeur_Compteur.." Minutes".." // "..math.floor((Valeur_Compteur/60)).. " Heures")
print("")
end
return commandArray
Re: Pb mise à jour COUNTER
Publié : 12 juil. 2017, 08:54
par vil1driver
je l'aurais écrit comme ceci même si perso je n'aurais probablement pas utilisé de variable intermédiaire,
(je serait directement allé lire la valeur du compteur..)
Code : Tout sélectionner
type : TIME
--------------------------------
------ Variables à éditer ------
--------------------------------
local switch = 'Léo Playstation 4' -- Nom de l'interrupteur virtuel dans Domoticz
local counter = 59 -- Numéro idx du Counter Incremental dans Domoticz
local switch2 = 'Léo Téléphone' -- Nom de l'interrupteur virtuel dans Domoticz
local counter2 = 56 -- Numéro idx du Counter Incremental dans Domoticz
--------------------------------
-- Fin des variables à éditer --
--------------------------------
commandArray = {}
if (otherdevices[switch]=='On') then
-- incrémentation
local Valeur_Compteur_PS4Léo = tonumber(uservariables["Total_PS4_Léo"] +1)
-- log
print("Cumul du temps de fonctionnement de la PS4 de Léo "..os.date("!%X",60*Valeur_Compteur_PS4Léo))
-- maj variable
commandArray['Variable:Total_PS4_Léo']= tostring(Valeur_Compteur_PS4Léo)
-- maj compteur
commandArray[1] = {['UpdateDevice'] = counter..'|0|'..Valeur_Compteur_PS4Léo
end
if (otherdevices[switch2]=='On') then
-- incrémentation
local Valeur_Compteur_TéléphoneLéo = tonumber(uservariables["Total_Téléphone_Léo"] +1)
-- log
print("Cumul du temps de fonctionnement du téléphone de Léo "..os.date("!%X",60*Valeur_Compteur_TéléphoneLéo ))
-- maj variable
commandArray['Variable:Total_Téléphone_Léo']= tostring(Valeur_Compteur_TéléphoneLéo)
-- maj compteur
commandArray[2] = {['UpdateDevice'] = counter2..'|0|'..Valeur_Compteur_TéléphoneLéo
end
return commandArray
Re: Pb mise à jour COUNTER
Publié : 12 juil. 2017, 12:28
par TheFFF
Un script tout prêt à tester, merci à toi !!
Je ne suis pas à la maison cette fin de semaine, je ne peux pas tester de suite. Je ne manquerais pas de te faire un retour une fois les script en place.
Un grand merci à toi, je vais étudier cela de plus prêt.
Re: Pb mise à jour COUNTER
Publié : 16 juil. 2017, 20:00
par TheFFF
Petit retour après test du script. Ca ne fonctionne pas
J'ai cela en LOG /home/pi/domoticz/scripts/lua/script_time_durée.lua:6: function arguments expected near 'local'
J'ai vérifié les valeurs LOCAL SWITCH et SWITCH 2, c'est bien cela, pas de soucis.
LOCAL COUNTER et COUNTER2 sont OK aussi
Reste les LOCAL VALEUR_ mais là je ne sais pas trop...