Hallo,
nachdem ich eine Olimpia Splendid SF12 zuhause habe und diese nur über die O-FB zu steuern ist, war ich gezwungen einen Weg als den normalen einzuschlagen. IM Netz fand ich hierzu nur Anfragen, wie "Klimaanlage über WebUI steuern", oder wie eine solche Klimaanlage in Homamatic einbinden. Durch meine Recherchen stieß ich auf den BroadLink RM Pro, der unter Linux ansteuerbar ist. Da die Raspberrymatic nur mit "Addons" zu ergänzen ist, musste ich auf einen anderen Raspi 3b+ ausweichen. Ich kann jetzt über die CCU3 durch ein Wandthermostat mit Feuchtigkeitsmessung bei Überschreiten im Winter die Feuchtigkeit und im Sommer die Wärme regulieren. Hierzu gibt es zwei Programme in der CCU3. Bei meiner Klimaanlage verhält es sich so, dass diese im Standby-Modus mit der O-FB entsprechend im Sommer/Winter auf entfeuchten oder klimatisieren eingestellt werden kann. Durch die Verwendung der IR-Signale wird die Klimaanlage ordentlich hoch- und runter gefahren. Die Vorgehensweise sollte sich bei allen IR-bedienbaren Geräte z.B. Deckenventilator, die den IR-Code durch den BL RM pro auslesen lassen, geeignet sein. Nachteil ist, dass ich die Drehzahl hierbei nicht regeln kann.
Der Broadlink RM Pro kann ohne Cloud und Internetzugang mit u.s. 3. Möglichkeiten (http mit php, Cuxd und CCU-Programm-Script) gesteuert werden. Für jeden Befehl ist natürlich eine sh-Datei erforderlich.
Ab hier aus dem wiki.fhem.de:
Installationsanleitung für den BroadLink-Teil von (https://wiki.fhem.de/wiki/Broadlink#Installation)
Auf dem Raspi-Rechner (z.B. Raspi) muss python und am besten auch git installiert sein. Ggf. muss auch noch simplejson und pip installiert werden. Da ich mich nicht als user fhem einlogge, sind in dieser Anleitung viele "sudo"s drin.
sudo apt-get install python git python-pip
sudo pip install simplejson
Verzeichnis erstellen und die Bibliothek installieren
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 ..
In das Verzeichnis dann noch die vier Skripte kopieren.
1. search-bl.sh
#!/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 "..............."
2. learn-bl.sh
#!/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("Bitte Namen f. den Code eingeben, z.B. tvOff ")
time.sleep(1)
print "Wenn die LED am Broadlink angeht, innerhalb von 5 Sek die FB-Taste druecken "
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 "Kein Code empfangen - Ende"
sys.exit()
else:
# record learned hex code to file
f = open(codeName +".txt",'w')
f.write(myhex)
f.close()
print "Hex code gespeichert unter " + codeName + ".txt"
3. send-bl.sh
#!/usr/bin/python
import broadlink
import time
import sys
ip = "192.168.1.xx" # IP des BroadLinks Rm Pro
port = 80
mac = "34EA3xxxx71" # Mac-Adresse des Broadlinks
timeout = "30"
device = broadlink.rm((ip,port), mac, timeout)
try:
fileName = sys.argv[1]
except IndexError:
fileName = 'null'
if fileName == 'null':
print "Error - kein Dateiname angegeben"
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...."
4. sendmore-bl.sh
#!/usr/bin/python
import broadlink
import time
import sys
ip = "192.168.1.xx" # IP des BroadLinks Rm Pro
port = 80
mac = "34EA3xxxx71" # Mac-Adresse des Broadlinks
timeout = "30"
device = broadlink.rm((ip,port), mac, timeout)
try:
fileName = sys.argv[1]
except IndexError:
fileName = 'null'
if fileName == 'null':
print "Error - kein Dateiname angegeben"
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...."
device.host
# Pfad aus Aufruf extrahieren und dann den Befehl selbst vom Stapel nehmen
Parameter = sys.argv
# Name des Befehls selbst
filename1 = Parameter[0]
# Gesamtlaenge
FileNameLaenge = len(filename1)
# in Bestandteile aufteilen
filearray = filename1.split("/")
# den letzten identifizieren. Das ist der eigentliche Befehl
splitNo = len(filename1.split("/"))
lastElement = filearray[splitNo-1]
# den vom Aufruf wegschneiden, um den Pfad zu bekommen
FileNameAbzug = len(lastElement)
Ende = FileNameLaenge - FileNameAbzug
Pfad = filename1[0:Ende]
# Befehl aus der Liste loeschen, damit die Parameter bleiben
Parameter.pop(0)
# repeat for each argument
for argument in Parameter:
fileName = Pfad + argument +".txt"
file = open(fileName, 'r')
myhex = file.read()
device.send_data(myhex.decode('hex'))
time.sleep(0.5)
# print "Code Sent...."
sys.exit()
Dann in dem Verzeichnis noch die Dateibesitzer wechseln und die Skripte ausführbar machen:
sudo chown root *.sh
sudo chmod 744 *.sh
Konfiguration
Nun gilt es, die IP und MAC-Adresse des Broadlink herauszufinden. Entweder man schaut im Router nach, benutzt die Android-App FING oder das Script "search-bl.sh". Dazu
sudo ./search-bl.sh
Beispielhaft kommt dann:
************************************************
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.1.16', 8
Device 1 MAC address = b4 43 0d aa b3 54
...............
Für später sind die IP Adresse und die MAC Adresse wichtig. Diese müssen im zweiten bis vierten Script eingetragen werden!! Ich benutze da den Editor nano.
sudo nano ./learn-bl.sh
sudo nano ./send-bl.sh
sudo nano ./sendmore-bl.sh
Dabei die doppelten Anführungszeichen stehen lassen und an der passenden Stelle jeweils die IP und an der anderen die MAC-Adresse (mit Leerzeichen anstelle der Doppelpunkte) eintragen. Das erste Script liefert die auch so formatiert. Wenn man sie aber aus dem Router hat oder so, dann eben beachten!
Ab hier meine weitere Vorgehensweg:
Mit "/learn-bl.sh" z.B. für Klimanlage die Datei Klimaein.txt erstellen!
Zur Vereinfachung für CuxD bzw. Steuerung über einen Browser eine neue sh-Datei erstellen, z.B. "Klimaein.sh" und mit "./sendmore-bl.sh Klima) "Klima"-Datei, die oben erzuegt wurde ohne "txt"-Endung. Im Anschluss "chmod 0755".
Apache mit PHP5 installieren:
sudo apt-get install apache2 php
Ordner mit Web-Verzeicnis verlinken "ln -s /opt/BroadLink /var/www/html"
nun in Verzeichnis "var/www/html" eine PhP-Datei anlegen, z.B. Klimaein.php, Datei befüllen mit
<?php
#$output = shell_exec('cd /opt/Broadlink');
$output = shell_exec('sh /opt/BroadLink/sendmore-bl.sh Klimaein');
echo "<pre>$output</pre>";
?>
Ich habe dem script sendmore-bl.de noch folgende Zeilen nach
import broadlink
import time
import sys ,abweichend vom Original, hinzugefügt:
ip = "192.168.1.xx"
port = 80
mac = "34EA3xxxxx71"
timeout = "30"
device = broadlink.rm((ip,port), mac, timeout)
Dies ist dem search-bl.sh nicht hinzuzufügen. Send-bl.sh habe ich nicht getestet.
Möglichkeiten der Steuerung:
1. Steuerung im Browser:Das Klimagerät sollte jetzt mit einem modernen Browser mit http://192.168.1.xx/BroadLink/Klimaan.php einschaltbar sein.
2. Steuerung CuxD:
Ein Exec-Gerät (Typ 28) mit Cuxd anlegen:
Kanal mit z.B. Klimaanlage-ein benennen und bei "KEY|CMD_SHORT" >>>>> wget -q -O - '192.168.1.xx/BroadLink/Klimaan.php' <<<< eintragen
3. Steuerung mit CCU-Script:
string url="'http://192.168.1.xx/BroadLink/Klimaan.php'";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - "#url);
Wichtig: den CuxD-Kanal für jeden Befehl erhöhen xx2801001:1 xx2801001:2 ……..
Zusätzlich kann der BroadLink, eingerichtet mit Cloudanbindung (konfiguriert mit einer Android-App für die EU) mit einem Konto bei "iBroadlink" unabhängig von den o.g. Steuermöglichkeiten, über Alexa sprachgesteuert werden. Hier ist zu bedenken, dass das Ganze bei mir zumindest über einen TV-Eintrag mit selbst angelernten Tasten nur möglich ist.
Anmerkung 1: Die Steuerung ist natürlich in Bezug auf Sicherheit und Vereinfachung noch ausbaubar. Da ich aber eigentlich nur Laie bin, können sich Interessierte hier austoben und Ihre Verbesserungen wie auch Ideen einbringen.
Anmerkung 2: Der BroaLink RM pro lässt sich an einer FB , wie z.B. 6490 nicht so leicht einpflegen, da bei mir zumindest keine MAC-Adresse
von aussen zu erkennen war. Ich habe daher einen China-Steckdosen-Router i.V.m. der Broadlink-App zum Auslesen der MAC dazu genutzt. Nachdem ich die MAC im der FB eingetragen habe und eine frei IP-Adresse eingab konnte sich der RM pro ohne Probs. anmelden
Viel Spass
CCU3 steuert IR-Geräte z.B. Klimaanlage über BL RM pro ohne Cloud und IOBroker
Moderator: Co-Administratoren
-
- Beiträge: 27
- Registriert: 30.09.2013, 22:06
- Hat sich bedankt: 2 Mal
-
- Beiträge: 58
- Registriert: 12.02.2018, 03:13
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 1 Mal
Re: CCU3 steuert IR-Geräte z.B. Klimaanlage über BL RM pro ohne Cloud und IOBroker
Hallo, wie zufrieden bist du mit der Olimpia? Bin per Zufall auf die Klima gestoßen, habe einen Raum an meiner Garage dran, der möglichst ne halbwegs konstante Temperatur haben sollte. Ich habe Photovoltaik auf dem Garagendach und kann darüber dann z.b. auch die Olimpia steuern. Wie gut ist die Heizfunktion? Rückinfo gerne auch per PN
Danke
Marcus
Danke
Marcus
------
DANKE!
DANKE!
-
- Beiträge: 10658
- Registriert: 21.09.2012, 08:09
- System: CCU
- Wohnort: Stuttgart
- Hat sich bedankt: 320 Mal
- Danksagung erhalten: 501 Mal
Re: CCU3 steuert IR-Geräte z.B. Klimaanlage über BL RM pro ohne Cloud und IOBroker
Bitte Code-Zeilen auch in entsprechende Code-Tags setzen. Für jemanden, der programmieren kann, sollte das möglich sein.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.
-
- Beiträge: 218
- Registriert: 31.07.2011, 17:37
- System: CCU
- Wohnort: Czech Rep.
- Hat sich bedankt: 83 Mal
- Danksagung erhalten: 14 Mal
Re: CCU3 steuert IR-Geräte z.B. Klimaanlage über BL RM pro ohne Cloud und IOBroker
Isn't it easier to use Sensibo SKY (with its own API) than BroadLink RM without its own API?
I have both at home, and for air conditioning control (any) Sensibo is a great solution, specifically for air conditioners designed. The Broadlink solution seems quite cumbersome to me.
I have both at home, and for air conditioning control (any) Sensibo is a great solution, specifically for air conditioners designed. The Broadlink solution seems quite cumbersome to me.