Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
API JSON Pyhton 3.5 - fonction get_state
#1
Brick 
Bonjour,

Je me lance dans un petit projet de création d'interface graphique pour ma domotique Calaos.
Objectif : créer un petit écran tactile positionné à l'entrée de ma maison pour executer quelques fonctions principales :
- activer / désactiver l'alarme
- éteindre toutes les lumières
- fermer/ouvrir tous les volets roulants du rez de chaussé
- Activer un/ des scénarios
- ...Etc...

Le matériel :
- un Rpi 3 avec Raspbian + python 3.5 + TKinter
- un écran tactil 7"

j'ai écrit quelques script mais je bloque sur la fonction "get_state"
les fonctions "get_home' et "set_state" fonctionnent bien, mais pas "get_state", j'ai une collection vide en retour {}.
je peux allumer ou éteindre des lumières, mais pas connaitre l'état d'une sortie...

Voici mon code…. si quelqu'un peu me dépanner, ce serait sympa. Big Grin
Ici la fonction "get_alarme_" ne me retourne rien par exemple.

Code:
import urllib.request, urllib.parse
import json
import ssl

calaos_url = 'https://192.168.1.2/api.php' # Calaos server API url
calaos_user = 'blablabla'
calaos_password = 'blablabla'
lum_salon = 'output_0'
open_rdc = 'input_58'
close_rdc = 'input_59'
on_='true'
off_='false'

def send_json(dict_send):
   json_send = json.dumps(dict_send) # parameters string in JSON format
   data_send = json_send.encode('ascii') # bytes data to be sent
   headers_send = {'Content-Type': 'application/json'} # media type of the data to be sent
   request = urllib.request.Request(calaos_url, data_send, headers_send) # data sent with POST method
   context = ssl._create_unverified_context() # do not verify the SSL certificate
   
   with urllib.request.urlopen(request, context=context) as response:
       #print(response.info())
       data_receive = response.read() # bytes data received
       json_receive = data_receive.decode('ascii') # string received in JSON format
       dict_receive = json.loads(json_receive) # dictionary received
       return (dict_receive)

def get_home():
   dict_send = {
       'cn_user': calaos_user,
       'cn_pass': calaos_password,
       'action': 'get_home'
   }
   col_stat = send_json(dict_send)
   return (col_stat)


def set_stat_(qui,quoi):
   #print (qui,quoi)
   dict_send = {
       'cn_user': calaos_user,
       'cn_pass': calaos_password,
       'action': 'set_state',
       'type': 'output',
       'id': qui,
       'value': quoi
   }
   send_json(dict_send)
   
def allumer_salon():
set_stat_(lum_salon,on_)

def eteindre_salon():
set_stat_(lum_salon,off_)

def get_alarme_():
   """action wget json get lumiere salon output_0"""
   dict_send = {
       'cn_user': calaos_user,
       'cn_pass': calaos_password,
       'action': 'get_state',
       'inputs': ['input_1'],
       'outputs': ['output_0","output_1'],
       'audio_players': ['0']
   }
   col_stat = send_json(dict_send)
   return (col_stat)
many77, équipé WAGO 750-849 + Rpi3
Reply


Messages In This Thread
API JSON Pyhton 3.5 - fonction get_state - by Many77 - 05-10-2020, 09:16 PM

Forum Jump:


Users browsing this thread: 1 Guest(s)