bonjour
je découvre Yadoms et me pose la question de l'existence d'un plugin qui permettrait de générer des requêtes http GET ou POST ?
est ce qu'il existe deja ou est dans une "todo list" !?
merci
phil
plugin http ?
Re: plugin http ?
Bonsoir,
et merci de votre intérêt pour Yadoms,
Ce plugin est malheureusement encore dans une "todo list", même si nous sommes conscient de son importance. Nous avons cependant un contournement facile à mettre en place à partir d'une règle d'automatisation Python.
Il faut au préalable créer manuellement les équipements virtuels à associer à la règle.
Voici un exemple, permettant de récupérer le vent d'une balise Pioupiou via une API REST.
Au préalable, il faut créer les équipements virtuels 'Vent - direction' (du type 'direction'), 'Vent minimum', 'Vent moyen' et 'Vent maximum' (tous les 3 du type 'speed') à partir de la page des équipements.
Ensuite, à partir de la page des règles d'automatisation, créer la règle Python suivante :
Ici, c'est un GET, mais faire un POST en Python n'a pas l'air beaucoup plus compliqué.
En espérant que ça vous aide,
Sébastien
et merci de votre intérêt pour Yadoms,
Ce plugin est malheureusement encore dans une "todo list", même si nous sommes conscient de son importance. Nous avons cependant un contournement facile à mettre en place à partir d'une règle d'automatisation Python.
Il faut au préalable créer manuellement les équipements virtuels à associer à la règle.
Voici un exemple, permettant de récupérer le vent d'une balise Pioupiou via une API REST.
Au préalable, il faut créer les équipements virtuels 'Vent - direction' (du type 'direction'), 'Vent minimum', 'Vent moyen' et 'Vent maximum' (tous les 3 du type 'speed') à partir de la page des équipements.
Ensuite, à partir de la page des règles d'automatisation, créer la règle Python suivante :
Code : Tout sélectionner
import scriptUtilities
import json
import urllib2
import datetime
import time
def readWind(yApi, windDirectionKw, minWindKw, avgWindKw, maxWindKw):
try:
pioupiouAnswer = json.load(urllib2.urlopen("http://api.pioupiou.fr/v1/live/532?format=json"))
except Exception as e:
print 'Error requesting data to pioupiou website', e.message
return
if pioupiouAnswer[u'data'][u'status'][u'state'] != u'on':
print 'Station is OFF'
return
if datetime.datetime.strptime(pioupiouAnswer[u'data'][u'measurements'][u'date'], "%Y-%m-%dT%H:%M:%S.%fZ") < (datetime.datetime.utcnow() - datetime.timedelta(minutes=30)):
print 'Measure is too old'
return
windDirection = pioupiouAnswer[u'data'][u'measurements'][u'wind_heading']
minWind = pioupiouAnswer[u'data'][u'measurements'][u'wind_speed_min']
avgWind = pioupiouAnswer[u'data'][u'measurements'][u'wind_speed_avg']
maxWind = pioupiouAnswer[u'data'][u'measurements'][u'wind_speed_max']
print "Wind direction =", windDirection, ", min speed =", minWind, ", avg speed =", avgWind, ", max speed =", maxWind
# Direction
yApi.writeKeyword(windDirectionKw, str(windDirection))
# Speeds : convert to m/s
if minWind is not None:
yApi.writeKeyword(minWindKw, str(minWind * 1000 / 3600))
if avgWind is not None:
yApi.writeKeyword(avgWindKw, str(avgWind * 1000 / 3600))
if maxWind is not None:
yApi.writeKeyword(maxWindKw, str(maxWind * 1000 / 3600))
def yMain(yApi):
windDirectionKw = yApi.getKeywordId('Vent - direction', 'direction')
minWindKw = yApi.getKeywordId('Vent minimum', 'speed')
avgWindKw = yApi.getKeywordId('Vent moyen', 'speed')
maxWindKw = yApi.getKeywordId('Vent maximum', 'speed')
while(True):
readWind(yApi, windDirectionKw, minWindKw, avgWindKw, maxWindKw)
time.sleep(1800)
En espérant que ça vous aide,
Sébastien