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 ? :D :D :D

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
:o

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...