[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.
Soyez précis quant aux prérequis, les manips à faire pour que votre bijou fonctionne (des chmod ?, un apt-get à faire ...)
Décrivez précisément son fonctionnement.
Merci d'utiliser la balise correspondante à votre sujet : [Tuto], [Plugin], [DzVents], [LUA], [Python], [Bash] ...
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
fcBourgogne
Messages : 52
Inscription : 31 mars 2020, 14:22

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

Message 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+
Répondre