From 36e5878b2e3a741e2a022eca22dae716d48d6cae Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 2 Apr 2017 17:01:51 -0700 Subject: [PATCH] Move examples out (#6908) * Remove examples from main repo * Simplify README * Point screenshot for components at dev branch for now --- .gitignore | 11 - README.rst | 82 +---- config/configuration.yaml.example | 158 --------- config/custom_components/example.py | 149 -------- config/custom_components/hello_world.py | 27 -- config/custom_components/mqtt_example.py | 55 --- config/panels/react.html | 432 ----------------------- docs/screenshot-components.png | Bin 0 -> 47635 bytes 8 files changed, 9 insertions(+), 905 deletions(-) delete mode 100644 config/configuration.yaml.example delete mode 100644 config/custom_components/example.py delete mode 100644 config/custom_components/hello_world.py delete mode 100644 config/custom_components/mqtt_example.py delete mode 100644 config/panels/react.html create mode 100755 docs/screenshot-components.png diff --git a/.gitignore b/.gitignore index aa27aa435bd..d5c29180e09 100644 --- a/.gitignore +++ b/.gitignore @@ -1,15 +1,4 @@ config/* -!config/home-assistant.conf.default - -# There is not a better solution afaik.. -!config/custom_components -config/custom_components/* -!config/custom_components/example.py -!config/custom_components/hello_world.py -!config/custom_components/mqtt_example.py -!config/panels -config/panels/* -!config/panels/react.html tests/testing_config/deps tests/testing_config/home-assistant.log diff --git a/README.rst b/README.rst index 2b166cd9a13..ec0a770b1da 100644 --- a/README.rst +++ b/README.rst @@ -1,9 +1,7 @@ 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. +Home Assistant is a home automation platform running on Python 3. It is to be able to track and control all devices at home and offer a platform for automating control. To get started: @@ -12,83 +10,19 @@ To get started: python3 -m pip install homeassistant hass --open-ui -Check out `the website `__ for `a -demo `__, installation instructions, -tutorials and documentation. +Check out `home-assistant.io `__ for `a +demo `__, `installation instructions `__, +`tutorials `__ and `documentation `__. |screenshot-states| -Examples of devices Home Assistant can interface with: +|screenshot-components| -- Monitoring connected devices to a wireless router: - `OpenWrt `__, - `Tomato `__, - `Netgear `__, - `DD-WRT `__, - `TPLink `__, - `ASUSWRT `__, - `Xiaomi `__ and any SNMP - capable Linksys WAP/WRT -- `Philips Hue `__ lights, - `WeMo `__ - switches, `Edimax `__ switches, - `Efergy `__ energy monitoring, and - `Tellstick `__ devices and - sensors -- `Google - Chromecasts `__, - `Music Player Daemon `__, `Logitech - Squeezebox `__, - `Plex `__, `Kodi (XBMC) `__, - iTunes (by way of - `itunes-api `__), and Amazon - Fire TV (by way of - `python-firetv `__) -- Support for - `ISY994 `__ - (Insteon and X10 devices), `Z-Wave `__, `Nest - Thermostats `__, - `RFXtrx `__, - `Arduino `__, `Raspberry - Pi `__, and - `Modbus `__ -- Interaction with `IFTTT `__ -- Integrate data from the `Bitcoin `__ network, - meteorological data from - `OpenWeatherMap `__ and - `Forecast.io `__, - `Transmission `__, or - `SABnzbd `__. -- `See full list of supported - devices `__ - -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 `__ - and can interface with MQTT for easy integration with other projects - like `OwnTracks `__ -- Allow sending notifications using - `Instapush `__, `Notify My Android - (NMA) `__, - `PushBullet `__, - `PushOver `__, - `Slack `__, - `Telegram `__, `Join `__, and `Jabber - (XMPP) `__ - -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 `__ -and the `section on creating your own +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 `__ and the `section on creating your own components `__. If you run into issues while using Home Assistant or during development -of a component, check the `Home Assistant help -section `__ of our website for further help and information. +of a component, check the `Home Assistant help section `__ of our website for further help and information. .. |Build Status| image:: https://travis-ci.org/home-assistant/home-assistant.svg?branch=master :target: https://travis-ci.org/home-assistant/home-assistant @@ -100,3 +34,5 @@ section `__ of our website for further help and :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/ +.. |screenshot-components| image:: https://raw.github.com/home-assistant/home-assistant/dev/docs/screenshot-components.png + :target: https://home-assistant.io/components/ \ No newline at end of file diff --git a/config/configuration.yaml.example b/config/configuration.yaml.example deleted file mode 100644 index 08b0324371f..00000000000 --- a/config/configuration.yaml.example +++ /dev/null @@ -1,158 +0,0 @@ -homeassistant: - # Omitted values in this section will be auto detected using freegeoip.io - - # Location required to calculate the time the sun rises and sets. - # Coordinates are also used for location for weather related components. - # Google Maps can be used to determine more precise GPS coordinates. - latitude: 32.87336 - longitude: 117.22743 - - # Impacts weather/sunrise data - elevation: 665 - - # 'metric' for Metric System, 'imperial' for imperial system - unit_system: metric - - # Pick yours from here: - # http://en.wikipedia.org/wiki/List_of_tz_database_time_zones - time_zone: America/Los_Angeles - - # Name of the location where Home Assistant is running - name: Home - -http: - api_password: mypass - # Set to 1 to enable development mode - # development: 1 - -# Enable the frontend -frontend: - -light: -# platform: hue - -wink: - # Get your token at https://winkbearertoken.appspot.com - access_token: 'YOUR_TOKEN' - -device_tracker: - # The following tracker are available: - # https://home-assistant.io/components/#presence-detection - platform: netgear - host: 192.168.1.1 - username: admin - password: PASSWORD - -switch: - platform: wemo - -climate: - platform: nest - # Required: username and password that are used to login to the Nest thermostat. - username: myemail@mydomain.com - password: mypassword - -downloader: - download_dir: downloads - -notify: - platform: pushbullet - api_key: ABCDEFGHJKLMNOPQRSTUVXYZ - -device_sun_light_trigger: - # Optional: specify a specific light/group of lights that has to be turned on - light_group: group.living_room - # Optional: specify which light profile to use when turning lights on - light_profile: relax - # Optional: disable lights being turned off when everybody leaves the house - # disable_turn_off: 1 - -# A comma separated list of states that have to be tracked as a single group -# Grouped states should share the same type of states (ON/OFF or HOME/NOT_HOME) -# You can also have groups within groups. -# https://home-assistant.io/components/group/ -group: - default_view: - view: yes - entities: - - group.awesome_people - - group.climate - kitchen: - name: Kitchen - entities: - - switch.kitchen_pin_3 - upstairs: - name: Kids - icon: mdi:account-multiple - view: yes - entities: - - input_boolean.notify_home - - camera.demo_camera - -browser: -keyboard: - -# https://home-assistant.io/getting-started/automation/ -automation: - - alias: Turn on light when sun sets - trigger: - platform: sun - event: sunset - offset: "-01:00:00" - condition: - condition: state - entity_id: group.all_devices - state: 'home' - action: - service: light.turn_on - -# Another way to do is to collect all entries under one "sensor:" -# sensor: -# - platform: mqtt -# name: "MQTT Sensor 1" -# - platform: mqtt -# name: "MQTT Sensor 2" -# -# Details: https://home-assistant.io/getting-started/devices/ - -sensor: - platform: systemmonitor - resources: - - type: 'disk_use_percent' - arg: '/' - - type: 'disk_use_percent' - arg: '/home' - -sensor 2: - platform: cpuspeed - -script: - wakeup: - alias: Wake Up - sequence: - - event: LOGBOOK_ENTRY - event_data: - name: Paulus - message: is waking up - entity_id: device_tracker.paulus - domain: light - - alias: Bedroom lights on - service: light.turn_on - data: - entity_id: group.bedroom - brightness: 100 - - delay: - minutes: 1 - - alias: Living room lights on - service: light.turn_on - data: - entity_id: group.living_room - -scene: - - name: Romantic - entities: - light.tv_back_light: on - light.ceiling: - state: on - xy_color: [0.33, 0.66] - brightness: 200 diff --git a/config/custom_components/example.py b/config/custom_components/example.py deleted file mode 100644 index 4d3df9328d8..00000000000 --- a/config/custom_components/example.py +++ /dev/null @@ -1,149 +0,0 @@ -""" -Example of a custom component. - -Example component to target an entity_id to: - - turn it on at 7AM in the morning - - turn it on if anyone comes home and it is off - - turn it off if all lights are turned off - - turn it off if all people leave the house - - offer a service to turn it on for 10 seconds - -Configuration: - -To use the Example custom component you will need to add the following to -your configuration.yaml file. - -example: - target: TARGET_ENTITY - -Variable: - -target -*Required -TARGET_ENTITY should be one of your devices that can be turned on and off, -ie a light or a switch. Example value could be light.Ceiling or switch.AC -(if you have these devices with those names). -""" -import time -import logging - -from homeassistant.const import STATE_HOME, STATE_NOT_HOME, STATE_ON, STATE_OFF -from homeassistant.helpers import validate_config -from homeassistant.helpers.event_decorators import \ - track_state_change, track_time_change -from homeassistant.helpers.service import service -import homeassistant.components as core -from homeassistant.components import device_tracker -from homeassistant.components import light - -# The domain of your component. Should be equal to the name of your component. -DOMAIN = "example" - -# List of component names (string) your component depends upon. -# We depend on group because group will be loaded after all the components that -# initialize devices have been setup. -DEPENDENCIES = ['group', 'device_tracker', 'light'] - -# Configuration key for the entity id we are targeting. -CONF_TARGET = 'target' - -# Variable for storing configuration parameters. -TARGET_ID = None - -# Name of the service that we expose. -SERVICE_FLASH = 'flash' - -# Shortcut for the logger -_LOGGER = logging.getLogger(__name__) - - -def setup(hass, config): - """Setup example component.""" - global TARGET_ID - - # Validate that all required config options are given. - if not validate_config(config, {DOMAIN: [CONF_TARGET]}, _LOGGER): - return False - - TARGET_ID = config[DOMAIN][CONF_TARGET] - - # Validate that the target entity id exists. - if hass.states.get(TARGET_ID) is None: - _LOGGER.error("Target entity id %s does not exist", - TARGET_ID) - - # Tell the bootstrapper that we failed to initialize and clear the - # stored target id so our functions don't run. - TARGET_ID = None - return False - - # Tell the bootstrapper that we initialized successfully. - return True - - -@track_state_change(device_tracker.ENTITY_ID_ALL_DEVICES) -def track_devices(hass, entity_id, old_state, new_state): - """Called when the group.all devices change state.""" - # If the target id is not set, return - if not TARGET_ID: - return - - # If anyone comes home and the entity is not on, turn it on. - if new_state.state == STATE_HOME and not core.is_on(hass, TARGET_ID): - - core.turn_on(hass, TARGET_ID) - - # If all people leave the house and the entity is on, turn it off. - elif new_state.state == STATE_NOT_HOME and core.is_on(hass, TARGET_ID): - - core.turn_off(hass, TARGET_ID) - - -@track_time_change(hour=7, minute=0, second=0) -def wake_up(hass, now): - """Turn light on in the morning. - - Turn the light on at 7 AM if there are people home and it is not already - on. - """ - if not TARGET_ID: - return - - if device_tracker.is_on(hass) and not core.is_on(hass, TARGET_ID): - _LOGGER.info('People home at 7AM, turning it on') - core.turn_on(hass, TARGET_ID) - - -@track_state_change(light.ENTITY_ID_ALL_LIGHTS, STATE_ON, STATE_OFF) -def all_lights_off(hass, entity_id, old_state, new_state): - """If all lights turn off, turn off.""" - if not TARGET_ID: - return - - if core.is_on(hass, TARGET_ID): - _LOGGER.info('All lights have been turned off, turning it off') - core.turn_off(hass, TARGET_ID) - - -@service(DOMAIN, SERVICE_FLASH) -def flash_service(hass, call): - """Service that will toggle the target. - - Set the light to off for 10 seconds if on and vice versa. - """ - if not TARGET_ID: - return - - if core.is_on(hass, TARGET_ID): - core.turn_off(hass, TARGET_ID) - - time.sleep(10) - - core.turn_on(hass, TARGET_ID) - - else: - core.turn_on(hass, TARGET_ID) - - time.sleep(10) - - core.turn_off(hass, TARGET_ID) diff --git a/config/custom_components/hello_world.py b/config/custom_components/hello_world.py deleted file mode 100644 index b35e9f6c0ed..00000000000 --- a/config/custom_components/hello_world.py +++ /dev/null @@ -1,27 +0,0 @@ -""" -The "hello world" custom component. - -This component implements the bare minimum that a component should implement. - -Configuration: - -To use the hello_word component you will need to add the following to your -configuration.yaml file. - -hello_world: -""" - -# The domain of your component. Should be equal to the name of your component. -DOMAIN = "hello_world" - -# List of component names (string) your component depends upon. -DEPENDENCIES = [] - - -def setup(hass, config): - """Setup our skeleton component.""" - # States are in the format DOMAIN.OBJECT_ID. - hass.states.set('hello_world.Hello_World', 'Works!') - - # Return boolean to indicate that initialization was successfully. - return True diff --git a/config/custom_components/mqtt_example.py b/config/custom_components/mqtt_example.py deleted file mode 100644 index 451a60deef4..00000000000 --- a/config/custom_components/mqtt_example.py +++ /dev/null @@ -1,55 +0,0 @@ -""" -Example of a custom MQTT component. - -Shows how to communicate with MQTT. Follows a topic on MQTT and updates the -state of an entity to the last message received on that topic. - -Also offers a service 'set_state' that will publish a message on the topic that -will be passed via MQTT to our message received listener. Call the service with -example payload {"new_state": "some new state"}. - -Configuration: - -To use the mqtt_example component you will need to add the following to your -configuration.yaml file. - -mqtt_example: - topic: "home-assistant/mqtt_example" -""" -import homeassistant.loader as loader - -# The domain of your component. Should be equal to the name of your component. -DOMAIN = "mqtt_example" - -# List of component names (string) your component depends upon. -DEPENDENCIES = ['mqtt'] - -CONF_TOPIC = 'topic' -DEFAULT_TOPIC = 'home-assistant/mqtt_example' - - -def setup(hass, config): - """Setup the MQTT example component.""" - mqtt = loader.get_component('mqtt') - topic = config[DOMAIN].get('topic', DEFAULT_TOPIC) - entity_id = 'mqtt_example.last_message' - - # Listen to a message on MQTT. - def message_received(topic, payload, qos): - """A new MQTT message has been received.""" - hass.states.set(entity_id, payload) - - mqtt.subscribe(hass, topic, message_received) - - hass.states.set(entity_id, 'No messages') - - # Service to publish a message on MQTT. - def set_state_service(call): - """Service to send a message.""" - mqtt.publish(hass, topic, call.data.get('new_state')) - - # Register our service with Home Assistant. - hass.services.register(DOMAIN, 'set_state', set_state_service) - - # Return boolean to indicate that initialization was successfully. - return True diff --git a/config/panels/react.html b/config/panels/react.html deleted file mode 100644 index dc2735cf759..00000000000 --- a/config/panels/react.html +++ /dev/null @@ -1,432 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/docs/screenshot-components.png b/docs/screenshot-components.png new file mode 100755 index 0000000000000000000000000000000000000000..247f3073a5e228cb7118ecbbecacefe4f03f5706 GIT binary patch literal 47635 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