Anleitung: Broadlink ohne RM Bridge nutzen (Linux)

Benutzeravatar

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

Do 13. Apr 2017, 10:16

okay... hat geklappt....

am Editor lags.

Vielen Dank
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

eyeq2020
Beiträge: 10
Registriert: Do 9. Mär 2017, 21:03

Sa 15. Apr 2017, 11:18

Hallo,

könnte mir jemand bitte eine Schritt für Schritt Anleitung schreiben wie ich das mit dem Script installieren machen kann ? Komme wirklich nicht weiter :grimacing:

Habe mich schon etwas eingelesen leider funktioniert das ausführen des search-bl.sh Skript nicht. Es kommt immer ein Meldung

„ -bash: ./search-bl.sh: Permission denied „

Habe auch versucht nach der Anleitung vom FHEM Forum vorzugehen.

sudo mkdir /opt/BroadLink
cd /opt/BroadLink
sudo git clone https://github.com/mjg59/python-broadlink.git
cd python-broadlink
sudo python setup.py install
cd ..

Auch hier kommt der gleiche Fehler.

Vielen Dank und Grüße
0 x
Benutzeravatar

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

Mo 24. Apr 2017, 11:40

Erst BroadLink mit der App ins eigene Netz einbinden

dann auf dem Fhem-Rechner (Raspi) in der Konsole eigeben:
sudo apt-get install python git pip
sudo pip install simplejson
sudo mkdir /opt/BroadLink
sudo chown fhem.dialout /opt/BroadLink
cd /opt/BroadLink
sudo git clone https://github.com/mjg59/python-broadlink.git
cd python-broadlink
sudo python setup.py install
cd ..

dann die 4 Skripte reinkopieren oder dort erstellen mit:
sudo nano search-bl.sh
sudo nano learn-bl.sh
sudo nano send-bl.sh
sudo nano sendmore-bl.sh

dann:
sudo chown fhem.dialout *.sh
sudo chmod 744 *.sh

IP und MAC-Adresse mit sudo ./search-bl.sh rausfinden und in die anderen 3 Skripte einfügen.
0 x
Benutzeravatar

eyeq2020
Beiträge: 10
Registriert: Do 9. Mär 2017, 21:03

Mi 26. Apr 2017, 08:21

Vielen Dank für deine Infos. Ich nutze aber kein FHEM. Deswegen meine Frage der Befehl sudo chown fhem.dialout /opt/BroadLink muss ja dann bei mir anders aussehen. Genauso wie der sudo chown fhem.dialout *.sh Befehl.

Ich bin als User "PI" auf dem Rasberry angemeldet. Im Root habe ich den Ordner BroadLink erstellt. Aber leider kommen die Fehler wie oben beschrieben „ -bash: ./search-bl.sh: Permission denied „.

Wenn du hier noch weitere Infos geben könntest würde ich mich sehr freuen.

Danke !!!
0 x
Benutzeravatar

Arikon
Beiträge: 4
Registriert: Mo 30. Jan 2017, 17:01

Mi 26. Apr 2017, 10:21

Hallo,

search-bl.sh ist ausführbar von den Rechten ?

Gruss,
Gambit
0 x
Benutzeravatar

eyeq2020
Beiträge: 10
Registriert: Do 9. Mär 2017, 21:03

Mi 26. Apr 2017, 18:15

Hallo,

ich habe das script nun in einen anderen Ordner installiert. Da komme ich einen Schritt weiter. Ich kann das script ausführen aber es kommt dieser Fehler


Traceback (most recent call last):
File "./search-bl.sh", line 6, in <module>
import broadlink

Ich habe das im start script stehen

#!/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)



Grüße

eyeq
0 x
Benutzeravatar

Grex
Beiträge: 7
Registriert: So 23. Apr 2017, 10:59

Di 2. Mai 2017, 00:04

Vielen Dank für deine Anleitung & Scripts!

Ich habe mir erlaubt, deine Scripts in Python 3.x umzuschreiben, da auf dem Raspberry (zumindest beim alten Modell) das importieren des broadlink modules eine halbe Ewigkeit gedauert hat und anschließend bei Alexa zu einem Timeout.

detect:

Code: Alles auswählen

#!/usr/bin/python3.4
#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 ("...............")
Learn:

Code: Alles auswählen

#!/usr/bin/python3.4

import broadlink
import time
import sys
import binascii



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 = 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(binascii.b2a_hex(ir_packet));

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()
Send:

Code: Alles auswählen

#!/usr/bin/python3.4

import broadlink
import time
import sys
import binascii
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(bytearray.fromhex(myhex));
print ("Code Sent....")
Lg
Grex


EDIT:
eyeq2020 hat geschrieben:
Mi 26. Apr 2017, 18:15
Hallo,

ich habe das script nun in einen anderen Ordner installiert. Da komme ich einen Schritt weiter. Ich kann das script ausführen aber es kommt dieser Fehler


Traceback (most recent call last):
File "./search-bl.sh", line 6, in <module>
import broadlink

Ich habe das im start script stehen

#!/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)



Grüße

eyeq
Hast du das Modul broadlink installiert? (mit python setup.py install)
0 x

clel
Beiträge: 15
Registriert: Sa 14. Jan 2017, 19:34

Fr 12. Mai 2017, 15:11

Ich bin gerade dabei, meinen Broadlink Controller einzurichten. Dabei bin ich auf eine ähnliche Lösung gestoßen: https://github.com/davorf/BlackBeanControl gibt es da große Unterschiede/Vorteile?
0 x
Benutzeravatar

thburkhart
Beiträge: 3
Registriert: Mi 9. Aug 2017, 17:58

Mi 9. Aug 2017, 18:05

schöne Anleitung :-) !!!

Ich komme in https://github.com/davorf/BlackBeanControl
jedoch nicht über den Schritt
Install pycrypto package: python -m pip install pycrypto

nicht hinaus (
Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-oK4mVG/pycrypto/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-Hsl0q3-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-oK4mVG/pycrypto/

Kann mir jemand helfen ?

Herzliche Grüße

Thomas
0 x
Benutzeravatar

idefix23
Beiträge: 1
Registriert: Mi 22. Nov 2017, 08:56

Mi 22. Nov 2017, 09:10

Ich möchte erstmal ein riesen dankeschön an Tomrail aussprechen!
Habe es anhand seinen Erklärungen, dem mini How-To auf domoticz.com und der Git-Repository aptalca/docker-ha-bridge auf meinem Libreelec Raspberry/Kodi zum laufen gebracht.
Kein Android, kein RM Plugin, nur das sowieso schon verhandene Raspberry, sehr geil :)

Hier der benötigte Teil um Docker auf Libreelec/Kodi installieren: Referenz

Code: Alles auswählen

This is huge! Thanks to aptalca for creating an arm based Docker container for the Raspberry Pi (and Odroid C2!) that allows ha-bridge to run inside the LibreELEC Docker add-on! 

First thing you need to do is ensure your Raspberry Pi LibreELEC has a static IP address so you always know how to get to the ha-bridge web interface.
Kodi > Programs > LibreELEC configuration > Connections then select your active connection (LAN or Wi-Fi) and use the context menu to select ‘Edit’.
Scroll to IPV4 and change your IP address settings so they are static by using the Manual settings. Of course, you could always create a DHCP lease in your router if you are savvy with that and that is the better way to go.
If you have more than one media player, I recommended settings them with static IP’s next to each other like xxx.xxx.xxx.201, xxx.xxx.xxx.202 etc. In that way, (if you use Android) you can use the excellent SSH Button app by David Grootendorst to create buttons to easily reboot Kodi from your phone or tablet if Kodi ever hangs. Sadly, I have not found a IOS app that’s as nice.

Second thing you need to do (IMPORTANT) is change the web server port that Kodi is using as the default is port 80 which ha-bridge needs to use in order to be compatible with Google Home.
Kodi > Settings > Services > Control > Web server and change the port to 8080 (or whatever you like) as long as it’s not 80.
Now you can go ahead and get the Docker add-on for LibreELEC made by the devs at LE.
Kodi > Add-ons > Install from repository > LibreELEC Add-ons > Services > Docker
Once installed, use the context menu to edit the settings in Docker if you want Kodi to pop-up notifications when your Docker container starts, stops or otherwise farts. Docker > Settings > Notifications. Either select ‘All’ or ‘Custom’.
Mein "dreckiges" Dockerfile, welches per

Code: Alles auswählen

docker build -t habridge . 
erstellt werden kann
Dazu einen Ordner erstellen, dort den heruntergeladenen python-broadlink Ordner reinkopieren (kann HIER heruntergeladen werden), die firstrun.sh (siehe auch unten) reinpacken und im gleichen Ordner noch das "Dockerfile" mit nano oder vim erstellen.

Code: Alles auswählen

FROM armv7/armhf-ubuntu

VOLUME ["/config"]

RUN export DEBCONF_NONINTERACTIVE_SEEN=true DEBIAN_FRONTEND=noninteractive && \
apt-get update && \
apt-get install -y \
python-setuptools && \
apt-get install -y \
software-properties-common python-software-properties build-essential python-dev && \
apt-get install -y curl && \
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee /etc/apt/sources.list.d/webupd8team-java.list && \
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list && \
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886 && \
apt-get update && \
echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections && \
apt-get install -y \
wget oracle-java8-installer oracle-java8-set-default && \
usermod -u 99 nobody && \
usermod -g 100 nobody && \
mkdir -p /etc/my_init.d && \
mkdir -p /home/broadlink

COPY firstrun.sh /etc/my_init.d/firstrun.sh
COPY python-broadlink /usr/local/broadlink/python-broadlink
#COPY search-bl.sh /config
#COPY learn-bl.sh /config
#COPY send-bl.sh /config

RUN cd /usr/local/broadlink/python-broadlink && python /usr/local/broadlink/python-broadlink/setup.py install
RUN chmod +x /etc/my_init.d/firstrun.sh
Evtl. auch beachten das ich den Libraryordner von "python-broadlink-master" in "python-broadlink" umbenannt hab.

Code der firstrun.sh

Code: Alles auswählen

#!/bin/bash

#Get docker env timezone and set system timezone
echo "setting the correct local time"
echo $TZ > /etc/timezone
export DEBCONF_NONINTERACTIVE_SEEN=true DEBIAN_FRONTEND=noninteractive
dpkg-reconfigure tzdata
cd /config
if [ ! -z $VERSION ]; then
  echo "Manual version override:" $VERSION
else
  #Check the latest version on github
  VERSION="$(curl -sX GET https://api.github.com/repos/bwssytems/ha-bridge/releases/latest | grep 'tag_name' | cut -d\" -f4)"
  VERSION=${VERSION:1}
  echo "Latest version on bwssystems github repo is" $VERSION
fi

if [ ! -f /config/ha-bridge-"$VERSION".jar ]; then
  echo "Installing version '$VERSION'"
  wget https://github.com/bwssytems/ha-bridge/releases/download/v"$VERSION"/ha-bridge-"$VERSION".jar
else
  echo "Using existing version '$VERSION'"
fi
echo "Setting correct permissions"
chown -R nobody:users /config

ADDPARAM="-Dupnp.config.address=$SERVERIP -Dserver.port=$SERVERPORT"
echo -e "Parameters used:\nServer IP : $SERVERIP\nServer Port : $SERVERPORT"

echo "Starting Home Automation Bridge"
java -jar $ADDPARAM ha-bridge-"$VERSION".jar 2>&1 | tee /config/ha-bridge.log
Da die 3 Skripte (learn-bl.sh, learn-bl.sh, send-bl.sh) individuell angepasst werden müssen (mit IP und MAC des Broadlinks) müssen diese nachträglich in den Docker kopiert werden (in den Ordner /config, siehe auskommentierte COPY Befehle im Dockerfile.
docker cp search-bl.sh habridge:/config/search-bl.sh
docker cp learn-bl.sh habridge:/config/learn-bl.sh
docker cp send-bl.sh habridge:/config/send-bl.sh
Das erstellte Dockerimage taggen:

Code: Alles auswählen

docker tag habridge name/repository
Start-, Netzwerkverhalten etc. des Dockers einrichten (Achtung IP anpassen)

Code: Alles auswählen

docker run -d -t -i --name="habridge" --restart=always --net="host" -e SERVERIP="IP-Adresse des Pi's" -e SERVERPORT="80" -v /storage/downloads/habridge:/config:rw -v /etc/localtime:/etc/localtime:ro name/repository /bin/bash /etc/my_init.d/firstrun.sh
Die Skripte können dann direkt auf dem Pi z.B. über den Befehl

Code: Alles auswählen

docker exec -i -t habridge python /config/learn-bl.sh
ausgeführt werden

Nachdem man mit dem lean skript eine Taste eingelernt hat muss die erstellte Textdatei in den Ordner /config verschoben werden damit die ha-bridge das Skript ausführen kann.

Hoffe ich hab nix vergessen ^^
Zuletzt geändert von idefix23 am Mi 22. Nov 2017, 10:17, insgesamt 2-mal geändert.
0 x
Antworten

Zurück zu „Broadlink“

  • Information