Différences entre versions de « UniPi-EVOK-API »
Ligne 75 : | Ligne 75 : | ||
{{traduction}} | {{traduction}} | ||
− | Il est possible d'enregistrer un client (un socket client) auprès de {{fname|ws:// | + | Il est possible d'enregistrer un client (un socket client) auprès de {{fname|ws://l_adresse_ip_de_votre_Raspberry/ws}} pour recevoir les messages de statut. |
Une fois le client connecté, vous pouvez envoyer divers commande sur l'UniPi. Tous les messages envoyés sur le websocket sont au format JSON. Par exemple, le message suivant permet d'activer le relais 1 {"dev":"relay", "circuit":"1", "value":"1"} . | Une fois le client connecté, vous pouvez envoyer divers commande sur l'UniPi. Tous les messages envoyés sur le websocket sont au format JSON. Par exemple, le message suivant permet d'activer le relais 1 {"dev":"relay", "circuit":"1", "value":"1"} . |
Version du 8 septembre 2017 à 17:04
En cours de traduction/élaboration. |
Introduction
Voici différentes informations concernant l'API Evok tel que publié sur le GitHub d'Evok.
Rest API
HTTP Get
Il est possible d'obtenir l'état d'un périphérique en faisant un requête GET sur Evok.
GET /rest/DEVICE/CIRCUIT
ou
GET /rest/DEVICE/CIRCUIT/PROPERTY
Où DEVICE peut être substitué par l'une des valeurs suivantes :
- relay
- di ou input
- ai ou analoginput
- ao ou analogoutput
- sensor
Où CIRCUIT est le numéro du circuit
- dans le cas du senseur 1Wire : il s'agit de son adresse 1-Wire.
- correspondant au numéro de dans le fichier de configuration evok.conf.
Où PROPERTY est principalement une 'valeur'.
Exemples HTTP Get
Voici quelques exemples simples utilisant wget pour obtenir le statut de périphériques :
La commande suivante retourne le statut de tous les périphériques configurés dans evok.conf
wget -qO- http://l_adresse_ip_de_votre_Raspberry/rest/all
La commande suivante retourne le statut du relais avec le n° 1
wget -qO- http://l_adresse_ip_de_votre_Raspberry/rest/relay/1
La commande suivante retourne la valeur du relais 1, s'il est actif ou inactif (1/0)
wget -qO- http://l_adresse_ip_de_votre_Raspberry/rest/relay/1/value
La commande suivante retourne la valeur de la sortie analogique
wget -qO- http://l_adresse_ip_de_votre_Raspberry/rest/ao/1/value
La commande suivante retourne la valeur de l'entrée analogique
wget -qO- http://l_adresse_ip_de_votre_Raspberry/rest/ai/1/value
Etant donné qu'il s'agit de requête GET, vous pouvez saisir directement l'URL (ex: http://l_adresse_ip_de_votre_Raspberry/rest/all) directement dans la barre de navigation d'un navigateur internet. |
L'utilitaire wget peut facilement être remplacé par curl . |
HTTP Post
Pour contrôler un périphérique, toutes les requêtes doivent être par des requêtes HTTP POST. Voici quelques exemple de contrôle de relais :
Activer le relais 3 :
wget -qO- http://l_adresse_ip_de_votre_Raspberry/rest/relay/3 --post-data='value=1'
Désactiver le relais 3 :
wget -qO- http://l_adresse_ip_de_votre_Raspberry/rest/relay/3 --post-data='value=0'
Fixer la sortie analogique A0 à 5V :
wget -qO- http://l_adresse_ip_de_votre_Raspberry/rest/ao/1 --post-data='value=5'
L'utilisation d'une requête POST n'autorise malheureusement pas la saisie de celle-ci dans la barre de navigation d'un navigateur. |
WebSocket
En cours de traduction/élaboration. |
Il est possible d'enregistrer un client (un socket client) auprès de ws://l_adresse_ip_de_votre_Raspberry/ws pour recevoir les messages de statut.
Une fois le client connecté, vous pouvez envoyer divers commande sur l'UniPi. Tous les messages envoyés sur le websocket sont au format JSON. Par exemple, le message suivant permet d'activer le relais 1 {"dev":"relay", "circuit":"1", "value":"1"} .
Consultez le contenu du fichier wsbase.js dans le répertoire www/js/ pour voir des exemples de contrôle de l'UniPi via websocket.
Python en utilisant JsonRPC
You can also control the UniPi using Python library jsonrpclib. See the list of all available methods below.
from jsonrpclib import Server
s=Server("http://l_adresse_ip_de_votre_Raspberry/rpc")
s.relay_set(1,1)
s.relay_get(1)
s.relay_set(1,0)
s.relay_get(0)
s.ai_get(1)
Python using WebSocket
import websocket
import json
url = "ws://l_adresse_ip_de_votre_Raspberry/ws"
def on_message(ws, message):
obj = json.loads(message)
dev = obj['dev']
circuit = obj['circuit']
value = obj['value']
print message
def on_error(ws, error):
print error
def on_close(ws):
print "Connection closed"
#receiving messages
ws = websocket.WebSocketApp(url, on_message = on_message, on_error = on_error, on_close = on_close)
ws.run_forever()
#sending messages
ws = websocket.WebSocket()
ws.connect(url)
ws.send('{"cmd":"set","dev":"relay","circuit":"3","value":"1"}')
ws.close()
Perl using JsonRPC
A simple example of controlling the UniPi via RPC use JSON::RPC::Client;
use JSON::RPC::Client; my $client = new JSON::RPC::Client; my $url = 'http://l_adresse_ip_de_votre_Raspberry/rpc'; $client->prepare($url, ['relay_set']); $client->relay_set(1,1);
There is also a websocket client library for Perl to get more control.
Liste des périphériques disponibles
- relay - Relais
- input ou di - Entrée digitale
- ai - Entrée analogique
- ao - Sortie analogique
- ee - eeprom de la carte
- sensor - Senseur 1wire
Le reste peut être trouvé dans le fichier devices.py
Liste des méthodes disponibles
Les méthodes ci-dessous (et plus encore) peuvent être trouvé dans les fichiers source evok.py ou owclient.py.
- Entrées digitales
- input_get(circuit) - get all information of input by circuit number
- input_get_value(circuit) - get actual state f input by circuit number, returns 0=off/1=on
- input_set(circuit) - sets the debounce timeout
- Relais
- relay_get(circuit) - get state of relay by circuit number
- relay_set(circuit, value) - set relay by circuit number according value 0=off, 1=on
- relay_set_for_time(circuit, value, timeout) - set relay by circuit number according value 0=off, 1=on for time(seconds) timeout
- Entrée analogique
- ai_get(circuit) - get value of analog input by circuit number
- {{fname|input_get
- Sortie analogique
- ao_set_value(circuit, value) - set the value(0-10) of Analog Output by circuit number
- Bus 1-Wire
- owbus_scan(circuit) - force to scan 1Wire network for new devices
- Senseurs 1-Wire
- sensor_get(circuit) - returns all information in array [value, is_lost, timestamp_of_value, scan_interval] of sensor by given circuit or 1Wire address
- sensor_get_value(circuit) - returns value of a circuit by given circuit or 1Wire address
Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : « Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.
L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.