récupération des données via python, conversion HEXA décimal...
- Defaliz
- Auteur du sujet
- Hors Ligne
- Membre platinium
Réduire
Plus d'informations
- Messages : 348
- Remerciements reçus 21
24 Aoû 2022 11:21 #1
par Defaliz
récupération des données via python, conversion HEXA décimal... a été créé par Defaliz
bonjour,
je récupère via python les données du MSun
mon problème est la conversion hexa --> décimal de EnPV_J et EnPV_P
les données hexa sont respectivement fffffffd et fffe3371 ce qui donne sur l'interface Msun : -0,3Wh et -11790,3Wh
mais avec python la réponse est pour les 2 : 4294967293
je n'ai pas de problème pour EnConso
comment convertir correctement ? (peut-être lié au nombre négatif ? )
merci
je récupère via python les données du MSun
mon problème est la conversion hexa --> décimal de EnPV_J et EnPV_P
les données hexa sont respectivement fffffffd et fffe3371 ce qui donne sur l'interface Msun : -0,3Wh et -11790,3Wh
mais avec python la réponse est pour les 2 : 4294967293
je n'ai pas de problème pour EnConso
comment convertir correctement ? (peut-être lié au nombre négatif ? )
merci
Connexion ou Créer un compte pour participer à la conversation.
- patrick
- Hors Ligne
- Administrateur
Réduire
Plus d'informations
- Messages : 3125
- Remerciements reçus 481
24 Aoû 2022 11:27 #2
par patrick
Réponse de patrick sur le sujet récupération des données via python, conversion HEXA décimal...
Salut Alain,
Je ne connais pas le Python mais à mon avis tu dois avoir le résultat de la conversion dans une variable non signée au lieu d'une signée.
Si tu peux mettre le bout de code ici je t'en dirais +.
Je ne connais pas le Python mais à mon avis tu dois avoir le résultat de la conversion dans une variable non signée au lieu d'une signée.
Si tu peux mettre le bout de code ici je t'en dirais +.
Connexion ou Créer un compte pour participer à la conversation.
- Defaliz
- Auteur du sujet
- Hors Ligne
- Membre platinium
Réduire
Plus d'informations
- Messages : 348
- Remerciements reçus 21
24 Aoû 2022 11:45 #3
par Defaliz
Réponse de Defaliz sur le sujet récupération des données via python, conversion HEXA décimal...
Merci patrick,
avec un convertisseur en ligne comme celui là www.rapidtables.org/fr/convert/number/hex-to-decimal.html
je converti bien la valeur 436 qui devient 1078 et qui correspond à ma valeur sur le msun
mais pour les 2 autres valeurs fffffffd et fffe3371 c'est faux..
voici mon code
import xml.etree.ElementTree as ET
import urllib.request
data = urllib.request.urlretrieve("http://10.3.141.26/status.xml", "status.xml") # l'adresse du MsunPV
root = ET.parse('status.xml').getroot()
#on recupere les infos des compteurs
for x in root.findall('cptVals'):
vals_txt=x.text
print(vals_txt)
compteurs=vals_txt.split(';')
conso_jour = int(compteurs[0],16)/10
inj_PV = int(compteurs[1],16)/10
inj_PV_jour = int(compteurs[2],16)/10
inj_totale = int(compteurs[3],16)/10
print("ConsoEnedis/jour : " + str(conso_jour) + " W/h")
print("Injection PV : " + str(inj_PV) + " W/h")
print("Injection PV /jour : " + str(inj_PV_jour) + " W/h")
print("Injection PV Totale : " + str(inj_totale) + " W/h")
et le résultat
43a;0;fffffffd;fffe3371;0;0;0;0;
ConsoEnedis/jour : 108.2 W/h
Injection PV : 0.0 W/h
Injection PV /jour : 429496729.3 W/h
Injection PV Totale : 429484939.3 W/h
avec un convertisseur en ligne comme celui là www.rapidtables.org/fr/convert/number/hex-to-decimal.html
je converti bien la valeur 436 qui devient 1078 et qui correspond à ma valeur sur le msun
mais pour les 2 autres valeurs fffffffd et fffe3371 c'est faux..
voici mon code
import xml.etree.ElementTree as ET
import urllib.request
data = urllib.request.urlretrieve("http://10.3.141.26/status.xml", "status.xml") # l'adresse du MsunPV
root = ET.parse('status.xml').getroot()
#on recupere les infos des compteurs
for x in root.findall('cptVals'):
vals_txt=x.text
print(vals_txt)
compteurs=vals_txt.split(';')
conso_jour = int(compteurs[0],16)/10
inj_PV = int(compteurs[1],16)/10
inj_PV_jour = int(compteurs[2],16)/10
inj_totale = int(compteurs[3],16)/10
print("ConsoEnedis/jour : " + str(conso_jour) + " W/h")
print("Injection PV : " + str(inj_PV) + " W/h")
print("Injection PV /jour : " + str(inj_PV_jour) + " W/h")
print("Injection PV Totale : " + str(inj_totale) + " W/h")
et le résultat
43a;0;fffffffd;fffe3371;0;0;0;0;
ConsoEnedis/jour : 108.2 W/h
Injection PV : 0.0 W/h
Injection PV /jour : 429496729.3 W/h
Injection PV Totale : 429484939.3 W/h
Connexion ou Créer un compte pour participer à la conversation.
- patrick
- Hors Ligne
- Administrateur
Réduire
Plus d'informations
- Messages : 3125
- Remerciements reçus 481
24 Aoû 2022 12:08 #4
par patrick
Réponse de patrick sur le sujet récupération des données via python, conversion HEXA décimal...
Il n'y a pas de solution simple: stackoverflow.com/questions/1375897/how-...-of-a-long-in-python
J’essaierai:
conso_jour =inj_PV = inj_PV_jour = inj_totale = -1 pour faire comprendre à Python qu'on attend des entiers signés.
Puis ton code:
conso_jour = int(compteurs[0],16)/10
inj_PV = int(compteurs[1],16)/10
inj_PV_jour = int(compteurs[2],16)/10
inj_totale = int(compteurs[3],16)/10
J’essaierai:
conso_jour =inj_PV = inj_PV_jour = inj_totale = -1 pour faire comprendre à Python qu'on attend des entiers signés.
Puis ton code:
conso_jour = int(compteurs[0],16)/10
inj_PV = int(compteurs[1],16)/10
inj_PV_jour = int(compteurs[2],16)/10
inj_totale = int(compteurs[3],16)/10
Connexion ou Créer un compte pour participer à la conversation.
- Defaliz
- Auteur du sujet
- Hors Ligne
- Membre platinium
Réduire
Plus d'informations
- Messages : 348
- Remerciements reçus 21
24 Aoû 2022 12:47 #5
par Defaliz
Réponse de Defaliz sur le sujet récupération des données via python, conversion HEXA décimal...
déclaré les variables -1 n'a pas fonctionné...
j'ai regardé le lien que tu m'a envoyé et j'ai trouvé une des réponses qui fonctionne !
import ctypes
inj_totale = inj_totale & 0xFFFFFFFF
inj_totale = ctypes.c_long(inj_totale).value / 10
tout fonctionne !!!
merci encore Patrick
j'ai regardé le lien que tu m'a envoyé et j'ai trouvé une des réponses qui fonctionne !
import ctypes
inj_totale = inj_totale & 0xFFFFFFFF
inj_totale = ctypes.c_long(inj_totale).value / 10
tout fonctionne !!!
merci encore Patrick
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
- Accueil
- forum
- MSun-PV
- Support technique
- récupération des données via python, conversion HEXA décimal...