Commit graph

60 commits

Author SHA1 Message Date
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