Open source control for Belkin WeMo devices
Project description
# aioouimeaux
Open source control for Belkin WeMo devices
* Free software: BSD license
* Documentation: Soon at http://aioouimeaux.rtfd.org.
## Features
* Supports WeMo Switch, Light Switch, Insight Switch and Motion
* Python API to interact with device at a low level using asyncio
## About this library
Based on a repository that can be found here: https://github.com/syphoxy/ouimeaux.git
The original repository can be found here: https://github.com/iancmcc/ouimeaux
The library was modified to make use of asyncio.
It has been forked here since it is a significant change. It has been renamed to
clearly indicate the difference.
## Installation
```
$ sudo pip3 install aioouimeaux
```
If you want to use a virtual environement
```
$ sudo pip3 install virtualenv
$ mkdir ouimeaux-env
$ virtualenv ouimeaux-env
$ source ouimeaux-env/bin/activate
$ cd ouimeaux-env
$ pip3 install git+https://github.com/frawau/ouimeaux.git
```
At this point you should be able to use
**Note:** Ensure that the `pip` and `virtualenv` command you use belongs to a
Python 3 installation. On some systems, there are multiple versions of Python
installed.
You can try:
```
python3 -m aioouimeaux
```
and see something like:
```
Hit "Enter" to start
Use Ctrl-C to quit
Motion Motion status is now Off
Switch Test Switch 3 status is now Off
Switch Test Switch 1 status is now On
Switch Test Switch 2 status is now On
Motion Motion status is now Off
Select Device:
[1] Motion
[2] Test Switch 1
[3] Test Switch 2
[4] Test Switch 3
Your choice:2
Select Function for Test Switch 1:
[1] Power (0 or 1)
[2] Get Home Id
[3] Get MAC Address
[4] Get Device Id
[5] Get Serial Number
[6] Explain
[7] Function X (e.g. basicevent.GetHomeInfo see 'explain')
[0] Back to device selection
```
## Troubleshooting
Open an issue and I'll try to help.
aioouimeaux
Release 0.1.0b1 (Nov 20, 2017
+++++++++++++++++++++++++++++
- Modified the code to use asyncio
- suppressed use of gevent
- suppressed use of requests
- suppressed the signal framework (was using thread)
- suppressed REST server and client application
- uses aiohttp and aiohttp_wsgi
- Renamed Environment to WeMo
ouimeaux
==========
History
-------
Release 0.8.0 (July 30, 2016)
+++++++++++++++++++++++++++++
- Randomize subscription ports to enable simultaneous ouimeaux scripts (thanks @bennytheshap)
- Fix for WeMo LED Light support (thanks @sstangle73)
- #32: Removed address cache, broke server out into optional feature
- Fix for Maker state reporting (thanks @pavoni)
- Filter by SSDP location, fixing case where multiple devices respond from the same IP (thanks @szakharchenko)
- Fix Maker event handlers, which were being passed as bridges (thanks @maxlazarov)
- Work around gevent-socketio bug by explicitly casting header value as string
- Fix for inconsistent Light state (thanks @canduuk)
- StateChange signals are now a separate class and do not fire if value is unchanged (thanks @esecules)
- Python 3 support (thanks to @drock371)
Release 0.7.9 (March 17, 2015)
++++++++++++++++++++++++++++++
- Command line support for WeMo LED Light (thanks @fritz-fritz)
- Command line support for WeMo Maker (thanks @logjames)
- Support for 2.0.0 firmware (thanks @fritz-fritz)
- Bug fixes
Release 0.7.3 (August 10, 2014)
++++++++++++++++++++++++++++++++
- Fixed #18: Error when run as root
- Fixed #26: Evict devices from cache when unreachable
- Fixed #29: GetPower stopped working for Insight devices
- Fixed #31: Add blink method on switches, include in REST API
- Fixed #33, #37: Handle invalid devices without dying
- Fixed #35: Require requests >= 2.3.0
- Fixed #40: Retry requests in the event of failure
- Fixed #47: Don't choke on invalid newlines in XML returned by switches
(thanks to @fingon)
Release 0.7.2 (January 28, 2014)
++++++++++++++++++++++++++++++++
- Fix a bug with using query parameters on /api/device
Release 0.7 (January 27, 2014)
++++++++++++++++++++++++++++++
- Added REST API
- Added Web app
Release 0.6 (January 25, 2014)
++++++++++++++++++++++++++++++++
- Added signals framework
- Fixed #16, #19, #22: Defensively resubscribe to events when device responds with an error
- Fixed #15: Signals framework includes relevant device when sending signal
- Refactored structure, added Sphinx docs
Release 0.5.3 (January 25, 2014)
++++++++++++++++++++++++++++++++
- Fixed #20: Allow timeout in environment.wait()
- Fixed #21: Add Insight support
Release 0.5.2 (November 23, 2013)
+++++++++++++++++++++++++++++++++
- Fixed #14: Indicate Connection:close header to avoid logging when WeMo sends
invalid HTTP response.
Release 0.5.1 (November 9, 2013)
++++++++++++++++++++++++++++++++
- Fixed #10: Updated subscriber listener to use more reliable method of
retrieving non-loopback IP address; updated docs to fix typo in listener
registration example (thanks to @benhoyle, @francxk)
- Fixed #11: Remove instancemethod objects before attempting to pickle devices
in the cache (thanks @piperde, @JonPenner, @tomtomau, @masilu77)
Release 0.5 (October 14, 2013)
+++++++++++++++++++++++++++++++
- Added fuzzy matching of device name when searching/toggling from command line
- Added ``status`` mode to print status for all devices
- Added ``switch status`` mode to print status for specific device
- Added flags for all command-line options
- Fixed #9: Removed unused fcntl import that precluded Windows usage (thanks to
@deepseven)
Release 0.4.3 (August 31, 2013)
+++++++++++++++++++++++++++++++
- Used new method of obtaining local IP for discovery that is less likely to
return loopback
- Exit with failure and instructions for solution if loopback IP is used
- Updated installation docs to include python-dev and pip instructions (patch
by @fnaard)
- Fixed README inclusion bug that occasionally broke installation via pip.
- Added ``--debug`` option to enable debug logging to stdout
Release 0.4 (August 17, 2013)
+++++++++++++++++++++++++++++
- Fixed #7: Added support for light switch devices (patch by nschrenk).
- Fixed #6: Added "wemo clear" command to clear the device cache.
Release 0.3 (May 25, 2013)
++++++++++++++++++++++++++
- Fixed #4: Added ability to specify ip:port for discovery server binding. Removed
documentation describing need to disable SSDP service on Windows.
- Fixed #5: Added device cache for faster results.
- Added configuration file.
- Added ability to configure aliases for devices to avoid quoting strings on
the command line.
- Added 'toggle' command to command line switch control.
Release 0.2 (April 21, 2013)
++++++++++++++++++++++++++++++
- Fixed #1: Added ability to subscribe to motion and switch state change events.
- Added Windows installation details to README (patch by @brianpeiris)
- Cleaned up UDP server lifecycle so rediscovery doesn't try to start it back up.
Release 0.1 (February 2, 2013)
++++++++++++++++++++++++++++++
- Initial release.
* First release on PyPI.
Open source control for Belkin WeMo devices
* Free software: BSD license
* Documentation: Soon at http://aioouimeaux.rtfd.org.
## Features
* Supports WeMo Switch, Light Switch, Insight Switch and Motion
* Python API to interact with device at a low level using asyncio
## About this library
Based on a repository that can be found here: https://github.com/syphoxy/ouimeaux.git
The original repository can be found here: https://github.com/iancmcc/ouimeaux
The library was modified to make use of asyncio.
It has been forked here since it is a significant change. It has been renamed to
clearly indicate the difference.
## Installation
```
$ sudo pip3 install aioouimeaux
```
If you want to use a virtual environement
```
$ sudo pip3 install virtualenv
$ mkdir ouimeaux-env
$ virtualenv ouimeaux-env
$ source ouimeaux-env/bin/activate
$ cd ouimeaux-env
$ pip3 install git+https://github.com/frawau/ouimeaux.git
```
At this point you should be able to use
**Note:** Ensure that the `pip` and `virtualenv` command you use belongs to a
Python 3 installation. On some systems, there are multiple versions of Python
installed.
You can try:
```
python3 -m aioouimeaux
```
and see something like:
```
Hit "Enter" to start
Use Ctrl-C to quit
Motion Motion status is now Off
Switch Test Switch 3 status is now Off
Switch Test Switch 1 status is now On
Switch Test Switch 2 status is now On
Motion Motion status is now Off
Select Device:
[1] Motion
[2] Test Switch 1
[3] Test Switch 2
[4] Test Switch 3
Your choice:2
Select Function for Test Switch 1:
[1] Power (0 or 1)
[2] Get Home Id
[3] Get MAC Address
[4] Get Device Id
[5] Get Serial Number
[6] Explain
[7] Function X (e.g. basicevent.GetHomeInfo see 'explain')
[0] Back to device selection
```
## Troubleshooting
Open an issue and I'll try to help.
aioouimeaux
Release 0.1.0b1 (Nov 20, 2017
+++++++++++++++++++++++++++++
- Modified the code to use asyncio
- suppressed use of gevent
- suppressed use of requests
- suppressed the signal framework (was using thread)
- suppressed REST server and client application
- uses aiohttp and aiohttp_wsgi
- Renamed Environment to WeMo
ouimeaux
==========
History
-------
Release 0.8.0 (July 30, 2016)
+++++++++++++++++++++++++++++
- Randomize subscription ports to enable simultaneous ouimeaux scripts (thanks @bennytheshap)
- Fix for WeMo LED Light support (thanks @sstangle73)
- #32: Removed address cache, broke server out into optional feature
- Fix for Maker state reporting (thanks @pavoni)
- Filter by SSDP location, fixing case where multiple devices respond from the same IP (thanks @szakharchenko)
- Fix Maker event handlers, which were being passed as bridges (thanks @maxlazarov)
- Work around gevent-socketio bug by explicitly casting header value as string
- Fix for inconsistent Light state (thanks @canduuk)
- StateChange signals are now a separate class and do not fire if value is unchanged (thanks @esecules)
- Python 3 support (thanks to @drock371)
Release 0.7.9 (March 17, 2015)
++++++++++++++++++++++++++++++
- Command line support for WeMo LED Light (thanks @fritz-fritz)
- Command line support for WeMo Maker (thanks @logjames)
- Support for 2.0.0 firmware (thanks @fritz-fritz)
- Bug fixes
Release 0.7.3 (August 10, 2014)
++++++++++++++++++++++++++++++++
- Fixed #18: Error when run as root
- Fixed #26: Evict devices from cache when unreachable
- Fixed #29: GetPower stopped working for Insight devices
- Fixed #31: Add blink method on switches, include in REST API
- Fixed #33, #37: Handle invalid devices without dying
- Fixed #35: Require requests >= 2.3.0
- Fixed #40: Retry requests in the event of failure
- Fixed #47: Don't choke on invalid newlines in XML returned by switches
(thanks to @fingon)
Release 0.7.2 (January 28, 2014)
++++++++++++++++++++++++++++++++
- Fix a bug with using query parameters on /api/device
Release 0.7 (January 27, 2014)
++++++++++++++++++++++++++++++
- Added REST API
- Added Web app
Release 0.6 (January 25, 2014)
++++++++++++++++++++++++++++++++
- Added signals framework
- Fixed #16, #19, #22: Defensively resubscribe to events when device responds with an error
- Fixed #15: Signals framework includes relevant device when sending signal
- Refactored structure, added Sphinx docs
Release 0.5.3 (January 25, 2014)
++++++++++++++++++++++++++++++++
- Fixed #20: Allow timeout in environment.wait()
- Fixed #21: Add Insight support
Release 0.5.2 (November 23, 2013)
+++++++++++++++++++++++++++++++++
- Fixed #14: Indicate Connection:close header to avoid logging when WeMo sends
invalid HTTP response.
Release 0.5.1 (November 9, 2013)
++++++++++++++++++++++++++++++++
- Fixed #10: Updated subscriber listener to use more reliable method of
retrieving non-loopback IP address; updated docs to fix typo in listener
registration example (thanks to @benhoyle, @francxk)
- Fixed #11: Remove instancemethod objects before attempting to pickle devices
in the cache (thanks @piperde, @JonPenner, @tomtomau, @masilu77)
Release 0.5 (October 14, 2013)
+++++++++++++++++++++++++++++++
- Added fuzzy matching of device name when searching/toggling from command line
- Added ``status`` mode to print status for all devices
- Added ``switch status`` mode to print status for specific device
- Added flags for all command-line options
- Fixed #9: Removed unused fcntl import that precluded Windows usage (thanks to
@deepseven)
Release 0.4.3 (August 31, 2013)
+++++++++++++++++++++++++++++++
- Used new method of obtaining local IP for discovery that is less likely to
return loopback
- Exit with failure and instructions for solution if loopback IP is used
- Updated installation docs to include python-dev and pip instructions (patch
by @fnaard)
- Fixed README inclusion bug that occasionally broke installation via pip.
- Added ``--debug`` option to enable debug logging to stdout
Release 0.4 (August 17, 2013)
+++++++++++++++++++++++++++++
- Fixed #7: Added support for light switch devices (patch by nschrenk).
- Fixed #6: Added "wemo clear" command to clear the device cache.
Release 0.3 (May 25, 2013)
++++++++++++++++++++++++++
- Fixed #4: Added ability to specify ip:port for discovery server binding. Removed
documentation describing need to disable SSDP service on Windows.
- Fixed #5: Added device cache for faster results.
- Added configuration file.
- Added ability to configure aliases for devices to avoid quoting strings on
the command line.
- Added 'toggle' command to command line switch control.
Release 0.2 (April 21, 2013)
++++++++++++++++++++++++++++++
- Fixed #1: Added ability to subscribe to motion and switch state change events.
- Added Windows installation details to README (patch by @brianpeiris)
- Cleaned up UDP server lifecycle so rediscovery doesn't try to start it back up.
Release 0.1 (February 2, 2013)
++++++++++++++++++++++++++++++
- Initial release.
* First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
aioouimeaux-0.1.0b5.tar.gz
(93.8 kB
view details)
File details
Details for the file aioouimeaux-0.1.0b5.tar.gz
.
File metadata
- Download URL: aioouimeaux-0.1.0b5.tar.gz
- Upload date:
- Size: 93.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: Python-urllib/3.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d1a755c03ad35bd89bcf85b0196ea176b174444796fe5168b55a74635bcd1374 |
|
MD5 | 263012870365d48b73ea91b3eeaedc04 |
|
BLAKE2b-256 | 659a4f56bb36b5203d4f37e734870dd0dc51fa74f5e2092814505b5af8e13333 |