Add configuration
This commit is contained in:
parent
011400bb38
commit
53f2adf129
43
README.md
43
README.md
@ -15,6 +15,7 @@ developers will have use for, please open a PR to add it :)
|
|||||||
***
|
***
|
||||||
README content if this was a published component:
|
README content if this was a published component:
|
||||||
***
|
***
|
||||||
|
|
||||||
# blueprint
|
# blueprint
|
||||||
|
|
||||||
[![BuyMeCoffee][buymecoffeebedge]][buymecoffee]
|
[![BuyMeCoffee][buymecoffeebedge]][buymecoffee]
|
||||||
@ -28,6 +29,7 @@ Platform | Description
|
|||||||
-- | --
|
-- | --
|
||||||
`binary_sensor` | Show something `True` or `False`
|
`binary_sensor` | Show something `True` or `False`
|
||||||
`sensor` | Show info from blueprint API.
|
`sensor` | Show info from blueprint API.
|
||||||
|
`switch`| Switchable device.
|
||||||
|
|
||||||
![example][exampleimg]
|
![example][exampleimg]
|
||||||
|
|
||||||
@ -47,14 +49,55 @@ custom_components/blueprint/__init__.py
|
|||||||
custom_components/blueprint/binary_sensor.py
|
custom_components/blueprint/binary_sensor.py
|
||||||
custom_components/blueprint/const.py
|
custom_components/blueprint/const.py
|
||||||
custom_components/blueprint/sensor.py
|
custom_components/blueprint/sensor.py
|
||||||
|
custom_components/blueprint/sensor.py
|
||||||
```
|
```
|
||||||
|
|
||||||
## Example configuration.yaml
|
## Example configuration.yaml
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
blueprint:
|
blueprint:
|
||||||
|
binary_sensor:
|
||||||
|
- enabled: true
|
||||||
|
name: My custom name
|
||||||
|
sensor:
|
||||||
|
- enabled: true
|
||||||
|
name: My custom name
|
||||||
|
switch:
|
||||||
|
- enabled: true
|
||||||
|
name: My custom name
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Configuration options
|
||||||
|
|
||||||
|
Key | Type | Required | Description
|
||||||
|
-- | -- | -- | --
|
||||||
|
`binary_sensor` | `list` | `False` | Configuration for the `binary_sensor` platform.
|
||||||
|
`sensor` | `list` | `False` | Configuration for the `sensor` platform.
|
||||||
|
`switch` | `list` | `False` | Configuration for the `switch` platform.
|
||||||
|
|
||||||
|
|
||||||
|
### Configuration options for `binary_sensor` list
|
||||||
|
|
||||||
|
Key | Type | Required | Default | Description
|
||||||
|
-- | -- | -- | -- | --
|
||||||
|
`enabled` | `boolean` | `False` | `False` | Boolean to enable/disable the platform.
|
||||||
|
`name` | `string` | `False` | `blueprint` | Custom name for the entity.
|
||||||
|
|
||||||
|
### Configuration options for `sensor` list
|
||||||
|
|
||||||
|
Key | Type | Required | Default | Description
|
||||||
|
-- | -- | -- | -- | --
|
||||||
|
`enabled` | `boolean` | `False` | `False` | Boolean to enable/disable the platform.
|
||||||
|
`name` | `string` | `False` | `blueprint` | Custom name for the entity.
|
||||||
|
|
||||||
|
### Configuration options for `switch` list
|
||||||
|
|
||||||
|
Key | Type | Required | Default | Description
|
||||||
|
-- | -- | -- | -- | --
|
||||||
|
`enabled` | `boolean` | `False` | `False` | Boolean to enable/disable the platform.
|
||||||
|
`name` | `string` | `False` | `blueprint` | Custom name for the entity.
|
||||||
|
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
[exampleimg]: example.png
|
[exampleimg]: example.png
|
||||||
|
@ -8,17 +8,42 @@ import os
|
|||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
import logging
|
import logging
|
||||||
import requests
|
import requests
|
||||||
|
import voluptuous as vol
|
||||||
|
import homeassistant.helpers.config_validation as cv
|
||||||
from homeassistant.helpers import discovery
|
from homeassistant.helpers import discovery
|
||||||
from homeassistant.util import Throttle
|
from homeassistant.util import Throttle
|
||||||
from .const import (
|
from .const import (
|
||||||
DOMAIN_DATA, DOMAIN, ISSUE_URL, PLATFORMS, REQUIRED_FILES, STARTUP, URL,
|
DOMAIN_DATA, DOMAIN, ISSUE_URL, PLATFORMS, REQUIRED_FILES, STARTUP, URL,
|
||||||
VERSION)
|
VERSION, CONF_BINARY_SENSOR, CONF_SENSOR, CONF_SWITCH, CONF_ENABLED,
|
||||||
|
CONF_NAME, DEAFULT_NAME)
|
||||||
|
|
||||||
MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=30)
|
MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=30)
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
# pylint: disable=unused-argument
|
BINARY_SENSOR_SCHEMA = vol.Schema({
|
||||||
|
vol.Optional(CONF_ENABLED, default=False): cv.boolean,
|
||||||
|
vol.Optional(CONF_NAME, default=DEAFULT_NAME): cv.string,
|
||||||
|
})
|
||||||
|
|
||||||
|
SENSOR_SCHEMA = vol.Schema({
|
||||||
|
vol.Optional(CONF_ENABLED, default=False): cv.boolean,
|
||||||
|
vol.Optional(CONF_NAME, default=DEAFULT_NAME): cv.string,
|
||||||
|
})
|
||||||
|
|
||||||
|
SWITCH_SCHEMA = vol.Schema({
|
||||||
|
vol.Optional(CONF_ENABLED, default=False): cv.boolean,
|
||||||
|
vol.Optional(CONF_NAME, default=DEAFULT_NAME): cv.string,
|
||||||
|
})
|
||||||
|
|
||||||
|
CONFIG_SCHEMA = vol.Schema({
|
||||||
|
DOMAIN: vol.Schema({
|
||||||
|
vol.Optional(CONF_BINARY_SENSOR): vol.All(
|
||||||
|
cv.ensure_list, [BINARY_SENSOR_SCHEMA]),
|
||||||
|
vol.Optional(CONF_SENSOR): vol.All(cv.ensure_list, [SENSOR_SCHEMA]),
|
||||||
|
vol.Optional(CONF_SWITCH): vol.All(cv.ensure_list, [SWITCH_SCHEMA]),
|
||||||
|
}),
|
||||||
|
}, extra=vol.ALLOW_EXTRA)
|
||||||
|
|
||||||
|
|
||||||
async def async_setup(hass, config):
|
async def async_setup(hass, config):
|
||||||
@ -38,9 +63,24 @@ async def async_setup(hass, config):
|
|||||||
|
|
||||||
# Load platforms
|
# Load platforms
|
||||||
for platform in PLATFORMS:
|
for platform in PLATFORMS:
|
||||||
hass.async_create_task(
|
# Get platform spesific configuration
|
||||||
discovery.async_load_platform(hass, platform, DOMAIN, {}, config)
|
platform_config = config[DOMAIN].get(platform, {})
|
||||||
)
|
|
||||||
|
# If platform is not enabled, skip.
|
||||||
|
if not platform_config:
|
||||||
|
continue
|
||||||
|
|
||||||
|
for entry in platform_config:
|
||||||
|
entry_config = platform_config[entry]
|
||||||
|
|
||||||
|
# If entry is not enabled, skip.
|
||||||
|
if not platform_config.get(CONF_ENABLED):
|
||||||
|
continue
|
||||||
|
|
||||||
|
hass.async_create_task(
|
||||||
|
discovery.async_load_platform(
|
||||||
|
hass, platform, DOMAIN, entry_config, config)
|
||||||
|
)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@Throttle(MIN_TIME_BETWEEN_UPDATES)
|
@Throttle(MIN_TIME_BETWEEN_UPDATES)
|
||||||
|
@ -2,23 +2,24 @@
|
|||||||
from homeassistant.components.binary_sensor import BinarySensorDevice
|
from homeassistant.components.binary_sensor import BinarySensorDevice
|
||||||
from . import update_data
|
from . import update_data
|
||||||
from .const import (
|
from .const import (
|
||||||
BINARY_SENSOR_DEVICE_CLASS, DOMAIN as NAME, DOMAIN_DATA, SENSOR_ICON)
|
BINARY_SENSOR_DEVICE_CLASS, DOMAIN_DATA, SENSOR_ICON)
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_platform(
|
async def async_setup_platform(
|
||||||
hass, config, async_add_entities, discovery_info=None
|
hass, config, async_add_entities, discovery_info=None
|
||||||
): # pylint: disable=unused-argument
|
): # pylint: disable=unused-argument
|
||||||
"""Setup sensor platform."""
|
"""Setup sensor platform."""
|
||||||
async_add_entities([BlueprintBinarySensor(hass)], True)
|
async_add_entities([BlueprintBinarySensor(hass, discovery_info)], True)
|
||||||
|
|
||||||
|
|
||||||
class BlueprintBinarySensor(BinarySensorDevice):
|
class BlueprintBinarySensor(BinarySensorDevice):
|
||||||
"""blueprint Sensor class."""
|
"""blueprint Sensor class."""
|
||||||
|
|
||||||
def __init__(self, hass):
|
def __init__(self, hass, config):
|
||||||
self.hass = hass
|
self.hass = hass
|
||||||
self.attr = {}
|
self.attr = {}
|
||||||
self._status = False
|
self._status = False
|
||||||
|
self._name = config['name']
|
||||||
|
|
||||||
async def async_update(self):
|
async def async_update(self):
|
||||||
"""Update the sensor."""
|
"""Update the sensor."""
|
||||||
@ -41,7 +42,7 @@ class BlueprintBinarySensor(BinarySensorDevice):
|
|||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
"""Return the name of the sensor."""
|
"""Return the name of the sensor."""
|
||||||
return NAME
|
return self._name
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def device_class(self):
|
def device_class(self):
|
||||||
|
@ -25,3 +25,14 @@ SENSOR_ICON = "mdi:format-quote-close"
|
|||||||
|
|
||||||
# Device classes
|
# Device classes
|
||||||
BINARY_SENSOR_DEVICE_CLASS = 'connectivity'
|
BINARY_SENSOR_DEVICE_CLASS = 'connectivity'
|
||||||
|
|
||||||
|
# Configuration
|
||||||
|
CONF_BINARY_SENSOR = 'binary_sensor'
|
||||||
|
CONF_SENSOR = 'sensor'
|
||||||
|
CONF_SWITCH = 'switch'
|
||||||
|
CONF_ENABLED = 'enabled'
|
||||||
|
CONF_NAME = 'name'
|
||||||
|
|
||||||
|
|
||||||
|
# Defaults
|
||||||
|
DEAFULT_NAME = DOMAIN
|
||||||
|
@ -1,23 +1,24 @@
|
|||||||
"""Sensor platform for blueprint."""
|
"""Sensor platform for blueprint."""
|
||||||
from homeassistant.helpers.entity import Entity
|
from homeassistant.helpers.entity import Entity
|
||||||
from . import update_data
|
from . import update_data
|
||||||
from .const import DOMAIN as NAME, DOMAIN_DATA, SENSOR_ICON
|
from .const import DOMAIN_DATA, SENSOR_ICON
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_platform(
|
async def async_setup_platform(
|
||||||
hass, config, async_add_entities, discovery_info=None
|
hass, config, async_add_entities, discovery_info=None
|
||||||
): # pylint: disable=unused-argument
|
): # pylint: disable=unused-argument
|
||||||
"""Setup sensor platform."""
|
"""Setup sensor platform."""
|
||||||
async_add_entities([BlueprintSensor(hass)], True)
|
async_add_entities([BlueprintSensor(hass, discovery_info)], True)
|
||||||
|
|
||||||
|
|
||||||
class BlueprintSensor(Entity):
|
class BlueprintSensor(Entity):
|
||||||
"""blueprint Sensor class."""
|
"""blueprint Sensor class."""
|
||||||
|
|
||||||
def __init__(self, hass):
|
def __init__(self, hass, config):
|
||||||
self.hass = hass
|
self.hass = hass
|
||||||
self.attr = {}
|
self.attr = {}
|
||||||
self._state = None
|
self._state = None
|
||||||
|
self._name = config['name']
|
||||||
|
|
||||||
async def async_update(self):
|
async def async_update(self):
|
||||||
"""Update the sensor."""
|
"""Update the sensor."""
|
||||||
@ -40,7 +41,7 @@ class BlueprintSensor(Entity):
|
|||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
"""Return the name of the sensor."""
|
"""Return the name of the sensor."""
|
||||||
return NAME
|
return self._name
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def state(self):
|
def state(self):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user