Anleitung: Broadlink ohne RM Bridge nutzen (Linux)
Verfasst: Do 9. Mär 2017, 20:26
Hallo
Als erstes einige Hinweise: Das hier beschriebene ist eher was für erfahrene Linux Nutzer es wird ein laufendes Linux mit Python benötigt auch ist die Installation der einzelnen Komponenten nicht gerade gut erklärt.
Da ich als Homeserver für die verschiedensten Dienste (z.B. die HA-Bridge) einen Linux Rechner 24h am Tag laufen habe, war ich nicht sehr begeistert von der Idee nur für die Home Automatisierung mit dem Broadlink pro jetzt auch noch irgendein Android Gerät für die RM-Bridge nebenher in betrieb zu nehmen, auf die Idee mit der Virtualisierung wie in einem anderen Beitrag vorgeschlagen bin ich nicht gekommen ist auch nicht nötig wie im weiteren beschrieben .
Deswegen habe ich nach einem Weg gesucht den B.pro auch unter Linux zu nutzen, ein erster Fund im Netz wurde auch schon in einen anderen Beitrag erwähnt nämlich folgender aus dem Fhem Forum.
Das dort beschriebene habe ich auch ausprobiert leider ohne richtigen Erfolg , der dort beschriebene Webservice funktionierte leider nicht so wie gewünscht.
Also weiter-suchen , in einen anderen Forum fand ich dann folgendes: Python script for Broadlink devices
Die Vorgehensweise ist in etwa gleich zu der aus den FHEM Forum, also als erstes muss die Phyton API die sich unter folgenden Link python-broadlink befindet installiert werden.
Dann kann man die einzelnen Scriptdateien in eine eigenes Verzeichnis kopieren (z.B. /home/broadlink)
Als erstes haben wir das Pythonscript zum finden der Broadlinkgeräte. (z:B. search-bl.sh)
(Diese müssen als erstes mit der E-Control App eingerichtet werden also Wlan z.B.)
Wenn ich jetzt im Verzeichnis /home/broadlink
./search-bl.sh auf der Shell aufrufe zeigt es Beispielhaft folgendes an:
user # ./search-bl.sh
************************************************
Using python library created by Matthew Garrett
https://github.com/mjg59/python-broadlink
************************************************
Scanning network for Broadlink devices....
Found 1 broadlink devices
...............
Device 1 Host address = '192.168.*.*', 8
Device 1 MAC address = b4 43 0d ** ** **
...............
Für später sind die IP Adresse und die MAC Adresse wichtig.
Das zweite Pythonscript dient zum anlernen des Fernbedienungscodes und abspeichern in eine txt Datei. (z:B. learn-bl.sh)
Unter:
device = broadlink.rm(host=("<your RM3 IP address>",80), mac=bytearray.fromhex("<your RM3 mac>"))
ist jeweils die eigene IP Adresse und MAC Adresse des Broadlink von oben einzutragen.
Wenn ich jetzt ./learn-bl.sh auf der Shell aufrufe zeigt es Beispielhaft folgendes an:
user # ./learn-bl.sh
Connecting to Broadlink device....
Connected....
Please Enter Code Name e.g. tvOff test
When Broadlink white led is lit press the button on your remote within 5 seconds
Hex code written to file named test.txt
Das Script verbindet sich mit dem Broadlink und erwartet einen Namen für den Code wenn dieser bestätigt wird hat man 5 Sec Zeit um die entsprechende Fernbedienungstaste zu drücken um den Code anzulernen dieser wird dann in eine Datei mit dem Codename gespeichert.
So kann man alle seine zu verwendenden Codes nacheinander anlernen.
Das dritte Pythonscript ist zum senden der oben gelernten Codes zurück an den Broadlink um diese auszuführen. (z:B. send-bl.sh)
Auch hier wieder unter:
device = broadlink.rm(host=("<your RM3 IP address>",80), mac=bytearray.fromhex("<your RM3 mac>"))
die eigene IP Adresse und MAC Adresse des Broadlink von oben einzutragen.
Der Aufruf ist folgendermaßen, ./send-bl.sh /home/broadlink/test.txt , wichtig ist für das Textfile den ganzen Pfad anzugeben, und der in test.txt gelernte Befehl wird gesendet.
Nachdem alles wie gewünscht funktioniert hat habe ich das letzte Script ein wenig angepasst so das nur der Befehl gesendet wird und keine Ausgabe auf der Shell erscheint und auch die sleep Wartezeiten entfernt.
Die Kommandos für die einzelnen zu steuernden Geräte kann man dann in die HA-Bridge eintragen und so die jeweiligen Geräte über ALEXA schalten. Das funktioniert bei mir für RF und IR Signale. Diverse Steckdosen mit 433 MHz und der TV und die Soundbar über IR.
Es gibt sicherlich noch einiges zu verbessern an dieser Methode aber sie benötigt nur einen Linux Rechner und funktioniert zumindest bei mir bisher ohne Probleme.
MfG
Als erstes einige Hinweise: Das hier beschriebene ist eher was für erfahrene Linux Nutzer es wird ein laufendes Linux mit Python benötigt auch ist die Installation der einzelnen Komponenten nicht gerade gut erklärt.
Da ich als Homeserver für die verschiedensten Dienste (z.B. die HA-Bridge) einen Linux Rechner 24h am Tag laufen habe, war ich nicht sehr begeistert von der Idee nur für die Home Automatisierung mit dem Broadlink pro jetzt auch noch irgendein Android Gerät für die RM-Bridge nebenher in betrieb zu nehmen, auf die Idee mit der Virtualisierung wie in einem anderen Beitrag vorgeschlagen bin ich nicht gekommen ist auch nicht nötig wie im weiteren beschrieben .
Deswegen habe ich nach einem Weg gesucht den B.pro auch unter Linux zu nutzen, ein erster Fund im Netz wurde auch schon in einen anderen Beitrag erwähnt nämlich folgender aus dem Fhem Forum.
Das dort beschriebene habe ich auch ausprobiert leider ohne richtigen Erfolg , der dort beschriebene Webservice funktionierte leider nicht so wie gewünscht.
Also weiter-suchen , in einen anderen Forum fand ich dann folgendes: Python script for Broadlink devices
Die Vorgehensweise ist in etwa gleich zu der aus den FHEM Forum, also als erstes muss die Phyton API die sich unter folgenden Link python-broadlink befindet installiert werden.
Dann kann man die einzelnen Scriptdateien in eine eigenes Verzeichnis kopieren (z.B. /home/broadlink)
Als erstes haben wir das Pythonscript zum finden der Broadlinkgeräte. (z:B. search-bl.sh)
(Diese müssen als erstes mit der E-Control App eingerichtet werden also Wlan z.B.)
Code: Alles auswählen
#!/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 "..............."
./search-bl.sh auf der Shell aufrufe zeigt es Beispielhaft folgendes an:
user # ./search-bl.sh
************************************************
Using python library created by Matthew Garrett
https://github.com/mjg59/python-broadlink
************************************************
Scanning network for Broadlink devices....
Found 1 broadlink devices
...............
Device 1 Host address = '192.168.*.*', 8
Device 1 MAC address = b4 43 0d ** ** **
...............
Für später sind die IP Adresse und die MAC Adresse wichtig.
Das zweite Pythonscript dient zum anlernen des Fernbedienungscodes und abspeichern in eine txt Datei. (z:B. learn-bl.sh)
Unter:
device = broadlink.rm(host=("<your RM3 IP address>",80), mac=bytearray.fromhex("<your RM3 mac>"))
ist jeweils die eigene IP Adresse und MAC Adresse des Broadlink von oben einzutragen.
Code: Alles auswählen
#!/usr/bin/python
import broadlink
import time
import sys
device = broadlink.rm(host=("<your RM3 IP address>",80), mac=bytearray.fromhex("<your RM3 mac>"))
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"
user # ./learn-bl.sh
Connecting to Broadlink device....
Connected....
Please Enter Code Name e.g. tvOff test
When Broadlink white led is lit press the button on your remote within 5 seconds
Hex code written to file named test.txt
Das Script verbindet sich mit dem Broadlink und erwartet einen Namen für den Code wenn dieser bestätigt wird hat man 5 Sec Zeit um die entsprechende Fernbedienungstaste zu drücken um den Code anzulernen dieser wird dann in eine Datei mit dem Codename gespeichert.
So kann man alle seine zu verwendenden Codes nacheinander anlernen.
Das dritte Pythonscript ist zum senden der oben gelernten Codes zurück an den Broadlink um diese auszuführen. (z:B. send-bl.sh)
Auch hier wieder unter:
device = broadlink.rm(host=("<your RM3 IP address>",80), mac=bytearray.fromhex("<your RM3 mac>"))
die eigene IP Adresse und MAC Adresse des Broadlink von oben einzutragen.
Code: Alles auswählen
#!/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=("<your RM3 IP address>",80), mac=bytearray.fromhex("<your RM3 mac>"))
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...."
Nachdem alles wie gewünscht funktioniert hat habe ich das letzte Script ein wenig angepasst so das nur der Befehl gesendet wird und keine Ausgabe auf der Shell erscheint und auch die sleep Wartezeiten entfernt.
Die Kommandos für die einzelnen zu steuernden Geräte kann man dann in die HA-Bridge eintragen und so die jeweiligen Geräte über ALEXA schalten. Das funktioniert bei mir für RF und IR Signale. Diverse Steckdosen mit 433 MHz und der TV und die Soundbar über IR.
Es gibt sicherlich noch einiges zu verbessern an dieser Methode aber sie benötigt nur einen Linux Rechner und funktioniert zumindest bei mir bisher ohne Probleme.
MfG