Quand 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
Adrien 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!
Informations complémentaires
[…] être adapté pour contrôler la porte d’un garage ou un chauffage. (Lisez l’article Comment Ring communique avec les appareils connectés pour en savoir […]