Page 1 sur 1
Erreurs Compteurs Incrementiels 2020-1
Publié : 30 mars 2020, 00:34
par balajol
Bonjour,
J'ai une erreur sur mes compteurs depuis la mise à jour, évoqué également sur le forum Anglais:
https://www.domoticz.com/forum/viewtopi ... er#p241023
la suite demain
Cdt
Bertrand
Re: Erreurs Compteurs Incrementiels 2020-1
Publié : 01 avr. 2020, 19:17
par balajol
Bonsoir,
A priori pas de retour sur le Forum Anglais
Suis je le seul concerné côté Français ?
Pour aller plus loin, j'ai 3 compteurs alimentés par des scripts lua qui fonctionnaient depuis plusieurs années.
Ils sont devenus fous après passage en 2020-1
De quelques centaines de minutes relevées je suis passé à plusieurs Millions par jour sur les 3 compteurs.
J'ai essayé de supprimer ces compteurs, les recréer en modifiant le nom, un autre script pour alimenté la variable etc..
Cette variable utilisateur de type Decimal semble se renseigner normalement à chaque minute.
Je n'ai pas trouvé de rapport fixe entre la durée réelle et la valeur affichée par le compteur.
A l'écoute de toute suggestion bienveillante
Par avance Merci
Cdt
Bertrand
Un des scripts/
Code : Tout sélectionner
[/
-- Ce script permet de remonter la durée de fonctionnement d'un dispositif dans un capteur virtuel de type "Counter Incremental"
-- Pré requit, création variable utilisateur: "Total_Compteur_Chaud_Solaire", type décimal, valeur départ :0 et un counter , offset:0, type Temps, Mn
--------------------------------Durée fonctionnement Chaudiere avec Appoint solaire par le ballon tampon
------ Variables à éditer ------
--------------------------------
local switch = 'Chaudiere_Appoint_Solaire' -- Nom de l'interrupteur dans Domoticz
local counter = otherdevices_idx['Duree_App_Solaire_Chaud']--local counter = xxxx -- Numéro idx du Counter Incremental dans Domoticz (Duree-Marche-Ventilation, Counter à créer, offset: 0 Temps, Mn)
local current_date = (os.date("%d/%m/%Y")) -- Date courante
local current_heure = (os.date("%X")) -- 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 de la chaudiere avec appoint solaire -------------------------------
-----------------------------------------------------------------------------------------------------
-- Si "Chaudiere_Appoint_Solaire" ON incrémentation de la variable Domoticz "Total_Compteur_Chaud_Solaire"--
if (otherdevices[switch]=='On') then
commandArray['Variable:Total_Compteur_Chaud_Solaire']= tostring(uservariables["Total_Compteur_Chaud_Solaire"] +1)
end
-- Envoi de la variable valeur "Total_Compteur_Chaud_Solaire" dans le Custom Counter "Total_Compteur_Chaud_Solaire" --
Valeur_Compteur = tostring(uservariables["Total_Compteur_Chaud_Solaire"])
-- Envoi de la valeur dans le compteur "counter" --
commandArray['UpdateDevice'] = counter .. '|0|' .. tostring(Valeur_Compteur)
-- Envoi des informations dans le LOG si "Chaudiere_Appoint_Solaire" = ON --
if (otherdevices[switch]=='On') then
print("")
print("Cumul du temps de fonctionnement de la chaudiere avec appoint solaire "..Valeur_Compteur.." Minutes".." // "..math.floor((Valeur_Compteur/60)).. " Heures")
print("")
commandArray['OpenURL'] = 'http://192.168.0.13:8091/json.htm?type=command¶m=udevice&idx=1339&nvalue=0&svalue='..math.floor((Valeur_Compteur/60))..'' --1339:DUMMY Virtuel Cumul_Marche_Solaire_Chaud_Heures General Text
end
return commandArray
code]
Le résultat après passage en 2020-1:
[attachment=0]Graph_Appoint_sol.JPG[/attachment]
Re: Erreurs Compteurs Incrementiels 2020-1
Publié : 01 avr. 2020, 20:49
par aleph0
J'ai eu le même problème avec une bêta récente. Le comportement des compteurs a été changé :
Avant, compteur normal ou compteur incrémental, il fallait calculer le total par script et envoyer le total via le commandArray
Maintenant, pour le compteur incrémental, il faut n'envoyer que la valeur a ajouter aux compteur, et le compteur l'ajoute lui-même a la valeur précédente. Pour les compteurs non incrémental, ça reste comme avant : on envoi au compteur la valeur totale du compteur
Envoyé de mon moto g(6) en utilisant Tapatalk
Re: Erreurs Compteurs Incrementiels 2020-1
Publié : 01 avr. 2020, 21:17
par balajol
Bonsoir aleph0,
Merci de ton retour et de la piste donnée.
Je n'ai aucune idée de la syntaxe, je vais "gratter" la chose.
Si quelqu'un à l'aise avec le Lua peut travailler le script ci dessus, il m'évitera surement une nuit blanche
par avance Merci
Cdt
Bertrand
Re: Erreurs Compteurs Incrementiels 2020-1
Publié : 01 avr. 2020, 21:23
par aleph0
J'ai lu le script en diagonale, mais a priori il te suffirait de remplacer
commandArray['UpdateDevice'] = counter .. '|0|' .. tostring(Valeur_Compteur)
Par
commandArray['UpdateDevice'] = counter .. '|0|1'
Envoyé de mon moto g(6) en utilisant Tapatalk
Re: Erreurs Compteurs Incrementiels 2020-1
Publié : 02 avr. 2020, 00:54
par balajol
Re,
De Nouveau Merci,
Les compteurs sont renseignés sans passer par une variable, je vais laisser 2 Scripts différents en test.
Il me restera le formatage pour afficher les heures à partir des Compteurs en mn . (Une autre paire de manche pour moi )
Cdt
Bertrand
Re: Erreurs Compteurs Incrementiels 2020-1
Publié : 13 avr. 2020, 12:18
par balajol
Bonjour aleph0 et tous,
Le script fonctionne bien depuis. j'ai gardé la variable utilisateur du script Précédent pour avoir la durée totale en heures dans un dispositif text.
Petit bémol dans la version 2020 et cette nouvelle utilisation du compteur incrémental, si il n'y a pas de donnée ajoutée dans le délais "Capteur Expiré" le bandeau passe au rouge.
J'ai résolu le problème, pour ma part en ajoutant 0 au compteur à 00 h : 1 mn (à 0 heure le compteur journalier passe normalement à 0, le fait de lui injecter cette valeur nulle supprime le délais capteur expiré)
Cdt
Bertrand