🏡 Open source home automation that puts local control and privacy first.
Go to file
Gianluca Barbaro 9cad9c19f8 Update keyboard_remote.py (#5535)
* Update keyboard_remote.py

I added a couple of events: keyboard_remote_connected and keyboard_remote_disconnected, useful to trigger some action (for example: play a sound)
I changed the way the component refers to the keyboard: not by "descriptor", but by name.
The fact is that the udev system doesn't always give a name link in /dev/input/by-id folder and the actual /dev/input/eventX file changes automatically. 
For example, if I had my keyboard on /dev/input/event13 and then it disconnected, if something else connects to the system it will get the first input file available, that is /dev/input/event13. If the keyboard then reconnects, it will get /dev/input/event14, thus breaking the configuration.
Now it searches every time for the right input file.
The problem might be that, in case of ha upgrade, the pre-existing configuration won't work. I thing there are some guidelines here, but I am not sure.
I think it's inevitable: the initial idea to use a /dev/input/by-id/ symbolic link was good, but unfortunately it doesn't seem to work with bluetooth devices.

I haven't updated the documentation yet: I'm waiting for some ok about the change in configuration key names.

* Update keyboard_remote.py

That should do the trick.
You are right: device names can be duplicated, thus they're not reliable in case of multiple devices. Unfortunately, the only other information available is the physical address, even more complicated.
But in case you have just one keyboard remote of same model, the name works just fine. I'll put it in the documentation which, once the code is approved, I will promptly update.

* Update keyboard_remote.py

* Update keyboard_remote.py

* Update keyboard_remote.py

* Unwrap logger error
2017-01-25 13:58:34 -05:00
.github Update link to docs repo (#3886) 2016-10-15 13:46:45 +02:00
config Update to make the sample file validate (#4168) 2016-11-01 15:11:42 +01:00
docs Adding security contexts to the resources. (#3840) 2016-10-20 22:43:39 -07:00
homeassistant Update keyboard_remote.py (#5535) 2017-01-25 13:58:34 -05:00
script [script] Fix dodgy bash syntax for bootstrap (#5552) 2017-01-25 09:21:09 -08:00
tests Fix upc lint error (#5554) 2017-01-25 18:46:37 +01:00
virtualization Remove build dirs from docker image to keep the layers small (#5243) 2017-01-14 07:41:41 -08:00
.coveragerc Add initial support for Lutron RadioRA 2 using pylutron (#5337) 2017-01-25 09:11:37 +01:00
.dockerignore Add Docker test runner (#2673) 2016-07-31 13:48:41 -07:00
.gitignore Macvendor (#4468) 2016-12-01 18:30:41 -08:00
.gitmodules Update links 2016-04-12 14:18:18 +02:00
.hound.yml Add .hound.yml 2016-11-13 11:34:09 -08:00
.ignore Include .ignore file for search utilities (#5290) 2017-01-16 22:52:53 -08:00
.travis.yml Disable typing travis build 2017-01-25 09:32:39 -08:00
CLA.md Add organization docs 2017-01-22 16:21:20 -08:00
CODE_OF_CONDUCT.md Add organization docs 2017-01-22 16:21:20 -08:00
CONTRIBUTING.md Fix link to pull request advice for contributors 2017-01-03 14:26:24 +11:00
Dockerfile Install phantomjs in Docker container (#5368) 2017-01-16 22:55:42 -08:00
LICENSE.md Add organization docs 2017-01-22 16:21:20 -08:00
MANIFEST.in Allow generating requirements_all.txt 2015-11-17 00:21:49 -08:00
README.rst Xiaomi device tracker (#5283) 2017-01-13 21:24:58 -08:00
pylintrc Make services yield (#4187) 2016-11-03 18:32:14 -07:00
requirements_all.txt Add initial support for Lutron RadioRA 2 using pylutron (#5337) 2017-01-25 09:11:37 +01:00
requirements_docs.txt Upgrade Sphinx to 1.5.2 (#5502) 2017-01-22 11:36:29 +01:00
requirements_test.txt DSMR: TCP, reconnecting and V4 CRC support (#5164) 2017-01-16 23:56:00 -08:00
setup.cfg Expose isort preferences for tools. (#4481) 2016-11-27 14:33:30 -08:00
setup.py Upgrade to voluptuous to 0.9.3 (#5288) 2017-01-12 23:56:37 +01:00
tox.ini Run tests on Python 3.6 (#5162) 2017-01-03 21:33:48 +01:00

README.rst

Home Assistant |Build Status| |Coverage Status| |Join the chat at https://gitter.im/home-assistant/home-assistant| |Join the dev chat at https://gitter.im/home-assistant/home-assistant/devs|
==============================================================================================================================================================================================

Home Assistant is a home automation platform running on Python 3. The
goal of Home Assistant is to be able to track and control all devices at
home and offer a platform for automating control.

To get started:

.. code:: bash

    python3 -m pip install homeassistant
    hass --open-ui

Check out `the website <https://home-assistant.io>`__ for `a
demo <https://home-assistant.io/demo/>`__, installation instructions,
tutorials and documentation.

|screenshot-states|

Examples of devices Home Assistant can interface with:

-  Monitoring connected devices to a wireless router:
   `OpenWrt <https://openwrt.org/>`__,
   `Tomato <http://www.polarcloud.com/tomato>`__,
   `Netgear <http://netgear.com>`__,
   `DD-WRT <http://www.dd-wrt.com/site/index>`__,
   `TPLink <http://www.tp-link.us/>`__,
   `ASUSWRT <http://event.asus.com/2013/nw/ASUSWRT/>`__,
   `Xiaomi <http://miwifi.com/>`__ and any SNMP
   capable Linksys WAP/WRT
-  `Philips Hue <http://meethue.com>`__ lights,
   `WeMo <http://www.belkin.com/us/Products/home-automation/c/wemo-home-automation/>`__
   switches, `Edimax <http://www.edimax.com/>`__ switches,
   `Efergy <https://efergy.com>`__ energy monitoring, and
   `Tellstick <http://www.telldus.se/products/tellstick>`__ devices and
   sensors
-  `Google
   Chromecasts <http://www.google.com/intl/en/chrome/devices/chromecast>`__,
   `Music Player Daemon <http://www.musicpd.org/>`__, `Logitech
   Squeezebox <https://en.wikipedia.org/wiki/Squeezebox_%28network_music_player%29>`__,
   `Plex <https://plex.tv/>`__, `Kodi (XBMC) <http://kodi.tv/>`__,
   iTunes (by way of
   `itunes-api <https://github.com/maddox/itunes-api>`__), and Amazon
   Fire TV (by way of
   `python-firetv <https://github.com/happyleavesaoc/python-firetv>`__)
-  Support for
   `ISY994 <https://www.universal-devices.com/residential/isy994i-series/>`__
   (Insteon and X10 devices), `Z-Wave <http://www.z-wave.com/>`__, `Nest
   Thermostats <https://nest.com/>`__,
   `RFXtrx <http://www.rfxcom.com/>`__,
   `Arduino <https://www.arduino.cc/>`__, `Raspberry
   Pi <https://www.raspberrypi.org/>`__, and
   `Modbus <http://www.modbus.org/>`__
-  Interaction with `IFTTT <https://ifttt.com/>`__
-  Integrate data from the `Bitcoin <https://bitcoin.org>`__ network,
   meteorological data from
   `OpenWeatherMap <http://openweathermap.org/>`__ and
   `Forecast.io <https://forecast.io/>`__,
   `Transmission <http://www.transmissionbt.com/>`__, or
   `SABnzbd <http://sabnzbd.org>`__.
-  `See full list of supported
   devices <https://home-assistant.io/components/>`__

Build home automation on top of your devices:

-  Keep a precise history of every change to the state of your house
-  Turn on the lights when people get home after sunset
-  Turn on lights slowly during sunset to compensate for less light
-  Turn off all lights and devices when everybody leaves the house
-  Offers a `REST API <https://home-assistant.io/developers/rest_api/>`__
   and can interface with MQTT for easy integration with other projects
   like `OwnTracks <http://owntracks.org/>`__
-  Allow sending notifications using
   `Instapush <https://instapush.im>`__, `Notify My Android
   (NMA) <http://www.notifymyandroid.com/>`__,
   `PushBullet <https://www.pushbullet.com/>`__,
   `PushOver <https://pushover.net/>`__, `Slack <https://slack.com/>`__,
   `Telegram <https://telegram.org/>`__, `Join <http://joaoapps.com/join/>`__, and `Jabber
   (XMPP) <http://xmpp.org>`__

The system is built using a modular approach so support for other devices or actions can
be implemented easily. See also the `section on
architecture <https://home-assistant.io/developers/architecture/>`__
and the `section on creating your own
components <https://home-assistant.io/developers/creating_components/>`__.

If you run into issues while using Home Assistant or during development
of a component, check the `Home Assistant help
section <https://home-assistant.io/help/>`__ how to reach us.

.. |Build Status| image:: https://travis-ci.org/home-assistant/home-assistant.svg?branch=master
   :target: https://travis-ci.org/home-assistant/home-assistant
.. |Coverage Status| image:: https://img.shields.io/coveralls/home-assistant/home-assistant.svg
   :target: https://coveralls.io/r/home-assistant/home-assistant?branch=master
.. |Join the chat at https://gitter.im/home-assistant/home-assistant| image:: https://img.shields.io/badge/gitter-general-blue.svg
   :target: https://gitter.im/home-assistant/home-assistant?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
.. |Join the dev chat at https://gitter.im/home-assistant/home-assistant/devs| image:: https://img.shields.io/badge/gitter-development-yellowgreen.svg
   :target: https://gitter.im/home-assistant/home-assistant/devs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
.. |screenshot-states| image:: https://raw.github.com/home-assistant/home-assistant/master/docs/screenshots.png
   :target: https://home-assistant.io/demo/