Felipe Martins Diel
daebd806fd
Fix 0x5f36 name
2020-06-17 21:06:11 -07:00
Felipe Martins Diel
f10e4fdef0
Add models and manufacturers
2020-06-17 21:06:11 -07:00
Felipe Martins Diel
e41d240942
Add a method to lock/unlock the device
2020-06-17 10:50:27 -07:00
Felipe Martins Diel
e9e14e82d2
Rename change_name() to set_name() ( #382 )
2020-06-14 16:37:37 +02:00
Felipe Martins Diel
8862be5c05
Use little-endian for the MAC address and connection ID ( #370 )
2020-06-08 12:22:27 +02:00
Felipe Martins Diel
89cd7d2970
Improve A1, RM and RM4 sensors ( #374 )
...
* Clean up A1 sensor
* Improve communication with RM4 sensors
* Add check_sensors() to RM class
* Fix parenthesis
* Fix noise levels
* Fix precision error
2020-06-08 12:21:23 +02:00
Felipe Martins Diel
47087bfc7f
Add support to SP2-CL (0x7544) ( #375 )
2020-06-08 12:21:00 +02:00
Felipe Martins Diel
d0dcf06e2f
Rollback to old address lookup logic ( #378 )
2020-06-08 12:20:44 +02:00
Felipe Martins Diel
4b90e437a0
Add method for obtaining the firmware version ( #379 )
...
* Add method for obtaining firmware version
* Use hex notation for bytes
Co-authored-by: Daniel Høyer Iversen <mail@dahoiv.net>
2020-06-08 12:20:22 +02:00
Felipe Martins Diel
76bcfd0bfb
Add method for changing device name ( #381 )
2020-06-08 12:19:21 +02:00
Matthew Garrett
749cfef1eb
Merge pull request #368 from felipediel/bytearray
...
Replace bytes with bytearray
2020-05-24 12:10:52 -07:00
Felipe Martins Diel
dec2b684d5
Replace bytes with bytearray
2020-05-20 21:00:11 -03:00
Felipe Martins Diel
7dd0a15a7b
Extend support to RM4 Pro (0x61a2)
2020-05-07 13:12:58 -03:00
Felipe Martins Diel
934bf7a969
Close the socket outside the while loop ( #359 )
...
* Close the socket outside the while loop
* Solve conflicts
2020-05-07 15:53:55 +02:00
Felipe Martins Diel
3216b069f0
Raise exceptions for errors ( #356 )
...
* Raise exceptions for errors
* Fix lb1 error check
* Fix typo
* Improve code readability
* Fix exception
2020-05-07 07:59:21 +02:00
Felipe Martins Diel
5e444988e1
Fix 0x62be device name ( #354 )
2020-05-02 13:51:59 +02:00
Felipe Martins Diel
f3d0427133
Extend support to RM4c Mini (0x6070) ( #348 )
2020-04-25 11:41:04 +02:00
Felipe Martins Diel
3e8b008ef7
Close sockets after using them ( #350 )
2020-04-25 11:40:48 +02:00
Felipe Martins Diel
6cf9292b44
Revert adler32 ( #345 )
...
* Revert adler32
* Fix checksum
2020-04-19 08:53:09 +02:00
Felipe Martins Diel
65a1b04666
Fix device name ( #342 )
2020-04-19 08:50:16 +02:00
Kevin Eifinger
ed87b8d1de
Add missing "self." to calculate_crc16 uses ( #344 )
2020-04-19 08:49:55 +02:00
Felipe Martins Diel
548aa05da0
Extend support to RM4 Pro (0x6026) ( #340 )
2020-04-15 09:04:01 +02:00
Felipe Martins Diel
a5925063f9
Fix padding algorithm for CBC mode
...
Due to the lack of a parenthesis, the packets were getting 16 bytes larger than necessary.
2020-04-13 17:42:51 -03:00
majuss
a6827caaf7
Removed PyCRC as dependency; implemented CRC16 directly ( #327 )
...
* Removed PyCRC as dependency; implemented CRC16 directly
* replace crc16 with integrated function
* Added self to calculate crc
2020-04-10 09:23:15 +02:00
csabavirag
2bc7b06c69
Adding support for LB1 (RGB Light Bulb - 0x60e8) ( #332 )
2020-04-05 19:14:47 +02:00
Felipe Martins Diel
26a4565e58
Add support for RM4 0x62bc ( #331 )
...
* Add support for RM4 0x62bc
* Fix device name
2020-04-05 19:14:09 +02:00
Felipe Martins Diel
446496cc24
Obtain device name and cloud byte from HELLO_RESPONSE ( #322 )
2020-03-24 16:09:31 +01:00
hakana
4a3950a7c5
Add temperature and humidity for RM4 mini (0x610e) ( #321 )
...
* Add temperature and humidity reading for RM4 Mini
* Change divider for tem and humi (RM4 mini)
2020-03-23 21:23:05 +01:00
hakana
84e53c8d2b
Add support for RM4 mini with device type 0x610e ( #320 )
2020-03-16 19:56:06 +01:00
Felipe Martins Diel
1a1169f1a9
Add support for 0x5f36 devices and RM4 series ( #317 )
...
* Add support for 0x5f36 devices
This type of device requires a header in the payload. The rest is the same.
* Improve request header assignment
* Change code sending header
I just found out that this device uses a different header for sending codes. This update addresses this issue.
* Improve authentication
Use the error code to check if the authentication was successful.
* Use default value when devtype is None
* Use generic remote type if devtype is None
* Extend support to RM4 series
I just realized that RM4 devices use the same header. I will take the opportunity to extend support to these devices as well.
* Add device type 0x62be and create rm4 class
The rm4 class will improve code scalability. Just add the RM4 type to this class and it will just work.
* Remove comma
2020-03-16 09:49:41 +01:00
Daniel Høyer Iversen
654db0935b
Fix new RM mini3 ( #305 )
...
* Fix new RM mini3
Some little change
* Fix new RM mini3
Some little change
Co-authored-by: Daniel Høyer Iversen <mail@dahoiv.net>
2020-03-04 22:26:23 +01:00
Daniel Høyer Iversen
e84becd05b
Add support for specifying destination IP address to use in discovery ( #313 )
...
Co-authored-by: Kja64 <Ken@lkv20.dk>
2020-03-04 22:25:00 +01:00
Daniel Høyer Iversen
ec4df39665
Add 27de RM Mini 3 (C) ( #314 )
...
I have a 0x27de RM Mini 3, as inspired by https://github.com/lprhodes/broadlinkjs-rm/blob/master/index.js , I added the identification and python-broadlink would handle it properly.
2020-03-04 22:24:33 +01:00
Daniel Høyer Iversen
8e7446f410
Fix CBC mode padding and use adler32 for checksums ( #315 )
...
* Fix CBC mode padding and use adler32 for checksums
* Change line order
This change comes to improve the readability of the code.
* Use zero-padding for CBC mode
2020-03-04 22:24:09 +01:00
Barnaby Gray
a05efe1c00
Add detail on return value for get_state()
2019-10-16 09:58:02 +01:00
Barnaby Gray
660c2269e4
Add support for BG Electrical Smart Sockets
2019-10-13 22:12:13 +01:00
Daniel Høyer Iversen
2e5361bd8e
Remove support for pyaes ( #281 )
...
* remove support for pyaes
* remove support for pyaes
* remove support for pyaes
2019-10-02 09:25:27 +03:00
Leonardo Brondani Schenkel
11c5981793
Use old IP address lookup logic as fallback ( #275 )
...
On some machines, resolving the local hostname results in a loopback IP
address (127.0.0.0/8). This breaks discovery. In these situations, fall
back to the old IP address lookup logic that was removed on commit 790edb9
.
2019-08-16 12:13:53 +03:00
Johnson Chin
9d9b49c3db
SP2: Add support for OEM SP2 ( #251 )
2019-06-24 20:06:50 +02:00
Daniel Høyer Iversen
9ec2da834b
handle none power raw ( #250 )
2019-06-10 09:12:50 +02:00
Daniel Høyer Iversen
38a40c5a19
Use cryptography instead of pycryptodome ( #246 )
...
* Use cryptography instad of pycryptodome
* Use cryptography instad of pycryptodome
2019-05-27 20:57:32 +02:00
AnilDaoud
b8fdf337c9
cleaner local ip address lookup ( #244 )
2019-05-22 07:27:34 +02:00
Daniel Høyer Iversen
a75f98720e
code clean up ( #243 )
2019-05-19 17:54:14 +02:00
Matthew Garrett
3ad4a9f0f8
Merge branch 'master' into rf_experiment_v0.9
2019-05-18 00:10:40 -07:00
ninstein
0db3179623
Update __init__.py
...
add new device: TMall OEM SPMini3
2019-05-18 00:08:52 -07:00
gpenverne
77f11c8d49
Allow string mac address in constructor
2019-05-18 00:06:47 -07:00
BAN
9996c252f7
Update __init__.py
2019-01-08 16:47:31 +09:00
Sergey Prilukin
2b4e6d91ff
Merge branch 'rf_experiment' into rf_experiment_v0.9
...
# Conflicts:
# README.md
# broadlink/__init__.py
# cli/broadlink_cli
2018-11-26 00:21:37 +02:00
Nick Dimov
73fc5fc4b9
Support for a new SP2 device.
...
It returns different codes for check and checknl.
2018-10-27 16:15:47 +03:00
Mayeul Cantan
56b2ac36e5
Refactor the device list
...
It is now more readable, which should make it easier to parse the code
and add new devices.
2018-04-30 23:06:19 +02:00
lordneon
e724aec007
Fixed a bug within the SP2 class.
...
check_power and check_nightlight did not check to see if the payload was already an int before calling ord.
2018-04-15 10:22:19 +00:00
Daniel Høyer Iversen
3b6b55ae73
Merge pull request #164 from horse315/master
...
fixed Hysen thermostat ctor & added comments
2018-03-31 15:57:17 +02:00
ooo89
832a40c278
Update __init__.py
2018-03-28 16:56:36 +02:00
Aleksey Bogomolov
e9748ff0b4
fixed Hysen thermostat ctor & added comments
2018-03-24 19:05:44 +03:00
clach04
8b593beff9
Restore Python 3 support ( #95 )
...
Use explicit byte literals.
AES encryption padding broken with commit f7e30344c5
under Python 3.
Python 3 support when using pyaes (instead of Crypto.Cipher.AES) now works.
2018-03-18 15:12:20 -07:00
Nightreaver
33a2e4ae54
implemented method to toggle nightlight on some SP3 devices ( #159 )
...
* implemented method to toggle nightlight on some SP3 devices
* implement nightlight feature to cli
* check_power/check_nightligh fixes for py2.7
2018-03-18 15:03:46 -07:00
Peter Windridge
39cc64efce
Basic support for Hysen Heating Controller (dev type 0x4ead) ( #138 )
...
* Initial support for Hysen heating controller device. Only gets current temperature.
* Add switch_to_auto() to put the controller in (pre-programmed) timed mode
* Add set_temp() to manually set temperature. Now requires PyCRC (payload needs modbus CRC16)
* Remove test script
* Get current timer schedule
* Get much more data from device
* Add PyCRC to install_requires setup.py
* Rewrite based on better understanding. Allow setting schedule and changing 'loop mode'
* Add set_time function
* Support advanced settings and perform CRC check on responses
* Explain remaining unknowns for Hyson thermostat
The room_temp_adj (or simply 'adj') only applies to the room_temp. It's limited to -5.0..+5.0, but uses a 2 byte data type.
This leads to the assumption that external_temp could also use this data type, maybe for showing temperatures below 0 - but I cannot test this currently. Maybe I have to place it near a fridge to confirm.
* Fix get_temp and add get_external_temp for Hysen
Again: maybe payload[17] also belongs to the external temperature...
* remove comment about first 2 bytes and raise error if CRC check on response fails
* Remove comment about guessed meaning of unknown
Just confirmed, that lowest outside temp is 0. So it seems to only need 1 byte, as room temp does.
* add ability to toogle hysen device power
Turn display power on/off
* Update set_power() to support remote_lock for Hysen
Sorry, there was still one thing missing: set/unset remote_lock.
I captured again and changed the set_power accordingly.
* fix comments
2018-03-18 15:03:26 -07:00
Nightreaver
8754493951
broadlink_discovery returns wrong devtype ( #157 )
...
* few item in gendevice use `if` instead of `elif`
* passing `devtype` back to device
change `cli/broadlink_discovery` to display proper devtype
2018-03-18 14:58:15 -07:00
marconfus
26109aac67
Fix for environments where Crypto and pyaes are installed. ( #151 )
...
If both Crypto and pyaes are installed 'pyaes' is in sys.modules(), but as it is not imported (see top) it's not available.
Fix for #128
2018-03-18 14:54:17 -07:00
Daniel Høyer Iversen
00cc79daee
Merge pull request #149 from deel77/master
...
Default support for python3 in get_energy() for SP2
2018-03-10 15:30:42 +01:00
Steven Barthen
d186332b96
add new rmpro models - Pro Plus 3, Pro Plus 300, Pro Plus HYC, Pro Plus R1, Pro PP
2018-03-10 21:10:33 +09:00
Dominik Lakatoš
51ff890c7c
modified get_energy() to support python3
2018-02-08 13:47:28 +01:00
Brent Avery
4e33ef4465
Get rf scan learning working in CLI tool ( #87 )
2018-01-30 07:50:51 +11:00
Aleksandr Smirnov
82172f54ab
support for dooya curtain motor ( #134 )
2017-12-25 00:34:37 +00:00
Matthew Garrett
dd6eb8767e
Experimental RF code
2017-11-25 12:38:57 -08:00
jazzina
b8cf8d073e
Add support for SmartOne Alarm Kit
2017-11-25 12:20:46 -08:00
Eugene Schava
2160488da2
sp2.get_energy
2017-11-25 12:11:05 -08:00
Eugene Schava
626b459b5b
SP3S support ( #117 )
2017-11-25 12:08:58 -08:00
hackers365
1d7fba3d06
add honyar mp1 devtype 0x4ef7
2017-11-25 12:08:14 -08:00
mob41
2e2c8ef1a1
[Critical] Fixes invalid byte string (b) for padding ( #97 , #107 ) ( #108 )
...
* Fixes invalid byte string (b) for padding (#97 , #107 )
* Change version to 0.5
2017-06-13 19:30:27 -07:00
kost
f7e30344c5
pad the payload for AES encryption (16) ( #92 )
2017-05-07 11:32:52 -07:00
Robert Sullivan
babb3f83d3
Python3.5 syntax changes
2017-04-25 15:33:00 +01:00
Aydaen Lynch
d989c27d36
Add in AP Mode device setup for new Broadlink devices. ( #53 )
2017-04-22 12:48:02 -07:00
Daniel Høyer Iversen
19851ed423
bug fix in timeout ( #70 )
2017-04-22 12:38:02 -07:00
Dimitrij
d346476e63
fix check_power for SP2/SP3 ( #72 )
...
Fixed up to avoid merge conflict with #78
2017-04-22 12:36:50 -07:00
Thomas Järvstrand
4f03ffb963
Add support for pure python AES implementation ( #78 )
2017-04-22 12:34:37 -07:00
Víctor Ferrer García
63e097d73f
check_power_raw included for mp1 devices
...
Export raw power state for MP1 devices
2017-01-02 23:31:04 -06:00
Daniel Høyer Iversen
39e170c9e0
validate the authorization
2016-12-26 20:02:04 +01:00
Daniel Høyer Iversen
b30fc0d1c1
Ensure discover() returns devices and not None
...
There's a small race condition in the discover() method. If recv() returns
before the socket timeout is reached, but we hit the top of the loop after
the timeout is reached, we'll return None rather than the set of devices.
2016-12-25 11:16:53 +00:00
Matthew Garrett
877a7b7460
Merge pull request #34 from eschava/master
...
allow to specify network interface for discover method
2016-12-25 11:07:54 +00:00
Matthew Garrett
a0a1c1b7a1
Merge pull request #37 from Danielhiversen/patch-9
...
Make communication thread safe
2016-12-25 11:07:19 +00:00
Victor Ferrer
d519623dd4
Add new device support: Broadlink MP1 Smart power strip
2016-12-25 10:59:58 +00:00
Daniel Høyer Iversen
1296c3da48
Make communication thread safe
2016-12-22 09:51:38 +01:00
Eugene Schava
72cf09f9e4
allow to specify network interface for discover method
2016-12-20 15:59:32 +02:00
Matthew Garrett
63d184fc8c
Provide raw sensor data
...
Provide raw versions of the sensor data for interpretation by clients
2016-12-03 16:41:10 -08:00
Matthew Garrett
d10a43531c
Fix python 2 compatibility
...
Ugly but appears to work
2016-12-03 16:40:58 -08:00
Matthew Garrett
31cd077165
Expose the type of the discovered device
...
Allow clients to identify what kind of device has been discovered
2016-12-03 14:22:20 -08:00
Matthew Garrett
9628b87572
Merge remote-tracking branch 'zenitraM/python3'
2016-12-03 14:16:32 -08:00
Alejandro M
a5d05c95b3
Python 3 compatibility
2016-11-24 22:25:14 +01:00
Matthew Garrett
d066513d02
Add packet retransmission and timeout
...
UDP doesn't guarantee delivery, so reattempt packet transmission if we don't
get a response and timeout if we still don't have anything after (by
default) 10 seconds.
2016-11-20 11:18:51 -08:00
Matthew Garrett
7ac243b838
Merge pull request #16 from PeWu/smartplug
...
Updated SmartPlug commands - set_power() and check_power()
2016-11-19 16:47:28 -08:00
Matthew Garrett
c68fcea5e6
Fix single device discovery
...
The automatic device type detection was only implemented when discovering
with a timeout. Refactor to do it for the single-device discover() case.
2016-11-19 14:23:50 -08:00
Przemek Wiech
1e04ec2be5
Merge branch 'master' into smartplug.
2016-11-18 21:20:35 +01:00
Przemek Wiech
652f52eb03
Updated SmartPlug commands - set_power() and check_power()
2016-11-18 00:19:02 +01:00
Matthew Garrett
d490c5b71e
Add automatic determination of device type
...
Look at the device ID and figure out what type of device it is, and provide
appropriate classes for each that only support the functionality available
on that device.
2016-11-18 09:55:21 +13:00
Matthew Garrett
c174e40f59
Add experimental support for smartplugs
...
This adds a set_power() call that should work for the SP2 - unsure whether
it will work for the SP3.
2016-11-13 14:29:07 +13:00
Marcus Stewart Hughes
4705fdf011
each send_packet() needs a unique count
...
Increment count instead of randomly generating on each send_packet() as per @mjg59's suggestion.
Tested and working as expected.
2016-11-10 20:13:21 +00:00
Kelvin Law
bd1c44488d
Fix for [Errno 49] Can't assign requested address
...
Fixes #3 on macOS
2016-11-02 20:34:46 -07:00
Matthew Garrett
989009e21f
Add support for multiple devices and update documentation
...
Add support for discovering more than one device on the network, and update
the documentation to describe that.
2016-10-30 14:16:40 -07:00
Matthew Garrett
69afd4ce52
Add support for sensor data
...
Add a check_temperature() function that'll work for both the RM2 and the A1
sensor platform, and a check_sensors() function that returns the full set of
sensor data for the A1 as a dict.
2016-10-24 20:50:34 -07:00