Anleitung: Broadlink ohne RM Bridge nutzen (Linux)

Benutzeravatar

Themenstarter
Tomrail
Beiträge: 5
Registriert: Di 28. Feb 2017, 18:10
Vorhandene Echos: 1

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.)

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 "..............."
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.

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"
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.

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...."
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
0 x
Benutzeravatar

Dano
Beiträge: 7
Registriert: Fr 17. Mär 2017, 09:35

Do 23. Mär 2017, 20:13

Hallo,

super Erklärung, danke dafür, aber eine Frage hab ich noch: Wie kann ich die Kommandos jetzt in die ha-Bridge eintragen?

Gruß
0 x
Benutzeravatar

Themenstarter
Tomrail
Beiträge: 5
Registriert: Di 28. Feb 2017, 18:10
Vorhandene Echos: 1

Sa 25. Mär 2017, 20:24

Hallo

Sorry für die späte Antwort ,aber fürs Geld muss man leider auf die Arbeit.

Also unter dem Punkt Add/Edit der Ha-bridge Webseite ein neues Device anlegen.
Dort dann einen Namen angeben. Nun unter ON und OFF Items jeweils als Type "Execute Script/Programm" an geben und unter Target Item den jeweiligen Script Aufruf eintragen Siehe Beispiel im Bild unten.
Zum speichern dann "Add" ganz am Ende der jeweiligen Zeile drücken.
Zum Schluss ganz oben Add Bridge Device und das war es. Nun kann man auf der Alexa Page oder App nach neuen Smarthome Geräten suchen.

Bild

MfG

P.s. Im FHEM Forum und WIKI hat man sich auch Gedanken zu diesem Thema gemacht und z.B. den Aufruf mehrerer Kommandos mit einem Aufruf möglich gemacht.
0 x
Benutzeravatar

nomandes
Beiträge: 3
Registriert: So 12. Feb 2017, 14:39

Sa 25. Mär 2017, 22:51

Abend :relaxed: ,
Hab heute meinen RM Pro Mini 3 bekommen und direkt mal deine Lösung ausprobiert. Funktionierte auch mit dem Mini ohne Probleme. Danke für die Anleitung :slightly_smiling_face: .

Nur das ausführen des Befehls dauert bei mir irgendwie lange. Ich habe innerhalb des Scripts die Sleeps entfernt, allerdings dauert es immer noch ca. 6 Sekunden nach dem "Ok" von Alexa. Hast du vielleicht noch einen Tipp um es zu beschleunigen ?

Gruß
Manuel
0 x
Benutzeravatar

Dano
Beiträge: 7
Registriert: Fr 17. Mär 2017, 09:35

Mo 27. Mär 2017, 10:26

Super, danke dir Tomrail, sowas hatte ich in der Bridge gesucht aber irgendwie nicht gefunden...

@nomandes: also seit ich die sleeps bei mir entfernt hab, wird der Befehl sofort ausgeführt
0 x
Benutzeravatar

michael.strau??
Beiträge: 15
Registriert: Mi 15. Mär 2017, 10:33
Vorhandene Echos: 2
Vorhandene Echo Dots: 1

Fr 7. Apr 2017, 13:09

Hi...

habe das eben mal versucht. Bekomme das nicht hin.

Wenn ich das erste Script anlege und anschließend ausführe bekomme ich immer die Fehlermeldung:

search-bl.sh: Zeile 6: import: Kommando nicht gefunden.
search-bl.sh: Zeile 7: import: Kommando nicht gefunden.
Error: no such file "******1******************************************"
Error: no such file "Using python library created by Matthew Garrett"
Error: no such file ":https://github.com/mjg59/python-broadlink"
Error: no such file "************************************************"
Error: no such file "Scanning network for Broadlink devices...."
search-bl.sh: Zeile 15: Syntaxfehler beim unerwarteten Wort `('
search-bl.sh: Zeile 15: `mydevices = broadlink.discover(timeout=5)'

Kann mir da jemand weiterhelfen?
0 x
1 x Echo DOT, 1 x Echo Show, 3 x Max! Heizungsregler, 3 x Max! Fensterkontakte, 1 x Raspberry Pi mit OpenHAB, 5 x Jarolift Funk-Rollladenmotoren, 1 x Broadlink RM Pro, 2 x Homematic IP Lichtschalter
Benutzeravatar

Dano
Beiträge: 7
Registriert: Fr 17. Mär 2017, 09:35

Di 11. Apr 2017, 08:34

Hallo,

schau dir das mal an: https://wiki.fhem.de/wiki/Broadlink
ist ein bißchen ausführlicher erklärt.
0 x
Benutzeravatar

michael.strau??
Beiträge: 15
Registriert: Mi 15. Mär 2017, 10:33
Vorhandene Echos: 2
Vorhandene Echo Dots: 1

Di 11. Apr 2017, 10:19

sehr cool. Danke.

Klappt soweit mit IR-Signalen. Aber RF-Codes nimmt er nicht. :(
Gibts da eine Lösung für?
0 x
1 x Echo DOT, 1 x Echo Show, 3 x Max! Heizungsregler, 3 x Max! Fensterkontakte, 1 x Raspberry Pi mit OpenHAB, 5 x Jarolift Funk-Rollladenmotoren, 1 x Broadlink RM Pro, 2 x Homematic IP Lichtschalter
Benutzeravatar

Themenstarter
Tomrail
Beiträge: 5
Registriert: Di 28. Feb 2017, 18:10
Vorhandene Echos: 1

Mi 12. Apr 2017, 13:23

michael.strau?? hat geschrieben:sehr cool. Danke.

Klappt soweit mit IR-Signalen. Aber RF-Codes nimmt er nicht. :(
Gibts da eine Lösung für?
Hallo

Also ich steuerte damit verschiedene IR und RF Geräte ohne Probleme.
Hinweis: RF kann nur der Pro (Das dreieckige Teil) der kleine runde kann nur IR.
Beim an lernen von RF Signalen musste ich aber auch mehrere Versuche durchführen.

Mfg

Gesendet von meinem P9000 mit Tapatalk
Zuletzt geändert von Tomrail am Mi 12. Apr 2017, 13:27, insgesamt 1-mal geändert.
0 x
Benutzeravatar

Themenstarter
Tomrail
Beiträge: 5
Registriert: Di 28. Feb 2017, 18:10
Vorhandene Echos: 1

Mi 12. Apr 2017, 13:27

michael.strau?? hat geschrieben:Hi...

habe das eben mal versucht. Bekomme das nicht hin.

Wenn ich das erste Script anlege und anschließend ausführe bekomme ich immer die Fehlermeldung:

search-bl.sh: Zeile 6: import: Kommando nicht gefunden.
search-bl.sh: Zeile 7: import: Kommando nicht gefunden.
Error: no such file "******1******************************************"
Error: no such file "Using python library created by Matthew Garrett"
Error: no such file ":https://github.com/mjg59/python-broadlink"
Error: no such file "************************************************"
Error: no such file "Scanning network for Broadlink devices...."
search-bl.sh: Zeile 15: Syntaxfehler beim unerwarteten Wort `('
search-bl.sh: Zeile 15: `mydevices = broadlink.discover(timeout=5)'

Kann mir da jemand weiterhelfen?
Hallo

Kann es eventuell sein das du einen Windows Editor benutzt hast dann kann es Probleme mit der Codierung und dem Zeilenumbruch kommen. Am besten die Script Dateien unter Linux erstellen.

Mfg

Gesendet von meinem P9000 mit Tapatalk


0 x
Antworten

Zurück zu „Broadlink“

  • Information