antoinedeschenes.com

Event Reactor

Dépôt Git sur GitHub

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.

Schéma de connexion
Schéma de connexion

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 :

Démonstrateur du vidéo Interface web en action

Outils technologiques

Informations sur les outils technologiques utilisés pour le développement d'Event Reactor.

Environnements de développement (IDE)

Librairies et langages de programmation

Interface de gestion web (HTML/JS) :

Fournisseur de services (Python) :

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 :