Skip to main content

Open source control for Belkin WeMo devices

Project description

# ouimeaux

Open source control for Belkin WeMo devices

* Free software: BSD license
* Documentation: http://ouimeaux.rtfd.org.

## Features

* Supports WeMo Switch, Light Switch, Insight Switch and Motion
* Command-line tool to discover and control devices in your environment
* REST API to obtain information and perform actions on devices
* Simple responsive Web app provides device control on mobile
* Python API to interact with device at a low level

## About this fork

The original repository can be found here: https://github.com/iancmcc/ouimeaux

It doesn't appear to be maintained and it doesn't work with modern Python
packages.

It has been forked here so that I can include my modifications to
`requirements.txt` as well as document how to use it.

## Installation

```
$ sudo pip install virtualenv
$ mkdir ouimeaux-env
$ virtualenv ouimeaux-env
$ source ouimeaux-env/bin/activate
$ cd ouimeaux-env
$ pip install git+https://github.com/syphoxy/ouimeaux.git
```

At this point you should be able to use `wemo` and `wemo server` so long as
you've activated your environment with `source ouimeaux-env/bin/activate`.

**Note:** Ensure that the `pip` and `virtualenv` command you use belongs to a
Python 2 installation. On some systems, there are multiple versions of Python
installed. See below for an example from my Fedora system.

```
$ /bin/ls -1 "$(dirname $(which python))/virtualenv"{,-2} "$(dirname $(which python))/p"{ython,ip}[23]
/usr/bin/pip2
/usr/bin/pip3
/usr/bin/python2
/usr/bin/python3
/usr/bin/virtualenv
/usr/bin/virtualenv-2

$ pip --version
pip 9.0.1 from /usr/lib/python3.5/site-packages (python 3.5)

$ pip2 --version
pip 9.0.1 from /usr/lib/python2.7/site-packages (python 2.7)
```

## Troubleshooting

#### Using a VPN
The `wemo` command won't be able to communicate with your devices if you're connected to a VPN. It may be redirecting UDP traffic somewhere else. Disconnect from the VPN and the tool should work.

Open an issue and I'll try to help.




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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ouimeaux-0.8.2.tar.gz (516.2 kB view details)

Uploaded Source

Built Distributions

ouimeaux-0.8.2-py3-none-any.whl (529.6 kB view details)

Uploaded Python 3

ouimeaux-0.8.2-py2-none-any.whl (608.1 kB view details)

Uploaded Python 2

File details

Details for the file ouimeaux-0.8.2.tar.gz.

File metadata

  • Download URL: ouimeaux-0.8.2.tar.gz
  • Upload date:
  • Size: 516.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/47.1.1 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.6.9

File hashes

Hashes for ouimeaux-0.8.2.tar.gz
Algorithm Hash digest
SHA256 935112f7810a3e775a097d5a9fb2a5d878991374c25665a79e8e807f3b9c8e90
MD5 cab3dd404ce02d2dd652a3af7fbfb114
BLAKE2b-256 42d6f7a8804e25b0831dd729b11e66b45e3ea2f72a1748aaabd56a58abaf7ad2

See more details on using hashes here.

File details

Details for the file ouimeaux-0.8.2-py3-none-any.whl.

File metadata

  • Download URL: ouimeaux-0.8.2-py3-none-any.whl
  • Upload date:
  • Size: 529.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/47.1.1 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.6.9

File hashes

Hashes for ouimeaux-0.8.2-py3-none-any.whl
Algorithm Hash digest
SHA256 371a61a385523ca5646928d30c89be67637ea397bb5d2e078e483a88562a1e6b
MD5 b7d64754e7d29d9e911b5a42e721e860
BLAKE2b-256 e510ca03d428a0f2eec59506814f0bc0de228a619f104c55293d32cf07b6f947

See more details on using hashes here.

File details

Details for the file ouimeaux-0.8.2-py2-none-any.whl.

File metadata

  • Download URL: ouimeaux-0.8.2-py2-none-any.whl
  • Upload date:
  • Size: 608.1 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/2.7

File hashes

Hashes for ouimeaux-0.8.2-py2-none-any.whl
Algorithm Hash digest
SHA256 db49a67b9dfb5fb37e347824b356b71826aa41073ca00be124b8e7375bc2b812
MD5 113987237e944a3ad3c8185a73686742
BLAKE2b-256 db83a642f53d1ff79eced307e0ea511fb177defbb4aa8257b3152a9570138fa9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page