Page 3 sur 3

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

Publié : 20 nov. 2023, 08:12
par fcBourgogne
Bonjour Keros,

Ca fonctionne :P

Le "import requests" était déjà présent.
Par contre sur ton conseil, j'ai viré ",auth=HTTPBasicAuth(user,password)" comme ceci:

Code : Tout sélectionner

def maj_widget(val_url):
    requete='http://'+domoticz_ip+':'+domoticz_port+val_url
    r=requests.get(requete)  #auth=HTTPBasicAuth(user,password))

    if  r.status_code != 200:
          print('Erreur API Domoticz')
          print r
          print requete
Cerise sur le gâteau, même le crontab fonctionne, le rafraichissement du device se fait bien toutes les mn.
Je vous mets le code complet qui fonctionne:

Code : Tout sélectionner

#!/usr/bin/python
# -*- coding: latin-1 -*-

import os
import sys
import socket
from requests.auth import HTTPBasicAuth
from ina219 import INA219
import requests


############# Parametres #################################

#recupération de l'IP utilisée
from subprocess import check_output
host_return= check_output(['hostname', '-I'])
domoticz_ip=host_return.split()[0]
domoticz_port='****'   # a changer si nécéssaire:
user=''
password=''
domoticz_idx='**'       # a changer en fonction de l'index attribué par domoticz


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# le fomat pour le capteur custom est celui ci:
#/json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=VALUE;

def maj_widget(val_url):
requete='http://'+domoticz_ip+':'+domoticz_port+val_url
r=requests.get(requete)  #auth=HTTPBasicAuth(user,password))

    if  r.status_code != 200:
          print('Erreur API Domoticz')
          print r
          print requete

#recuperation du voltage mesuree par l'INA219
ina = INA219(shunt_ohms=0.1, max_expected_amps = 0.6, address=0x45)
ina.configure()
voltage=ina.voltage()

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)
    
else:
    print('Probleme avec la lecture de l INA219')
    sys.exit(1)
  


Un grand merci à toi Keros.
A+