Si tout comme moi vous commencez à avoir un certain nombre de scripts python, vous vous êtes aperçu que certains éléments de configuration doivent être saisi à chaque fois. Vous retrouvez l'adresse du serveur domoticz, son port éventuellement les identifiants et mot de passe.
Imaginez le travail de retouche des scripts si vous étiez contraint de changer d'adresse IP ou de port. De plus, en cas de changement de valeur d'IDX (suppression d'un dispositif), il faut également modifier les valeurs.
Pour pallier à cela, j'utilise depuis peu un fichier de configuration qui regroupe toutes les informations importantes. Ce fichier est importé comme module dans le script, un peu à la manière d'un include en PHP. J'ai fait l'essai sur des scripts python mais j'imagine que cela doit être possible également dans les autres langages.
1ere chose à faire, le fichier de configuration "config.py":
Code : Tout sélectionner
pi@srv-domoticz ~/domoticz/scripts/python/tts $ nano config.pyCode : Tout sélectionner
#!/usr/bin/python
# -*-coding:Utf-8 -*
# Fichier de configuration pour scripts python
# José - Janvier 2015
# Module conentenant toutes les variables Karotz
karotz_ip='192.168.10.113'
karotz_voip='alice'
# Phrases types
texte_lu='Je viens de relever la température '
texte_liaison=' .Il y fait '
texte_fin='degrés.'
# Module contenant toutes les variables Domoticz
domoticz_ip='192.168.10.120'
domoticz_port='8080'
domoticz_ident='XXXXX'
domoticz_passwd='ZZZZZ'
Code : Tout sélectionner
#!/usr/bin/python
# -*-coding:Utf-8 -*
# José - Janvier 2015 - Module d'envoi d'URL sur Karotz
import urllib
import urllib2
import sys
import config
# Module de lecture universel basé sur le fichier config.py
# les agruments se passent directement via le programme display=sys.argv[1]
display = sys.argv[1]
# Condition qui pemet d'adapter le message
if display == '1':
texte_lu = config.txt_alerte1
# Change la couleur du Karotz en cas de problème de température
the_url= 'http://'+config.karotz_ip+'/cgi-bin/leds?pulse=1&color=ff0000&speed=200&color2=000000'
req = urllib2.Request(the_url)
handle = urllib2.urlopen(req)
# Analyse et transmssion des messages classiques
if display == '2': texte_lu = config.txt_bonne_journee
Exemple config.karotz_ip (karotz_ip correspondant à la valeur fixée dans le fichier de configuration)
Autre exemple avec domoticz (extrait du script z-wave de Patrice) :
Code : Tout sélectionner
def maj_widget(texte_recup):
requete='http://'+config.domoticz_ip+':'+config.domoticz_port+json_url_text1+idx_widget_texte+json_url_text2+texte_recup
r=requests.get (requete)
Le module de configuration doit impérativement se trouver dans le même répertoire que le script lui même.
Bonne lecture.
José