{ "info": { "author": "Ian McCracken", "author_email": "ian.mccracken@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Home Automation" ], "description": "# ouimeaux\n\nOpen source control for Belkin WeMo devices\n\n* Free software: BSD license\n* Documentation: http://ouimeaux.rtfd.org.\n\n## Features\n\n* Supports WeMo Switch, Light Switch, Insight Switch and Motion\n* Command-line tool to discover and control devices in your environment\n* REST API to obtain information and perform actions on devices\n* Simple responsive Web app provides device control on mobile\n* Python API to interact with device at a low level\n\n## About this fork\n\nThe original repository can be found here: https://github.com/iancmcc/ouimeaux\n\nIt doesn't appear to be maintained and it doesn't work with modern Python\npackages.\n\nIt has been forked here so that I can include my modifications to\n`requirements.txt` as well as document how to use it.\n\n## Installation\n\n```\n$ sudo pip install virtualenv\n$ mkdir ouimeaux-env\n$ virtualenv ouimeaux-env\n$ source ouimeaux-env/bin/activate\n$ cd ouimeaux-env\n$ pip install git+https://github.com/syphoxy/ouimeaux.git\n```\n\nAt this point you should be able to use `wemo` and `wemo server` so long as\nyou've activated your environment with `source ouimeaux-env/bin/activate`.\n\n**Note:** Ensure that the `pip` and `virtualenv` command you use belongs to a\nPython 2 installation. On some systems, there are multiple versions of Python\ninstalled. See below for an example from my Fedora system.\n\n```\n$ /bin/ls -1 \"$(dirname $(which python))/virtualenv\"{,-2} \"$(dirname $(which python))/p\"{ython,ip}[23]\n/usr/bin/pip2\n/usr/bin/pip3\n/usr/bin/python2\n/usr/bin/python3\n/usr/bin/virtualenv\n/usr/bin/virtualenv-2\n\n$ pip --version\npip 9.0.1 from /usr/lib/python3.5/site-packages (python 3.5)\n\n$ pip2 --version\npip 9.0.1 from /usr/lib/python2.7/site-packages (python 2.7)\n```\n\n## Troubleshooting\n\n#### Using a VPN \nThe `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.\n\nOpen an issue and I'll try to help.\n\n\n\n\nHistory\n-------\n\nRelease 0.8.0 (July 30, 2016)\n+++++++++++++++++++++++++++++\n- Randomize subscription ports to enable simultaneous ouimeaux scripts (thanks @bennytheshap)\n- Fix for WeMo LED Light support (thanks @sstangle73)\n- #32: Removed address cache, broke server out into optional feature\n- Fix for Maker state reporting (thanks @pavoni)\n- Filter by SSDP location, fixing case where multiple devices respond from the same IP (thanks @szakharchenko)\n- Fix Maker event handlers, which were being passed as bridges (thanks @maxlazarov)\n- Work around gevent-socketio bug by explicitly casting header value as string\n- Fix for inconsistent Light state (thanks @canduuk)\n- StateChange signals are now a separate class and do not fire if value is unchanged (thanks @esecules)\n- Python 3 support (thanks to @drock371)\n\nRelease 0.7.9 (March 17, 2015)\n++++++++++++++++++++++++++++++\n- Command line support for WeMo LED Light (thanks @fritz-fritz)\n- Command line support for WeMo Maker (thanks @logjames)\n- Support for 2.0.0 firmware (thanks @fritz-fritz)\n- Bug fixes\n\nRelease 0.7.3 (August 10, 2014)\n++++++++++++++++++++++++++++++++\n- Fixed #18: Error when run as root\n- Fixed #26: Evict devices from cache when unreachable\n- Fixed #29: GetPower stopped working for Insight devices\n- Fixed #31: Add blink method on switches, include in REST API\n- Fixed #33, #37: Handle invalid devices without dying\n- Fixed #35: Require requests >= 2.3.0\n- Fixed #40: Retry requests in the event of failure\n- Fixed #47: Don't choke on invalid newlines in XML returned by switches\n (thanks to @fingon)\n\nRelease 0.7.2 (January 28, 2014)\n++++++++++++++++++++++++++++++++\n- Fix a bug with using query parameters on /api/device\n\nRelease 0.7 (January 27, 2014)\n++++++++++++++++++++++++++++++\n- Added REST API\n- Added Web app\n\nRelease 0.6 (January 25, 2014)\n++++++++++++++++++++++++++++++++\n- Added signals framework\n- Fixed #16, #19, #22: Defensively resubscribe to events when device responds with an error\n- Fixed #15: Signals framework includes relevant device when sending signal\n- Refactored structure, added Sphinx docs\n\nRelease 0.5.3 (January 25, 2014)\n++++++++++++++++++++++++++++++++\n- Fixed #20: Allow timeout in environment.wait()\n- Fixed #21: Add Insight support\n\nRelease 0.5.2 (November 23, 2013)\n+++++++++++++++++++++++++++++++++\n- Fixed #14: Indicate Connection:close header to avoid logging when WeMo sends\n invalid HTTP response.\n\nRelease 0.5.1 (November 9, 2013)\n++++++++++++++++++++++++++++++++\n- Fixed #10: Updated subscriber listener to use more reliable method of\n retrieving non-loopback IP address; updated docs to fix typo in listener\n registration example (thanks to @benhoyle, @francxk)\n- Fixed #11: Remove instancemethod objects before attempting to pickle devices\n in the cache (thanks @piperde, @JonPenner, @tomtomau, @masilu77)\n\nRelease 0.5 (October 14, 2013)\n+++++++++++++++++++++++++++++++\n- Added fuzzy matching of device name when searching/toggling from command line\n- Added ``status`` mode to print status for all devices\n- Added ``switch status`` mode to print status for specific device\n- Added flags for all command-line options\n- Fixed #9: Removed unused fcntl import that precluded Windows usage (thanks to\n @deepseven)\n\nRelease 0.4.3 (August 31, 2013)\n+++++++++++++++++++++++++++++++\n- Used new method of obtaining local IP for discovery that is less likely to\n return loopback\n- Exit with failure and instructions for solution if loopback IP is used\n- Updated installation docs to include python-dev and pip instructions (patch\n by @fnaard)\n- Fixed README inclusion bug that occasionally broke installation via pip.\n- Added ``--debug`` option to enable debug logging to stdout\n\nRelease 0.4 (August 17, 2013)\n+++++++++++++++++++++++++++++\n- Fixed #7: Added support for light switch devices (patch by nschrenk).\n- Fixed #6: Added \"wemo clear\" command to clear the device cache.\n\nRelease 0.3 (May 25, 2013)\n++++++++++++++++++++++++++\n- Fixed #4: Added ability to specify ip:port for discovery server binding. Removed\n documentation describing need to disable SSDP service on Windows.\n- Fixed #5: Added device cache for faster results.\n- Added configuration file.\n- Added ability to configure aliases for devices to avoid quoting strings on\n the command line.\n- Added 'toggle' command to command line switch control.\n\nRelease 0.2 (April 21, 2013)\n++++++++++++++++++++++++++++++\n- Fixed #1: Added ability to subscribe to motion and switch state change events.\n- Added Windows installation details to README (patch by @brianpeiris)\n- Cleaned up UDP server lifecycle so rediscovery doesn't try to start it back up.\n\nRelease 0.1 (February 2, 2013)\n++++++++++++++++++++++++++++++\n- Initial release.\n\n* First release on PyPI.", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/iancmcc/ouimeaux", "keywords": "ouimeaux", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "ouimeaux", "package_url": "https://pypi.org/project/ouimeaux/", "platform": "", "project_url": "https://pypi.org/project/ouimeaux/", "project_urls": { "Homepage": "https://github.com/iancmcc/ouimeaux" }, "release_url": "https://pypi.org/project/ouimeaux/0.8.2/", "requires_dist": null, "requires_python": "", "summary": "Open source control for Belkin WeMo devices", "version": "0.8.2" }, "last_serial": 5234731, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "9ab23ad730c7bb1cb5ce18bc291b57fe", "sha256": "893ea441aa3c0122b8bbec60bb160f69bacf452c90a3d684ebecfa1cec1f117a" }, "downloads": -1, "filename": "ouimeaux-0.1.tar.gz", "has_sig": false, "md5_digest": "9ab23ad730c7bb1cb5ce18bc291b57fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23617, "upload_time": "2013-02-02T02:59:51", "url": "https://files.pythonhosted.org/packages/9e/3b/a63f569d05d46c1202842327d7d67f74d521972b5a1e67b52c7502d69859/ouimeaux-0.1.tar.gz" } ], "0.1dev": [], "0.2": [ { "comment_text": "", "digests": { "md5": "0dc7bf15f821b9523ad7f8bb41455b81", "sha256": "d6770bbcb6cbaab46bdb98f48bd0b13424c4c2da3c849f0fbcb4b4c54a04d162" }, "downloads": -1, "filename": "ouimeaux-0.2.tar.gz", "has_sig": false, "md5_digest": "0dc7bf15f821b9523ad7f8bb41455b81", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25986, "upload_time": "2013-04-21T19:30:20", "url": "https://files.pythonhosted.org/packages/4d/ee/3aac6f8fdb5fa4319370a114702ae7963f965cfff37c38bcc661375ebada/ouimeaux-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "20e9fdd92fe549f73d8957b2e7167cef", "sha256": "4379b84c3a459d4bbc1c8f2f75db431b70cc6a216dd0c8bacee6641309d0b196" }, "downloads": -1, "filename": "ouimeaux-0.3.tar.gz", "has_sig": false, "md5_digest": "20e9fdd92fe549f73d8957b2e7167cef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28119, "upload_time": "2013-05-25T19:37:29", "url": "https://files.pythonhosted.org/packages/3b/df/18d9789dd1bb92e4c6669a75a4f719ad5e11fa8f6489a2c9aac2188956c1/ouimeaux-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "5c26f5562c0c1d4e88aec337f4a3d072", "sha256": "d1ea6f0bea450572f0a425e627b1032b32c9eb97d636ba1bfc973bc0f72dbbc8" }, "downloads": -1, "filename": "ouimeaux-0.4.tar.gz", "has_sig": false, "md5_digest": "5c26f5562c0c1d4e88aec337f4a3d072", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28570, "upload_time": "2013-08-18T05:03:51", "url": "https://files.pythonhosted.org/packages/43/5c/4ce1836b186b81d1ded2f7dcf903b3ebac1eebe0e4680bf35577563e05a8/ouimeaux-0.4.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "72ee20e644c6bd64d84e4b9704cbb9e8", "sha256": "c782a07c6a2708d6c54c2dbdff46a80fbb3c144341f62ac9e9664857da502ba2" }, "downloads": -1, "filename": "ouimeaux-0.4.1.tar.gz", "has_sig": false, "md5_digest": "72ee20e644c6bd64d84e4b9704cbb9e8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30450, "upload_time": "2013-08-26T03:50:43", "url": "https://files.pythonhosted.org/packages/e4/4e/3f6fd68ab166330107e42d349c3ce0bd9ed530d7b86120267f3383ead015/ouimeaux-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "3382a9191121893448cb02e476fa7b8a", "sha256": "ed1885909fb8e26911b77caed2b1fe823d9f8384288f98c91122177f92f2780c" }, "downloads": -1, "filename": "ouimeaux-0.4.2.tar.gz", "has_sig": false, "md5_digest": "3382a9191121893448cb02e476fa7b8a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31830, "upload_time": "2013-08-26T14:16:17", "url": "https://files.pythonhosted.org/packages/e6/1f/fca9992e5ac7fb4e81bf6bcde362d28efc6a7be99161cd174596dee3e430/ouimeaux-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "26111914fb9aa9b681622250987b39a4", "sha256": "802f4930849fb0236e6e594f873128924269950057958534416729c309e813aa" }, "downloads": -1, "filename": "ouimeaux-0.4.3.tar.gz", "has_sig": false, "md5_digest": "26111914fb9aa9b681622250987b39a4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30354, "upload_time": "2013-08-31T15:07:37", "url": "https://files.pythonhosted.org/packages/fc/45/5edb503db5d78361edb8aa2917e58cca75d1084bf09c48cd273f48b19bd3/ouimeaux-0.4.3.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "9dab74f5fee7c397cdd1e31b949fcfc7", "sha256": "247a8d2a2425b55d6b4148c8156268a994bf92ae706deabd30f9aa5bc5722e17" }, "downloads": -1, "filename": "ouimeaux-0.5.tar.gz", "has_sig": false, "md5_digest": "9dab74f5fee7c397cdd1e31b949fcfc7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31229, "upload_time": "2013-10-15T02:57:28", "url": "https://files.pythonhosted.org/packages/6f/b5/fdaae303bd6000a2228598371339ef699ae0438fc3e272f1d4c1305292d0/ouimeaux-0.5.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "28d8c94b84942efa6afe70da2b66c2c2", "sha256": "048b41d8c00d4990ab45714d793e698d7c6facd98abd6a353675fc38ecfc0ba7" }, "downloads": -1, "filename": "ouimeaux-0.5.1.tar.gz", "has_sig": false, "md5_digest": "28d8c94b84942efa6afe70da2b66c2c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34690, "upload_time": "2013-11-09T16:06:25", "url": "https://files.pythonhosted.org/packages/ef/d7/104ed1a20b5c5d5d673daf76279aa3592d542e451422602eedac036d754c/ouimeaux-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "a90dcb2bbd046edf01bf00d66a2b05b2", "sha256": "118364924ac7d125103d6081fb5564db9b7d86baea4bf4362b09e0d0cef07a6d" }, "downloads": -1, "filename": "ouimeaux-0.5.2.tar.gz", "has_sig": false, "md5_digest": "a90dcb2bbd046edf01bf00d66a2b05b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34884, "upload_time": "2013-11-24T00:14:47", "url": "https://files.pythonhosted.org/packages/87/0e/6c971bcea909bb42a2656e6845bd7c756e1eeb8d5ab5ec353fbbd4b3f49a/ouimeaux-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "c02e526153152e684092e24ec1faa20f", "sha256": "df93b07fc4470bc8d95a00fb858900a10db05443aa8718d509baa35500fcca33" }, "downloads": -1, "filename": "ouimeaux-0.5.3.tar.gz", "has_sig": false, "md5_digest": "c02e526153152e684092e24ec1faa20f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35469, "upload_time": "2014-01-25T17:38:38", "url": "https://files.pythonhosted.org/packages/ea/f1/a7da75c1ebe023f58824101fdc17b102736e55b54716024e38dded30b2bc/ouimeaux-0.5.3.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "b65036e8195b19d218c64b533da78f9c", "sha256": "e909959d064c9c837f957eabdff86ddfe014bb26578800feb3111613a3dd648e" }, "downloads": -1, "filename": "ouimeaux-0.6.tar.gz", "has_sig": false, "md5_digest": "b65036e8195b19d218c64b533da78f9c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13979, "upload_time": "2014-01-26T04:13:02", "url": "https://files.pythonhosted.org/packages/a2/41/604a09d2f62d65a080ad7eed434cca37bd72419d613b064518722f9c4bbb/ouimeaux-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "70b3d64f754a04992714494d9ea2c313", "sha256": "84300bd68c10e3cd7c6a3c208a4ab6d85dee5dacb3b97dd1d95ecb979962db2c" }, "downloads": -1, "filename": "ouimeaux-0.7.tar.gz", "has_sig": false, "md5_digest": "70b3d64f754a04992714494d9ea2c313", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14705, "upload_time": "2014-01-27T06:46:10", "url": "https://files.pythonhosted.org/packages/76/07/ff22874d48100ff43b6c9364943932130b25dc93b19c0173cb2b5c5c77e0/ouimeaux-0.7.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "c27634dd88017de92de2771b9f4ba3d4", "sha256": "b8b676f9a9dd117c3cb761481aa0025fe4f3adbeea2cb6acc54cbf351878ec18" }, "downloads": -1, "filename": "ouimeaux-0.7.1.tar.gz", "has_sig": false, "md5_digest": "c27634dd88017de92de2771b9f4ba3d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 503808, "upload_time": "2014-01-27T06:57:30", "url": "https://files.pythonhosted.org/packages/2e/79/1a750b267551f6c5b5077ee886d176df0f80101cbb657da19f4b3a8e664d/ouimeaux-0.7.1.tar.gz" } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "5ba49df09ca968c782ca1c5c51ee96cd", "sha256": "18096b09d42b2007786cd9f5e552a84c1a867cf4a9f4fbfbea25d6e68a9e5dab" }, "downloads": -1, "filename": "ouimeaux-0.7.2.tar.gz", "has_sig": false, "md5_digest": "5ba49df09ca968c782ca1c5c51ee96cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 503874, "upload_time": "2014-01-27T12:44:28", "url": "https://files.pythonhosted.org/packages/ba/b0/329e6e912e7c737f3a8ae59a27655d27f66142632fc0b9ebfd719a7f6499/ouimeaux-0.7.2.tar.gz" } ], "0.7.3": [ { "comment_text": "", "digests": { "md5": "64cb65930e11859a8631c911489a5ec4", "sha256": "21377c8d15f2978b62fe3efe10fad40bca3c3ed2a490ec7bfe92cfd84f1ac1de" }, "downloads": -1, "filename": "ouimeaux-0.7.3.tar.gz", "has_sig": false, "md5_digest": "64cb65930e11859a8631c911489a5ec4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 506505, "upload_time": "2014-08-11T00:34:57", "url": "https://files.pythonhosted.org/packages/51/ae/e16b4eaeb35770d76d22e1ead46a51d8447310f55e6a5ab1926e0fb333cf/ouimeaux-0.7.3.tar.gz" } ], "0.7.9": [ { "comment_text": "", "digests": { "md5": "13e46fff5d8eeaaa3351386f647a26d0", "sha256": "01cce51152bd8a8e660aa267de3404390c1d25703e184d05869b2011c3ac0fa3" }, "downloads": -1, "filename": "ouimeaux-0.7.9.tar.gz", "has_sig": false, "md5_digest": "13e46fff5d8eeaaa3351386f647a26d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 559021, "upload_time": "2015-03-19T02:43:59", "url": "https://files.pythonhosted.org/packages/dc/19/cc911fb502cb9bd03c5d72c580a99953b98ac7adfe1798ed1c8c92e051e0/ouimeaux-0.7.9.tar.gz" } ], "0.7.9-r0": [ { "comment_text": "", "digests": { "md5": "b598f5e34902735e6d83d22e699170b5", "sha256": "a0f571a520b5b4b6e1fdc7b98fcd8a6a5e9629a0335db5c9e4759610ce9e7170" }, "downloads": -1, "filename": "ouimeaux-0.7.9-r0.tar.gz", "has_sig": false, "md5_digest": "b598f5e34902735e6d83d22e699170b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 559061, "upload_time": "2015-03-19T02:43:27", "url": "https://files.pythonhosted.org/packages/1f/93/c49f2194da4987b1bf8ed622631c1bae2a40f9189dc4f06a4150afc1ec24/ouimeaux-0.7.9-r0.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "8d2ec8e03375597a8cac7aad295bc365", "sha256": "a466e2c64b458c3beaacafe89254d69dced3c78239f97c673a8a87d3dcfb2dc5" }, "downloads": -1, "filename": "ouimeaux-0.8.tar.gz", "has_sig": false, "md5_digest": "8d2ec8e03375597a8cac7aad295bc365", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 517274, "upload_time": "2016-07-31T03:48:23", "url": "https://files.pythonhosted.org/packages/a3/3a/7b3677d29896282314e492d123a1e72fa29f263be4892188aa7d54aa769f/ouimeaux-0.8.tar.gz" } ], "0.8.2": [ { "comment_text": "", "digests": { "md5": "113987237e944a3ad3c8185a73686742", "sha256": "db49a67b9dfb5fb37e347824b356b71826aa41073ca00be124b8e7375bc2b812" }, "downloads": -1, "filename": "ouimeaux-0.8.2-py2-none-any.whl", "has_sig": false, "md5_digest": "113987237e944a3ad3c8185a73686742", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 608138, "upload_time": "2019-05-06T20:43:08", "url": "https://files.pythonhosted.org/packages/db/83/a642f53d1ff79eced307e0ea511fb177defbb4aa8257b3152a9570138fa9/ouimeaux-0.8.2-py2-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "113987237e944a3ad3c8185a73686742", "sha256": "db49a67b9dfb5fb37e347824b356b71826aa41073ca00be124b8e7375bc2b812" }, "downloads": -1, "filename": "ouimeaux-0.8.2-py2-none-any.whl", "has_sig": false, "md5_digest": "113987237e944a3ad3c8185a73686742", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 608138, "upload_time": "2019-05-06T20:43:08", "url": "https://files.pythonhosted.org/packages/db/83/a642f53d1ff79eced307e0ea511fb177defbb4aa8257b3152a9570138fa9/ouimeaux-0.8.2-py2-none-any.whl" } ] }