Broadlink Black Bean (RM 3 Mini) IR Controller - Integration in OpenHAB

Hi,
Thanks Davor, you are making a valid point. I’ll be sure to have this reviewed and approved before sharing it.

Best Regards,
Cato

Hello!

I think you should do that before you spend hours on binding development. Unless you are going to make it even if it can’t be published to the OH add-ons repository.

Best regards,
Davor

I’m getting crazy.
This is my Tv Power On Hex Stream:

05aa5aa555aa5aa5500000000000000000000000000000000000000000000000091f5000037276a00be82cf1ee40d43b40100000074c6000054d411c45ce1b0c972dd0116fea3bcda6885ba57b5128cb5b87b946529c240b59b8bed235aef386f074cec4331af96da9650c2378197ef947dda6361c843d7fa30fca49fa58192dc08e7d0d9b59c9a7d

This is the output:

openhab@openhab:~/BlackBeanControl$ python BlackBeanControl.py -c TVPower
Traceback (most recent call last):
File “BlackBeanControl.py”, line 193, in
RM3Device.send_data(DecodedCommand)
File “/usr/local/lib/python2.7/dist-packages/broadlink-0.3-py2.7.egg/broadlink/init.py”, line 455, in send_data
self.send_packet(0x6a, packet)
File “/usr/local/lib/python2.7/dist-packages/broadlink-0.3-py2.7.egg/broadlink/init.py”, line 229, in send_packet
payload = aes.encrypt(bytes(payload))
File “/usr/local/lib/python2.7/dist-packages/Crypto/Cipher/blockalgo.py”, line 244, in encrypt
return self._cipher.encrypt(plaintext)
ValueError: Input strings must be a multiple of 16 in length

If I add a “0” to the Hex stream the outup is

openhab@openhab:~/BlackBeanControl$ python BlackBeanControl.py -c TVPower
Traceback (most recent call last):
File “BlackBeanControl.py”, line 192, in
DecodedCommand = CommandFromSettings.decode(‘hex’)
File “/usr/lib/python2.7/encodings/hex_codec.py”, line 42, in hex_decode
output = binascii.a2b_hex(input)
TypeError: Odd-length string

Where is the mistake?

Best regards,
G

hello, I have trouble finding the code from Wireshark
I can sniff the traffic from wlan.sa == “iphone mac” but cannot find any such code
can someone help?

Hi,

The easiest way by far is to get code string from this site: http://rm-bridge.fun2code.de/rm_manage/index.html

It does however require that you an Android device at your disposal when discovering codes.

Best Regards,
Cato

Hi,
I forgot to mention that althrough it says it only works for RM1/2 devices, it also works for RM3/Mini. I couldnt find the link where it is described, but basically you have to manually add the RM3 devices as the auto discovery function will not find it.

Best Regards,
Cato

Hello!

Sorry for the late reply, I must’ve missed your post somehow. What have you used to get Power on hex stream (BlackBeanControl or Packet capture software)? If you used BlackBeanControl to learn a command, it could be inconsistency between python-broadlink package and BlackBeanControl script version.

Best regards,
Davor

I used packet capture. No luck

But, I re-tried with BlackBeanControl and it works. Wonderful.
Regards
G

1 Like

Hi guys,
First of all, thank you for all these useful information that helped me to understand how to integrate BlackBean to OpenHab.
I have a question that you might know how to solve.
I am trying to send a discrete IR signal to my LG TV which I found here:
So for example if I want to power on my TV I should send this code using BlackBeanControl:
P-On
0000 006d 0026 0000 0155 00aa 0016 0015 0016 0015 0016 0040 0016 0015 0016 0015 0016 0014 0016 0015 0016 0015 0016 0040 0016 0040 0016 0015 0016 0040 0016 0040 0016 0040 0016 0040 0016 0040 0016 0015 0016 0015 0016 0040 0016 0015 0016 0015 0016 0014 0016 0040 0016 0040 0016 0040 0016 0040 0016 0015 0016 0040 0016 0040 0016 0040 0016 0014 0016 0015 0016 060b 0155 0055 0016 0e58 0155 0055 0016 00aa
The issue is that BlackBeanControl doesnt accept this kind of code.
Is there any way to convert this signal so that BlackBeanControl will accept it?
PS(I can record and send signals sucessfully with BlackBeanControl)

Hello!

Do you have an Android smartphone? If you do, you can use ZappIR application to send those discrete codes, and then learn them the usual way. ZappIR has a huge database of regular and discrete IR codes.

Best regards,
Davor

Hi, I’m im new to openhab2 and I don’t understand how I can send these exec bindings on a Windows server.

OpenHab is up & running, installed Python 2.7 and dependecies.

Your script is located at: C:\openHAB2\conf\scripts\BlackBeanControl-master
and I want to send BlackBeanControl.py -c Yamaha_power_on (to start the learning process)

What do I write in the command field when I create a new thing?

Thanks for all the work so far! I’m very interested in the upcoming (hopefully) binding!

Hi Cato, any luck with an update on whether you can share your binding / RM Pro script due this issue?

If there is a way we could get this approved or even allowed that we could do to our own devices that would help us implement the broadlink devices into OpenHab.

Im not sure if its relevant, however, the Broadlink RM has been successfully used with HA, perhaps even a way we could have OpenHab talk to say a HA server to control it would be a good work around if possible.

Thoughts.?

I’ve been using the broadlink-mqtt code also. Found it really easy to use.

I’ve managed to supply some new samsung codes for distinct source items (hdmi1, 2, 3, 4, tv etc).

All of you seem to be using the Broadlink unit for IR, are any of you using it to control Broadlink sockets or wall switches?

If so, what code do you use with OpenHAB?

Hello!

I’m sorry, but I don’t have any Broadlink sockets, nor wall switches. How do you send on/off commands (outside OH)? With their application? If that’s the case, you could try and intercept network packets, and then use intercepted hex dump in the script. You can find more about ways of doing this at the beginning of this thread.

Best regards,
Davor

I’ve been using the python code for a month now, it works great for many of my ir/rf devices but I have one peculiar action. I have an LED light strip that came with the RF remote, I have tried it with both the Broadlink app and the Blackbean script. Both work, but the script seems to randomly ‘bounce’ the code and the light switches momentarily and then switches back to its initial state (the code is for the power toggle since the remote doesn’t have a separate on/off). This is only the case for this remote (all other blackbean items work normally), and it works without the bounce effect in the broadlink app.
In the items file I just set the light’s ON and OFF to the same, I have also tried it with autoupdate=false to see if there was a difference.
Switch Kitchen_led "Kitchen LED" {exec=">[ON:python /opt/openhab/BlackBeanControl/BlackBeanControl.py -c kitchen_led] >[OFF:python /opt/openhab/BlackBeanControl/BlackBeanControl.py -c kitchen_led]"}

Does anyone have insight as to what I might try differently?

Am I right in understanding that when you have two Blackbeans, for each you need to learn and store commands separately, since they will use different encryption? E.g. I want to tell my robotic vacuum to return to its base, and thus I fire the IR command on multiple blackbeans (I don’t know where the vacuum is). In that case, will I need to send different commands to each blackbean?

Hello!

Yes, you are right. Broadlink uses something unit-specific to encrypt commands, so, there isn’t a way (at least to my knowledge) to share learned commands amongst Broadlink devices.

Best regards,
Davor

No I’m not sure this is right. I have two RM3s. I updated the broadlink-mqtt script to accept a mac address in the topic and it will fire the command at the specified device - but the command it sends is read from a file, and works on either device. So I can record a command on one, and fire the command out at the other one (if say learning commands for my stereo which is in another room).