Valeurs differentes entre dispositifs et compteurs

Forum dédié au protocole MQTT : fonctionnement, intégration ...
jacques68
Messages : 237
Inscription : 10 mai 2015, 12:21

Valeurs differentes entre dispositifs et compteurs

Message par jacques68 »

Bonjour à tous
J'essaye temps bien que mal à faire remonter dans Domoticz les valeurs d'un routeur solaire. La remontée des infos se fait via le protocole Mqtt.
Après plusieurs tentatives infructueuses j'ai enfin réussi à faire remonter les valeurs dans Domoticz :D .
J'ai cependant un soucis, les valeurs lues dans le tableau des dispositifs ne sont pas celle lues dans l'onglet des compteurs!!
Je m'explique:
Dans la page dispositif ci-dessous on peu voir les differents compteurs MaxPv. Ils sont tous à la bonne valeur.
Dispositifs
Dispositifs
dispositifs.jpg (254.17 Kio) Consulté 334 fois

Par contre dans l'onglet mesure ci dessous quelques compteurs ont tous la même valeur celle du dispositif Puissance active:
Par exemple dans le tableau dispositif 3e ligne EnergieRoutée à la valeur 52.025Khw qui est labonne valeur. Dans le tableau compteurs le compteur Energie routée m'indique 382.1w!!! :mrgreen: :mrgreen:
Compteurs
Compteurs
compteurs.jpg (229.4 Kio) Consulté 334 fois
Je vois pas trop ce qui provoque ce "bug". Dans les logs j'ai ce message d'erreur:
2023-03-14 22:58:48.931 Error: MaxPv: Select device doesn't have the option for received STATE "9")
2023-03-14 22:58:49.032 Error: MaxPv: Select device doesn't have the option for received STATE "9")
Une idée?? ;) ;) ;)
Keros
Messages : 4410
Inscription : 23 juil. 2019, 20:57

Modération

Message par Keros »

Sujet déplacé dans la section MQTT.
Flying Domotic
Messages : 255
Inscription : 10 mars 2020, 15:26

Re: Valeurs differentes entre dispositifs et compteurs

Message par Flying Domotic »

Les compteurs de type énergie possèdent 2 valeurs : la puissance instantanée en W et le total des KWh. Le total des KWh est affiché dans l'onglet dispositif, et la puissance en gros dans les widget (mais remarquer qu'on y a aussi le total des KWh ainsi que les KWh journalier écrit en plus petit).

Ceux qui seraient tentés de regarder comment le total des KWh est stocké dans la base ou envoyé par MQTT constateraient que le les données sont fait des Wh, qui sont divisées par 1000 à l'affichage. Et sValue contient puissance et total KWh séparés par un point-virgule.
jacques68
Messages : 237
Inscription : 10 mai 2015, 12:21

Re: Valeurs differentes entre dispositifs et compteurs

Message par jacques68 »

En gros dans mon cas dans le widget le total des KWh est exact. Par contre comment expliquer que la puissance instantanée de certains widget soit fausse? Dans mon cas 4 sont erronés. J'essaye de comprendre comment est récupérer cette valeur.
Apparemment l'affichage puissance de 4 widgets est récupérer sur le widget de la puissance active . Peut on modifier cela à quelque part??? :mrgreen:
Flying Domotic
Messages : 255
Inscription : 10 mars 2020, 15:26

Re: Valeurs differentes entre dispositifs et compteurs

Message par Flying Domotic »

jacques68 a écrit : 16 mars 2023, 12:31 En gros dans mon cas dans le widget le total des KWh est exact. Par contre comment expliquer que la puissance instantanée de certains widget soit fausse? Dans mon cas 4 sont erronés. J'essaye de comprendre comment est récupérer cette valeur.
Comment voit-on que les puissances instantanées sont fausses ?

Pour info, c'est l'équipement connecté qui renvoie les 2 valeurs : puissance instantanée et puissance totale. Domoticz ne fait que les afficher.

On peut calculer la valeur totale en prenant tous les changements de la valeur instantanée et en les cumulant au prorata de leur durée. Ça ne fonctionne bien que si l'intervalle entre 2 mesures instantanées est faible (genre 1/100e de seconde). Domoticz sait calculer la puissance totale à partir de la valeur instantanée, mais les résultats ne sont que moyennement fiables.
jacques68 a écrit : 16 mars 2023, 12:31 Apparemment l'affichage puissance de 4 widgets est récupérer sur le widget de la puissance active . Peut on modifier cela à quelque part??? :mrgreen:
Comme les données arrivent par MQTT, il faut voir si on a la main sur le code qui génère les messages MQTT, pour faire en sorte que les calculs soient faits sur les valeurs qu'on souhaite (voie ajouter ce qu'on veut en plus de ce qui existe déjà).

Maintenant, il est assez facile de créer un dispositif virtuel de n'importe quel type, et de le charger à partir de données récupérées ailleurs, y compris dans un dispositif inclus dans Domoticz, en utilisant un petit bout de script LUA ou dZvents. Encore faut-il avoir les bonnes données en entrée.

Là, il semble effectivement que ça soit la puissance apparente qui soit utilisée. On a bien le facteur de puissance, reste à voir quel est l'intervalle de mise à jour.

Ce qui serait intéressant serait de récupérer la trame MQTT globale envoyée. Si on trouve les bonnes données, il est assez facile de les extraire pour envoyer dans Domoticz (par exemple avec https://github.com/FlyingDomotic/domoti ... per-plugin ;-)

Pour voir ce qui passe, on peut utiliser un scanner MQTT (genre MQTT.fx ou MQTT-Explorer), voire écrire un petit script python comme :

Code : Tout sélectionner

#!/usr/bin/python3
import paho.mqtt.client as mqtt
import logging
import logging.handlers as handlers
import pathlib
import random

def on_connect(client, userdata, flags, rc):
  mqttc.subscribe(MQTT_Topic, 0)

def on_message(mosq, obj, msg):
  if msg.retain==0:
    logger.info(msg.topic + " " + msg.payload.decode("UTF-8").replace("\n","").replace("\t",""))

def on_subscribe(mosq, obj, mid, granted_qos):
  pass

# Compose unique MQTT client Id
random.seed()
mqttClientName = pathlib.Path(__file__).stem+'_{:x}'.format(random.randrange(65535))

appName = "mqttDump"
# Log settings
log_format = "%(asctime)s - %(message)s"
logger = logging.getLogger(appName)
logger.setLevel(logging.INFO)
logHandler = handlers.TimedRotatingFileHandler('<Mettre ici le répertoire où on veut écrire le fichier>'+appName+'.log', when='midnight', interval=1)
logHandler.suffix = "%Y%m%d"
logHandler.setLevel(logging.INFO)
formatter = logging.Formatter(log_format)
logHandler.setFormatter(formatter)
logger.addHandler(logHandler)

# Compose unique MQTT client Id
random.seed()
mqttClientName = pathlib.Path(__file__).stem+'_{:x}'.format(random.randrange(65535))

# MQTT Settings
MQTT_Broker = "<Mettre ici le nom ou l'IP du serveur MQTT>"
MQTT_Topic = "#"
mqttc = mqtt.Client(mqttClientName)
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.username_pw_set("<Mettre ici l'utilisateur MQTT>", "<Mettre ici le mot de passe MQTT>")
mqttc.connect(MQTT_Broker)
mqttc.loop_forever()
jacques68
Messages : 237
Inscription : 10 mai 2015, 12:21

Re: Valeurs differentes entre dispositifs et compteurs

Message par jacques68 »

Comment voit-on que les puissances instantanées sont fausses ?
Je le vois que c'est faux car 5 widgets on exactement la même puissance instantanée. Par exemple la puissance instantanée du widget Energie routée indique 382,1w alors que ce devrait etre 0w. Idem pour 3 autres widgets qui devraient également indiquée 0w.
Ce qui est curieux c'est que si je vais dans l'onglet dispositif ces mêmes compteurs indiquent la bonne valeur soit 0w !!
Comme je le disais dans un précédent message la valeur totale (sur la deuxième ligne) elle est correcte.
Ce qui serait intéressant serait de récupérer la trame MQTT globale envoyée.
Je vais essayer de récuperer la trame MQTT...c'est pas gagnée... :roll: :roll:
Flying Domotic
Messages : 255
Inscription : 10 mars 2020, 15:26

Re: Valeurs differentes entre dispositifs et compteurs

Message par Flying Domotic »

Quel est le plug-in utilisé ? C'est peut être lui qui n'utilise pas le bon champs pour la puissance instantanée des différents items.

Si on arrive à récupérer la trame complète, et isoler les bons champs, on pourra soit modifier le plug-in existant, u le remplacer par un autre.

Pour la trame, il suffit d'installer le prog et de le lancer, puis d'attendre que le dispositif envpie une trame.
jacques68
Messages : 237
Inscription : 10 mai 2015, 12:21

Re: Valeurs differentes entre dispositifs et compteurs

Message par jacques68 »

Bonjour
Merci de m'aider un peu.. :D
Le plugin utilisé est MQTT Auto Discovery Client Gateway with LAN interface.
J'ai installé MQTT explorer et voiçi ce que je récupère:
MQTT.jpg
MQTT.jpg (228.62 Kio) Consulté 181 fois


Tu penses moyen d'en faire quelque chose??
Flying Domotic
Messages : 255
Inscription : 10 mars 2020, 15:26

Re: Valeurs differentes entre dispositifs et compteurs

Message par Flying Domotic »

J'ai jeté un œil vite fait sur MaxPV : il est possible que le souci vienne du fichier de configuration sur l'ESP.

Il serait intéressant, après avoir laissé tourner MQTT Explorer quelques minutes, de déployer l'ensemble des topics MAXPV, de faire un <CTRL-A> puis <CTRL-C>, et de coller le contenu dans un fichier pour l'attacher ici.
jacques68
Messages : 237
Inscription : 10 mai 2015, 12:21

Re: Valeurs differentes entre dispositifs et compteurs

Message par jacques68 »

Voilà j'ai laisser tourner 30mn et j'obtiens ceci

Code : Tout sélectionner


192.168.1.19
maxpv
SYS
logger = 17:09:14 [WARNING LOOP TIME] 163
freeHeap = 25400
heapFragmentation = 7
maxFreeBlockSize = 22552
cpuFrequency = 80
lastResetReason = Power On
state = disconnected
vrms = 232.5
irms = 1.512
papp = 351.7
cosphi = 0.7731
pact = 271.9
prouted = 0.0
pimpulsion = 0.0
indexrouted = 64.015
indeximport = 326.815
indexexport = 48.640
indeximpulsion = 0.000
indexrelay = 14044
triacmode = 9
relaymode = 9
statusbyte = 00000000
boost = off
homeassistant
sensor
maxpv16347289
maxpv16347289Tension
config = {"dev":{"ids":"maxpv16347289","name":"MaxPV","mdl":"MaxPV!","mf":"JetBlack","sw":"3.56","cu":"http://192.168.1.250"},"avty_t":"maxpv/state","pl_avail":"connected","pl_not_avail":"disconnected","uniq_id":"maxpv16347289Tension","dev_cla":"voltage","stat_cla":"measurement","name":"Tension","stat_t":"maxpv/vrms","unit_of_meas":"V"}
maxpv16347289Courant
config = {"dev":{"ids":"maxpv16347289","name":"MaxPV","mdl":"MaxPV!","mf":"JetBlack","sw":"3.56","cu":"http://192.168.1.250"},"avty_t":"maxpv/state","pl_avail":"connected","pl_not_avail":"disconnected","uniq_id":"maxpv16347289Courant","dev_cla":"current","stat_cla":"measurement","name":"Courant","stat_t":"maxpv/irms","unit_of_meas":"A"}
maxpv16347289PuissanceApparente
config = {"dev":{"ids":"maxpv16347289","name":"MaxPV","mdl":"MaxPV!","mf":"JetBlack","sw":"3.56","cu":"http://192.168.1.250"},"avty_t":"maxpv/state","pl_avail":"connected","pl_not_avail":"disconnected","uniq_id":"maxpv16347289PuissanceApparente","dev_cla":"apparent_power","stat_cla":"measurement","name":"Puissance apparente","stat_t":"maxpv/papp","unit_of_meas":"VA"}
maxpv16347289FacteurPuissance
config = {"dev":{"ids":"maxpv16347289","name":"MaxPV","mdl":"MaxPV!","mf":"JetBlack","sw":"3.56","cu":"http://192.168.1.250"},"avty_t":"maxpv/state","pl_avail":"connected","pl_not_avail":"disconnected","uniq_id":"maxpv16347289FacteurPuissance","stat_cla":"measurement","name":"Facteur de puissance","stat_t":"maxpv/cosphi","unit_of_meas":""}
maxpv16347289PuissanceActive
config = {"dev":{"ids":"maxpv16347289","name":"MaxPV","mdl":"MaxPV!","mf":"JetBlack","sw":"3.56","cu":"http://192.168.1.250"},"avty_t":"maxpv/state","pl_avail":"connected","pl_not_avail":"disconnected","uniq_id":"maxpv16347289PuissanceActive","dev_cla":"power","stat_cla":"measurement","name":"Puissance active","stat_t":"maxpv/pact","unit_of_meas":"W"}
maxpv16347289PuissanceRoutee
config = {"dev":{"ids":"maxpv16347289","name":"MaxPV","mdl":"MaxPV!","mf":"JetBlack","sw":"3.56","cu":"http://192.168.1.250"},"avty_t":"maxpv/state","pl_avail":"connected","pl_not_avail":"disconnected","uniq_id":"maxpv16347289PuissanceRoutee","dev_cla":"power","stat_cla":"measurement","name":"Puissance routée","stat_t":"maxpv/prouted","unit_of_meas":"W"}
maxpv16347289PuissanceProduite
config = {"dev":{"ids":"maxpv16347289","name":"MaxPV","mdl":"MaxPV!","mf":"JetBlack","sw":"3.56","cu":"http://192.168.1.250"},"avty_t":"maxpv/state","pl_avail":"connected","pl_not_avail":"disconnected","uniq_id":"maxpv16347289PuissanceProduite","dev_cla":"power","stat_cla":"measurement","name":"Puissance produite","stat_t":"maxpv/pimpulsion","unit_of_meas":"W"}
maxpv16347289EnergieRoutee
config = {"dev":{"ids":"maxpv16347289","name":"MaxPV","mdl":"MaxPV!","mf":"JetBlack","sw":"3.56","cu":"http://192.168.1.250"},"avty_t":"maxpv/state","pl_avail":"connected","pl_not_avail":"disconnected","uniq_id":"maxpv16347289EnergieRoutee","dev_cla":"energy","stat_cla":"total_increasing","name":"Energie routée","stat_t":"maxpv/indexrouted","unit_of_meas":"kWh"}
maxpv16347289EnergieImportee
config = {"dev":{"ids":"maxpv16347289","name":"MaxPV","mdl":"MaxPV!","mf":"JetBlack","sw":"3.56","cu":"http://192.168.1.250"},"avty_t":"maxpv/state","pl_avail":"connected","pl_not_avail":"disconnected","uniq_id":"maxpv16347289EnergieImportee","dev_cla":"energy","stat_cla":"total_increasing","name":"Energie importée","stat_t":"maxpv/indeximport","unit_of_meas":"kWh"}
maxpv16347289EnergieExportee
config = {"dev":{"ids":"maxpv16347289","name":"MaxPV","mdl":"MaxPV!","mf":"JetBlack","sw":"3.56","cu":"http://192.168.1.250"},"avty_t":"maxpv/state","pl_avail":"connected","pl_not_avail":"disconnected","uniq_id":"maxpv16347289EnergieExportee","dev_cla":"energy","stat_cla":"total_increasing","name":"Energie exportée","stat_t":"maxpv/indexexport","unit_of_meas":"kWh"}
maxpv16347289EnergieProduite
config = {"dev":{"ids":"maxpv16347289","name":"MaxPV","mdl":"MaxPV!","mf":"JetBlack","sw":"3.56","cu":"http://192.168.1.250"},"avty_t":"maxpv/state","pl_avail":"connected","pl_not_avail":"disconnected","uniq_id":"maxpv16347289EnergieProduite","dev_cla":"energy","stat_cla":"total_increasing","name":"Energie produite","stat_t":"maxpv/indeximpulsion","unit_of_meas":"kWh"}
maxpv16347289TempsFonctionnementRelais
config = {"dev":{"ids":"maxpv16347289","name":"MaxPV","mdl":"MaxPV!","mf":"JetBlack","sw":"3.56","cu":"http://192.168.1.250"},"avty_t":"maxpv/state","pl_avail":"connected","pl_not_avail":"disconnected","uniq_id":"maxpv16347289TempsFonctionnementRelais","dev_cla":"duration","stat_cla":"total_increasing","name":"Temps de fonctionnement relais","stat_t":"maxpv/indexrelay","unit_of_meas":"min"}
select
switch
$SYS
shellies



 / 
 / 
 / 
 / 



{
  "dev": {
    "ids": "maxpv16347289",
    "name": "MaxPV",
    "mdl": "MaxPV!",
    "mf": "JetBlack",
    "sw": "3.56",
    "cu": "http://192.168.1.250"
  },
  "avty_t": "maxpv/state",
  "pl_avail": "connected",
  "pl_not_avail": "disconnected",
  "uniq_id": "maxpv16347289Tension",
  "dev_cla": "voltage",
  "stat_cla": "measurement",
  "name": "Tension",
  "stat_t": "maxpv/vrms",
  "unit_of_meas": "V"
}

homeassistant/sensor/maxpv16347289/maxpv16347289Tension/config
Dernière modification par Keros le 20 mars 2023, 20:33, modifié 1 fois.
Raison : Modification des balises
Répondre