[Python] Interfacer un INA219 avec une passerelle Domoticz sous Raspberry Pi

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: [Python] Interfacer un INA219 avec une passerelle Domoticz sous Raspberry Pi

Message par Keros »

Sauf qu'en écrivant le print en début de ligne, cela termine la condition du If. Il faut qu'il soit aligné avec url+.
Autre chose, je ne pense pas que print() fonctionne : au-dessus la syntaxe est print "Erreur API Domoticz"
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
fcBourgogne
Messages : 172
Inscription : 31 mars 2020, 14:22

Re: [Python] Interfacer un INA219 avec une passerelle Domoticz sous Raspberry Pi

Message par fcBourgogne »

Bonjour,

Rien n'y fait, que des erreurs!

Avec ce code, ajout de "url+=print url":

Code : Tout sélectionner

if voltage is not None:
   print('Voltage={0:0.1f}V'.format(ina.voltage())
   url ='/json.htm?type=command&param=udevice&idx='+str(domoticz_idx)
    url+ ='&nvalue=0&svalue='
    url+=str('{0:0.1f};0').format(voltage)
    url+=print url
     maj_widget(url)
Erreur pointe toujours sur "url":
File "currentsensor.py", line 42
url ='/json.htm?type=command&param=udevice&idx='+str(domoticz_idx)
^
SyntaxError: invalid syntax
Si je retire tous les print(s), puisque que tu dis que cela termine la condition du "if":

Code : Tout sélectionner

if voltage is not None:
41 #   print('Voltage={0:0.1f}V'.format(ina.voltage())
42    url ='/json.htm?type=command&param=udevice&idx='+str(domoticz_idx)
43     url+ ='&nvalue=0&svalue='
44     url+=str('{0:0.1f};0').format(voltage)
45  #   url+=print url
46      maj_widget(url)
une autre erreur apparaît:
File "currentsensor.py", line 43
url+ ='&nvalue=0&svalue='
^
IndentationError: unexpected indent
Je tourne en rond. :twisted:
A+
Raspberry PI5+ 1WIRE + I2C +ESP8266 +esp32
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: [Python] Interfacer un INA219 avec une passerelle Domoticz sous Raspberry Pi

Message par Keros »

La dernière erreur indique IndentationError: unexpected indent > c'est donc un problème d'indentation, ce que je disais au-dessus. En python, l'indentation (le nombre d'espaces au début d'une ligne) est super important. Essaye de regarder comment fonctionne le code python pour ça et tu devrais arriver à lever cette erreur.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
fcBourgogne
Messages : 172
Inscription : 31 mars 2020, 14:22

Re: [Python] Interfacer un INA219 avec une passerelle Domoticz sous Raspberry Pi

Message par fcBourgogne »

Merci Keros, j'avance!

Concernant la dernière erreur:
File "currentsensor.py", line 43
url+ ='&nvalue=0&svalue='
^
IndentationError: unexpected indent
J'ai résolu le problème avec ceci:

Code : Tout sélectionner

if voltage is not None:
    #print('Voltage={0:0.1f}V'.format(ina.voltage())
    url='/json.htm?type=command&param=udevice&idx='+str(domoticz_idx)
    url+='&nvalue=0&svalue='
    url+=str('{0:0.1f};0').format(voltage)
    maj_widget(url)
    print "l'URL="
    print url
else:
    print('Probleme avec la lecture de l INA219')
    sys.exit(1)

il faut que tout ce qui se trouve sous la ligne du "if" soit sur la même colonne, tous les "url" et le reste sinon erreur.
Bon, maintenant je dois résoudre une autre erreur de format json pour domoticz:
Erreur API Domoticz
l'URL=
/json.htm?type=command&param=udevice&idx=740&nvalue=0&svalue=3.3;0
A+
Raspberry PI5+ 1WIRE + I2C +ESP8266 +esp32
fcBourgogne
Messages : 172
Inscription : 31 mars 2020, 14:22

Re: [Python] Interfacer un INA219 avec une passerelle Domoticz sous Raspberry Pi

Message par fcBourgogne »

Ah ben, non! :(

Domoticz refuse la connexion:
Erreur API Domoticz
<Response [401]>
http://192.168.1.**:****/json.htm?type=command&param=udevice&idx=740&nvalue=0&svalue=3.3
Savez vous où se trouve l'erreur?
A+
Raspberry PI5+ 1WIRE + I2C +ESP8266 +esp32
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: [Python] Interfacer un INA219 avec une passerelle Domoticz sous Raspberry Pi

Message par Keros »

Tu vois, le python est super précis quant à son écriture. Je connais très peu ce langage, mais je savais que tout devait être aligné "verticalement".

Tu as quoi de Menu Configuration / Paramètres / Onglets Sécurité / Réseaux de confiance ?

Ton script tourne sur la même machine qui a le serveur DomoticZ ?
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
fcBourgogne
Messages : 172
Inscription : 31 mars 2020, 14:22

Re: [Python] Interfacer un INA219 avec une passerelle Domoticz sous Raspberry Pi

Message par fcBourgogne »

de Keros:
Tu vois, le python est super précis quant à son écriture. Je connais très peu ce langage, mais je savais que tout devait être aligné "verticalement".
Ah oui, il fallait le savoir, car le deviner??? Merci, encore, je me coucherai moins c**.

Pour répondre à ta question:
Tu as quoi de Menu Configuration / Paramètres / Onglets Sécurité / Réseaux de confiance ?
réponse:
192.168.1.*;127.0.0.1
et pour:
Ton script tourne sur la même machine qui a le serveur DomoticZ ?
Hein, quoi, comment?
Le script est dans /home/pi/domoticz/scripts.
Et ma commande est lancée de mon pc avec putty.
A+
Raspberry PI5+ 1WIRE + I2C +ESP8266 +esp32
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: [Python] Interfacer un INA219 avec une passerelle Domoticz sous Raspberry Pi

Message par Keros »

Ton script aurait pu être sur une autre machine que celle qui héberge DomoticZ.

Avec Putty en SSH, tu lances la commande comme si tu étais sur le serveur directement.

Est-ce que tu peux essayer de remplacer 192.168.1.xx par 127.0.0.1 dans ton script ? Le 127.0.0.1 est l'ip de lui-même.

Essaye aussi de réécrire les réseaux de confiance. J'ai déjà vu que cela avait résolu le pb.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
fcBourgogne
Messages : 172
Inscription : 31 mars 2020, 14:22

Re: [Python] Interfacer un INA219 avec une passerelle Domoticz sous Raspberry Pi

Message par fcBourgogne »

J'ai fait les deux mon capitaine, mais toujours la même réponse:
Erreur API Domoticz
<Response [401]>
http://127.0.0.1:****/json.htm?type=command&param=udevice&idx=740&nvalue=0&svalue=3.3;0
Ce que je ne comprends pas, c'est que de mon pc avec mon navigateur internet si je tape:
http://192.168.1.**:****/json.htm?type=command&param=udevice&idx=740&nvalue=0&svalue=3.7;0
domoticz accepte et la valeur est mise à jour???
A+
Raspberry PI5+ 1WIRE + I2C +ESP8266 +esp32
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: [Python] Interfacer un INA219 avec une passerelle Domoticz sous Raspberry Pi

Message par Keros »

J'ai un seul script python et dedans j'utilise

Code : Tout sélectionner

r = requests.get("http://127.0.0.1:8080/json.htm?type=command&param=updatexxxxxxxxxxxxxxxxxxxxxxxxxx

Essaye de modifier le script en ajoutant au début :

Code : Tout sélectionner

import requests
et dans la fonction maj_widget(val_url), enlever l'authentification :

Code : Tout sélectionner

,auth=HTTPBasicAuth(user,password)
Si tu n'y arrives pas, mets-nous ton script entier avec les logs correspondant.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Répondre