Image of an arrow

Comment Ring communique avec les appareils connectés #IoT

Avatar

cmarchi

light-bulb - IoTQuand vous sortez de chez vous, êtes-vous sûr que les lumières sont éteintes? Avec Ring, vous pouvez le vérifier en vidéo et régler votre éclairage simplement en envoyant un message texte. De quoi faire des économies d’énergie!

En moins d’une heure, Adrien Béraud, développeur chez Savoir-faire Linux, a monté un dispositif lui permettant de contrôler l’éclairage de son salon alors qu’il est au bureau. Il a configuré le compte Ring de son ordinateur domestique pour accepter automatiquement chaque appel et peut ainsi l’appeler pour voir en temps réel, en vidéo, son salon à distance. Il peut alors vérifier si les lumières sont allumées et, au besoin, les éteindre en utilisant le module de clavardage de Ring!

Un dispositif simple, monté avec du matériel libre

Arduino - IoTAdrien a d’abord relié les lampes de son salon à Internet, en utilisant un système connecté Particle Core (de type Arduino) et une carte d’extension relais (Relay Shield). Comme son éclairage est associé à un circuit va-et-vient, il peut facilement contrôler les lumières, même en cas de panne Internet ou en cas de problème avec le relais. Il a ensuite ajouté les quelques lignes de code fournies dans la documentation du relais pour connecter le dispositif à Internet.

Avec quelques lignes de commande, vos lampes sont connectées

Une fois la connexion établie, il a inséré une ligne de commande dans le terminal de son ordinateur Linux. Par exemple, pour éteindre (LOW) la première lampe (r1) :

curl https://api.particle.io/v1/devices/0123456789abcdef/relay -d access_token=123412341234 -d params=r1,LOW

Le contrôle des lumières par le clavardage de Ring peut ensuite se faire avec ce script Python :

#!/usr/bin/env python3
import re, json, http.client, urllib.parse
from controler import DRingCtrl

PARTICLE_API_TOKEN = '[your_api_token_here]'
PARTICLE_REQ_URI = '/v1/devices/[your_device_id_here]/relay'
PARTICLE_REQ_RE = re.compile('^(r[0-4],(?:HIGH|LOW))$')

class LightRingController(DRingCtrl):
    def __init__(self):
        super().__init__("LightController")

    def tryParticleReq(self, params):
        try:
            conn = http.client.HTTPSConnection('api.particle.io')
            p = urllib.parse.urlencode({'access_token': PARTICLE_API_TOKEN, 'params': params})
            conn.request("POST", PARTICLE_REQ_URI, p, {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"})
            ret = json.loads(conn.getresponse().read().decode())['return_value']
        finally:
            conn.close()
        return ret

    def onIncomingMessage(self, callid, ufrom, message):
        super().onIncomingMessage(callid, ufrom, message)
        msg = message['text/plain']
        res = re.search(PARTICLE_REQ_RE, msg)
        if res:
            op = res.group(0)
            print('Command:', op)
            ret = self.tryParticleReq(op)
            self.callmanager.sendTextMessage(callid, {'text/plain':'Got: '+str(ret)}, False)

if __name__ == "__main__":
    ctrl = LightRingController()
    ctrl.run()

L’Internet des objets: des possibilités infinies

De nombreux usages sont possibles, du plus simple au plus complexe. Par exemple, un appel Ring peut être directement associé à la mise en marche de votre éclairage, avec ce simple script :

#...

class LightRingController(DRingCtrl):

    #...

    def onCallStateChanged(self, callid, state, statecode):
        super().onCallStateChanged(callid, state, statecode)
        if state == "HUNGUP":
            self.tryParticleReq('r1,LOW')
        elif state == "CURRENT":
            self.tryParticleReq('r1,HIGH')

Imaginez alors ce que vous pourriez faire si votre logiciel Ring était relié à votre chauffage ou à la porte de votre garage… Les perspectives sont infinies!

Vous avez des idées à partager ? Laissez un commentaire!

Comments are closed.


Articles similaires

Image of an arrow

Précuseur de l’Internet post-GAFAM             Las Vegas, le 9 janvier 2019 ​ – Présente au Consumer Electronics Show de Las Vegas, Savoir-faire Linux, entreprise québécoise de services-conseils depuis plus de 20 ans et experte dans l’industrie du logiciel libre au Canada, lance l’application de communication universelle et autonome Jami. Destiné […]

Les push notifications dans le logiciel de communication Ring Essentielles aux applications de messagerie, de courriels ou tout autre type de communication, les push notifications sont maintenant disponibles pour Ring dans ses versions Android et iOS. Retour sur l’ajout de cette nouvelle fonctionnalité permettant d’informer l’utilisateur de nouveaux messages ou appels lorsque son téléphone intelligent […]

Les 3 et 4 février derniers, 2 membres de l’équipe de développement de Ring ont participé au FOSDEM 2018 à Bruxelles. Événement européen majeur pour les développeurs de logiciels libres et à code ouvert, le FOSDEM (Free and Open Source Software Developers’ European Meeting) se tient depuis 2000 en fin de semaine début février à […]

Thumbnail image

21 Juillet 2017 – Savoir-faire Linux annonce la sortie de la version stable de Ring 1.0 « Liberté, Égalité, Fraternité ». Ring est une plateforme de communication libre et universelle, respectant les libertés et la vie privée des utilisateurs. Ring, un paquet GNU officiel depuis octobre 2016, est disponible sur plusieurs plateformes et peut être […]