forked from bitglue/home-assistant
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
2 changed files
with
99 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
# -*- coding: utf-8 -*- | ||
""" | ||
homeassistant.components.weblink | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
Adds links to external webpage | ||
For more details about this component, please refer to the documentation at | ||
https://home-assistant.io/components/webpage/ | ||
""" | ||
|
||
# The domain of your component. Should be equal to the name of your component | ||
import logging | ||
|
||
from homeassistant.helpers.entity import Entity | ||
from homeassistant.util import slugify | ||
|
||
DOMAIN = "weblink" | ||
|
||
# List of component names (string) your component depends upon | ||
DEPENDENCIES = [] | ||
|
||
ATTR_NAME = 'name' | ||
ATTR_URL = 'url' | ||
ATTR_ICON = 'icon' | ||
|
||
_LOGGER = logging.getLogger(__name__) | ||
|
||
|
||
def setup(hass, config): | ||
""" Setup weblink component. """ | ||
|
||
# States are in the format DOMAIN.OBJECT_ID | ||
|
||
links = config.get(DOMAIN) | ||
|
||
for link in links.get('entities'): | ||
if ATTR_NAME not in link or ATTR_URL not in link: | ||
_LOGGER.error("You need to set both %s and %s to add a %s", | ||
ATTR_NAME, ATTR_URL, DOMAIN) | ||
continue | ||
Link(hass, link.get(ATTR_NAME), link.get(ATTR_URL), | ||
link.get(ATTR_ICON)) | ||
|
||
# return boolean to indicate that initialization was successful | ||
return True | ||
|
||
|
||
class Link(Entity): | ||
""" Represent a link """ | ||
|
||
def __init__(self, hass, name, url, icon): | ||
""" Represents a link. """ | ||
self.hass = hass | ||
self._name = name | ||
self._url = url | ||
self._icon = icon | ||
self.entity_id = DOMAIN + '.%s' % slugify(name) | ||
self.update_ha_state() | ||
|
||
@property | ||
def icon(self): | ||
return self._icon | ||
|
||
@property | ||
def name(self): | ||
return self._name | ||
|
||
@property | ||
def state(self): | ||
return self._url |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
# -*- coding: utf-8 -*- | ||
import unittest | ||
|
||
import homeassistant.core as ha | ||
from homeassistant.components import weblink | ||
|
||
|
||
class TestComponentHistory(unittest.TestCase): | ||
""" Tests homeassistant.components.history module. """ | ||
|
||
def setUp(self): | ||
""" Test setup method. """ | ||
self.hass = ha.HomeAssistant() | ||
|
||
def tearDown(self): | ||
self.hass.stop() | ||
|
||
def test_setup(self): | ||
self.assertTrue(weblink.setup(self.hass, { | ||
weblink.DOMAIN: { | ||
'entities': [ | ||
{ | ||
weblink.ATTR_NAME: 'My router', | ||
weblink.ATTR_URL: 'http://127.0.0.1/' | ||
}, | ||
{} | ||
] | ||
} | ||
})) |