[DzVents] NAS-WR01ZE (neo coolcam Power plug) compteur kWh négatif/faussé
Publié : 22 déc. 2019, 17:50
Bonsoir à tous!
Hier j'ai reçu mes 10 Power Plug (NAS-WR01ZE) de chez neo coolcam.
Tout fonctionne à merveille, inclusion, listing dans le dispositif, etc...
Mais après quelques minutes, je m'aperçois que le compteur kWh est en négatif... pour tous les 10 plugs.
Après investigation,
le plug envoie une valeur (de temps en temp) dans la table Meter, colonne value.
Il faut donc rectifier cette valeur par un script DzVentz.
Voici mon script modifié et qui fonctionne, le script original ne faisait pas le check du nil.
Si vous voulez aussi avoir un graph "clean", il faut supprimer de la BDD, les valeurs négatives. Cela ne pose pas de problème vu que l'incrémentation est "gardée" entre les autres lignes valides.
En SSH:
AVANT

APRES

Hier j'ai reçu mes 10 Power Plug (NAS-WR01ZE) de chez neo coolcam.
Tout fonctionne à merveille, inclusion, listing dans le dispositif, etc...
Mais après quelques minutes, je m'aperçois que le compteur kWh est en négatif... pour tous les 10 plugs.
Après investigation,
le plug envoie une valeur
Code : Tout sélectionner
nil (DzVents)Il faut donc rectifier cette valeur par un script DzVentz.
Voici mon script modifié et qui fonctionne, le script original ne faisait pas le check du nil.
source: https://www.domoticz.com/forum/viewtopic.php?t=28987 by akamming
Code : Tout sélectionner
return {
on = {
devices = {
"Spa kWh Meter" -- add your to be corrected neo coolcam kwh meter here
}
},
logging = {
level = domoticz.LOG_DEBUG,
marker = "NEO Coolcam kWh Fix"
},
data = {
["Spa kWh Meter"] = { history = true, maxItems = 10 } -- add your to be corrected neo coolcam kwh meter here
},
execute = function(domoticz,device)
domoticz.log("device["..device.name.."] was changed to ["..device.state.."]",domoticz.LOG_DEBUG);
domoticz.log("total is "..device.WhTotal..", usage="..device.usage,domoticz.LOG_DEBUG)
if (device.WhTotal>0) then
domoticz.log("adding to history",domoticz.LOG_DEBUG)
domoticz.data[device.name].add(device.WhTotal)
else
local CorrectedWhTotal=0
if (domoticz.data[device.name].max()) then
CorrectedWhTotal=domoticz.data[device.name].max()
end
device.updateElectricity(device.usage,CorrectedWhTotal).silent()
domoticz.log("Negative number, correcting WhTotal from "..device.WhTotal.." to "..CorrectedWhTotal,domoticz.LOG_DEBUG)
end
end
}En SSH:
Code : Tout sélectionner
sqlite3 domoticz.db
DELETE FROM Meter WHERE value < 0;

APRES
