Broadlink binding for RMx, A1, SPx and MP. Any interest?

ok so if you have a *.map file… lets say 1.map

TV_ON = 65465465461312313213212332132132(exmpale)

on rest item “http://192.168.1.103:8080/rest/items/IR
Palyload = TV_ON

this is how i am using the rest API maybe you can take exmpale from there

I don’t want to use the REST API, I just want to use normal items (the place where the string item is defined), without sitemaps.

soory not sure how to do that… if you dont have site map , how do you use your items

paperUI is not a UI for day to day use… i am not sure you can customize it

yes, but habpanel is :slight_smile: and it doesn’t require a sitemap

oh ok not using habpanel
but i was able to do that just now…

  1. create a new widget type butten
  2. put item as the broadlink command item
  3. give it a mapped value from map file you have
    image

i have made a good testing on mini, RM pro, A1, SP2, M1

The thing configuration is text file:

Thing broadlink:sp2:34-ea-34-f5-ae-aa "txtBroadlink SP2 [192.168.1.105] SP2_3"                      [ ipAddress="192.168.1.105", port=80, mac="34:ea:34:f5:ae:aa",	authorizationKey="097628343fe99e23765c1513accf8b02", iv="562e17996d093d28ddb3ba695a2e6f58", pollingInterval=900 ]
Thing broadlink:sp2:b4-43-0d-ee-d6-04 "txtBroadlink SP2 ilot [192.168.1.103]-SP2_2"					[ ipAddress="192.168.1.103", port=80, mac="b4:43:0d:ee:d6:04",	authorizationKey="097628343fe99e23765c1513accf8b02", iv="562e17996d093d28ddb3ba695a2e6f58", pollingInterval=900 ]
Thing broadlink:sp2:34-ea-34-bd-47-9b "txtBroadlink SP2 Chauffage[192.168.1.108]-SP2_1"				[ ipAddress="192.168.1.108", port=80, mac="34:ea:34:bd:47:9b",	authorizationKey="097628343fe99e23765c1513accf8b02", iv="562e17996d093d28ddb3ba695a2e6f58", pollingInterval=900 ]  
Thing broadlink:a1:34-ea-34-b2-ba-7c  "txtBroadlink A1 [192.168.1.120]"                             [ ipAddress="192.168.1.120", port=80, mac="34:ea:34:b2:ba:7c", 	authorizationKey="097628343fe99e23765c1513accf8b02", iv="562e17996d093d28ddb3ba695a2e6f58", pollingInterval=900 ]
Thing broadlink:mp1:34-ea-34-c9-9d-33 "txtBroadlink MP1 [192.168.1.106]"                            [ ipAddress="192.168.1.106", port=80, mac="34:ea:34:c9:9d:33",  authorizationKey="097628343fe99e23765c1513accf8b02", iv="562e17996d093d28ddb3ba695a2e6f58", pollingInterval=900 ]
Thing broadlink:rm2:34-ea-34-c7-c9-15 "txtBroadlink RM2-Salon [192.168.1.101]-RM_1"					[ ipAddress="192.168.1.101", port=80, mac="34:ea:34:c7:c9:15", authorizationKey="097628343fe99e23765c1513accf8b02", iv="562e17996d093d28ddb3ba695a2e6f58", mapFilename="RM_1_c.map", pollingInterval=900 ] 

Thing broadlink:rm3:78-0f-77-19-fe-31 	"txtBroadlink RM3-Nat[192.168.1.112]-mini_4"				[ ipAddress="192.168.1.113", port=80, mac="78:0f:77:19:fe:31", authorizationKey="097628343fe99e23765c1513accf8b02", iv="562e17996d093d28ddb3ba695a2e6f58", mapFilename="mini_4_c.map", pollingInterval=900 ]
Thing broadlink:rm3:78-0f-77-18-3e-c4 	"txtBroadlink RM3-Doudou [192.168.1.113]-mini_3"			[ ipAddress="192.168.1.112", port=80, mac="78:0f:77:18:3e:c4",  authorizationKey="097628343fe99e23765c1513accf8b02", iv="562e17996d093d28ddb3ba695a2e6f58", mapFilename="mini_3_c.map", pollingInterval=900 ]

Thing broadlink:rm3:34-ea-34-51-2d-bc "txtBroadlink RM3-Nono [192.168.1.107]-mini_2"				[ ipAddress="192.168.1.107", port=80, mac="34:ea:34:51:2d:bc", authorizationKey="097628343fe99e23765c1513accf8b02", iv="562e17996d093d28ddb3ba695a2e6f58", mapFilename="mini_2_c.map", pollingInterval=900 ]
Thing broadlink:rm3:34-ea-34-c7-76-86 "txtBroadlink RM3-Parents[192.168.1.102]-mini_1"				[ ipAddress="192.168.1.102", port=80, mac="34:ea:34:c7:76:86", authorizationKey="097628343fe99e23765c1513accf8b02", iv="562e17996d093d28ddb3ba695a2e6f58", mapFilename="mini_1_c.map", pollingInterval=900 ]

image
It’s most of the time stable but sometimes some things are offline due to communication error. OFFLINE - COMMUNICATION_ERROR

In the meantime, it’s possible to to interact with with those devices from the e-control app

Summary:

for SP2, M1, A1,21 errors in less than 12 hours: *
addon.log
Exception while getting status from device*

A1 events.log

2019-05-01 14:04:29.067 [me.event.ThingUpdatedEvent] - Thing 'broadlink:a1:34-ea-34-b2-ba-7c' has been updated.
2019-05-01 14:04:29.073 [me.event.ThingUpdatedEvent] - Thing 'broadlink:a1:34-ea-34-b2-ba-7c' has been updated.
2019-05-01 14:04:29.080 [hingStatusInfoChangedEvent] - 'broadlink:a1:34-ea-34-b2-ba-7c' changed from ONLINE to OFFLINE (COMMUNICATION_ERROR): Could not find device at IP address 192.168.1.120

rm2

2019-05-01 02:18:50.317 [TRACE] [.handler.BroadlinkStripModel1Handler] - mp1:34-ea-34-c9-9d-33[^]: Receiving status for strip
2019-05-01 02:18:50.463 [TRACE] [.handler.BroadlinkStripModel1Handler] - mp1:34-ea-34-c9-9d-33[^]: Received status for strip (72 bytes)
2019-05-01 02:18:52.419 [DEBUG] [handler.BroadlinkRemoteModel2Handler] - rm2:34-ea-34-c7-c9-15[^]: No further RM2 device status response received for device
2019-05-01 02:18:52.420 [ERROR] [handler.BroadlinkRemoteModel2Handler] - rm2:34-ea-34-c7-c9-15[^]: Could not get status: {}
java.net.ProtocolException: Incoming packet from device is null.
	at org.openhab.binding.broadlink.internal.BroadlinkProtocol.decodePacket(BroadlinkProtocol.java:193) ~[292:org.openhab.binding.broadlink:2.4.0.201904152359]
	at org.openhab.binding.broadlink.handler.BroadlinkRemoteModel2Handler.getStatusFromDevice(BroadlinkRemoteModel2Handler.java:39) [292:org.openhab.binding.broadlink:2.4.0.201904152359]
	at org.openhab.binding.broadlink.handler.BroadlinkBaseThingHandler.updateItemStatus(BroadlinkBaseThingHandler.java:204) [292:org.openhab.binding.broadlink:2.4.0.201904152359]
	at org.openhab.binding.broadlink.handler.BroadlinkBaseThingHandler$1.run(BroadlinkBaseThingHandler.java:77) [292:org.openhab.binding.broadlink:2.4.0.201904152359]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
	at java.lang.Thread.run(Thread.java:748) [?:?]
2019-05-01 02:18:52.423 [ERROR] [handler.BroadlinkRemoteModel2Handler] - rm2:34-ea-34-c7-c9-15[^]: Problem getting status. Marking as offline ...

For the rm2 pro, i was able to send RF by pasting 5 times the same code
If it is not working and you get the Input strings must be a multiple of 16 in length error again, try to duplicate it twice:)

bottom line, i have pasted 5 times and it works!

more details about rf TC2 :https://github.com/NightRang3r/Broadlink-e-control-db-dump

Once again, for all the issues, it was possible to access the devices from e-control app and a restart add-on from console also solved the issue.

attached :slight_smile:

addon log: broadlink.log (708.6 KB)
openhab.log (323.0 KB)

Thanks for the good work.

How can i overcome this issue ? should i play with the pollingInterval (which is already set at 900)?

2 Likes

broadlink - Copy.log (919.7 KB)

It works but it’s not yet stable

i am getting a lot of errors :updateItemStatus: Online -> Offline

find below the count of such error per device

The full broadlink binding log is attached

1 Like

Amigo. Yo estoy trabajando con openhab y cuando intenté conectar broadlink con openhab me pide la clave de autenticación y no sé donde buscar. Me podrías colaborar gracias

I do not want to interrupt the discussion but…

I’have problem with my Philips TV. It seems that my TV ignores signal if it comes right after same one (same code, same leght). So if I define in OH TV ON/OFF code (it’s obvious that it lenght is the same each time) then my TV ignores second one (treats as echo or something that is not desirable for some reason).

Have you some solution for that (except for periodic sending, for example, of “exit/cancel” TV buton code)?

i had that issues also, i resolved it with a set of rules that will send some actions twice at the same time
this way it will never get missed

maybe it will give you an idea

I think we misundersootd. :wink: In my opinion I have exactly oposit situation.

In my case one specyfied code sent twice (not button pressed code from original remote, but code sent from OH), for example on/off code, up button, etc., causes that TV ignores the second one and third and next ones (each one same as the first accepted). The reason for this is that OH have only one uniq code for each button that it have one specified signal lenght, and TV ignores that treating each next one like some kind of echo or something. That situation not ocures when using original remote, because each “button-pressed-signal” have inevitably different lenght.

Broadlink binding for RMx, A1, SPx and MP. Any interest? - #784 by nakh_Home

it’s working but it’s not stable . The things are changing really often to offline status.

this behaviour is the same for all the devices SP2, A1, MP1, RM2, and mini.

I have even reducing the pollingInterval to 40 sec but as you can see it took 4 minutes to back to online

@themillhousegroup, please could you advise. What could i do to help you to debug it ?

Thanks

HI @nakh_Home,
Please increase the logging level to TRACE in the OpenHAB Console:

log:set TRACE org.openhab.binding.broadlink

This should result in a substantial amount of additional logging. Hopefully there is something of a clue in there - post a small snippet back here and I’ll see what I can make of it

1 Like

@themillhousegroup

Thanks

To summarize, in this google sheets, all the offline status are logged since 24 hours

image

the good news is that my 4 mini are working perfectly

Error for rm2

2019-05-23 05:31:16.113 [TRACE] [handler.BroadlinkRemoteModel2Handler] - rm2:34-ea-34-c7-c9-15[^]: updateItemStatus; checking host availability at 192.168.1.101
2019-05-23 05:31:16.177 [TRACE] [handler.BroadlinkRemoteModel2Handler] - rm2:34-ea-34-c7-c9-15[^]: building message with count: 18070, id: 03000000, key: D6B8D103D6B8D1030D2C4873439FBE62
2019-05-23 05:31:16.180 [TRACE] [handler.BroadlinkRemoteModel2Handler] - rm2:34-ea-34-c7-c9-15[^]: Sending RM2 device status to 192.168.1.101:80
2019-05-23 05:31:16.182 [TRACE] [handler.BroadlinkRemoteModel2Handler] - rm2:34-ea-34-c7-c9-15[^]: Sending RM2 device status complete
2019-05-23 05:31:16.184 [TRACE] [handler.BroadlinkRemoteModel2Handler] - rm2:34-ea-34-c7-c9-15[^]: Receiving RM2 device status
2019-05-23 05:31:21.186 [DEBUG] [handler.BroadlinkRemoteModel2Handler] - rm2:34-ea-34-c7-c9-15[^]: No further RM2 device status response received for device
2019-05-23 05:31:21.187 [ERROR] [handler.BroadlinkRemoteModel2Handler] - rm2:34-ea-34-c7-c9-15[^]: Could not get status: {}
java.net.ProtocolException: Incoming packet from device is null.
	at org.openhab.binding.broadlink.internal.BroadlinkProtocol.decodePacket(BroadlinkProtocol.java:193) ~[191:org.openhab.binding.broadlink:2.4.0.201904152359]
	at org.openhab.binding.broadlink.handler.BroadlinkRemoteModel2Handler.getStatusFromDevice(BroadlinkRemoteModel2Handler.java:39) [191:org.openhab.binding.broadlink:2.4.0.201904152359]
	at org.openhab.binding.broadlink.handler.BroadlinkBaseThingHandler.updateItemStatus(BroadlinkBaseThingHandler.java:204) [191:org.openhab.binding.broadlink:2.4.0.201904152359]
	at org.openhab.binding.broadlink.handler.BroadlinkBaseThingHandler$1.run(BroadlinkBaseThingHandler.java:77) [191:org.openhab.binding.broadlink:2.4.0.201904152359]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
	at java.lang.Thread.run(Thread.java:748) [?:?]
2019-05-23 05:31:21.190 [ERROR] [handler.BroadlinkRemoteModel2Handler] - rm2:34-ea-34-c7-c9-15[^]: Problem getting status. Marking as offline ...
2019-05-23 05:31:21.191 [ERROR] [handler.BroadlinkRemoteModel2Handler] - rm2:34-ea-34-c7-c9-15[^]: updateItemStatus: Online -> Offline

About the Rm2, i have seen something strange in the log. it’s changed twice from online to offline see below

Error for SP2, MP1, A1

2019-05-23 06:50:21.358 [TRACE] [.handler.BroadlinkStripModel1Handler] - mp1:34-ea-34-c9-9d-33[^]: Receiving status for strip
2019-05-23 06:50:21.461 [TRACE] [handler.BroadlinkRemoteModel2Handler] - rm2:34-ea-34-c7-c9-15[^]: updateItemStatus; checking host availability at 192.168.1.101
2019-05-23 06:50:21.466 [TRACE] [handler.BroadlinkRemoteModel2Handler] - rm2:34-ea-34-c7-c9-15[^]: building message with count: 18196, id: 03000000, key: D6B8D103D6B8D1030D2C4873439FBE62
2019-05-23 06:50:21.467 [TRACE] [handler.BroadlinkRemoteModel2Handler] - rm2:34-ea-34-c7-c9-15[^]: Sending RM2 device status to 192.168.1.101:80
2019-05-23 06:50:21.470 [TRACE] [handler.BroadlinkRemoteModel2Handler] - rm2:34-ea-34-c7-c9-15[^]: Sending RM2 device status complete
2019-05-23 06:50:21.472 [TRACE] [handler.BroadlinkRemoteModel2Handler] - rm2:34-ea-34-c7-c9-15[^]: Receiving RM2 device status
2019-05-23 06:50:21.508 [TRACE] [handler.BroadlinkRemoteModel2Handler] - rm2:34-ea-34-c7-c9-15[^]: Received RM2 device status (392 bytes)
2019-05-23 06:50:23.515 [TRACE] [dlink.handler.BroadlinkRemoteHandler] - rm3:34-ea-34-51-2d-bc[^]: updateItemStatus; checking host availability at 192.168.1.107
2019-05-23 06:50:26.364 [DEBUG] [.handler.BroadlinkStripModel1Handler] - mp1:34-ea-34-c9-9d-33[^]: No further status for strip response received for device
2019-05-23 06:50:26.366 [ERROR] [.handler.BroadlinkStripModel1Handler] - mp1:34-ea-34-c9-9d-33[^]: Exception while getting status from device
java.net.ProtocolException: Incoming packet from device is null.
	at org.openhab.binding.broadlink.internal.BroadlinkProtocol.decodePacket(BroadlinkProtocol.java:193) ~[191:org.openhab.binding.broadlink:2.4.0.201904152359]
	at org.openhab.binding.broadlink.handler.BroadlinkStripModel1Handler.getStatusFromDevice(BroadlinkStripModel1Handler.java:104) [191:org.openhab.binding.broadlink:2.4.0.201904152359]
	at org.openhab.binding.broadlink.handler.BroadlinkBaseThingHandler.updateItemStatus(BroadlinkBaseThingHandler.java:204) [191:org.openhab.binding.broadlink:2.4.0.201904152359]
	at org.openhab.binding.broadlink.handler.BroadlinkBaseThingHandler$1.run(BroadlinkBaseThingHandler.java:77) [191:org.openhab.binding.broadlink:2.4.0.201904152359]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
	at java.lang.Thread.run(Thread.java:748) [?:?]
2019-05-23 06:50:26.370 [ERROR] [.handler.BroadlinkStripModel1Handler] - mp1:34-ea-34-c9-9d-33[^]: Problem getting status. Marking as offline ...
2019-05-23 06:50:26.371 [ERROR] [.handler.BroadlinkStripModel1Handler] - mp1:34-ea-34-c9-9d-33[^]: updateItemStatus: Online -> Offline
2019-05-23 06:50:27.340 [TRACE] [handler.BroadlinkSocketModel2Handler] - sp2:b4-43-0d-ee-d6-04[^]: updateItemStatus; checking host availability at 192.168.1.103

I have uploaded the full TRACE logs in this google drive

What is the recommended polling interval ?

I just ordered one off these on Ali:
Its an MP1 with 3x 220 sockets and 2 USB ports, you can also switch the USB ports on/off, hope they work with the binding, will report back!
Ray
image

1 Like

Hi @X-Ray181 yes please report :slight_smile:

i was always wondering how to control USB… for leds and etc

Edit: are you sure you can also control USB(OOB)
i did not see this on the description(on ali)

Type should be MP1-3K2U, here it says you can control them seperatly (not like MP2 wich cannot control the USB ports)


1 Like

Wow that is pretty cool. I can think of quite a few “novelty” USB-powered items (fans, lights etc) that are unswitched that can now be controlled.

It looks like this device will probably have a unique identifying code when the binding discovers it - make sure to check the OpenHAB logs when you first plug it in - the Broadlink binding will log a message to the effect of "I couldn't recognise this Broadlink device, please post the following ID to the forum: {xyz}" (!) :slight_smile:

Once you let me know how it identifies itself I can spin up a new version of the binding to support it. Might need your help to debug it too :slight_smile:

1 Like

I looked over your log files and there is no apparent reason for the Broadlink devices going offline. They just fail to respond every so often.
In an attempt to improve their reliability, I’ve added a simple retry function - so rather than immediately declaring a device “offline” when we don’t get an answer after 5 seconds, I resend the request again.
Hopefully this will fix whatever is causing your packets to get lost. If you really don’t want that retry behaviour you can go into the Thing configuration page in Paper UI; under Advanced you can set the “Retries” value back to 0.

Hope it helps!

2 Likes

so great having you here :slight_smile: