Python Plugin : Broadlink RM2 V4

Python and python framework

Moderator: leecollings

daconas
Posts: 17
Joined: Wednesday 22 March 2017 9:31
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Python Plugin : Broadlink RM2 V4

Post by daconas »

Oh, ii see a video and he talk from IR an RF learning.
ok RF is importend for my, i have to wait.
but i installed today 0.10 but with 0.14 i get error no device with this Mac adress
i install 0.10 an learning works.
what did i wrong. i will use the newest version.
Thank you
ActionHenk
Posts: 28
Joined: Monday 05 March 2018 3:15
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Python Plugin : Broadlink RM2 V4

Post by ActionHenk »

This domoticz plugin is based on the broadlink 0.8 api.
0.14 doesnt work, 0.10 does work yeah.



you can install and uninstall different versions with these commands


Code: Select all

sudo pip3 uninstall broadlink
This uninstalls the version that is installed on your setup.


Code: Select all

sudo pip3 install broadlink
installs the newest version, (0.14 for now) but this version doesn't work.


Code: Select all

sudo pip3 install broadlink==0.8
installs 0.8, this version works and the plugin is based on 0.8


Code: Select all

sudo pip3 install broadlink==0.10
installs 0.10, this version works also, but the plugin isn't based on this version.



Also what is important, the broadlink api can use different encryption software, when installing the broadlink api it also installs pycryptodome and crypto. But for me i found out that pyaes encrytion works great, but, and this is important: you can't use them together!


So, after installing the broadlink api, you can uninstall pycryptodome and crypto with this command

Code: Select all

sudo pip3 uninstall pycryptodome


After this, you can install pyaes with this command

Code: Select all

sudo pip3 install pyaes


Do note that this only works if you have libglib2.0 installed, you can install it with this command

Code: Select all

sudo apt-get install python3-pip libglib2.0-dev

Also you need to change the rights for the 4 files you copy to the plugin/BroadlinkRM2 folder.

You can do that with these commands, commands only work when you are in the working folder, cd etc....

Code: Select all

sudo chmod +x plugin.py
sudo chmod +x plugin_send.py
sudo chmod +x plugin_http.py
sudo chmod +x plugin_http.sh
Or you can change the rights within WinSCP.
puch
Posts: 1
Joined: Friday 29 May 2020 13:43
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Python Plugin : Broadlink RM2 V4

Post by puch »

Hello everybody,

I know that isn't new thread but I have the same problem.
wonder wrote: Tuesday 26 March 2019 15:32 Hello amazing forum.

This is my first post here and I would like to get assistance with Broadlink SP3S configuration.
I've followed this guide (https://www.domoticz.com/wiki/Plugins/BroadlinkRM2.html) in order to install the plugin.
I would say everything works fine except of the one thing.

I can't figure out how to configure the meter in order to calculate energy usage per day/week/month...
Current energy consumption is being displayed correctly, the issue is only with total values.

Code: Select all

IDX   Hardware  ID                Unit   Name                           Type         Subtype    Data
---------------------------------------------------------------------------------------------------------
25  BR           000A0002      2        BR - SP3S CURRENT               Usage        Electric   909.36 Watt
26  BR           000A0003      3        BR - SP3 USAGE                  General      kWh        0, 909.36
When I go to the utility tab I see only values, taken from the IDX 25(current consumption).

Configuration of the device IDX 26 is:

Energy read: From device
Type - Usage.

In this case it doesn't show anything, so the graphs are just empty.

If I put Type - Usage, Energy read - Computed, the plugin crashes.


After certain manipulations with server restart/disabling the hardware and devices I could force this meter to calculate computed daily consumption without crashes.
@wonder How did You do that?
zak45
Posts: 952
Joined: Sunday 22 January 2017 11:37
Target OS: Windows
Domoticz version: V2024.4
Contact:

Re: Python Plugin : Broadlink RM2 V4

Post by zak45 »

Work on progress for the RF and RM4 ... now depend of my free time !!!
AlexW
Posts: 6
Joined: Thursday 15 September 2016 21:00
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Python Plugin : Broadlink RM2 V4

Post by AlexW »

Hi

I installed a new broadlink rm3 mini. Using the broadlink plugin version 0.10 I see the connected message in the domoticz log:
2020-06-12 14:05:54.232 (broadlink slaapkamer) Connecting to: XXX.XXX.XX.XX:XXXXXXXXXXXX
2020-06-12 14:05:54.351 (broadlink slaapkamer) Connected to Broadlink device: XXX.XXX.XX.XX
2020-06-12 14:05:54.374 (broadlink slaapkamer) No ini file :/home/pi/BroadlinkRM2/remote/plugin_remote_11.ini
2020-06-12 14:05:54.374 (broadlink slaapkamer) Custom Commands for Remote not managed
2020-06-12 14:05:54.374 (broadlink slaapkamer) Device Number begin to : 1
2020-06-12 14:05:54.374 (broadlink slaapkamer) Processing 'PollIntervalDirective' message
2020-06-12 14:05:54.479 (broadlink slaapkamer) Heartbeat interval set to: 30.

So that looks correct now (first had issue with the broadlink 0.14 version)

But If I want to start learning I see this in the log:
(broadlink slaapkamer) Pushing 'onCommandCallback' on to queue
2020-06-12 14:08:41.813 (broadlink slaapkamer) Processing 'onCommandCallback' message
2020-06-12 14:08:41.815 (broadlink slaapkamer) Calling message handler 'onCommand'.
2020-06-12 14:08:41.815 (broadlink slaapkamer) onCommand called for Unit 1: Parameter 'Set Level', Level: 10 , Connected : True
2020-06-12 14:08:41.816 (broadlink slaapkamer) All plugin system is on pause for 5s...
2020-06-12 14:08:41.816 (broadlink slaapkamer) When Broadlink led is lit press the button on your remote within 5 seconds
2020-06-12 14:08:41.792 Status: User: Admin initiated a switch command (311/broadlink slaapkamer - Command/Set Level)

2020-06-12 14:08:46.845 (broadlink slaapkamer) None
2020-06-12 14:08:46.845 (broadlink slaapkamer) Command not received

But unfortunately the rm mini does nothing and can't learn.

Can anybody help?
Alex
jaaap
Posts: 59
Joined: Sunday 28 July 2019 22:59
Target OS: NAS (Synology & others)
Domoticz version:
Contact:

Re: Python Plugin : Broadlink RM2 V4

Post by jaaap »

Hi AlexW,

I'm not sure where the error lies, but the log looks okay to me. Compare it to mine:

Code: Select all

2020-06-14 21:01:59.196 (Broadlink1) Processing 'onCommandCallback' message
2020-06-14 21:01:59.196 (Broadlink1) Calling message handler 'onCommand'.
2020-06-14 21:01:59.196 (Broadlink1) onCommand called for Unit 1: Parameter 'Set Level', Level: 10 , Connected : True
2020-06-14 21:01:59.196 (Broadlink1) All plugin system is on pause for 5s...
2020-06-14 21:01:59.197 (Broadlink1) When Broadlink led is lit press the button on your remote within 5 seconds
2020-06-14 21:01:59.156 Status: User: Admin initiated a switch command (100/Broadlink1 - Command/Set Level)
2020-06-14 21:02:05.437 (Broadlink1) b"&\x00\x18\x01O\x14\x13\x14\x14\x14&\x15\x13\x14'\x14\x13\x15\x13\x14'\x14\x13\x15\x13\x14\x13\x14\x14\x00\x03dN\x15\x13\x14\x14\x14'\x14\x12\x15'\x14\x13\x15\x13\x14&\x15\x13\x14\x13\x15\x13\x14\x13\x00\x03dN\x15\x13\x14\x13\x15&\ (and lots of more weird numbers)"
2020-06-14 21:02:05.445 (Broadlink1) 260018014f1413141414261513142714131513142714131513141314140003644e1513141414271412152714131513142615131413151314130 (and lots of more weird numbers)
2020-06-14 21:02:05.445 (Broadlink1) Code stored in memory
2020-06-14 21:02:05.445 (Broadlink1 - Command) Updating device from 1:'10' to have values 1:'20'.
2020-06-14 21:02:05.498 (Broadlink1) Update 1:'20' (Broadlink1 - Command)
2020-06-14 21:02:12.325 (Broadlink1) Pushing 'onCommandCallback' on to queue
2020-06-14 21:02:12.366 (Broadlink1) Processing 'onCommandCallback' message
Maybe just to verify your connection: in the swithes tab, is your 'Broadlink - Command' set to 'Learn'? And is it on (ie: is the play button grayed out or colored?)?
AlexW
Posts: 6
Joined: Thursday 15 September 2016 21:00
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Python Plugin : Broadlink RM2 V4

Post by AlexW »

Thanks Jaaap for your help,

But I managed to fix it (temporarily).

What is the problem. My broadlink RM3 mini is a new one. It's having firmware v44057. I found out the device.enter_learning method from the broadlink plugin in broadlink v0.10 is not working correctly with my device (probably due to new firmware).

I switched to the new broadlink v0.14 plugin and of course there is no connection anymore as stated in comments above. But when I tried to create a small test python script:

Code: Select all

import broadlink
import time

devices = broadlink.discover(timeout=5)
devices[0].auth()
devices[0].enter_learning()
I recognized that my rm mini was in learning mode. So learning mode is working with version 0.14, but set up a connection in domoticz is only working with version 0.10

The issue is with plugin.py script within the method: broadlinkConnect(line 727). It's the line:
device = broadlink.rm(host=..... within the first if because Mode3 = RM2 in the case of a RM mini3.

If you look into the code of the broadlink 0.14 plugin you can see the call of class rm is now with *args and **kwargs instead of host, mac and devtype. Class devices is still host, mac and devtype. So I think the only change should be the call in that line. But unfortunately Python is not my main language (it's java) so I didn't manage to solve that one.

But I have a workaround if you use only one RM mini3 in your network:
change the mentioned line (line 727) by the following two lines:

Code: Select all

  devices = broadlink.discover(timeout=5)
  device = devices[0]
Now the plugin will search for broadlink devices and it will connect to the first one that is found.

I hope the developer of the plugin (@zak45) can solve it correctly so above workaround is not necessary anymore.

So in short the issue: With broadlink v0.10 my rm mini 3 with firmware v 44057 can connect in domoticz BUT learning is not possible.
The workaround:
* Upgrade broadlink 0.10 to 0.14 (sudo pip3 uninstall broadlink and then: subo pip3 install broadlink==0.14)
* Change the plugin.py on line 727:

Code: Select all

           device = broadlink.rm(host=(Parameters["Address"],80), mac=bytearray.fromhex(Parameters["Mode1"]), devtype = Parameters["Mode3"] 
should be two new lines:

Code: Select all

      devices = broadlink.discover(timeout=5)
      device = devices[0]
* restart domotics (sudo service domoticz.sh restart)

I hope this will help others to solve there issue.
Alex
zak45
Posts: 952
Joined: Sunday 22 January 2017 11:37
Target OS: Windows
Domoticz version: V2024.4
Contact:

Re: Python Plugin : Broadlink RM2 V4

Post by zak45 »

Thanks Alex,
problem is that devtype is no more string in new release:
device = broadlink.rm(host=(Parameters["Address"],80), mac=bytearray.fromhex(Parameters["Mode1"]), devtype = Parameters["Mode3"]

This will be corrected by the new version ... just need some times to finalize it !
AlexW
Posts: 6
Joined: Thursday 15 September 2016 21:00
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Python Plugin : Broadlink RM2 V4

Post by AlexW »

Thanks zak45 for your answer and explanation. I can work now and will wait for your update.
User avatar
gizmocuz
Posts: 2350
Joined: Thursday 11 July 2013 18:59
Target OS: Raspberry Pi / ODroid
Domoticz version: beta
Location: Top of the world
Contact:

Re: Python Plugin : Broadlink RM2 V4

Post by gizmocuz »

Just got myself a "RM mini 3" because i was very unsatisfied by a arduino IR-hat range.

Included the device with the application, tried to use this plugin and did not succeed.

Installed the latest python broadlink (pip install broadlink), which is now version 0.14
Tried the discovery tool (https://github.com/mjg59/python-broadli ... master/cli) but did not succeeded

Resetted the "RM Mini 3" hardware by using the pin, used the application to connect it to WiFi,
and right after this step stopped using the application, removed it from the phone.

And now I was able to use the discovery and cli tool.
Discovery displayed a device type of 0x0x5f36, so i tested a learn command with

./broadlink_cli --device "0x5f36 <ip_address> <6f... mac>" --learn

and that worked

changed this plugin's 'broadlinkConnect' function to:

Code: Select all

# connect to Broadlink
def broadlinkConnect():
    global device, isConnected

    try:
        device = broadlink.gendevice(devtype = 0x5f36, host = (Parameters["Address"],80), mac = bytearray.fromhex(Parameters["Mode1"]))
        device.auth()
        isConnected = True
        Domoticz.Log( "Connected to Broadlink device: " + str(Parameters["Address"]))        
    except:
        Domoticz.Error( "Error Connecting to Broadlink device...." + str(Parameters["Address"]))
        isConnected = False
        return False

    return True
Everything seems to work fine now

A list of the current supported types are found in:

https://github.com/mjg59/python-broadli ... _init__.py

@zak45, maybe you can include the complete list in the device type dropdown in the hardware setup ?

I noticed when using a wrong type, it is impossible to start a 'learn' command
Quality outlives Quantity!
zak45
Posts: 952
Joined: Sunday 22 January 2017 11:37
Target OS: Windows
Domoticz version: V2024.4
Contact:

Re: Python Plugin : Broadlink RM2 V4

Post by zak45 »

@gizmocuz

yep, lot's of modification has been done into the Broadlink module.
I'm in process to completely rewrite the plugin, so will use the new version and put more... very more feature on it.

Should be published before end of week, hope so !
zak45
Posts: 952
Joined: Sunday 22 January 2017 11:37
Target OS: Windows
Domoticz version: V2024.4
Contact:

Re: Python Plugin : Broadlink RM2 V4

Post by zak45 »

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest