mirror of
https://github.com/home-assistant/core.git
synced 2025-07-27 23:27:37 +00:00
Moved bootstrap code to a seperate bootstrap module.
This commit is contained in:
parent
7dfbff31f5
commit
0d156ecbf0
@ -1,8 +1,12 @@
|
||||
[common]
|
||||
latitude=32.87336
|
||||
longitude=-117.22743
|
||||
|
||||
[httpinterface]
|
||||
api_password=mypass
|
||||
|
||||
[hue]
|
||||
|
||||
[tomato]
|
||||
host=192.168.1.1
|
||||
username=admin
|
||||
|
91
homeassistant/bootstrap.py
Normal file
91
homeassistant/bootstrap.py
Normal file
@ -0,0 +1,91 @@
|
||||
"""
|
||||
Provides methods to bootstrap a home assistant instance.
|
||||
"""
|
||||
|
||||
import ConfigParser
|
||||
|
||||
import homeassistant as ha
|
||||
import homeassistant.observers as observers
|
||||
import homeassistant.actors as actors
|
||||
import homeassistant.httpinterface as httpinterface
|
||||
|
||||
def from_config_file(config_path):
|
||||
""" Starts home assistant with all possible functionality
|
||||
based on a config file. """
|
||||
|
||||
# Read config
|
||||
config = ConfigParser.SafeConfigParser()
|
||||
config.read(config_path)
|
||||
|
||||
# Init core
|
||||
eventbus = ha.EventBus()
|
||||
statemachine = ha.StateMachine(eventbus)
|
||||
|
||||
# Init observers
|
||||
# Device scanner
|
||||
if config.has_option('tomato', 'host') and \
|
||||
config.has_option('tomato', 'username') and \
|
||||
config.has_option('tomato', 'password') and \
|
||||
config.has_option('tomato', 'http_id'):
|
||||
|
||||
device_scanner = observers.TomatoDeviceScanner(
|
||||
config.get('tomato','host'),
|
||||
config.get('tomato','username'),
|
||||
config.get('tomato','password'),
|
||||
config.get('tomato','http_id'))
|
||||
|
||||
else:
|
||||
device_scanner = None
|
||||
|
||||
|
||||
# Device Tracker
|
||||
if device_scanner:
|
||||
device_tracker = observers.DeviceTracker(eventbus, statemachine,
|
||||
device_scanner)
|
||||
else:
|
||||
device_tracker = None
|
||||
|
||||
|
||||
# Sun tracker
|
||||
if config.has_option("common", "latitude") and \
|
||||
config.has_option("common", "longitude"):
|
||||
|
||||
observers.track_sun(eventbus, statemachine,
|
||||
config.get("common","latitude"),
|
||||
config.get("common","longitude"))
|
||||
|
||||
# Init actors
|
||||
# Light control
|
||||
if config.has_section("hue"):
|
||||
if config.has_option("hue", "host"):
|
||||
hue_host = config.get("hue", "host")
|
||||
else:
|
||||
hue_host = None
|
||||
|
||||
light_control = actors.HueLightControl(hue_host)
|
||||
|
||||
|
||||
# Light trigger
|
||||
if light_control:
|
||||
actors.LightTrigger(eventbus, statemachine,
|
||||
device_tracker, light_control)
|
||||
|
||||
|
||||
if config.has_option("chromecast", "host"):
|
||||
actors.setup_chromecast(eventbus, config.get("chromecast", "host"))
|
||||
|
||||
|
||||
if config.has_option("downloader", "download_dir"):
|
||||
actors.setup_file_downloader(eventbus,
|
||||
config.get("downloader", "download_dir"))
|
||||
|
||||
actors.setup_webbrowser(eventbus)
|
||||
actors.setup_media_buttons(eventbus)
|
||||
|
||||
# Init HTTP interface
|
||||
if config.has_option("httpinterface", "api_password"):
|
||||
httpinterface.HTTPInterface(eventbus, statemachine,
|
||||
config.get("httpinterface","api_password"))
|
||||
|
||||
|
||||
ha.start_home_assistant(eventbus)
|
@ -21,8 +21,8 @@ import homeassistant as ha
|
||||
import homeassistant.util as util
|
||||
|
||||
STATE_CATEGORY_SUN = "weather.sun"
|
||||
STATE_CATEGORY_NEXT_SUN_RISING = "weather.next_sun_rising"
|
||||
STATE_CATEGORY_NEXT_SUN_SETTING = "weather.next_sun_setting"
|
||||
STATE_CATEGORY_NEXT_SUN_RISING = "weather.sun.next_rising"
|
||||
STATE_CATEGORY_NEXT_SUN_SETTING = "weather.sun.next_setting"
|
||||
STATE_CATEGORY_ALL_DEVICES = 'all_devices'
|
||||
STATE_CATEGORY_DEVICE_FORMAT = '{}'
|
||||
|
||||
|
41
start.py
41
start.py
@ -1,43 +1,6 @@
|
||||
#!/usr/bin/python2
|
||||
""" Starts home assistant with all possible functionality. """
|
||||
|
||||
from ConfigParser import SafeConfigParser
|
||||
import homeassistant.bootstrap
|
||||
|
||||
from homeassistant import StateMachine, EventBus, start_home_assistant
|
||||
from homeassistant import observers
|
||||
from homeassistant import actors
|
||||
from homeassistant.httpinterface import HTTPInterface
|
||||
|
||||
# Read config
|
||||
config = SafeConfigParser()
|
||||
config.read("home-assistant.conf")
|
||||
|
||||
# Init core
|
||||
eventbus = EventBus()
|
||||
statemachine = StateMachine(eventbus)
|
||||
|
||||
# Init observers
|
||||
tomato = observers.TomatoDeviceScanner(config.get('tomato','host'),
|
||||
config.get('tomato','username'),
|
||||
config.get('tomato','password'),
|
||||
config.get('tomato','http_id'))
|
||||
|
||||
devicetracker = observers.DeviceTracker(eventbus, statemachine, tomato)
|
||||
|
||||
observers.track_sun(eventbus, statemachine,
|
||||
config.get("common","latitude"),
|
||||
config.get("common","longitude"))
|
||||
|
||||
# Init actors
|
||||
actors.LightTrigger(eventbus, statemachine,
|
||||
devicetracker, actors.HueLightControl())
|
||||
|
||||
actors.setup_chromecast(eventbus, config.get("chromecast", "host"))
|
||||
actors.setup_file_downloader(eventbus, config.get("downloader", "download_dir"))
|
||||
actors.setup_webbrowser(eventbus)
|
||||
actors.setup_media_buttons(eventbus)
|
||||
|
||||
# Init HTTP interface
|
||||
HTTPInterface(eventbus, statemachine, config.get("common","api_password"))
|
||||
|
||||
start_home_assistant(eventbus)
|
||||
homeassistant.bootstrap.from_config_file("home-assistant.conf")
|
||||
|
Loading…
x
Reference in New Issue
Block a user