Event Reactor
Event Reactor est un ensemble d'applications permettant l'automatisation d'événements à partir de données collectées continuellement.
Le plus intéressant est de l'utiliser sur un ou plusieurs Raspberry Pi : on peut, par exemple, utiliser les données de thermomètre et de boutons pour générer des événements, tel qu'allumer une lumière, faire sonner un haut-parleur ou contrôler un bloc d'alimentation.
Le logiciel qui fait les lectures et produit les événements (fournisseur de services) se connecte sur un serveur en ligne. Le serveur permet de distribuer les appels entre les fournisseurs de services et héberge une page web qui permet de tout configurer.
La communication se fait par un protocole libre nommé WAMP (Web Application Messaging Protocol) qui est basé sur le protocole WebSocket. Les appels se font donc autant en push qu'en pull à travers le web.
Images :
Outils technologiques
Informations sur les outils technologiques utilisés pour le développement d'Event Reactor.
Environnements de développement (IDE)
- PhpStorm - IDE basé sur IntelliJ IDEA optimisé pour le web (PHP, JS, HTML5, CSS, etc.)
- PyCharm - IDE basé sur IntelliJ IDEA optimisé pour Python
Librairies et langages de programmation
Interface de gestion web (HTML/JS) :
- jQuery - Accélère le développement JavaScript.
- Autobahn|JS - Permet la communication WAMP avec JavaScript.
Fournisseur de services (Python) :
- Autobahn|Python - Fournit une couche supplémentaire permettant la communication WAMP à travers Twisted.
- Twisted - Librairie permettant la communication réseau et fournissant un système de programmation asynchrone.
Serveur web (Python) :
Installation et exécution
Serveur
Le serveur est déjà fonctionnel en ligne. Pour l'installer soi-même, voici les étapes d'installation pour Ubuntu :
# Installer les prérequis
$ sudo apt-get install build-essential libssl-dev libffi-dev
python-dev python-pip
# Utiliser pip pour installer la librairie Crossbar et toutes ses dépendances
$ sudo pip install crossbar[all]
# Ouvrir le port du pare-feu s'il n'est pas standard
$ sudo ufw allow 8080
# Envoyer le dossier b65serv au serveur par SFTP ou un autre moyen, puis se déplacer dans le dossier
$ cd b65serv
# Démarrer le serveur crossbar
$ crossbar start
Note: Il est préférable d'exécuter le programme dans une session virtuelle screen
pour que
le programme fonctionne même lorsqu'on se déconnecte de notre session. Pour revenir à la session sur le
serveur, simplement exécuter screen -R
.
Client Raspberry Pi (Raspbian)
Si vous avez un Raspberry Pi avec la distribution Raspbian, voici comment installer et exécuter le logiciel client :
# Installer les prérequis
$ sudo apt-get install build-essential libssl-dev libffi-dev python-dev
python-pip libi2c-dev i2c-tools
# Installer la librairie Autobahn-Python et ses dépendances à l'aide de pip
$ pip install autobahn[twisted]
# Déplacer le dossier b65cli par SFTP ou un autre moyen, puis se déplacer dans le dossier
$ cd b65cli
# Démarrer l'application client (les droits root sont nécessaires pour avoir accès au matériel)
$ sudo python main.py
Note : Comme pour le serveur, une session screen
est préférable.
Client Windows
Installation du logiciel client sous Windows :
- Télécharger Python 2.7 32-bits : https://www.python.org/ftp/python/2.7.10/python-2.7.10.msi
- Démarrer l'installation en s'assurant d'ajouter l'option "Add python.exe to path"
- Par la ligne de commande, installer la librairie Autobahn|Python :
-
Exécuter le fichier
main.py
du dossier b65cli. Si Python n'est pas associé aux fichiers .py, vous pouvez exécuterpython main.py
en ligne de commande. Les droits administratifs ne sont pas nécessaires, car la version Windows n'a aucun accès au matériel.
pip install autobahn[twisted]