WiPy-IoT-Nano-Rest: Transformer un WiPy en Serveur Rest et contrôler des relais

Un petit avant goût d'un projet qui sera prochainement disponible sur notre Wiki. En attendant, vous pouvez déjà découvrir le code de WiPy-IoT-nano-rest sur GitHub

WiPy Rest Server for IOT
Le but principal du projet Wipy-IoT-nano-Rest est de transformer un WiPy 1 en un valeureux nano serveur Rest proposant une interface de programmation (API) confortable pour facilement prendre le contrôle de vos objets.

L'API est basée sur les expressions régulière et JSon. Pour un début de projet (voyez "irelay" plus bas), nanoRest est plutôt stable.

Qui qu'il est soit, le projet devrait également être compatible avec WiPy 2


Pourquoi des WiPy 1 ?
De nos jours, le WiPy 2 est disponible sur le marché... et des centaines de WiPy 1 prennent la poussière sur nos bancs de bricolage... Ce serait une bonne idée de leur trouver une utilisé permettant de les revaloriser.
D'où le projet Wipy-IoT-nano-Rest !

Attention à la sécurité!

Bon, le WiPy 1 n'a pas de support TSL et SSL, tout ce qui est envoyé sur le réseau est envoyé en clair.
C'est la raison pour laquelle pour laquelle il faut réserver vos projet sur votre réseau local (voyez nos autres recommandations dans la section "about security")

iRelay - une première démo de nanoRest
Comme première démo du serveur nanoRest, nous avons voulu prendre le contrôle d'une carte relais.
iRelay transforme une carte 4 relais en un "relais IoT WiFi" en utilisant un WiPy.

Le WiPy démarrera un serveur local qui répond au requêtes REST. Les requêtes peur être envoyées depuis un navigateur Web, des commandes Curl, du code Python (depuis un Raspberry-Pi) ou même du code CSharp.

Les détails de iRelay sont disponibles dans le répertoire de documentation (y compris l'installation).

Il est possible de démarrer le projet manuellement en saisissant quelques lignes de code:
>>> from irelay import *
>>> from restsvr import rest_server
>>> rest_server( irelay_actions, debug=True )

Une fois satisfait de vos premiers essais, il est possible de faire en sorte que le projet démarre automatiquement dès la mise sous tension.
Il suffit de copier le fichier main-irelay.py dans votre fichier main.py de votre WiPy.

Quelques tests
Une fois en route, vous pouvez tester le montage avec:

Un navigateur internet



Utilitaire curl
Ou avec des commandes curl... utilitaire couramment utilisé sur Linux

curl http://192.168.1.220/relay/4/on
curl http://192.168.1.220/relay/3/on
curl http://192.168.1.220/relay/3/off
curl http://192.168.1.220/relay/

Avec Python
C'est ce qui est vraiment magique avec les API REST... il est également possible les employer avec n'importe quel environnement (ou presque).

>>> import requests as rq
>>> wipy_ip = '192.168.1.220'
>>> r = rq.get( 'http://%s/relay/2/on' % wipy_ip )
>>> print( r.content )
false


Voici un exemple plus élaboré

>>> import requests as rq
>>> import json
>>> wipy_ip = '192.168.1.220'
>>> r = rq.get( 'http://%s/relay/' % wipy_ip )
>>> r.content
'{"relay4": false, "relay2": false, "relay3": false, "relay1": false}'
>>> j = json.loads( r.content )
>>> j
{u'relay4': False, u'relay3': False, u'relay2': False, u'relay1': False}
>>> j['relay2']
False
>>> for k, v in j.items():
...     print( "%s is %s" % (k,'ON' if v else 'OFF') )
... 
relay4 is OFF
relay3 is OFF
relay2 is OFF
relay1 is OFF

Plus d'information
N'hésitez pas à consulter les pages suivantes du projet (en anglais). Vous y trouverez de nombreuses information (et également l'API REST de iRelay)
Où acheter
Bonne lecture et Happy Electronic Hacking,
Dominique