mirror of
https://github.com/home-assistant/core.git
synced 2025-07-24 21:57:51 +00:00
Added a demo mode
This commit is contained in:
parent
a4dd58cf5e
commit
ac8d70d547
@ -28,7 +28,7 @@ The system is built modular so support for other devices or actions can be imple
|
|||||||
|
|
||||||
## Installation instructions / Quick-start guide
|
## Installation instructions / Quick-start guide
|
||||||
|
|
||||||
Running Home Assistant requires that python3 is installed.
|
Running Home Assistant requires that python3 and the packages pyephem and requests are installed.
|
||||||
|
|
||||||
Run the following code to get up and running with the minimum setup:
|
Run the following code to get up and running with the minimum setup:
|
||||||
|
|
||||||
@ -40,7 +40,7 @@ pip3 install -r requirements.txt
|
|||||||
python3 start.py
|
python3 start.py
|
||||||
```
|
```
|
||||||
|
|
||||||
This will start the Home Assistant server and its web interface on [http://127.0.0.1:8123](http://127.0.0.1:8123). The default password is 'password'.
|
This will start the Home Assistant server and create an initial configuration file in `config/home-assistant.conf` that is setup for demo mode. It will launch its web interface on [http://127.0.0.1:8123](http://127.0.0.1:8123). The default password is 'password'.
|
||||||
|
|
||||||
If you're using Docker, you can use
|
If you're using Docker, you can use
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ If you're using Docker, you can use
|
|||||||
docker run -d --name="home-assistant" -v /path/to/homeassistant/config:/config -v /etc/localtime:/etc/localtime:ro -p 8123:8123 balloob/home-assistant
|
docker run -d --name="home-assistant" -v /path/to/homeassistant/config:/config -v /etc/localtime:/etc/localtime:ro -p 8123:8123 balloob/home-assistant
|
||||||
```
|
```
|
||||||
|
|
||||||
After you got the bare minimum running it is time to enable some components and get started. An example configuration file has been provided in [/config/home-assistant.conf.example](https://github.com/balloob/home-assistant/blob/master/config/home-assistant.conf.example).
|
After you got the demo mode running it is time to enable some real components and get started. An example configuration file has been provided in [/config/home-assistant.conf.example](https://github.com/balloob/home-assistant/blob/master/config/home-assistant.conf.example).
|
||||||
|
|
||||||
### Philips Hue
|
### Philips Hue
|
||||||
To get Philips Hue working you will have to connect Home Assistant to the Hue bridge.
|
To get Philips Hue working you will have to connect Home Assistant to the Hue bridge.
|
||||||
|
110
homeassistant/components/demo.py
Normal file
110
homeassistant/components/demo.py
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
"""
|
||||||
|
homeassistant.components.demo
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Sets up a demo environment that mimics interaction with devices
|
||||||
|
"""
|
||||||
|
import random
|
||||||
|
|
||||||
|
import homeassistant as ha
|
||||||
|
import homeassistant.components.group as group
|
||||||
|
from homeassistant.components import (SERVICE_TURN_ON, SERVICE_TURN_OFF,
|
||||||
|
STATE_ON, STATE_OFF, get_component,
|
||||||
|
extract_entity_ids)
|
||||||
|
from homeassistant.components.light import (ATTR_XY_COLOR, ATTR_BRIGHTNESS,
|
||||||
|
GROUP_NAME_ALL_LIGHTS)
|
||||||
|
from homeassistant.util import split_entity_id
|
||||||
|
|
||||||
|
DOMAIN = "demo"
|
||||||
|
|
||||||
|
DEPENDENCIES = []
|
||||||
|
|
||||||
|
|
||||||
|
def setup(hass, config):
|
||||||
|
""" Setup a demo environment. """
|
||||||
|
|
||||||
|
if config[DOMAIN].get('hide_demo_state') != '1':
|
||||||
|
hass.states.set('a.Demo_Mode', 'Enabled')
|
||||||
|
|
||||||
|
light_colors = [
|
||||||
|
[0.861, 0.3259],
|
||||||
|
[0.6389, 0.3028],
|
||||||
|
[0.1684, 0.0416]
|
||||||
|
]
|
||||||
|
|
||||||
|
def mock_turn_on(service):
|
||||||
|
""" Will fake the component has been turned on. """
|
||||||
|
for entity_id in extract_entity_ids(hass, service):
|
||||||
|
domain, _ = split_entity_id(entity_id)
|
||||||
|
|
||||||
|
if domain == "light":
|
||||||
|
data = {ATTR_BRIGHTNESS: 200,
|
||||||
|
ATTR_XY_COLOR: random.choice(light_colors)}
|
||||||
|
else:
|
||||||
|
data = None
|
||||||
|
|
||||||
|
hass.states.set(entity_id, STATE_ON, data)
|
||||||
|
|
||||||
|
def mock_turn_off(service):
|
||||||
|
""" Will fake the component has been turned off. """
|
||||||
|
for entity_id in extract_entity_ids(hass, service):
|
||||||
|
hass.states.set(entity_id, STATE_OFF)
|
||||||
|
|
||||||
|
# Setup sun
|
||||||
|
if ha.CONF_LATITUDE not in config[ha.DOMAIN]:
|
||||||
|
config[ha.DOMAIN][ha.CONF_LATITUDE] = '32.87336'
|
||||||
|
|
||||||
|
if ha.CONF_LONGITUDE not in config[ha.DOMAIN]:
|
||||||
|
config[ha.DOMAIN][ha.CONF_LONGITUDE] = '-117.22743'
|
||||||
|
|
||||||
|
get_component('sun').setup(hass, config)
|
||||||
|
|
||||||
|
# Setup fake lights
|
||||||
|
lights = ['light.Bowl', 'light.Ceiling', 'light.TV_Back_light',
|
||||||
|
'light.Bed_light']
|
||||||
|
|
||||||
|
hass.services.register('light', SERVICE_TURN_ON, mock_turn_on)
|
||||||
|
hass.services.register('light', SERVICE_TURN_OFF, mock_turn_off)
|
||||||
|
|
||||||
|
mock_turn_on(ha.ServiceCall('light', SERVICE_TURN_ON,
|
||||||
|
{'entity_id': lights[0:2]}))
|
||||||
|
mock_turn_off(ha.ServiceCall('light', SERVICE_TURN_OFF,
|
||||||
|
{'entity_id': lights[2:]}))
|
||||||
|
|
||||||
|
group.setup_group(hass, GROUP_NAME_ALL_LIGHTS, lights, False)
|
||||||
|
|
||||||
|
# Setup Wemo
|
||||||
|
wemos = ['wemo.AC', 'wemo.Christmas_Lights']
|
||||||
|
|
||||||
|
hass.services.register('wemo', SERVICE_TURN_ON, mock_turn_on)
|
||||||
|
hass.services.register('wemo', SERVICE_TURN_OFF, mock_turn_off)
|
||||||
|
|
||||||
|
mock_turn_on(ha.ServiceCall('wemo', SERVICE_TURN_ON,
|
||||||
|
{'entity_id': wemos[0:1]}))
|
||||||
|
mock_turn_off(ha.ServiceCall('wemo', SERVICE_TURN_OFF,
|
||||||
|
{'entity_id': wemos[1:]}))
|
||||||
|
|
||||||
|
# Setup room groups
|
||||||
|
group.setup_group(hass, 'living_room', lights[0:3] + wemos[0:1])
|
||||||
|
group.setup_group(hass, 'bedroom', [lights[3]] + wemos[1:])
|
||||||
|
|
||||||
|
# Setup process
|
||||||
|
hass.states.set("process.XBMC", STATE_ON)
|
||||||
|
|
||||||
|
# Setup device tracker
|
||||||
|
hass.states.set("device_tracker.Paulus", "home")
|
||||||
|
hass.states.set("device_tracker.Anne_Therese", "not_home")
|
||||||
|
hass.states.set("group.all_devices", "home",
|
||||||
|
{
|
||||||
|
"auto": True,
|
||||||
|
"entity_id": [
|
||||||
|
"device_tracker.Paulus",
|
||||||
|
"device_tracker.Anne_Therese"
|
||||||
|
]
|
||||||
|
})
|
||||||
|
|
||||||
|
# Setup chromecast
|
||||||
|
hass.states.set("chromecast.Living_Rm", "Netflix",
|
||||||
|
{'friendly_name': 'Living Room'})
|
||||||
|
|
||||||
|
return True
|
3
start.py
3
start.py
@ -16,7 +16,8 @@ else:
|
|||||||
if not os.path.isfile(config_path):
|
if not os.path.isfile(config_path):
|
||||||
with open(config_path, 'w') as conf:
|
with open(config_path, 'w') as conf:
|
||||||
conf.write("[http]\n")
|
conf.write("[http]\n")
|
||||||
conf.write("api_password=password\n")
|
conf.write("api_password=password\n\n")
|
||||||
|
conf.write("[demo]\n")
|
||||||
|
|
||||||
hass = homeassistant.bootstrap.from_config_file(config_path)
|
hass = homeassistant.bootstrap.from_config_file(config_path)
|
||||||
hass.start()
|
hass.start()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user