Felipe Martins Diel
1ad468aefe
Clean up get_energy() ( #471 )
...
Amend: Fix sp3s energy monitoring (#504 )
2021-01-29 18:17:45 -03:00
Kendell R
dfd3372c36
Add GH Actions ( #470 )
...
Add GitHub actions and run black.
2021-01-29 18:17:45 -03:00
Felipe Martins Diel
73dab5c3d5
Overload __str__ in the device class ( #468 )
2020-11-05 20:19:03 +01:00
Felipe Martins Diel
1d81ebd1d0
Rename SP4L to SP4 and SP4M to SP4B
2020-11-05 02:11:37 -08:00
Felipe Martins Diel
6f1f976e2f
Update packet count in the authentication step
2020-10-24 02:19:01 -07:00
Felipe Martins Diel
1c5ba74f46
Fix shebangs
2020-10-24 02:17:41 -07:00
Felipe Martins Diel
957baf5447
Add support for Broadlink SP4M-US (0x648b) ( #447 )
2020-10-18 13:22:03 -07:00
Felipe Martins Diel
c8a5ea02fd
Add support for Broadlink RM4 mini (0x653a) ( #451 )
2020-10-18 00:51:43 -07:00
Felipe Martins Diel
0beccda833
Add support for RM mini 3 (0x27c7) ( #446 )
2020-10-18 00:50:31 -07:00
Felipe Martins Diel
e1fa54f874
Fix SP4 class ( #445 )
2020-10-18 00:50:15 -07:00
Felipe Martins Diel
a31d766d33
Add support for Broadlink SP mini 3 (0x7583) ( #444 )
2020-10-18 00:49:42 -07:00
Felipe Martins Diel
f11d825e6e
Add support for Broadlink SP mini 3 (0x7d11) ( #443 )
2020-10-18 00:48:25 -07:00
Felipe Martins Diel
16abdf850f
Improve device discovery ( #438 )
...
This update improves device discovery by broadcasting several hello messages and ignoring repeated responses.
2020-10-18 00:47:21 -07:00
Felipe Martins Diel
0dc0068d63
Improve code quality ( #428 )
...
* Fix lint errors
* Remove rm2 class
* Rename cs to conn
* Add __repr__ to device class
* Make get_devices() a dictionary
* Clean up alarm kit
* Add module doscstrings
* Fix MAC address conversion
2020-09-24 07:36:12 +02:00
Felipe Martins Diel
28fa72f962
Make bind() optional and implement a generator for device discovery ( #427 )
2020-09-23 07:43:56 +02:00
Tamarinen
9248ee6b0c
Add sp4 refactored ( #429 )
...
* Add SP4 device class
* Remove legacy byte conversion
* Implement suggested improvements
* Apply some love to _encode() and _decode() too.
* Remove unnecessary safeguards
* Remove unnecessary return values
* Add missing periods to the comments.
Co-authored-by: Martin Samuelsson <httpov@columbiegg.com>
2020-09-22 17:58:07 -07:00
sivero
6ab23e9261
Update __init__.py ( #423 )
...
Add support for (0x27cc) RM mini 3
2020-09-20 17:17:10 -07:00
Felipe Martins Diel
2ae9b9db12
Add support for Broadlink RM4 pro (0x649b) ( #421 )
2020-09-20 17:15:56 -07:00
Felipe Martins Diel
a4f76bcf36
Add support for Broadlink MP2 (0x7540)
2020-09-20 17:14:56 -07:00
Felipe Martins Diel
868153bfd1
Add support for Broadlink MP1-1K3S2U (0x4f1b)
2020-09-20 17:14:32 -07:00
Felipe Martins Diel
d17fb228cf
Add support for Broadlink RM pro+ (0x27c3) ( #422 )
2020-09-20 17:14:01 -07:00
Felipe Martins Diel
05440417be
Add support for Broadlink RM mini 3 (0x27cd)
2020-09-20 17:12:41 -07:00
Felipe Martins Diel
fc0244e6a4
Add support for Broadlink RM mini 3 (0x27d0)
2020-09-20 17:12:41 -07:00
Felipe Martins Diel
91ae5952ee
Add support for OEM Broadlink SP2-IL (0x7539)
2020-09-20 17:12:19 -07:00
Felipe Martins Diel
6ac060f141
Add support for Ankuoo NEO and NEO PRO
2020-09-20 17:11:47 -07:00
Felipe Martins Diel
5ef4124491
Remove legacy byte conversions
2020-09-20 17:11:14 -07:00
Felipe Martins Diel
de38e237ca
Clean up imports
2020-09-20 02:10:18 -07:00
Felipe Martins Diel
487a13d895
Improve annotations
2020-09-20 02:10:18 -07:00
Felipe Martins Diel
08c020e597
Call Mr. Krueger
2020-09-20 02:10:18 -07:00
Felipe Martins Diel
76012c6cd4
Add annotations for parameters
2020-09-20 02:10:18 -07:00
Felipe Martins Diel
8bf107ab69
Add docstrings and annotations
2020-09-20 02:10:18 -07:00
Felipe Martins Diel
792f1a1c60
Rename DNSError to DNSLookupError
2020-09-16 14:05:07 -07:00
Felipe Martins Diel
20d1d63fc3
Create a SDKException for DNS errors
2020-09-16 14:05:07 -07:00
Felipe Martins Diel
5af3a81264
Restore VPN support
2020-09-16 14:05:07 -07:00
Felipe Martins Diel
086fd1cd75
Fix setters ( #407 )
2020-09-06 10:52:12 +02:00
Felipe Martins Diel
cf1e2c3a30
Check the sum and length of received packets ( #410 )
...
* Use sum() for checksums
* Check sum and length of received packets
2020-09-06 10:51:45 +02:00
Felipe Martins Diel
b4aa15617a
Add support for RM4 mini (0x648d) ( #411 )
2020-09-06 10:51:17 +02:00
Felipe Martins Diel
e59d4a6875
Fix RM4 command header ( #412 )
2020-09-06 10:50:57 +02:00
Daan Klijn
8167736588
Allow setting custom discover ip port
2020-08-31 01:56:08 -07:00
Felipe Martins Diel
e4ad86278d
Rename lock byte ( #389 )
2020-07-31 07:10:21 +02:00
Felipe Martins Diel
02ce6ec661
Add support for SC1 device ( #388 )
2020-07-31 07:09:46 +02:00
Felipe Martins Diel
943706de5c
Expose device dictionary
2020-07-19 01:36:32 -07:00
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