Broadlink RM Pro/Mini & Domoticz, une histoire de script… Lors d’un bon plan, je vous ai parlé d’un appareil capable d’envoyer des commandes Infra rouge et Radio (433 Mhz) à vos appareils : le Broadlink RM pro et Mini Il est temps de l’inclure dans votre Domotique et de le faire interagir avec Domoticz. Nativement, Domoticz ne peut pas encore lui parler simplement, il va falloir passer par des lignes de commandes et des scripts Python Il faut aussi fournir une adresse IP fixe à votre Broadlink (Voir comment faire avec votre BOX/ROUTEUR)

INSTALLATION DE PYTHON PIP GIT & DES LIBRAIRIES BROADLINK

Connectez vous en SSH grâce à PuTTY à votre serveur domotique Puis saisissez :
sudo apt-get install python2.7 -y
Python a besoin d’une base de donnée pour télécharger certains éléments complémentaires « les librairies » : pip Pour l’installer :
sudo apt-get install python-pip -y

sudo apt-get install python-dev libgmp-dev
Enfin nous allons installer la librairie qui va nous permettre de « parler » avec notre Rm Pro / RM Mini, pour ce faire nous allons copier le Github (site de développeur) où se trouve la librairie : On installe GIT :
sudo apt-get install git -y
Puis on copie la librairie :
git clone https://github.com/mjg59/python-broadlink
Elle s’installe dans le répertoire où vous vous trouvez : Elle s’appelle python-broadlink On y accède en saisissant :
cd python-broadlink
Il faut installer la librairie en saisissant :
python setup.py install

CREATION DES FICHIERS D’APPRENTISSAGE ET D’ENVOI DES COMMANDES

Une fois la librairie installée, il faut créer deux fichiers :
  • un pour apprendre/copier le code de votre télécommande
  • un pour envoyer le code appris précédemment
Pour ce faire nous avons besoin de 2 informations : L’adresse IP de votre Broadlink RM Pro/mini sous la forme : 123.456.789.011 L’adresse Mac de votre Broadlink RM Pro/Mini sous la forme 12:23:34:45:56:67 qui se transforme en 12 23 34 45 56 67 (on enleve les « : ») Il existe un script Python qui va vous aider pour cela : on va créer un fichier locatrm.py :
sudo nano locatrm.py
Puis y coller (un clique droit de votre souris va coller automatiquement le texte sélectionné ci dessous) :
#!/usr/bin/python

#Script to locate Broadlink devices on local network by Graeme Brown Dec 23 2016
#These must be set up using the Broadlink app first!

import broadlink
import time

print "************************************************"
print "Using python library created by Matthew Garrett"
print "https://github.com/mjg59/python-broadlink"
print "************************************************"
print "Scanning network for Broadlink devices...."

mydevices = broadlink.discover(timeout=5)
print "Found " + str(len(mydevices )) + " broadlink devices"
time.sleep(1)
print "..............."

for index, item in enumerate(mydevices):

  mydevices[index].auth()

  ipadd = mydevices[index].host
  ipadd = str(ipadd)
  print "Device " + str(index + 1) +" Host address = " + ipadd[1:19]
  macadd = ''.join(format(x, '02x') for x in mydevices[index].mac[::-1])
  macadd = str(macadd)
 
  mymacadd = macadd[:2] + " " + macadd[2:4] + " " + macadd[4:6] + " " + macadd[6:8] + " " + macadd[8:10] + " " + macadd[10:12]
  print "Device " + str(index + 1) +" MAC address = " + mymacadd
  print "..............."
Ensuite on l’exécute et il va trouver tout seul notre Broadlink RM Pro/Mini :
python locatrm.py
Ici l’ip est 192.168.0.161 et l’adresse mac b4 43 0d d1 13 ed

CREATION DU FICHIER D’APPRENTISSAGE

Nous allons maintenant créer le fichier d’apprentissage  :
sudo nano learn.py
Et copier ceci dedans : (un clique droit de votre souris va coller automatiquement le texte sélectionné ci dessous) :
#!/usr/bin/python

import broadlink
import time
import sys

device = broadlink.rm(host=("ici votre adresse ip avec les points il faut conserver les guillemets",80), mac=bytearray.fromhex("ici votre adresse mac il faut conserver les guillemets"))

print "Connecting to Broadlink device...."
device.auth()
time.sleep(1)
print "Connected...."

codeName = raw_input("Please Enter Code Name  e.g. tvOff ")
time.sleep(1)
print "When Broadlink white led is lit press the button on your remote within 5 seconds"

device.host
device.enter_learning()
time.sleep(5)
ir_packet = device.check_data()
#convert code to hex
myhex = str(ir_packet).encode('hex'); 

if ir_packet == None:
   print "No button press read - quitting"
   sys.exit()
else:

# record learned hex code to file
   f = open(codeName +".txt",'w')
f.write(myhex)
f.close()

print "Hex code written to file named " + codeName + ".txt"
ATTENTION DE BIEN METTRE VOTRE ADRESSE IP ET MAC A LA LIGNE
device = broadlink.rm(host=("ici votre adresse ip avec les points il faut conserver les guillemets",80), mac=bytearray.fromhex("ici votre adresse mac il faut conserver les guillemets"))

CREATION DU FICHIER D’ENVOI

Maintenant le script pour émettre les ordres :
sudo nano play.py
Et y coller ceci : (un clique droit de votre souris va coller automatiquement le texte sélectionné ci dessous) :
#!/usr/bin/python

import broadlink
import time
import sys

try:
    fileName = sys.argv[1]
except IndexError:
    fileName = 'null'

if fileName == 'null':
   print "Error - no file name parameter suffixed"
   sys.exit()
else:

   device = broadlink.rm(host=("ici votre adresse ip il faut mettre les ; et conserver les guillemets",80), mac=bytearray.fromhex("ici votre adresse mac sans les : et conserver les guillemets"))

print "Connecting to Broadlink device...."
device.auth()
time.sleep(1)
print "Connected...."
time.sleep(1)
device.host

file = open(fileName, 'r')

myhex = file.read()

device.send_data(myhex.decode('hex'))
print "Code Sent...."
ATTENTION DE BIEN METTRE VOTRE ADRESSE IP ET MAC A LA LIGNE
device = broadlink.rm(host=("ici votre adresse ip avec les points il faut conserver les guillemets",80), mac=bytearray.fromhex("ici votre adresse mac il faut conserver les guillemets"))
Nous allons maintenant essayer nos scripts :

ENREGISTRER UN CODE/UN ORDRE :

Attraper votre télécommande Infra Rouge ou « Radio 433 Mhz » Puis taper (pas trop fort) :
python learn.py
Le script va alors se connecter à votre passerelle et vous demander le nom de la touche que vous voulez « copier » (e.g tvOff est un exemple, que j’ai repris) Faire la même manipulation pour la touche qui allume la TV et la nommer tvOn Ensuite votre passerelle va s’éclairer : Et le script va vous demander d’appuyer sur la touche pendant 5 secondes :
  • Pour une télécommande Infra Rouge, pointez la vers la passerelle tout en étant assez prés
  • Pour une télécommande Radio placez vous assez près de la passerelle pour éviter les interférences
Une fois le code enregistré la led s’éteint et le script vous confirme que le code a été enregistré sous le nom tvOff.txt.

ENVOYER UN CODE / UN ORDRE

Il vous faut saisir :
python play.py tvOff.txt
tvOff.txt étant le nom du fichier correspondant à l’ordre que vous souhaitez envoyer. Le script va alors se connecter à votre passerelle et envoyer l’ordre Off à votre appareil (n’oubliez pas de l’allumer avant !) Le led de la passerelle doit s’éclairer : Une fois le test réussi, il faut de nouveau éditer le fichier play.py :
sudo nano play.py
et commenter les lignes de print et time à partir de la ligne 19 en ajoutant des # devant ce qui donne :
#print "Connecting to Broadlink device...."
device.auth()
#time.sleep(1)
#print "Connected...."
#time.sleep(1)
device.host

file = open(fileName, 'r')

myhex = file.read()

device.send_data(myhex.decode('hex'))
#print "Code Sent...."
Cela a pour but de rendre le script Muet et va accélérer le temps de réaction de Domoticz.       Vous devrez enregistrer et jouer chaque touche que vous voulez ajouter en faisant les manipulations de Learn & Play à chaque fois, en attendant qu’un plugin Broadlink arrive sur Domoticz, le bon côté de la chose c’est qu’au moins vous savez comment cela fonctionne ! Il est temps de faire une pause :

INTEGRATION DANS DOMOTICZ

Une fois que cela fonctionne vous allez devoir copier les fichiers learn.py, play.py et tvOff.txt dans le répertoire scripts/python de Domoticz
cp /home/pi/python-broadlink/learn.py /home/pi/domoticz/scripts/python/learn.py
cp /home/pi/python-broadlink/play.py /home/pi/domoticz/scripts/python/play.py
cp /home/pi/python-broadlink/tvOff.txt /home/pi/domoticz/scripts/python/tvOff.txt
cp /home/pi/python-broadlink/tvOn.txt /home/pi/domoticz/scripts/python/tvOn.txt

Puis il faut donner les droits à Domoticz d'utiliser les scripts

sudo chmod 777 /home/pi/domoticz/scripts/python/learn.py
sudo chmod 777 /home/pi/domoticz/scripts/python/play.py
Puis créer un Interrupteur Virtuel de type ON/OFF : Réglages->Materiels->Dummy->Interrupteur Ensuite nous allons l’éditer : Et placer cette ligne dans la case action ON :
script:///home/pi/domoticz/scripts/python/play.py /home/pi/domoticz/scripts/python/tvOn.txt
et dans la case action OFF :
script:///home/pi/domoticz/scripts/python/play.py /home/pi/domoticz/scripts/python/tvOff.txt
  Quelques explications :
script://
Indique à Domoticz que si l’interrupteur passe à On il faut exécuter un script.  
/home/pi/domoticz/scripts/python/play.py
Indique à Domoticz quel script il doit utiliser et son emplacement, souvenez vous play.py c’est celui qui lance/envoi les ordres et nous l’avons copié dans /home/pi/domoticz/scripts/python/  
/home/pi/domoticz/scripts/python/tvOn.txt
C’est l’emplacement du fichier .txt qui contient le code que la passerelle doit envoyer  

« Oui mais moi ma Tv c’est le même bouton pour ON et OFF ! »

Pas de soucis, que des solutions, après avoir enregistré le bouton, suivre la même procédure, jusqu’à l’édition de l’interrupteur, mais il faut y mettre deux fois la même ligne dans action On et action Off En personnalisant l’icône, on a quelque chose de très sympa :   Et voilà, grâce à cette démarche et à un bon plan, plus rien ne vous échappe, TV, ampoules, amplis, barres de son, aspirateurs robots, prises commandées, sèches serviettes, radiateurs, quasiment tous les appareils en Infra Rouge et en radio 433Mhz peuvent être pilotés et automatisés (Sauf ceux à code tournant, Nice, Came, Somfy RTS). Prochaine étape ? Votre passerelle à un capteur de température intégrée, nous allons pouvoir l’ajouter à Domoticz.   Source : https://www.domoticz.com/forum/viewtopic.php?f=17&t=6929

Laisser un commentaire