BroadLink Mark II plugin
-
The plugin has been updated to ver 0.56 which improves the RF learning procedure. It also recognises some of the newer RM4 devices (thanks Bruce Lacey).
Existing uses just need to upload the "L_BroadLink_Mk2_1.lua" file.
RF learning has been improved but is never particularly reliable. You can invoke testing by executing this code in the Lua Test box:
local DeviceID = the_id_of_the_IR_child_device luup.call_action('urn:a-lurker-com:serviceId:IrTransmitter1', 'LearnRFCode', {}, DeviceID) return true
Running the code illuminates the LED on the BroadLink device. If you do nothing at this point, the learning times out after about 24 seconds and the result is "No RF code was learnt".
While in the learning mode, tap the remote button to be learnt, every 2/3 of a second or so. If the LED goes out (typically after about say 5 seconds) some result was learnt.
The result can be found in the parent device by looking at the variable "LearntRFCode". However, it is far easier to look at the log file, which logs the process as it proceeds and also the result. You need to learn a few results to try and determine if the results are at all consistent.
-
@a-lurker said in BroadLink Mark II plugin:
You can invoke testing by executing this code in the Lua Test box
Presumably, you can also access this from either AltUI or the openLuup console Action page for the device, which would be even easier.
-
Yep - many ways to skin a cat but you might only have a dog to work with.
-
I tested the latest changes to add support for the RM4 Pro and it created a "IR" Child although it did not list any of the devices that have been created inside the RM4 Pro itself (Probably because is an RF device and that child was not created?). Also the IP set in the plugin attributes is different than the IP This is what the logs are showing:
2021-04-02 08:53:44.604 luup_log:82: BroadLink_Mk2 debug: The BroadLink device at IP address 10.1.11.126 and of type 0x4e2a is not known to this plugin
I do have another Broadlink device in the network so I guess is trying to discover that one as well.
2021-04-02 08:53:44.557 openLuup.scheduler:: [3] Alternate App Store device startup completed: status=true, msg=OK, name=AltAppStore 2021-04-02 08:53:44.557 openLuup.scheduler:: [82] BroadLink-Mk2 device startup 2021-04-02 08:53:44.557 luup_log:82: BroadLink_Mk2 debug: Initialising plugin: BroadLink_Mk2 2021-04-02 08:53:44.557 luup_log:82: BroadLink_Mk2 debug: Using: Lua 5.1 2021-04-02 08:53:44.557 luup_log:82: BroadLink_Mk2 debug: 0.57 --> PluginVersion 2021-04-02 08:53:44.558 luup_log:82: BroadLink_Mk2 debug: Using: dkjson 2021-04-02 08:53:44.559 luup_log:82: BroadLink_Mk2 debug: Broadcasting discovery message 2021-04-02 08:53:44.559 luup_log:82: BroadLink_Mk2 debug: 10.1.11.22 2021-04-02 08:53:44.603 luup_log:82: BroadLink_Mk2 debug: 10.1.11.126 2021-04-02 08:53:44.604 luup_log:82: BroadLink_Mk2 debug: Rx'ed a discovery response: rxMsg length = 128 5A A5 AA 55 5A A5 AA 55 00 00 00 00 00 00 00 00 Z..UZ..U........ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ E5 D6 00 00 2A 4E 07 00 00 00 DD 8A EB A7 DF 24 ....*N.........$ 00 00 00 00 2A 4E 0A 01 0B 7E DD 8A EB A7 DF 24 ....*N...~.....$ E5 A5 A5 E5 85 8B E6 96 AF E7 A9 BA E8 B0 83 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 01 ................ 2021-04-02 08:53:44.604 luup_log:82: BroadLink_Mk2 debug: Looks like the Cloud bit is set - that's not good 2021-04-02 08:53:44.604 luup_log:82: BroadLink_Mk2 debug: Friendly name: e5a5a5e5858be696afe7a9bae8b083 2021-04-02 08:53:44.604 luup_log:82: BroadLink_Mk2 debug: The BroadLink device at IP address 10.1.11.126 and of type 0x4e2a is not known to this plugin 2021-04-02 08:53:45.604 luup_log:82: BroadLink_Mk2 debug: Number of BroadLink devices found is 1 2021-04-02 08:53:45.604 luup_log:82: BroadLink_Mk2 debug: Header to be sent follows (ex checksum): 5A A5 AA 55 5A A5 AA 55 00 00 00 00 00 00 00 00 Z..UZ..U........ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 9B 64 65 00 00 00 8D DE 18 B0 43 A0 .....de.......C. 00 00 00 00 FB C8 00 00 ........ 2021-04-02 08:53:45.605 luup_log:82: BroadLink_Mk2 debug: Payload to be sent follows (unencrypted): 00 00 00 00 A7 C5 DF 0A 91 33 F1 88 C9 82 A5 6D .........3.....m C8 BC F9 DF 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 2021-04-02 08:53:45.618 luup_log:82: BroadLink_Mk2 debug: Sending: Authorisation: txMsg length = 136 2021-04-02 08:53:45.632 luup_log:82: BroadLink_Mk2 debug: Broadlink device: 649b replied with: 03e9 2021-04-02 08:53:45.632 luup_log:82: BroadLink_Mk2 debug: Error: errorMsg = fff9 2021-04-02 08:53:45.632 luup_log:82: BroadLink_Mk2 debug: This device is probably offline - mac address: a0:43:b0:18:de:8d 2021-04-02 08:53:45.632 luup_log:82: BroadLink_Mk2 debug: k = ir 2021-04-02 08:53:45.632 luup_log:82: BroadLink_Mk2 debug: a0:43:b0:18:de:8d_ir 2021-04-02 08:53:45.632 luup_log:82: BroadLink_Mk2 debug: a0:43:b0:18:de:8d 2021-04-02 08:53:45.632 luup_log:82: BroadLink_Mk2 debug: RM4 Pro - IR 1 2021-04-02 08:53:45.632 luup_log:82: BroadLink_Mk2 debug: urn:schemas-micasaverde-com:device:IrTransmitter:1 2021-04-02 08:53:45.632 luup_log:82: BroadLink_Mk2 debug: D_BroadLink_Mk2_IrRf_1.xml 2021-04-02 08:53:45.633 luup_log:82: BroadLink_Mk2 debug: type = function, value = function: 0x1a03140 2021-04-02 08:53:45.633 luup_log:82: BroadLink_Mk2 debug: {"a0:43:b0:18:de:8d":{"blInternalId":"00000001","blKey":"a7c5df0a9133f188c982a56dc8bcf9df","blDeviceType":25755,"blIp":"10.1.11.20","blDesc":"RM4 Pro"}} --> BroadLinkDevices 2021-04-02 08:53:45.633 luup.chdev.append:: [a0:43:b0:18:de:8d_ir] RM4 Pro - IR 1 2021-04-02 08:53:45.633 luup.chdev.sync:: [82] BroadLink-Mk2, syncing children 2021-04-02 08:53:45.633 luup.set_failure:: status = false 2021-04-02 08:53:45.633 luup.variable_set:: 82.urn:micasaverde-com:serviceId:HaDevice1.CommFailure was: false now: false #hooks:0 2021-04-02 08:53:45.633 luup.variable_set:: 82.urn:micasaverde-com:serviceId:HaDevice1.CommFailureTime was: 1617316371 now: 1617368025 #hooks:0 2021-04-02 08:53:45.633 openLuup.scheduler:: [82] BroadLink-Mk2 device startup completed: status=true, msg=All OK, name=BroadLink_Mk2
Any ideas how to get the RF portion working?
-
a-lurkerreplied to ronluna on Apr 2, 2021, 11:33 PM last edited by a-lurker Apr 2, 2021, 10:03 PM
First on this:
2021-04-02 08:53:44.604 luup_log:82: BroadLink_Mk2 debug: The BroadLink device at IP address 10.1.11.126 and of type 0x4e2a is not known to this plugin
and
Friendly name: e5a5a5e5858be696afe7a9bae8b083
Getting the last bit and reformatting it a little:
\xe5\xa5\xa5\xe5\x85\x8b\xe6\x96\xaf\xe7\xa9\xba\xe8\xb0\x83
and sticking it into this UTF8 enc/dec you get the attached image. If someone knows what it means, I would be interested in knowing - I suspect it something to do with aircons.
It seems that a few air conditioners are now using the Broadlink protocol. They are controlled with a mobile app called AC freedom and they use the Broadlink devtype 0x4E2a (20010dec).
So in short the plugin doesn't handle A/Cs. @ronluna can you tell us more about this Broadlink / Aircon device?
More info here: on the A/Cs
-
a-lurkerreplied to a-lurker on Apr 3, 2021, 12:30 AM last edited by a-lurker Apr 3, 2021, 8:46 PM
Second: EDIT:
yes the Broadlink device was not producing an RF child. It should be fixed: see latest lua file in GitHub ver 0.57a.There are so many variations of all these devices it's hard to keep up.On this:
2021-04-02 08:53:45.632 luup_log:82: BroadLink_Mk2 debug: This device is probably offline - mac address: a0:43:b0:18:de:8d
The Broadlink device may be on the edge of its WiFi range.
Note that the plugin now also allows you to send codes in base64 format. Just send them and the plugin will work out if they are base64 encoded.
For reasons unclear Home Assistant seems to use them. However they have thousands available for Aircons
-
@a-lurker the second broadlink device in the network is indeed Mini split A/C that uses AC Freedom app. Both device are well within the wifi range and working fine when using their native apps so I doubt the timeout message has something to do with the strength of the connection. What I've noticed in the past when I've seen a timeout like this is due to the socket expecting a special carrier return <CR> or something in that sort, simply not understanding what was sent back to it.
I'm not familiar with the RM communication protocol... Although I'm all ears to see what else We could try to get this off the ground.
2021-04-03 14:20:18.155 openLuup.scheduler:: [82] BroadLink-Mk2 device startup 2021-04-03 14:20:18.155 luup_log:82: BroadLink_Mk2 debug: Initialising plugin: BroadLink_Mk2 2021-04-03 14:20:18.155 luup_log:82: BroadLink_Mk2 debug: Using: Lua 5.1 2021-04-03 14:20:18.155 luup_log:82: BroadLink_Mk2 debug: 0.57a --> PluginVersion 2021-04-03 14:20:18.155 luup.variable_set:: 82.urn:a-lurker-com:serviceId:BroadLink_Mk2_1.PluginVersion was: 0.57 now: 0.57a #hooks:0 2021-04-03 14:20:18.156 luup_log:82: BroadLink_Mk2 debug: Using: dkjson 2021-04-03 14:20:18.157 luup_log:82: BroadLink_Mk2 debug: Broadcasting discovery message 2021-04-03 14:20:18.157 luup_log:82: BroadLink_Mk2 debug: 10.1.11.22 2021-04-03 14:20:19.157 luup_log:82: BroadLink_Mk2 debug: Number of BroadLink devices found is 1 2021-04-03 14:20:19.158 luup_log:82: BroadLink_Mk2 debug: Header to be sent follows (ex checksum): 5A A5 AA 55 5A A5 AA 55 00 00 00 00 00 00 00 00 Z..UZ..U........ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 9B 64 65 00 00 00 8D DE 18 B0 43 A0 .....de.......C. 00 00 00 00 FB C8 00 00 ........ 2021-04-03 14:20:19.158 luup_log:82: BroadLink_Mk2 debug: Payload to be sent follows (unencrypted): 00 00 00 00 A7 C5 DF 0A 91 33 F1 88 C9 82 A5 6D .........3.....m C8 BC F9 DF 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 2021-04-03 14:20:19.177 luup_log:82: BroadLink_Mk2 debug: Sending: Authorisation: txMsg length = 136 2021-04-03 14:20:20.177 luup_log:82: BroadLink_Mk2 debug: RX of Authorisation msg response from 10.1.11.20 failed: timeout 2021-04-03 14:20:20.177 luup_log:82: BroadLink_Mk2 debug: This device is probably offline - mac address: a0:43:b0:18:de:8d 2021-04-03 14:20:20.177 luup_log:82: BroadLink_Mk2 debug: k = rf433 2021-04-03 14:20:20.177 luup_log:82: BroadLink_Mk2 debug: k = rf433 has no associated code at this time 2021-04-03 14:20:20.177 luup_log:82: BroadLink_Mk2 debug: k = ir 2021-04-03 14:20:20.177 luup_log:82: BroadLink_Mk2 debug: a0:43:b0:18:de:8d_ir 2021-04-03 14:20:20.177 luup_log:82: BroadLink_Mk2 debug: a0:43:b0:18:de:8d 2021-04-03 14:20:20.177 luup_log:82: BroadLink_Mk2 debug: RM4 Pro - IR 1 2021-04-03 14:20:20.177 luup_log:82: BroadLink_Mk2 debug: urn:schemas-micasaverde-com:device:IrTransmitter:1 2021-04-03 14:20:20.177 luup_log:82: BroadLink_Mk2 debug: D_BroadLink_Mk2_IrRf_1.xml 2021-04-03 14:20:20.177 luup_log:82: BroadLink_Mk2 debug: type = function, value = function: 0x19a62d0 2021-04-03 14:20:20.177 luup_log:82: BroadLink_Mk2 debug: k = rf315 2021-04-03 14:20:20.177 luup_log:82: BroadLink_Mk2 debug: k = rf315 has no associated code at this time 2021-04-03 14:20:20.177 luup_log:82: BroadLink_Mk2 debug: {"a0:43:b0:18:de:8d":{"blInternalId":"00000001","blKey":"a7c5df0a9133f188c982a56dc8bcf9df","blDeviceType":25755,"blIp":"10.1.11.20","blDesc":"RM4 Pro"}} --> BroadLinkDevices 2021-04-03 14:20:20.177 luup.chdev.append:: [a0:43:b0:18:de:8d_ir] RM4 Pro - IR 1 2021-04-03 14:20:20.178 luup.chdev.sync:: [82] BroadLink-Mk2, syncing children 2021-04-03 14:20:20.178 luup.set_failure:: status = false 2021-04-03 14:20:20.178 luup.variable_set:: 82.urn:micasaverde-com:serviceId:HaDevice1.CommFailure was: false now: false #hooks:0 2021-04-03 14:20:20.178 luup.variable_set:: 82.urn:micasaverde-com:serviceId:HaDevice1.CommFailureTime was: 1617440329 now: 1617474020 #hooks:0 2021-04-03 14:20:20.178 openLuup.scheduler:: [82] BroadLink-Mk2 device startup completed: status=true, msg=All OK, name=BroadLink_Mk2
-
a-lurkerreplied to ronluna on Apr 4, 2021, 3:12 AM last edited by a-lurker Apr 3, 2021, 11:17 PM
A few points:
- My last mods to the Lua file would have no useful effect, so my bad. It's been a while since I looked at this code so my memory is a bit out of date.
- No "RF child" is produced. You get one child per physical Broadlink device (if they are known to the plugin). That child handles both RF & IR, as the sent code is either an IR or RF code.
- I see three IP addresses in the logs provided, which makes understanding the log a little tricky. Regardless the plugin knows the physical devices by their MAC address, so the IP address can change around. Have you fixed IP addresses for the BroadLink devices?
- I probably need to make the logging a bit clearer on what's going on.
On the aircon - the BroadLink protocol is not published and they change it from time to time so reverse engineering is always on going.
On the RM4 Pro - this tells me its been discovered OK:
{"a0:43:b0:18:de:8d":{"blInternalId":"00000001","blKey":"a7c5df0a9133f188c982a56dc8bcf9df","blDeviceType":25755,"blIp":"10.1.11.20","blDesc":"RM4 Pro"}}
I assume here that the MAC listed above is the MAC address of the RM4 Pro? There is no list of found devices in the plugin's GUI representation (there probably should but I didn't do one). The json above is the "list" and it looks fine. Once a device is defined in the json it stays there; even if the device goes off line (for whatever reason) and therefore not discoverable. If the IP address changes the json is updated to match.
The final problem is the "cloud bit". Some of the newer devices get this bit set when the app is used with the device and it causes issues. I have no experience of any of this, as I my devices don't have it. Need to read the thread at the other site, that talks about the reset/pairing procedure to avoid problems.
Also is this is on a Vera or openLuup?
Try relocating the Broadlink device closer to the WiFi connection. I still maintain the comms may be a bit flaky. If you send any IR code to the device the log will show what's happening and you can use a cellphone camera to see if the IR is coming out of the RM4 Pro.
I have no plans to get this to work for the aircons - looks like a major effort; especially if you have no hardware to test the code on.