[Python] Etat des batteries dans un widget
Publié : 15 déc. 2014, 21:48
Bonsoir
Je poste ici une version plus "pythonesque" du script de récupération de l'etat des batteries du blog
Cela diffère uniquement par la méthode python utilisée beaucoup plus canonique
Le principe est le même : avoir un widget virtual sensor pourcentage ,renseigner les adresses,port,idx du coposant a interroger et du composant % et initialiser la variable terme= avec le terme à rechercher
La variable debug=1 affiche le resultat reçu de Domoticz
Je poste ici une version plus "pythonesque" du script de récupération de l'etat des batteries du blog
Cela diffère uniquement par la méthode python utilisée beaucoup plus canonique
Le principe est le même : avoir un widget virtual sensor pourcentage ,renseigner les adresses,port,idx du coposant a interroger et du composant % et initialiser la variable terme= avec le terme à rechercher
La variable debug=1 affiche le resultat reçu de Domoticz
Code : Tout sélectionner
#!/usr/bin/python
# -*- coding: utf-8 -*-
# la 2eme version du script python pour les batteries
# utilise le dict JSON que renvoie Domoticz
# Domoticz renvoie 2 pavés de données ,1 pave concernant les géneralités (long/lat, status ...)
# on peut aller chercher ces données par un r[terme] si les données sont dans la partie haute (avant le result[
# 1 autre pavé qui content les datas spécifiques au capteur en question , ces valeurs sont dans la liste result
# on utilise alors r['result'][0][terme] pour aller chercher dans le dict de la liste result
# il faut le module requests
# sudo pip install requests
import time
import requests
############# Parametres #################################
#debug = 1 on affiche les chaines de caracteres recues
debug=0
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# les parametres de Domoticz
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
domoticz_ip='192.168.1.81'
domoticz_port='8080'
# l'idx du peripherique ZWave a interroger pour batterie (cf Idx Domoticz)
periph_zwave_idx='105'
#terme a rechercher
terme='BatteryLevel'
# ici l'idx Domoticz du widget a alimenter avec la valeur lue
# un widget pourcentage est adatpté pour les capacité des batteries
idx_widget_texte='145'
# fin du parametrage #
############### fin des parametres #############################
def maj_widget(valeur_batterie):
requete='http://'+domoticz_ip+':'+domoticz_port+json_url_text1+idx_widget_texte+json_url_text2+valeur_batterie
r=requests.get (requete)
# l URL Domoticz a interroger pour recuperer les infos est type=devices&rid=XXX
json_url1='/json.htm?type=devices&rid='
requete='http://'+domoticz_ip+':'+domoticz_port+json_url1+periph_zwave_idx
# l URL Domoticz pour le widget virtuel
json_url_text1='/json.htm?type=command¶m=udevice&idx='
json_url_text2='&svalue='
#http://IP:PORT/json.htm?type=command¶m=udevice&idx=mon_idx&svalue=POURCENTAGE
##### main ##
result={}
r=requests.get (requete).json()
valeur_batterie=str(r['result'][0][terme])
if debug==1:
print r
print valeur_batterie
ma=raw_input ('entrez valeur')
maj_widget(valeur_batterie)