récupérer l’état d'un switch en script python

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
judeoleborgne
Messages : 44
Inscription : 04 juin 2015, 17:15

récupérer l’état d'un switch en script python

Message par judeoleborgne »

bonjour voici mon souci,

je vais d’abord parler de ma configuration, j'ai une rpi b+ et une piface sur le quelle tourne domoticz et yana ( domotique vocal ). tous les produits fonctionne très bien séparément.

pour des questions de réactivées avec mes interrupteurs j'ai du faire un script en python qui commande l’éclairage de ma cuisine. c'est donc un script qui ne préoccupe pas de domoticz pour le moment.

voici donc mon probleme :

-j'allume la lampe avec mon interrupteur irl : le script bascule l'output a 1
-je sors de ma cuisine et je m'installe a mon bureau et je veux éteindre ma lampe.
-ou je vais sur l'interface domoticz et je commande l'extinction de ma lampe ou je sors mon smartphone et je demande a yana d’éteindre la lampe dans la cuisine
-la lampe dans la cuisine change d’état.

ET C EST LA QUE MON PROBLÈME INTERVIENT.
en effet mon script ( télérupteur.py) ne sais pas que j'ai éteint la lampe donc si je veux retourner dans la cuisine, j'actionne l’interrupteur et la le script qui pensait la lampe encore allumée tente d’éteindre la lampe, je suis donc dans la cuisine et dans le noir, je dois faire une deuxième action sur mon interrupteur pour rallumé la lampe.

MA QUESTION :

est t'il possible que je connaisse l’état du switch domoticz dans mon script python afin qu'il connaisse l"état de l'output qui commande la lampe.

VOICI LE CODE TELERUPTEUR.py

Code : Tout sélectionner

# Relais desactivé
etatRelais = False
# Dernier etat connu de l'entrée
dernierEtatEntree = 0

while( True ):
    time.sleep(0.05)
    # Lecture de l'etat de l'entrée
    etatEntree = pfio.digital_read( 0 )
    # Si Etat entrée change
    if( etatEntree != dernierEtatEntree ):
        # agir seulement quand relâche le bouton
        if( etatEntree == 0 ):
            # Changer l etat logique du relais
            etatRelais = not etatRelais
            # Appliquer l'etat au relais
            if( etatRelais == True ):
               pfio.digital_write( 5, 0 )
               urllib.request.urlopen("http://127.0.0.1:8080/json.htm?type=command&param=switchlight&idx=11&switchcmd=On&level=0")
            else:
               pfio.digital_write( 5, 1 )
               urllib.request.urlopen("http://127.0.0.1:8080/json.htm?type=command&param=switchlight&idx=11&switchcmd=Off&level=0")
        # Se souvenir de l etat de l'entrée
        dernierEtatEntree = pfio.digital_read(0)

dans le script je pilote la sortie mais je signale quand même a domoticz sont changement d’état.

si vous avez des idées parce que la je sèche j'ai explorer la fait de pouvoir récupéré l’état d'une sortie dans le script mais dans la bibliothèque pifacedigitalio je ne trouve rien a ce sujet. je m'oriente donc vers la recuperation de l’état du switch dans domoticz
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: récupérer l’état d'un switch en script python

Message par patrice »

Bonjour
L API Json te permet aussi de retrouver l etat d 'un péripherique /json.htm?type=devices&rid=IDX
Il suffira de récupérer la bonne valeur ds les datas json qui sont retournees par l' appel de l API
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
judeoleborgne
Messages : 44
Inscription : 04 juin 2015, 17:15

Re: récupérer l’état d'un switch en script python

Message par judeoleborgne »

pourrais tu en dire un peux plus ou m'orienté correctement parce que je tourne en rond avec 2 pages que j'ai trouvé et je ne me m'y retrouve pas
merci
Steph38
Messages : 44
Inscription : 12 août 2015, 18:13

Re: récupérer l’état d'un switch en script python

Message par Steph38 »

Comme cela

Code : Tout sélectionner

#!/usr/bin/env python
import json
import requests
from requests.auth import HTTPBasicAuth

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

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# les parametres de Domoticz
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

domoticz_ip='192.168.1.103'
domoticz_port='8080'
user=''
password=''

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# les parametres du periphérique
# l'idx Domoticz
# la chaine  recherchée (sensible à la casse)
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

domoticz_idx='14'
terme_recherche='Data'


#===================
domoticzurl = 'http://192.168.1.108:8080/json.htm?type=devices&rid='+str(domoticz_idx)
r=requests.get(domoticzurl,auth=HTTPBasicAuth(user,password))
status=r.status_code
if status == 200:
# l'API renvoie 200 si tout est OK
    domoticzjson=r.json()
    for i, v in enumerate(domoticzjson["result"]):
       val= domoticzjson["result"][i][terme_recherche]
       
print(val)

#============================
domoticz_idx='33'
terme_recherche='BatteryLevel'


#===================
domoticzurl = 'http://192.168.1.108:8080/json.htm?type=devices&rid='+str(domoticz_idx)
r=requests.get(domoticzurl,auth=HTTPBasicAuth(user,password))
status=r.status_code
if status == 200:
# l'API renvoie 200 si tout est OK
    domoticzjson=r.json()
    for i, v in enumerate(domoticzjson["result"]):
       val1= domoticzjson["result"][i][terme_recherche]
       
print(val1)
Steph
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: récupérer l’état d'un switch en script python

Message par patrice »

Bonjour
Merci Steph
Et donc pour l'utiliser il faut mettre à jour dans le script
domoticz_idx='14'
terme_recherche='Data'
avec l'idx du matériel que tu recherche
et terme_recherche est la phrase que tu veux récupérer (Status, BatteryLevel ...)
tu recupere ensuite la valeur dans la variable nommée val tu as un print (val) pour afficher la valeur reçue

Sinon voici l'article d'origine concernant cette récupération
http://easydomoticz.com/les-batteries-en-z-wave/
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
Steph38
Messages : 44
Inscription : 12 août 2015, 18:13

Re: récupérer l’état d'un switch en script python

Message par Steph38 »

Merci Patrice pour ce lien que je n'avais pas.

Steph
Répondre