minor changes.
This commit is contained in:
parent
c252626d3a
commit
f9b1c6ec4f
|
@ -0,0 +1,292 @@
|
||||||
|
"""Support for monitoring OctoPrint 3D printers."""
|
||||||
|
import logging
|
||||||
|
import time
|
||||||
|
|
||||||
|
from aiohttp.hdrs import CONTENT_TYPE
|
||||||
|
import requests
|
||||||
|
import voluptuous as vol
|
||||||
|
|
||||||
|
from homeassistant.components.discovery import SERVICE_OCTOPRINT
|
||||||
|
from homeassistant.const import (
|
||||||
|
CONF_API_KEY,
|
||||||
|
CONF_BINARY_SENSORS,
|
||||||
|
CONF_HOST,
|
||||||
|
CONF_MONITORED_CONDITIONS,
|
||||||
|
CONF_NAME,
|
||||||
|
CONF_PATH,
|
||||||
|
CONF_PORT,
|
||||||
|
CONF_SENSORS,
|
||||||
|
CONF_SSL,
|
||||||
|
CONTENT_TYPE_JSON,
|
||||||
|
TEMP_CELSIUS,
|
||||||
|
TIME_SECONDS,
|
||||||
|
UNIT_PERCENTAGE,
|
||||||
|
)
|
||||||
|
from homeassistant.helpers import discovery
|
||||||
|
import homeassistant.helpers.config_validation as cv
|
||||||
|
from homeassistant.helpers.discovery import load_platform
|
||||||
|
from homeassistant.util import slugify as util_slugify
|
||||||
|
|
||||||
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
CONF_BED = "bed"
|
||||||
|
CONF_NUMBER_OF_TOOLS = "number_of_tools"
|
||||||
|
|
||||||
|
DEFAULT_NAME = "OctoPrint"
|
||||||
|
DOMAIN = "octoprint"
|
||||||
|
|
||||||
|
|
||||||
|
def has_all_unique_names(value):
|
||||||
|
"""Validate that printers have an unique name."""
|
||||||
|
names = [util_slugify(printer["name"]) for printer in value]
|
||||||
|
vol.Schema(vol.Unique())(names)
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
|
def ensure_valid_path(value):
|
||||||
|
"""Validate the path, ensuring it starts and ends with a /."""
|
||||||
|
vol.Schema(cv.string)(value)
|
||||||
|
if value[0] != "/":
|
||||||
|
value = f"/{value}"
|
||||||
|
if value[-1] != "/":
|
||||||
|
value += "/"
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
|
BINARY_SENSOR_TYPES = {
|
||||||
|
# API Endpoint, Group, Key, unit
|
||||||
|
"Printing": ["printer", "state", "printing", None],
|
||||||
|
"Printing Error": ["printer", "state", "error", None],
|
||||||
|
}
|
||||||
|
|
||||||
|
BINARY_SENSOR_SCHEMA = vol.Schema(
|
||||||
|
{
|
||||||
|
vol.Optional(
|
||||||
|
CONF_MONITORED_CONDITIONS, default=list(BINARY_SENSOR_TYPES)
|
||||||
|
): vol.All(cv.ensure_list, [vol.In(BINARY_SENSOR_TYPES)]),
|
||||||
|
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
SENSOR_TYPES = {
|
||||||
|
# API Endpoint, Group, Key, unit, icon
|
||||||
|
"Temperatures": ["printer", "temperature", "*", TEMP_CELSIUS],
|
||||||
|
"Current State": ["printer", "state", "text", None, "mdi:printer-3d"],
|
||||||
|
"Job Percentage": [
|
||||||
|
"job",
|
||||||
|
"progress",
|
||||||
|
"completion",
|
||||||
|
UNIT_PERCENTAGE,
|
||||||
|
"mdi:file-percent",
|
||||||
|
],
|
||||||
|
"Time Remaining": [
|
||||||
|
"job",
|
||||||
|
"progress",
|
||||||
|
"printTimeLeft",
|
||||||
|
TIME_SECONDS,
|
||||||
|
"mdi:clock-end",
|
||||||
|
],
|
||||||
|
"Time Elapsed": ["job", "progress", "printTime", TIME_SECONDS, "mdi:clock-start"],
|
||||||
|
"User":["job", "job", "user", None, "mdi:printer-3d"],
|
||||||
|
"File":["job", "job", "file", None, "mdi:printer-3d"],
|
||||||
|
}
|
||||||
|
|
||||||
|
SENSOR_SCHEMA = vol.Schema(
|
||||||
|
{
|
||||||
|
vol.Optional(CONF_MONITORED_CONDITIONS, default=list(SENSOR_TYPES)): vol.All(
|
||||||
|
cv.ensure_list, [vol.In(SENSOR_TYPES)]
|
||||||
|
),
|
||||||
|
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
CONFIG_SCHEMA = vol.Schema(
|
||||||
|
{
|
||||||
|
DOMAIN: vol.All(
|
||||||
|
cv.ensure_list,
|
||||||
|
[
|
||||||
|
vol.Schema(
|
||||||
|
{
|
||||||
|
vol.Required(CONF_API_KEY): cv.string,
|
||||||
|
vol.Required(CONF_HOST): cv.string,
|
||||||
|
vol.Optional(CONF_SSL, default=False): cv.boolean,
|
||||||
|
vol.Optional(CONF_PORT, default=80): cv.port,
|
||||||
|
vol.Optional(CONF_PATH, default="/"): ensure_valid_path,
|
||||||
|
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||||
|
vol.Optional(CONF_NUMBER_OF_TOOLS, default=0): cv.positive_int,
|
||||||
|
vol.Optional(CONF_BED, default=False): cv.boolean,
|
||||||
|
vol.Optional(CONF_SENSORS, default={}): SENSOR_SCHEMA,
|
||||||
|
vol.Optional(
|
||||||
|
CONF_BINARY_SENSORS, default={}
|
||||||
|
): BINARY_SENSOR_SCHEMA,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
],
|
||||||
|
has_all_unique_names,
|
||||||
|
)
|
||||||
|
},
|
||||||
|
extra=vol.ALLOW_EXTRA,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def setup(hass, config):
|
||||||
|
"""Set up the OctoPrint component."""
|
||||||
|
printers = hass.data[DOMAIN] = {}
|
||||||
|
success = False
|
||||||
|
|
||||||
|
def device_discovered(service, info):
|
||||||
|
"""Get called when an Octoprint server has been discovered."""
|
||||||
|
_LOGGER.debug("Found an Octoprint server: %s", info)
|
||||||
|
|
||||||
|
discovery.listen(hass, SERVICE_OCTOPRINT, device_discovered)
|
||||||
|
|
||||||
|
if DOMAIN not in config:
|
||||||
|
# Skip the setup if there is no configuration present
|
||||||
|
return True
|
||||||
|
|
||||||
|
for printer in config[DOMAIN]:
|
||||||
|
name = printer[CONF_NAME]
|
||||||
|
ssl = "s" if printer[CONF_SSL] else ""
|
||||||
|
base_url = "http{}://{}:{}{}api/".format(
|
||||||
|
ssl, printer[CONF_HOST], printer[CONF_PORT], printer[CONF_PATH]
|
||||||
|
)
|
||||||
|
api_key = printer[CONF_API_KEY]
|
||||||
|
number_of_tools = printer[CONF_NUMBER_OF_TOOLS]
|
||||||
|
bed = printer[CONF_BED]
|
||||||
|
try:
|
||||||
|
octoprint_api = OctoPrintAPI(base_url, api_key, bed, number_of_tools)
|
||||||
|
printers[base_url] = octoprint_api
|
||||||
|
octoprint_api.get("printer")
|
||||||
|
octoprint_api.get("job")
|
||||||
|
except requests.exceptions.RequestException as conn_err:
|
||||||
|
_LOGGER.error("Error setting up OctoPrint API: %r", conn_err)
|
||||||
|
continue
|
||||||
|
|
||||||
|
sensors = printer[CONF_SENSORS][CONF_MONITORED_CONDITIONS]
|
||||||
|
load_platform(
|
||||||
|
hass,
|
||||||
|
"sensor",
|
||||||
|
DOMAIN,
|
||||||
|
{"name": name, "base_url": base_url, "sensors": sensors},
|
||||||
|
config,
|
||||||
|
)
|
||||||
|
b_sensors = printer[CONF_BINARY_SENSORS][CONF_MONITORED_CONDITIONS]
|
||||||
|
load_platform(
|
||||||
|
hass,
|
||||||
|
"binary_sensor",
|
||||||
|
DOMAIN,
|
||||||
|
{"name": name, "base_url": base_url, "sensors": b_sensors},
|
||||||
|
config,
|
||||||
|
)
|
||||||
|
success = True
|
||||||
|
|
||||||
|
return success
|
||||||
|
|
||||||
|
|
||||||
|
class OctoPrintAPI:
|
||||||
|
"""Simple JSON wrapper for OctoPrint's API."""
|
||||||
|
|
||||||
|
def __init__(self, api_url, key, bed, number_of_tools):
|
||||||
|
"""Initialize OctoPrint API and set headers needed later."""
|
||||||
|
self.api_url = api_url
|
||||||
|
self.headers = {CONTENT_TYPE: CONTENT_TYPE_JSON, "X-Api-Key": key}
|
||||||
|
self.printer_last_reading = [{}, None]
|
||||||
|
self.job_last_reading = [{}, None]
|
||||||
|
self.job_available = False
|
||||||
|
self.printer_available = False
|
||||||
|
self.available = False
|
||||||
|
self.printer_error_logged = False
|
||||||
|
self.job_error_logged = False
|
||||||
|
self.bed = bed
|
||||||
|
self.number_of_tools = number_of_tools
|
||||||
|
|
||||||
|
def get_tools(self):
|
||||||
|
"""Get the list of tools that temperature is monitored on."""
|
||||||
|
tools = []
|
||||||
|
if self.number_of_tools > 0:
|
||||||
|
for tool_number in range(0, self.number_of_tools):
|
||||||
|
tools.append(f"tool{tool_number!s}")
|
||||||
|
if self.bed:
|
||||||
|
tools.append("bed")
|
||||||
|
if not self.bed and self.number_of_tools == 0:
|
||||||
|
temps = self.printer_last_reading[0].get("temperature")
|
||||||
|
if temps is not None:
|
||||||
|
tools = temps.keys()
|
||||||
|
return tools
|
||||||
|
|
||||||
|
def get(self, endpoint):
|
||||||
|
"""Send a get request, and return the response as a dict."""
|
||||||
|
# Only query the API at most every 30 seconds
|
||||||
|
now = time.time()
|
||||||
|
if endpoint == "job":
|
||||||
|
last_time = self.job_last_reading[1]
|
||||||
|
if last_time is not None:
|
||||||
|
if now - last_time < 30.0:
|
||||||
|
return self.job_last_reading[0]
|
||||||
|
elif endpoint == "printer":
|
||||||
|
last_time = self.printer_last_reading[1]
|
||||||
|
if last_time is not None:
|
||||||
|
if now - last_time < 30.0:
|
||||||
|
return self.printer_last_reading[0]
|
||||||
|
|
||||||
|
url = self.api_url + endpoint
|
||||||
|
|
||||||
|
try:
|
||||||
|
response = requests.get(url, headers=self.headers, timeout=9)
|
||||||
|
response.raise_for_status()
|
||||||
|
if endpoint == "job":
|
||||||
|
self.job_last_reading[0] = response.json()
|
||||||
|
self.job_last_reading[1] = time.time()
|
||||||
|
self.job_available = True
|
||||||
|
elif endpoint == "printer":
|
||||||
|
self.printer_last_reading[0] = response.json()
|
||||||
|
self.printer_last_reading[1] = time.time()
|
||||||
|
self.printer_available = True
|
||||||
|
self.available = self.printer_available and self.job_available
|
||||||
|
if self.available:
|
||||||
|
self.job_error_logged = False
|
||||||
|
self.printer_error_logged = False
|
||||||
|
return response.json()
|
||||||
|
except Exception as conn_exc: # pylint: disable=broad-except
|
||||||
|
log_string = "Failed to update OctoPrint status. Error: %s" % conn_exc
|
||||||
|
# Only log the first failure
|
||||||
|
if endpoint == "job":
|
||||||
|
log_string = f"Endpoint: job {log_string}"
|
||||||
|
if not self.job_error_logged:
|
||||||
|
_LOGGER.error(log_string)
|
||||||
|
self.job_error_logged = True
|
||||||
|
self.job_available = False
|
||||||
|
elif endpoint == "printer":
|
||||||
|
log_string = f"Endpoint: printer {log_string}"
|
||||||
|
if not self.printer_error_logged:
|
||||||
|
_LOGGER.error(log_string)
|
||||||
|
self.printer_error_logged = True
|
||||||
|
self.printer_available = False
|
||||||
|
self.available = False
|
||||||
|
return None
|
||||||
|
|
||||||
|
def update(self, sensor_type, end_point, group, tool=None):
|
||||||
|
"""Return the value for sensor_type from the provided endpoint."""
|
||||||
|
response = self.get(end_point)
|
||||||
|
if response is not None:
|
||||||
|
return get_value_from_json(response, sensor_type, group, tool)
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
def get_value_from_json(json_dict, sensor_type, group, tool):
|
||||||
|
"""Return the value for sensor_type from the JSON."""
|
||||||
|
if group not in json_dict:
|
||||||
|
return None
|
||||||
|
|
||||||
|
if sensor_type in json_dict[group]:
|
||||||
|
if sensor_type == "target" and json_dict[sensor_type] is None:
|
||||||
|
return 0
|
||||||
|
if sensor_type == "file":
|
||||||
|
return json_dict[group][sensor_type]["name"]
|
||||||
|
return json_dict[group][sensor_type]
|
||||||
|
|
||||||
|
if tool is not None:
|
||||||
|
if sensor_type in json_dict[group][tool]:
|
||||||
|
return json_dict[group][tool][sensor_type]
|
||||||
|
|
||||||
|
return None
|
|
@ -0,0 +1,83 @@
|
||||||
|
"""Support for monitoring OctoPrint binary sensors."""
|
||||||
|
import logging
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
|
from homeassistant.components.binary_sensor import BinarySensorDevice
|
||||||
|
|
||||||
|
from . import BINARY_SENSOR_TYPES, DOMAIN as COMPONENT_DOMAIN
|
||||||
|
|
||||||
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
def setup_platform(hass, config, add_entities, discovery_info=None):
|
||||||
|
"""Set up the available OctoPrint binary sensors."""
|
||||||
|
if discovery_info is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
name = discovery_info["name"]
|
||||||
|
base_url = discovery_info["base_url"]
|
||||||
|
monitored_conditions = discovery_info["sensors"]
|
||||||
|
octoprint_api = hass.data[COMPONENT_DOMAIN][base_url]
|
||||||
|
|
||||||
|
devices = []
|
||||||
|
for octo_type in monitored_conditions:
|
||||||
|
new_sensor = OctoPrintBinarySensor(
|
||||||
|
octoprint_api,
|
||||||
|
octo_type,
|
||||||
|
BINARY_SENSOR_TYPES[octo_type][2],
|
||||||
|
name,
|
||||||
|
BINARY_SENSOR_TYPES[octo_type][3],
|
||||||
|
BINARY_SENSOR_TYPES[octo_type][0],
|
||||||
|
BINARY_SENSOR_TYPES[octo_type][1],
|
||||||
|
"flags",
|
||||||
|
)
|
||||||
|
devices.append(new_sensor)
|
||||||
|
add_entities(devices, True)
|
||||||
|
|
||||||
|
|
||||||
|
class OctoPrintBinarySensor(BinarySensorDevice):
|
||||||
|
"""Representation an OctoPrint binary sensor."""
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
self, api, condition, sensor_type, sensor_name, unit, endpoint, group, tool=None
|
||||||
|
):
|
||||||
|
"""Initialize a new OctoPrint sensor."""
|
||||||
|
self.sensor_name = sensor_name
|
||||||
|
if tool is None:
|
||||||
|
self._name = f"{sensor_name} {condition}"
|
||||||
|
else:
|
||||||
|
self._name = f"{sensor_name} {condition}"
|
||||||
|
self.sensor_type = sensor_type
|
||||||
|
self.api = api
|
||||||
|
self._state = False
|
||||||
|
self._unit_of_measurement = unit
|
||||||
|
self.api_endpoint = endpoint
|
||||||
|
self.api_group = group
|
||||||
|
self.api_tool = tool
|
||||||
|
_LOGGER.debug("Created OctoPrint binary sensor %r", self)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def name(self):
|
||||||
|
"""Return the name of the sensor."""
|
||||||
|
return self._name
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_on(self):
|
||||||
|
"""Return true if binary sensor is on."""
|
||||||
|
return bool(self._state)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def device_class(self):
|
||||||
|
"""Return the class of this sensor, from DEVICE_CLASSES."""
|
||||||
|
return None
|
||||||
|
|
||||||
|
def update(self):
|
||||||
|
"""Update state of sensor."""
|
||||||
|
try:
|
||||||
|
self._state = self.api.update(
|
||||||
|
self.sensor_type, self.api_endpoint, self.api_group, self.api_tool
|
||||||
|
)
|
||||||
|
except requests.exceptions.ConnectionError:
|
||||||
|
# Error calling the api, already logged in api.update()
|
||||||
|
return
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"domain": "octoprint",
|
||||||
|
"name": "OctoPrint",
|
||||||
|
"documentation": "https://www.home-assistant.io/integrations/octoprint",
|
||||||
|
"after_dependencies": ["discovery"],
|
||||||
|
"codeowners": []
|
||||||
|
}
|
|
@ -0,0 +1,139 @@
|
||||||
|
"""Support for monitoring OctoPrint sensors."""
|
||||||
|
import logging
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
|
from homeassistant.const import TEMP_CELSIUS, UNIT_PERCENTAGE
|
||||||
|
from homeassistant.helpers.entity import Entity
|
||||||
|
|
||||||
|
from . import DOMAIN as COMPONENT_DOMAIN, SENSOR_TYPES
|
||||||
|
|
||||||
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
NOTIFICATION_ID = "octoprint_notification"
|
||||||
|
NOTIFICATION_TITLE = "OctoPrint sensor setup error"
|
||||||
|
|
||||||
|
|
||||||
|
def setup_platform(hass, config, add_entities, discovery_info=None):
|
||||||
|
"""Set up the available OctoPrint sensors."""
|
||||||
|
if discovery_info is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
name = discovery_info["name"]
|
||||||
|
base_url = discovery_info["base_url"]
|
||||||
|
monitored_conditions = discovery_info["sensors"]
|
||||||
|
octoprint_api = hass.data[COMPONENT_DOMAIN][base_url]
|
||||||
|
tools = octoprint_api.get_tools()
|
||||||
|
|
||||||
|
if "Temperatures" in monitored_conditions:
|
||||||
|
if not tools:
|
||||||
|
hass.components.persistent_notification.create(
|
||||||
|
"Your printer appears to be offline.<br />"
|
||||||
|
"If you do not want to have your printer on <br />"
|
||||||
|
" at all times, and you would like to monitor <br /> "
|
||||||
|
"temperatures, please add <br />"
|
||||||
|
"bed and/or number_of_tools to your configuration <br />"
|
||||||
|
"and restart.",
|
||||||
|
title=NOTIFICATION_TITLE,
|
||||||
|
notification_id=NOTIFICATION_ID,
|
||||||
|
)
|
||||||
|
|
||||||
|
devices = []
|
||||||
|
types = ["actual", "target"]
|
||||||
|
for octo_type in monitored_conditions:
|
||||||
|
if octo_type == "Temperatures":
|
||||||
|
for tool in tools:
|
||||||
|
for temp_type in types:
|
||||||
|
new_sensor = OctoPrintSensor(
|
||||||
|
octoprint_api,
|
||||||
|
temp_type,
|
||||||
|
temp_type,
|
||||||
|
name,
|
||||||
|
SENSOR_TYPES[octo_type][3],
|
||||||
|
SENSOR_TYPES[octo_type][0],
|
||||||
|
SENSOR_TYPES[octo_type][1],
|
||||||
|
tool,
|
||||||
|
)
|
||||||
|
devices.append(new_sensor)
|
||||||
|
else:
|
||||||
|
new_sensor = OctoPrintSensor(
|
||||||
|
octoprint_api,
|
||||||
|
octo_type,
|
||||||
|
SENSOR_TYPES[octo_type][2],
|
||||||
|
name,
|
||||||
|
SENSOR_TYPES[octo_type][3],
|
||||||
|
SENSOR_TYPES[octo_type][0],
|
||||||
|
SENSOR_TYPES[octo_type][1],
|
||||||
|
None,
|
||||||
|
SENSOR_TYPES[octo_type][4],
|
||||||
|
)
|
||||||
|
devices.append(new_sensor)
|
||||||
|
add_entities(devices, True)
|
||||||
|
|
||||||
|
|
||||||
|
class OctoPrintSensor(Entity):
|
||||||
|
"""Representation of an OctoPrint sensor."""
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
api,
|
||||||
|
condition,
|
||||||
|
sensor_type,
|
||||||
|
sensor_name,
|
||||||
|
unit,
|
||||||
|
endpoint,
|
||||||
|
group,
|
||||||
|
tool=None,
|
||||||
|
icon=None,
|
||||||
|
):
|
||||||
|
"""Initialize a new OctoPrint sensor."""
|
||||||
|
self.sensor_name = sensor_name
|
||||||
|
if tool is None:
|
||||||
|
self._name = f"{sensor_name} {condition}"
|
||||||
|
else:
|
||||||
|
self._name = "{} {} {} {}".format(sensor_name, condition, tool, "temp")
|
||||||
|
self.sensor_type = sensor_type
|
||||||
|
self.api = api
|
||||||
|
self._state = None
|
||||||
|
self._unit_of_measurement = unit
|
||||||
|
self.api_endpoint = endpoint
|
||||||
|
self.api_group = group
|
||||||
|
self.api_tool = tool
|
||||||
|
self._icon = icon
|
||||||
|
_LOGGER.debug("Created OctoPrint sensor %r", self)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def name(self):
|
||||||
|
"""Return the name of the sensor."""
|
||||||
|
return self._name
|
||||||
|
|
||||||
|
@property
|
||||||
|
def state(self):
|
||||||
|
"""Return the state of the sensor."""
|
||||||
|
sensor_unit = self.unit_of_measurement
|
||||||
|
if sensor_unit in (TEMP_CELSIUS, UNIT_PERCENTAGE):
|
||||||
|
# API sometimes returns null and not 0
|
||||||
|
if self._state is None:
|
||||||
|
self._state = 0
|
||||||
|
return round(self._state, 2)
|
||||||
|
return self._state
|
||||||
|
|
||||||
|
@property
|
||||||
|
def unit_of_measurement(self):
|
||||||
|
"""Return the unit of measurement of this entity, if any."""
|
||||||
|
return self._unit_of_measurement
|
||||||
|
|
||||||
|
def update(self):
|
||||||
|
"""Update state of sensor."""
|
||||||
|
try:
|
||||||
|
self._state = self.api.update(
|
||||||
|
self.sensor_type, self.api_endpoint, self.api_group, self.api_tool
|
||||||
|
)
|
||||||
|
except requests.exceptions.ConnectionError:
|
||||||
|
# Error calling the api, already logged in api.update()
|
||||||
|
return
|
||||||
|
|
||||||
|
@property
|
||||||
|
def icon(self):
|
||||||
|
"""Icon to use in the frontend."""
|
||||||
|
return self._icon
|
|
@ -18,12 +18,12 @@ logs:
|
||||||
homeassistant.helpers.script: warning
|
homeassistant.helpers.script: warning
|
||||||
homeassistant.helpers.entity: warning
|
homeassistant.helpers.entity: warning
|
||||||
homeassistant.components.wemo: critical
|
homeassistant.components.wemo: critical
|
||||||
|
homeassistant.components.sensor: critical
|
||||||
homeassistant.components.cloud.iot: warning
|
homeassistant.components.cloud.iot: warning
|
||||||
homeassistant.components.hue: critical
|
homeassistant.components.hue: critical
|
||||||
homeassistant.components.http: warning
|
homeassistant.components.http: warning
|
||||||
homeassistant.components.camera: warning
|
homeassistant.components.camera: warning
|
||||||
homeassistant.components.zwave: warning
|
homeassistant.components.zwave: warning
|
||||||
homeassistant.components.sensor: warning
|
|
||||||
homeassistant.components.image_processing: warning
|
homeassistant.components.image_processing: warning
|
||||||
homeassistant.components.homekit: warning
|
homeassistant.components.homekit: warning
|
||||||
custom_components.sensor.life360: warning
|
custom_components.sensor.life360: warning
|
||||||
|
@ -39,3 +39,4 @@ logs:
|
||||||
homeassistant.components.emulated_hue: warning
|
homeassistant.components.emulated_hue: warning
|
||||||
homeassistant.components.device_tracker: warning
|
homeassistant.components.device_tracker: warning
|
||||||
homeassistant.components.camera.generic: warning
|
homeassistant.components.camera.generic: warning
|
||||||
|
homeassistant.components.automation.update_zwave_battery_levels: critical
|
||||||
|
|
|
@ -81,6 +81,7 @@ cards:
|
||||||
title: 3D Printer
|
title: 3D Printer
|
||||||
show_header_toggle: false
|
show_header_toggle: false
|
||||||
entities:
|
entities:
|
||||||
|
- sensor.octoprint_file
|
||||||
- binary_sensor.octoprint_printing
|
- binary_sensor.octoprint_printing
|
||||||
- binary_sensor.octoprint_printing_error
|
- binary_sensor.octoprint_printing_error
|
||||||
- sensor.octoprint_actual_bed_temp
|
- sensor.octoprint_actual_bed_temp
|
||||||
|
@ -92,16 +93,6 @@ cards:
|
||||||
- sensor.octoprint_time_elapsed
|
- sensor.octoprint_time_elapsed
|
||||||
- sensor.octoprint_time_remaining
|
- sensor.octoprint_time_remaining
|
||||||
|
|
||||||
- type: entities
|
|
||||||
title: Tile Devices
|
|
||||||
show_header_toggle: false
|
|
||||||
entities:
|
|
||||||
- device_tracker.tile_08beea8370ec23b7
|
|
||||||
- device_tracker.tile_43a0d518532978f8
|
|
||||||
- device_tracker.tile_49318f5ab14343a5
|
|
||||||
- device_tracker.tile_63ca05b6a3619232
|
|
||||||
- device_tracker.tile_p_32c03dc7f21001d36d16b47646e4c421
|
|
||||||
|
|
||||||
# - type: glance
|
# - type: glance
|
||||||
# show_icon: true
|
# show_icon: true
|
||||||
# show_name: true
|
# show_name: true
|
||||||
|
@ -281,15 +272,6 @@ cards:
|
||||||
tap_action:
|
tap_action:
|
||||||
action: more-info
|
action: more-info
|
||||||
|
|
||||||
- type: entities
|
|
||||||
title: Light Levels
|
|
||||||
show_header_toggle: false
|
|
||||||
entities:
|
|
||||||
- sensor.downstairs_multi_sensor_luminance
|
|
||||||
- sensor.front_room_multi_sensor_luminance
|
|
||||||
- sensor.tv_multi_sensor_luminance
|
|
||||||
- sensor.upstairs_multi_sensor_luminance
|
|
||||||
|
|
||||||
- type: entities
|
- type: entities
|
||||||
title: Xiaomi Motion Sensors
|
title: Xiaomi Motion Sensors
|
||||||
show_header_toggle: false
|
show_header_toggle: false
|
||||||
|
@ -400,39 +382,10 @@ cards:
|
||||||
yellow: 4
|
yellow: 4
|
||||||
red: 7
|
red: 7
|
||||||
|
|
||||||
- type: entities
|
|
||||||
title: Z-Wave Batteries
|
|
||||||
show_header_toggle: false
|
|
||||||
entities:
|
|
||||||
- input_label.audio_detector
|
|
||||||
- input_label.back_door_sensor
|
|
||||||
- input_label.zwave_front_door_sensor
|
|
||||||
- input_label.basement_door_sensor
|
|
||||||
- input_label.downstairs_multi_sensor
|
|
||||||
- input_label.front_room_multi_sensor
|
|
||||||
- input_label.garage_door_sensor
|
|
||||||
- input_label.kitchen_motion_sensor
|
|
||||||
- input_label.single_car_garage_door_tilt_sensor
|
|
||||||
- input_label.stairs_motion_sensor
|
|
||||||
- input_label.tv_multi_sensor
|
|
||||||
- input_label.two_car_garage_door_tilt_sensor
|
|
||||||
- input_label.upstairs_multi_sensor
|
|
||||||
- input_label.wallmote
|
|
||||||
|
|
||||||
- type: entities
|
- type: entities
|
||||||
title: Motion Counters
|
title: Motion Counters
|
||||||
show_header_toggle: false
|
show_header_toggle: false
|
||||||
entities:
|
entities:
|
||||||
- input_label.aeotec_zw120_door_window_sensor_gen5_sensor
|
|
||||||
- input_label.back_door_sensor_sensor
|
|
||||||
- input_label.basement_door_sensor_sensor
|
|
||||||
- input_label.garage_door_sensor_sensor
|
|
||||||
- input_label.single_car_garage_door_tilt_sensor_sensor
|
|
||||||
- input_label.two_car_garage_door_tilt_sensor_sensor
|
|
||||||
- input_label.downstairs_multi_sensor_sensor
|
|
||||||
- input_label.front_room_multi_sensor_sensor
|
|
||||||
- input_label.front_room_window_sensor_sensor
|
|
||||||
- input_label.kitchen_motion_sensor_sensor
|
|
||||||
- input_label.motion_sensor_158d00016c2d0e
|
- input_label.motion_sensor_158d00016c2d0e
|
||||||
- input_label.motion_sensor_158d00016db6d2
|
- input_label.motion_sensor_158d00016db6d2
|
||||||
- input_label.motion_sensor_158d0001a25041
|
- input_label.motion_sensor_158d0001a25041
|
||||||
|
@ -446,5 +399,3 @@ cards:
|
||||||
- input_label.motion_sensor_158d000272bf48
|
- input_label.motion_sensor_158d000272bf48
|
||||||
- input_label.motion_sensor_158d000272bfd7
|
- input_label.motion_sensor_158d000272bfd7
|
||||||
- input_label.garage_motion
|
- input_label.garage_motion
|
||||||
- input_label.stairs_motion_sensor_sensor
|
|
||||||
- input_label.upstairs_multi_sensor_sensor
|
|
||||||
|
|
|
@ -27,7 +27,6 @@ cards:
|
||||||
- switch.basement_right
|
- switch.basement_right
|
||||||
- switch.kitchen
|
- switch.kitchen
|
||||||
- switch.office_room
|
- switch.office_room
|
||||||
- switch.zwave_smart_switch_switch
|
|
||||||
- light.hue_color_lamp_1
|
- light.hue_color_lamp_1
|
||||||
- light.hue_color_lamp_2
|
- light.hue_color_lamp_2
|
||||||
- light.hue_color_lamp_3
|
- light.hue_color_lamp_3
|
||||||
|
|
|
@ -36,31 +36,3 @@ cards:
|
||||||
- sensor.dining_room_thermostat_operation_mode
|
- sensor.dining_room_thermostat_operation_mode
|
||||||
- sensor.dining_room_thermostat_target
|
- sensor.dining_room_thermostat_target
|
||||||
- sensor.dining_room_thermostat_temperature
|
- sensor.dining_room_thermostat_temperature
|
||||||
|
|
||||||
# - type: history-graph
|
|
||||||
# title: "Temperature"
|
|
||||||
# entities:
|
|
||||||
# - entity: sensor.dark_sky_apparent_temperature
|
|
||||||
# name: Outside
|
|
||||||
# - entity: sensor.dining_room_thermostat_temperature
|
|
||||||
# name: Inside
|
|
||||||
|
|
||||||
- type: entities
|
|
||||||
title: Temperature Levels
|
|
||||||
show_header_toggle: false
|
|
||||||
entities:
|
|
||||||
- entity: sensor.audio_detector_temperature
|
|
||||||
name: Hallway Temperature
|
|
||||||
- sensor.downstairs_multi_sensor_temperature
|
|
||||||
- sensor.front_room_multi_sensor_temperature
|
|
||||||
- sensor.tv_multi_sensor_temperature
|
|
||||||
- sensor.upstairs_multi_sensor_temperature
|
|
||||||
|
|
||||||
- type: entities
|
|
||||||
title: Humidity Levels
|
|
||||||
show_header_toggle: false
|
|
||||||
entities:
|
|
||||||
- sensor.downstairs_multi_sensor_relative_humidity
|
|
||||||
- sensor.front_room_multi_sensor_relative_humidity
|
|
||||||
- sensor.tv_multi_sensor_relative_humidity
|
|
||||||
- sensor.upstairs_multi_sensor_relative_humidity
|
|
||||||
|
|
|
@ -79,7 +79,6 @@ cards:
|
||||||
entities:
|
entities:
|
||||||
- switch.frontyard_light
|
- switch.frontyard_light
|
||||||
- binary_sensor.frontdoor_camera_motion
|
- binary_sensor.frontdoor_camera_motion
|
||||||
- binary_sensor.aeotec_zw120_door_window_sensor_gen5_sensor
|
|
||||||
|
|
||||||
- type: picture-glance
|
- type: picture-glance
|
||||||
id: camera_patio_camera
|
id: camera_patio_camera
|
||||||
|
@ -92,7 +91,6 @@ cards:
|
||||||
entities:
|
entities:
|
||||||
- switch.wemobackyardlightswitch
|
- switch.wemobackyardlightswitch
|
||||||
- binary_sensor.patio_camera_motion
|
- binary_sensor.patio_camera_motion
|
||||||
- binary_sensor.back_door_sensor_sensor
|
|
||||||
|
|
||||||
- type: picture-glance
|
- type: picture-glance
|
||||||
id: camera_driveway_camera
|
id: camera_driveway_camera
|
||||||
|
@ -105,8 +103,6 @@ cards:
|
||||||
entities:
|
entities:
|
||||||
- switch.frontyard_light
|
- switch.frontyard_light
|
||||||
- binary_sensor.driveway_camera_motion
|
- binary_sensor.driveway_camera_motion
|
||||||
- binary_sensor.single_car_garage_door_tilt_sensor_sensor
|
|
||||||
- binary_sensor.two_car_garage_door_tilt_sensor_sensor
|
|
||||||
|
|
||||||
- type: picture-glance
|
- type: picture-glance
|
||||||
id: camera_playarea_camera
|
id: camera_playarea_camera
|
||||||
|
@ -119,7 +115,6 @@ cards:
|
||||||
entities:
|
entities:
|
||||||
- switch.wemobackyardlightswitch
|
- switch.wemobackyardlightswitch
|
||||||
- binary_sensor.playarea_camera_motion
|
- binary_sensor.playarea_camera_motion
|
||||||
- binary_sensor.back_door_sensor_sensor
|
|
||||||
|
|
||||||
- type: picture-glance
|
- type: picture-glance
|
||||||
id: camera_garage_camera
|
id: camera_garage_camera
|
||||||
|
@ -131,8 +126,6 @@ cards:
|
||||||
action: more-info
|
action: more-info
|
||||||
entities:
|
entities:
|
||||||
- switch.garage
|
- switch.garage
|
||||||
- binary_sensor.single_car_garage_door_tilt_sensor_sensor
|
|
||||||
- binary_sensor.two_car_garage_door_tilt_sensor_sensor
|
|
||||||
|
|
||||||
- type: picture-glance
|
- type: picture-glance
|
||||||
id: camera_3dprinter_camera
|
id: camera_3dprinter_camera
|
||||||
|
@ -145,28 +138,3 @@ cards:
|
||||||
entities:
|
entities:
|
||||||
- binary_sensor.motion_sensor_158d00016c2d0e
|
- binary_sensor.motion_sensor_158d00016c2d0e
|
||||||
- binary_sensor.octoprint_printing
|
- binary_sensor.octoprint_printing
|
||||||
|
|
||||||
# - type: picture-glance
|
|
||||||
# id: camera_kitchen_camera
|
|
||||||
# title: Kitchen Camera
|
|
||||||
# entity: camera.kitchen_camera
|
|
||||||
# camera_image: camera.kitchen_camera
|
|
||||||
# show_info: true
|
|
||||||
# tap_action:
|
|
||||||
# action: more-info
|
|
||||||
# entities:
|
|
||||||
# - switch.kitchen
|
|
||||||
# - binary_sensor.kitchen_camera_motion
|
|
||||||
# - binary_sensor.back_door_sensor_sensor
|
|
||||||
|
|
||||||
# - type: picture-glance
|
|
||||||
# id: camera_frontroom_camera
|
|
||||||
# title: FrontDoor Camera
|
|
||||||
# entity: camera.frontroom_camera
|
|
||||||
# camera_image: camera.frontroom_camera
|
|
||||||
# show_info: true
|
|
||||||
# tap_action:
|
|
||||||
# action: more-info
|
|
||||||
# entities:
|
|
||||||
# - binary_sensor.frontdoor_camera_motion
|
|
||||||
# - binary_sensor.aeotec_zw120_door_window_sensor_gen5_sensor
|
|
||||||
|
|
|
@ -42,7 +42,6 @@ cards:
|
||||||
entities:
|
entities:
|
||||||
- device_tracker.tesla_model_3_010610_location_tracker
|
- device_tracker.tesla_model_3_010610_location_tracker
|
||||||
- binary_sensor.mahasri_tesla_online_sensor
|
- binary_sensor.mahasri_tesla_online_sensor
|
||||||
- device_tracker.mahasri_tesla_location_tracker
|
|
||||||
- binary_sensor.tesla_model_3_parking_brake_sensor
|
- binary_sensor.tesla_model_3_parking_brake_sensor
|
||||||
- lock.tesla_model_3_door_lock
|
- lock.tesla_model_3_door_lock
|
||||||
- sensor.tesla_model_3_mileage_sensor
|
- sensor.tesla_model_3_mileage_sensor
|
||||||
|
|
|
@ -26,6 +26,7 @@ cards:
|
||||||
title: Octoprint
|
title: Octoprint
|
||||||
show_header_toggle: false
|
show_header_toggle: false
|
||||||
entities:
|
entities:
|
||||||
|
- sensor.octoprint_file
|
||||||
- binary_sensor.octoprint_printing
|
- binary_sensor.octoprint_printing
|
||||||
- sensor.octoprint_current_state
|
- sensor.octoprint_current_state
|
||||||
- binary_sensor.octoprint_printing_error
|
- binary_sensor.octoprint_printing_error
|
||||||
|
|
|
@ -12,22 +12,18 @@ homeassistant:
|
||||||
input_boolean:
|
input_boolean:
|
||||||
twenty_five_percent:
|
twenty_five_percent:
|
||||||
name: "25%"
|
name: "25%"
|
||||||
initial: "off"
|
|
||||||
icon: mdi:radiobox-blank
|
icon: mdi:radiobox-blank
|
||||||
|
|
||||||
fifty_percent:
|
fifty_percent:
|
||||||
name: "50%"
|
name: "50%"
|
||||||
initial: "off"
|
|
||||||
icon: mdi:brightness-3
|
icon: mdi:brightness-3
|
||||||
|
|
||||||
seventy_five_percent:
|
seventy_five_percent:
|
||||||
name: "75%"
|
name: "75%"
|
||||||
initial: "off"
|
|
||||||
icon: mdi:brightness-2
|
icon: mdi:brightness-2
|
||||||
|
|
||||||
hundred_percent:
|
hundred_percent:
|
||||||
name: "100%"
|
name: "100%"
|
||||||
initial: "off"
|
|
||||||
icon: mdi:brightness-1
|
icon: mdi:brightness-1
|
||||||
|
|
||||||
power_off_when_complete:
|
power_off_when_complete:
|
||||||
|
@ -88,7 +84,12 @@ sensor:
|
||||||
sensors:
|
sensors:
|
||||||
print_completion:
|
print_completion:
|
||||||
value_template: >
|
value_template: >
|
||||||
{{ (now().strftime('%s') |int + states('sensor.octoprint_time_remaining')|int ) | timestamp_custom("%A %D %H:%M %p") }}
|
{% set seconds = states('sensor.octoprint_time_remaining')|int %}
|
||||||
|
{% if now().strftime('%s')|int | timestamp_custom("%A %D") == (now().strftime('%s') |int + seconds) | timestamp_custom("%A %D") %}
|
||||||
|
Today at {{- now().strftime('%s')|int | timestamp_custom("%l:%M %p") }}
|
||||||
|
{% else %}
|
||||||
|
{{ (now().strftime('%s') |int + seconds) | timestamp_custom("%A %D %l:%M %p") }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
- platform: template
|
- platform: template
|
||||||
sensors:
|
sensors:
|
||||||
|
@ -199,6 +200,7 @@ automation:
|
||||||
platform: state
|
platform: state
|
||||||
entity_id: input_boolean.twenty_five_percent, input_boolean.fifty_percent, input_boolean.seventy_five_percent, input_boolean.hundred_percent
|
entity_id: input_boolean.twenty_five_percent, input_boolean.fifty_percent, input_boolean.seventy_five_percent, input_boolean.hundred_percent
|
||||||
to: "on"
|
to: "on"
|
||||||
|
from: "off"
|
||||||
action:
|
action:
|
||||||
- service: script.notify_me
|
- service: script.notify_me
|
||||||
data_template:
|
data_template:
|
||||||
|
|
|
@ -214,8 +214,6 @@ automation:
|
||||||
entity_id: light.master_bedroom_2
|
entity_id: light.master_bedroom_2
|
||||||
brightness: 25
|
brightness: 25
|
||||||
color_temp: 366
|
color_temp: 366
|
||||||
- service: switch.turn_on
|
|
||||||
entity_id: switch.zwave_smart_switch_switch
|
|
||||||
- service: switch.turn_on
|
- service: switch.turn_on
|
||||||
entity_id: switch.kids_bed_accent
|
entity_id: switch.kids_bed_accent
|
||||||
- service: switch.turn_on
|
- service: switch.turn_on
|
||||||
|
|
|
@ -271,7 +271,6 @@
|
||||||
# - switch.office_room
|
# - switch.office_room
|
||||||
# - switch.smart_outlet_1
|
# - switch.smart_outlet_1
|
||||||
# - switch.kitchen
|
# - switch.kitchen
|
||||||
# - switch.zwave_smart_switch_switch
|
|
||||||
# - switch.rf_switch_five
|
# - switch.rf_switch_five
|
||||||
# - switch.rf_switch_four
|
# - switch.rf_switch_four
|
||||||
# - switch.rf_switch_one
|
# - switch.rf_switch_one
|
||||||
|
|
|
@ -29,10 +29,6 @@ sensor:
|
||||||
name: Home Assistant Up Time
|
name: Home Assistant Up Time
|
||||||
unit_of_measurement: hours
|
unit_of_measurement: hours
|
||||||
|
|
||||||
- platform: whois
|
|
||||||
domain: !secret namecheap_domain_name
|
|
||||||
name: My Domain
|
|
||||||
|
|
||||||
- platform: rest
|
- platform: rest
|
||||||
resource: http://icanhazip.com
|
resource: http://icanhazip.com
|
||||||
name: external_ip
|
name: external_ip
|
||||||
|
|
|
@ -36,13 +36,6 @@ homeassistant:
|
||||||
emulated_hue_name: Guest Bedroom 2
|
emulated_hue_name: Guest Bedroom 2
|
||||||
homebridge_name: Guest Bedroom 2
|
homebridge_name: Guest Bedroom 2
|
||||||
|
|
||||||
switch.zwave_smart_switch_switch:
|
|
||||||
friendly_name: Office Room Accent Lights
|
|
||||||
emulated_hue_name: Office Room Accent Lights
|
|
||||||
homebridge_name: Office Room Accent Lights
|
|
||||||
assumed_state: false
|
|
||||||
icon: mdi:lightbulb
|
|
||||||
|
|
||||||
switch.kids_bed_accent:
|
switch.kids_bed_accent:
|
||||||
friendly_name: Hasika's Bed Accent Lights
|
friendly_name: Hasika's Bed Accent Lights
|
||||||
assumed_state: false
|
assumed_state: false
|
||||||
|
|
|
@ -64,8 +64,6 @@ automation:
|
||||||
entity_id: switch.office_room
|
entity_id: switch.office_room
|
||||||
- condition: template
|
- condition: template
|
||||||
value_template: "{{ states('sun.sun') == 'below_horizon' }}"
|
value_template: "{{ states('sun.sun') == 'below_horizon' }}"
|
||||||
- service: homeassistant.turn_on
|
|
||||||
entity_id: switch.zwave_smart_switch_switch
|
|
||||||
|
|
||||||
- alias: Officeroom Timer Elapsed
|
- alias: Officeroom Timer Elapsed
|
||||||
initial_state: true
|
initial_state: true
|
||||||
|
@ -77,8 +75,6 @@ automation:
|
||||||
action:
|
action:
|
||||||
- service: switch.turn_off
|
- service: switch.turn_off
|
||||||
entity_id: switch.office_room
|
entity_id: switch.office_room
|
||||||
- service: homeassistant.turn_off
|
|
||||||
entity_id: switch.zwave_smart_switch_switch
|
|
||||||
|
|
||||||
# # Front Room:
|
# # Front Room:
|
||||||
# # Motion Detected - Turn ON the light and extend timer
|
# # Motion Detected - Turn ON the light and extend timer
|
||||||
|
@ -95,28 +91,9 @@ automation:
|
||||||
entity_id: timer.timer_frontroom
|
entity_id: timer.timer_frontroom
|
||||||
- condition: template
|
- condition: template
|
||||||
value_template: "{{ states('sun.sun') == 'below_horizon' }}"
|
value_template: "{{ states('sun.sun') == 'below_horizon' }}"
|
||||||
- service: homeassistant.turn_on
|
|
||||||
entity_id: switch.zwave_smart_switch_switch
|
|
||||||
- service: switch.turn_on
|
- service: switch.turn_on
|
||||||
entity_id: switch.front_room
|
entity_id: switch.front_room
|
||||||
|
|
||||||
# Front Room:
|
|
||||||
# Timer Elapsed - Turn OFF lights
|
|
||||||
###############################################################################
|
|
||||||
- alias: Frontroom Timer Elapsed
|
|
||||||
initial_state: true
|
|
||||||
trigger:
|
|
||||||
- platform: event
|
|
||||||
event_type: timer.finished
|
|
||||||
event_data:
|
|
||||||
entity_id: timer.timer_frontroom
|
|
||||||
condition:
|
|
||||||
- condition: template
|
|
||||||
value_template: "{{ states('input_boolean.working_in_office_room') == 'off' }}"
|
|
||||||
action:
|
|
||||||
- service: homeassistant.turn_off
|
|
||||||
entity_id: switch.zwave_smart_switch_switch
|
|
||||||
|
|
||||||
# Kitchen:
|
# Kitchen:
|
||||||
# Motion Detected - Turn ON the light and extend timer
|
# Motion Detected - Turn ON the light and extend timer
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
|
@ -1,32 +1,5 @@
|
||||||
homeassistant:
|
homeassistant:
|
||||||
customize:
|
# customize:
|
||||||
binary_sensor.tesla_model_3_charger_sensor:
|
|
||||||
friendly_name: Charger
|
|
||||||
binary_sensor.tesla_model_3_parking_brake_sensor:
|
|
||||||
friendly_name: Parking Break
|
|
||||||
climate.tesla_model_3_hvac_climate_system:
|
|
||||||
friendly_name: Tesla Climate
|
|
||||||
device_tracker.mahasri_tesla_location_tracker:
|
|
||||||
friendly_name: Tesla
|
|
||||||
lock.tesla_model_3_charger_door_lock:
|
|
||||||
friendly_name: Tesla Door Lock
|
|
||||||
sensor.tesla_model_3_battery_sensor:
|
|
||||||
friendly_name: Battery Percentage
|
|
||||||
icon: mdi:battery
|
|
||||||
sensor.tesla_model_3_mileage_sensor:
|
|
||||||
friendly_name: Total Mileage
|
|
||||||
sensor.tesla_model_3_range_sensor:
|
|
||||||
friendly_name: Battery Range
|
|
||||||
sensor.tesla_model_3_temperature_sensor_inside:
|
|
||||||
friendly_name: Temperature Inside
|
|
||||||
sensor.tesla_model_3_temperature_sensor_outside:
|
|
||||||
friendly_name: Temperature Outside
|
|
||||||
switch.tesla_model_3_charger_switch:
|
|
||||||
friendly_name: Charger Switch
|
|
||||||
switch.tesla_model_3_maxrange_switch:
|
|
||||||
friendly_name: Max Range Switch
|
|
||||||
switch.tesla_model_3_update_switch:
|
|
||||||
friendly_name: Update Tesla
|
|
||||||
|
|
||||||
# The scan_interval is now set to 6 hours
|
# The scan_interval is now set to 6 hours
|
||||||
# Leaving it to the default (which is 5 minutes, or 300 seconds) will drain battery at a rate of
|
# Leaving it to the default (which is 5 minutes, or 300 seconds) will drain battery at a rate of
|
||||||
|
@ -36,7 +9,6 @@ tesla:
|
||||||
username: !secret tesla_username
|
username: !secret tesla_username
|
||||||
password: !secret tesla_password
|
password: !secret tesla_password
|
||||||
scan_interval: 21600
|
scan_interval: 21600
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# _ _ _
|
# _ _ _
|
||||||
# /\ | | | | (_)
|
# /\ | | | | (_)
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
###############################################################################
|
|
||||||
# @author : Mahasri Kalavala
|
|
||||||
# @date : 02/05/2020
|
|
||||||
# @package : Tile
|
|
||||||
# @description : Tile Package
|
|
||||||
###############################################################################
|
|
||||||
homeassistant:
|
|
||||||
customize:
|
|
||||||
device_tracker.tile_08beea8370ec23b7:
|
|
||||||
friendly_name: Back Pack
|
|
||||||
device_tracker.tile_43a0d518532978f8:
|
|
||||||
friendly_name: Passport Bag
|
|
||||||
device_tracker.tile_49318f5ab14343a5:
|
|
||||||
friendly_name: Suresh's Laptop Bag
|
|
||||||
device_tracker.tile_63ca05b6a3619232:
|
|
||||||
friendly_name: Mallika's Purse
|
|
||||||
device_tracker.tile_p_32c03dc7f21001d36d16b47646e4c421:
|
|
||||||
friendly_name: Tile Tracker
|
|
||||||
|
|
||||||
device_tracker:
|
|
||||||
- platform: tile
|
|
||||||
username: !secret tile_username
|
|
||||||
password: !secret tile_password
|
|
|
@ -111,7 +111,6 @@ automation:
|
||||||
- switch.kitchen
|
- switch.kitchen
|
||||||
- switch.prayer_room
|
- switch.prayer_room
|
||||||
- switch.upstairs_fragrance
|
- switch.upstairs_fragrance
|
||||||
- switch.zwave_smart_switch_switch
|
|
||||||
- light.hue_color_lamp_1
|
- light.hue_color_lamp_1
|
||||||
- light.hue_color_lamp_2
|
- light.hue_color_lamp_2
|
||||||
- light.hue_color_lamp_3
|
- light.hue_color_lamp_3
|
||||||
|
|
|
@ -81,11 +81,10 @@ homeassistant:
|
||||||
friendly_name: Hasika's Bedroom Cube (Xiaomi)
|
friendly_name: Hasika's Bedroom Cube (Xiaomi)
|
||||||
binary_sensor.cube_158d00027cf60d:
|
binary_sensor.cube_158d00027cf60d:
|
||||||
friendly_name: Srinika's Bedroom Cube (Xiaomi)
|
friendly_name: Srinika's Bedroom Cube (Xiaomi)
|
||||||
|
# xiaomi_aqara:
|
||||||
xiaomi_aqara:
|
# discovery_retry: 5
|
||||||
discovery_retry: 5
|
# gateways:
|
||||||
gateways:
|
# - key: !secret xiaomi_key
|
||||||
- key: !secret xiaomi_key
|
|
||||||
# - service: xiaomi_aqara.play_ringtone
|
# - service: xiaomi_aqara.play_ringtone
|
||||||
# gw_mac: !secret xiaomi_mac
|
# gw_mac: !secret xiaomi_mac
|
||||||
# ringtone_id: 8
|
# ringtone_id: 8
|
||||||
|
|
|
@ -121,19 +121,6 @@ automation:
|
||||||
- service_template: switch.toggle
|
- service_template: switch.toggle
|
||||||
entity_id: switch.front_room
|
entity_id: switch.front_room
|
||||||
|
|
||||||
# Flip 180: Toggle Office Room Accent Lights
|
|
||||||
- alias: Front Room Cube Event flip180
|
|
||||||
initial_state: true
|
|
||||||
trigger:
|
|
||||||
platform: event
|
|
||||||
event_type: xiaomi_aqara.cube_action
|
|
||||||
event_data:
|
|
||||||
entity_id: binary_sensor.cube_158d00027c0276
|
|
||||||
action_type: flip180
|
|
||||||
action:
|
|
||||||
- service: switch.toggle
|
|
||||||
entity_id: switch.zwave_smart_switch_switch
|
|
||||||
|
|
||||||
# Move: Toggle Office Room Light
|
# Move: Toggle Office Room Light
|
||||||
- alias: Front Room Cube Event Move
|
- alias: Front Room Cube Event Move
|
||||||
initial_state: true
|
initial_state: true
|
||||||
|
|
|
@ -21,6 +21,13 @@ input_label:
|
||||||
two_car_garage_door_tilt_sensor:
|
two_car_garage_door_tilt_sensor:
|
||||||
upstairs_multi_sensor:
|
upstairs_multi_sensor:
|
||||||
wallmote:
|
wallmote:
|
||||||
|
ecolink_motion_detector:
|
||||||
|
ecolink_firefighter:
|
||||||
|
ecolink_door_window_sensor_2:
|
||||||
|
aeon_labs_zw100_multisensor_6_2:
|
||||||
|
aeon_labs_zw100_multisensor_6:
|
||||||
|
ecolink_door_window_sensor:
|
||||||
|
ecolink_garage_door_tilt_sensor:
|
||||||
|
|
||||||
suresh_battery:
|
suresh_battery:
|
||||||
mallika_battery:
|
mallika_battery:
|
||||||
|
|
|
@ -94,8 +94,7 @@
|
||||||
"switch.kids_bedroom",
|
"switch.kids_bedroom",
|
||||||
"switch.kitchen",
|
"switch.kitchen",
|
||||||
"switch.office_room",
|
"switch.office_room",
|
||||||
"switch.wemobackyardlightswitch",
|
"switch.wemobackyardlightswitch"] %}
|
||||||
"switch.zwave_smart_switch_switch"] %}
|
|
||||||
{% for item in lights_switches -%}
|
{% for item in lights_switches -%}
|
||||||
{%- if states[item.split('.')[0]][item.split('.')[1]].state == "on" -%}
|
{%- if states[item.split('.')[0]][item.split('.')[1]].state == "on" -%}
|
||||||
{%- set friendly_name = states[item.split('.')[0]][item.split('.')[1]].attributes.friendly_name -%}
|
{%- set friendly_name = states[item.split('.')[0]][item.split('.')[1]].attributes.friendly_name -%}
|
||||||
|
|
|
@ -28,8 +28,7 @@
|
||||||
"switch.kids_bedroom",
|
"switch.kids_bedroom",
|
||||||
"switch.kitchen",
|
"switch.kitchen",
|
||||||
"switch.office_room",
|
"switch.office_room",
|
||||||
"switch.wemobackyardlightswitch",
|
"switch.wemobackyardlightswitch"] %}
|
||||||
"switch.zwave_smart_switch_switch"] %}
|
|
||||||
{%- for item in lights_switches -%}
|
{%- for item in lights_switches -%}
|
||||||
{%- if states[item.split('.')[0]][item.split('.')[1]].state == "on" -%}
|
{%- if states[item.split('.')[0]][item.split('.')[1]].state == "on" -%}
|
||||||
{%- set friendly_name = states[item.split('.')[0]][item.split('.')[1]].attributes.friendly_name %}
|
{%- set friendly_name = states[item.split('.')[0]][item.split('.')[1]].attributes.friendly_name %}
|
||||||
|
|
|
@ -11,36 +11,6 @@
|
||||||
</CommandClass>
|
</CommandClass>
|
||||||
</CommandClasses>
|
</CommandClasses>
|
||||||
</Node>
|
</Node>
|
||||||
<Node id="2" name="" location="" basic="4" generic="7" specific="1" type="Notification Sensor" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="Probe">
|
|
||||||
<Manufacturer id="0" name="">
|
|
||||||
<Product type="0" id="0" name="" />
|
|
||||||
</Manufacturer>
|
|
||||||
<CommandClasses>
|
|
||||||
<CommandClass id="32" name="COMMAND_CLASS_BASIC" version="1">
|
|
||||||
<Instance index="1" />
|
|
||||||
<Value type="byte" genre="basic" instance="1" index="0" label="Basic" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
|
|
||||||
</CommandClass>
|
|
||||||
<CommandClass id="132" name="COMMAND_CLASS_WAKE_UP" version="1" request_flags="2">
|
|
||||||
<Instance index="1" />
|
|
||||||
<Value type="int" genre="system" instance="1" index="0" label="Wake-up Interval" units="Seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="3600" />
|
|
||||||
</CommandClass>
|
|
||||||
</CommandClasses>
|
|
||||||
</Node>
|
|
||||||
<Node id="3" name="" location="" basic="4" generic="7" specific="1" type="Notification Sensor" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="Probe">
|
|
||||||
<Manufacturer id="0" name="">
|
|
||||||
<Product type="0" id="0" name="" />
|
|
||||||
</Manufacturer>
|
|
||||||
<CommandClasses>
|
|
||||||
<CommandClass id="32" name="COMMAND_CLASS_BASIC" version="1">
|
|
||||||
<Instance index="1" />
|
|
||||||
<Value type="byte" genre="basic" instance="1" index="0" label="Basic" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
|
|
||||||
</CommandClass>
|
|
||||||
<CommandClass id="132" name="COMMAND_CLASS_WAKE_UP" version="1" request_flags="2">
|
|
||||||
<Instance index="1" />
|
|
||||||
<Value type="int" genre="system" instance="1" index="0" label="Wake-up Interval" units="Seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="3600" />
|
|
||||||
</CommandClass>
|
|
||||||
</CommandClasses>
|
|
||||||
</Node>
|
|
||||||
<Node id="4" name="" location="" basic="4" generic="7" specific="1" roletype="6" devicetype="3072" nodetype="0" type="Notification Sensor" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="CacheLoad">
|
<Node id="4" name="" location="" basic="4" generic="7" specific="1" roletype="6" devicetype="3072" nodetype="0" type="Notification Sensor" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="CacheLoad">
|
||||||
<Manufacturer id="14a" name="Ecolink">
|
<Manufacturer id="14a" name="Ecolink">
|
||||||
<Product type="4" id="3" name="Garage Door Tilt Sensor" />
|
<Product type="4" id="3" name="Garage Door Tilt Sensor" />
|
||||||
|
@ -152,7 +122,7 @@
|
||||||
</CommandClass>
|
</CommandClass>
|
||||||
</CommandClasses>
|
</CommandClasses>
|
||||||
</Node>
|
</Node>
|
||||||
<Node id="5" name="" location="" basic="4" generic="7" specific="1" type="Notification Sensor" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="Session">
|
<Node id="5" name="" location="" basic="4" generic="7" specific="1" type="Notification Sensor" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="CacheLoad">
|
||||||
<Manufacturer id="0" name="">
|
<Manufacturer id="0" name="">
|
||||||
<Product type="0" id="0" name="" />
|
<Product type="0" id="0" name="" />
|
||||||
</Manufacturer>
|
</Manufacturer>
|
||||||
|
@ -163,7 +133,7 @@
|
||||||
</CommandClass>
|
</CommandClass>
|
||||||
<CommandClass id="132" name="COMMAND_CLASS_WAKE_UP" version="1" request_flags="2">
|
<CommandClass id="132" name="COMMAND_CLASS_WAKE_UP" version="1" request_flags="2">
|
||||||
<Instance index="1" />
|
<Instance index="1" />
|
||||||
<Value type="int" genre="system" instance="1" index="0" label="Wake-up Interval" units="Seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="14400" />
|
<Value type="int" genre="system" instance="1" index="0" label="Wake-up Interval" units="Seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="3600" />
|
||||||
</CommandClass>
|
</CommandClass>
|
||||||
</CommandClasses>
|
</CommandClasses>
|
||||||
</Node>
|
</Node>
|
||||||
|
@ -178,7 +148,7 @@
|
||||||
</CommandClass>
|
</CommandClass>
|
||||||
<CommandClass id="48" name="COMMAND_CLASS_SENSOR_BINARY" version="1" request_flags="4" innif="true">
|
<CommandClass id="48" name="COMMAND_CLASS_SENSOR_BINARY" version="1" request_flags="4" innif="true">
|
||||||
<Instance index="1" />
|
<Instance index="1" />
|
||||||
<Value type="bool" genre="user" instance="1" index="0" label="Sensor" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="False" />
|
<Value type="bool" genre="user" instance="1" index="0" label="Sensor" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="True" />
|
||||||
<SensorMap index="0" type="255" />
|
<SensorMap index="0" type="255" />
|
||||||
</CommandClass>
|
</CommandClass>
|
||||||
<CommandClass id="90" name="COMMAND_CLASS_DEVICE_RESET_LOCALLY" version="1">
|
<CommandClass id="90" name="COMMAND_CLASS_DEVICE_RESET_LOCALLY" version="1">
|
||||||
|
@ -198,8 +168,8 @@
|
||||||
<Value type="byte" genre="user" instance="1" index="0" label="Alarm Type" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
|
<Value type="byte" genre="user" instance="1" index="0" label="Alarm Type" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
|
||||||
<Value type="byte" genre="user" instance="1" index="1" label="Alarm Level" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
|
<Value type="byte" genre="user" instance="1" index="1" label="Alarm Level" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
|
||||||
<Value type="byte" genre="user" instance="1" index="2" label="SourceNodeId" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
|
<Value type="byte" genre="user" instance="1" index="2" label="SourceNodeId" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
|
||||||
<Value type="byte" genre="user" instance="1" index="9" label="Access Control" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="23" />
|
<Value type="byte" genre="user" instance="1" index="9" label="Access Control" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="22" />
|
||||||
<Value type="byte" genre="user" instance="1" index="10" label="Burglar" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
|
<Value type="byte" genre="user" instance="1" index="10" label="Burglar" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="3" />
|
||||||
<Value type="byte" genre="user" instance="1" index="11" label="Power Management" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
|
<Value type="byte" genre="user" instance="1" index="11" label="Power Management" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
|
||||||
</CommandClass>
|
</CommandClass>
|
||||||
<CommandClass id="114" name="COMMAND_CLASS_MANUFACTURER_SPECIFIC" version="1" request_flags="4" innif="true">
|
<CommandClass id="114" name="COMMAND_CLASS_MANUFACTURER_SPECIFIC" version="1" request_flags="4" innif="true">
|
||||||
|
@ -289,8 +259,8 @@
|
||||||
</CommandClass>
|
</CommandClass>
|
||||||
<CommandClass id="49" name="COMMAND_CLASS_SENSOR_MULTILEVEL" version="5" innif="true">
|
<CommandClass id="49" name="COMMAND_CLASS_SENSOR_MULTILEVEL" version="5" innif="true">
|
||||||
<Instance index="1" />
|
<Instance index="1" />
|
||||||
<Value type="decimal" genre="user" instance="1" index="1" label="Temperature" units="F" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="79.8" />
|
<Value type="decimal" genre="user" instance="1" index="1" label="Temperature" units="F" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="79.9" />
|
||||||
<Value type="decimal" genre="user" instance="1" index="3" label="Luminance" units="lux" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="21" />
|
<Value type="decimal" genre="user" instance="1" index="3" label="Luminance" units="lux" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="0" />
|
||||||
<Value type="decimal" genre="user" instance="1" index="5" label="Relative Humidity" units="%" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="54" />
|
<Value type="decimal" genre="user" instance="1" index="5" label="Relative Humidity" units="%" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="54" />
|
||||||
<Value type="decimal" genre="user" instance="1" index="27" label="Ultraviolet" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="0" />
|
<Value type="decimal" genre="user" instance="1" index="27" label="Ultraviolet" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="0" />
|
||||||
</CommandClass>
|
</CommandClass>
|
||||||
|
@ -575,11 +545,11 @@
|
||||||
</CommandClass>
|
</CommandClass>
|
||||||
<CommandClass id="50" name="COMMAND_CLASS_METER" version="3" request_flags="2" innif="true">
|
<CommandClass id="50" name="COMMAND_CLASS_METER" version="3" request_flags="2" innif="true">
|
||||||
<Instance index="1" />
|
<Instance index="1" />
|
||||||
<Value type="decimal" genre="user" instance="1" index="0" label="Energy" units="kWh" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="61.692" />
|
<Value type="decimal" genre="user" instance="1" index="0" label="Energy" units="kWh" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="61.693" />
|
||||||
<Value type="decimal" genre="user" instance="1" index="1" label="Previous Reading" units="kWh" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="61.692" />
|
<Value type="decimal" genre="user" instance="1" index="1" label="Previous Reading" units="kWh" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="61.693" />
|
||||||
<Value type="int" genre="user" instance="1" index="2" label="Interval" units="seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="280" />
|
<Value type="int" genre="user" instance="1" index="2" label="Interval" units="seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="301" />
|
||||||
<Value type="decimal" genre="user" instance="1" index="8" label="Power" units="W" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="0.000" />
|
<Value type="decimal" genre="user" instance="1" index="8" label="Power" units="W" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="0.000" />
|
||||||
<Value type="decimal" genre="user" instance="1" index="16" label="Voltage" units="V" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="118.833" />
|
<Value type="decimal" genre="user" instance="1" index="16" label="Voltage" units="V" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="121.170" />
|
||||||
<Value type="decimal" genre="user" instance="1" index="20" label="Current" units="A" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="0.000" />
|
<Value type="decimal" genre="user" instance="1" index="20" label="Current" units="A" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="0.000" />
|
||||||
<Value type="bool" genre="user" instance="1" index="32" label="Exporting" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="False" />
|
<Value type="bool" genre="user" instance="1" index="32" label="Exporting" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="False" />
|
||||||
<Value type="button" genre="system" instance="1" index="33" label="Reset" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
|
<Value type="button" genre="system" instance="1" index="33" label="Reset" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
|
||||||
|
@ -749,7 +719,7 @@
|
||||||
</CommandClass>
|
</CommandClass>
|
||||||
<CommandClass id="129" name="COMMAND_CLASS_CLOCK" version="1" request_flags="4" innif="true">
|
<CommandClass id="129" name="COMMAND_CLASS_CLOCK" version="1" request_flags="4" innif="true">
|
||||||
<Instance index="1" />
|
<Instance index="1" />
|
||||||
<Value type="list" genre="user" instance="1" index="0" label="Day" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="2" size="1">
|
<Value type="list" genre="user" instance="1" index="0" label="Day" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="1" size="1">
|
||||||
<Item label="Monday" value="1" />
|
<Item label="Monday" value="1" />
|
||||||
<Item label="Tuesday" value="2" />
|
<Item label="Tuesday" value="2" />
|
||||||
<Item label="Wednesday" value="3" />
|
<Item label="Wednesday" value="3" />
|
||||||
|
@ -758,8 +728,8 @@
|
||||||
<Item label="Saturday" value="6" />
|
<Item label="Saturday" value="6" />
|
||||||
<Item label="Sunday" value="7" />
|
<Item label="Sunday" value="7" />
|
||||||
</Value>
|
</Value>
|
||||||
<Value type="byte" genre="user" instance="1" index="1" label="Hour" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="4" />
|
<Value type="byte" genre="user" instance="1" index="1" label="Hour" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="11" />
|
||||||
<Value type="byte" genre="user" instance="1" index="2" label="Minute" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="27" />
|
<Value type="byte" genre="user" instance="1" index="2" label="Minute" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="15" />
|
||||||
</CommandClass>
|
</CommandClass>
|
||||||
<CommandClass id="130" name="COMMAND_CLASS_HAIL" version="1" request_flags="4" after_mark="true" innif="true">
|
<CommandClass id="130" name="COMMAND_CLASS_HAIL" version="1" request_flags="4" after_mark="true" innif="true">
|
||||||
<Instance index="1" />
|
<Instance index="1" />
|
||||||
|
@ -779,21 +749,6 @@
|
||||||
</CommandClass>
|
</CommandClass>
|
||||||
</CommandClasses>
|
</CommandClasses>
|
||||||
</Node>
|
</Node>
|
||||||
<Node id="16" name="" location="" basic="4" generic="7" specific="1" type="Notification Sensor" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="CacheLoad">
|
|
||||||
<Manufacturer id="0" name="">
|
|
||||||
<Product type="0" id="0" name="" />
|
|
||||||
</Manufacturer>
|
|
||||||
<CommandClasses>
|
|
||||||
<CommandClass id="32" name="COMMAND_CLASS_BASIC" version="1">
|
|
||||||
<Instance index="1" />
|
|
||||||
<Value type="byte" genre="basic" instance="1" index="0" label="Basic" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
|
|
||||||
</CommandClass>
|
|
||||||
<CommandClass id="132" name="COMMAND_CLASS_WAKE_UP" version="1" request_flags="2">
|
|
||||||
<Instance index="1" />
|
|
||||||
<Value type="int" genre="system" instance="1" index="0" label="Wake-up Interval" units="Seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="3600" />
|
|
||||||
</CommandClass>
|
|
||||||
</CommandClasses>
|
|
||||||
</Node>
|
|
||||||
<Node id="17" name="" location="" basic="4" generic="7" specific="1" roletype="6" devicetype="3072" nodetype="0" type="Notification Sensor" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="CacheLoad">
|
<Node id="17" name="" location="" basic="4" generic="7" specific="1" roletype="6" devicetype="3072" nodetype="0" type="Notification Sensor" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="CacheLoad">
|
||||||
<Manufacturer id="14a" name="Ecolink">
|
<Manufacturer id="14a" name="Ecolink">
|
||||||
<Product type="4" id="1" name="Motion Detector" />
|
<Product type="4" id="1" name="Motion Detector" />
|
||||||
|
@ -1169,27 +1124,6 @@
|
||||||
</CommandClass>
|
</CommandClass>
|
||||||
</CommandClasses>
|
</CommandClasses>
|
||||||
</Node>
|
</Node>
|
||||||
<Node id="25" name="" location="" basic="4" generic="7" specific="1" type="Notification Sensor" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="CacheLoad">
|
|
||||||
<Manufacturer id="0" name="">
|
|
||||||
<Product type="0" id="0" name="" />
|
|
||||||
</Manufacturer>
|
|
||||||
<CommandClasses>
|
|
||||||
<CommandClass id="32" name="COMMAND_CLASS_BASIC" version="1">
|
|
||||||
<Instance index="1" />
|
|
||||||
<Value type="byte" genre="basic" instance="1" index="0" label="Basic" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
|
|
||||||
</CommandClass>
|
|
||||||
<CommandClass id="132" name="COMMAND_CLASS_WAKE_UP" version="1" request_flags="2">
|
|
||||||
<Instance index="1" />
|
|
||||||
<Value type="int" genre="system" instance="1" index="0" label="Wake-up Interval" units="Seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="14400" />
|
|
||||||
</CommandClass>
|
|
||||||
</CommandClasses>
|
|
||||||
</Node>
|
|
||||||
<Node id="27" name="" location="" basic="0" generic="0" specific="0" type="" listening="true" frequentListening="false" beaming="false" routing="false" max_baud_rate="0" version="0" query_stage="Complete">
|
|
||||||
<Manufacturer id="0" name="">
|
|
||||||
<Product type="0" id="0" name="" />
|
|
||||||
</Manufacturer>
|
|
||||||
<CommandClasses />
|
|
||||||
</Node>
|
|
||||||
<Node id="28" name="" location="" basic="4" generic="24" specific="1" roletype="6" devicetype="3073" nodetype="0" type="Basic Wall Controller" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="CacheLoad">
|
<Node id="28" name="" location="" basic="4" generic="24" specific="1" roletype="6" devicetype="3073" nodetype="0" type="Basic Wall Controller" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="CacheLoad">
|
||||||
<Manufacturer id="14a" name="Ecolink">
|
<Manufacturer id="14a" name="Ecolink">
|
||||||
<Product type="5" id="f" name="FireFighter" />
|
<Product type="5" id="f" name="FireFighter" />
|
||||||
|
@ -1205,7 +1139,7 @@
|
||||||
</CommandClass>
|
</CommandClass>
|
||||||
<CommandClass id="49" name="COMMAND_CLASS_SENSOR_MULTILEVEL" version="7" innif="true">
|
<CommandClass id="49" name="COMMAND_CLASS_SENSOR_MULTILEVEL" version="7" innif="true">
|
||||||
<Instance index="1" />
|
<Instance index="1" />
|
||||||
<Value type="decimal" genre="user" instance="1" index="1" label="Temperature" units="F" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="76.10" />
|
<Value type="decimal" genre="user" instance="1" index="1" label="Temperature" units="C" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="23.30" />
|
||||||
</CommandClass>
|
</CommandClass>
|
||||||
<CommandClass id="90" name="COMMAND_CLASS_DEVICE_RESET_LOCALLY" version="1" request_flags="4" innif="true">
|
<CommandClass id="90" name="COMMAND_CLASS_DEVICE_RESET_LOCALLY" version="1" request_flags="4" innif="true">
|
||||||
<Instance index="1" />
|
<Instance index="1" />
|
||||||
|
@ -1299,7 +1233,7 @@
|
||||||
</CommandClass>
|
</CommandClass>
|
||||||
</CommandClasses>
|
</CommandClasses>
|
||||||
</Node>
|
</Node>
|
||||||
<Node id="29" name="" location="" basic="4" generic="7" specific="1" roletype="6" devicetype="3072" nodetype="0" type="Notification Sensor" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="CacheLoad">
|
<Node id="29" name="" location="" basic="4" generic="7" specific="1" roletype="6" devicetype="3072" nodetype="0" type="Notification Sensor" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="Complete">
|
||||||
<Manufacturer id="14a" name="Ecolink">
|
<Manufacturer id="14a" name="Ecolink">
|
||||||
<Product type="4" id="2" name="Door/Window Sensor" />
|
<Product type="4" id="2" name="Door/Window Sensor" />
|
||||||
</Manufacturer>
|
</Manufacturer>
|
||||||
|
@ -1405,7 +1339,7 @@
|
||||||
</CommandClass>
|
</CommandClass>
|
||||||
</CommandClasses>
|
</CommandClasses>
|
||||||
</Node>
|
</Node>
|
||||||
<Node id="34" name="" location="" basic="4" generic="33" specific="1" roletype="6" devicetype="3079" nodetype="0" type="Routing Multilevel Sensor" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="CacheLoad">
|
<Node id="34" name="" location="" basic="4" generic="33" specific="1" roletype="6" devicetype="3079" nodetype="0" type="Routing Multilevel Sensor" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="Complete">
|
||||||
<Manufacturer id="86" name="AEON Labs">
|
<Manufacturer id="86" name="AEON Labs">
|
||||||
<Product type="102" id="64" name="ZW100 MultiSensor 6" />
|
<Product type="102" id="64" name="ZW100 MultiSensor 6" />
|
||||||
</Manufacturer>
|
</Manufacturer>
|
||||||
|
@ -1423,8 +1357,8 @@
|
||||||
</CommandClass>
|
</CommandClass>
|
||||||
<CommandClass id="49" name="COMMAND_CLASS_SENSOR_MULTILEVEL" version="5" innif="true">
|
<CommandClass id="49" name="COMMAND_CLASS_SENSOR_MULTILEVEL" version="5" innif="true">
|
||||||
<Instance index="1" />
|
<Instance index="1" />
|
||||||
<Value type="decimal" genre="user" instance="1" index="1" label="Temperature" units="F" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="81.4" />
|
<Value type="decimal" genre="user" instance="1" index="1" label="Temperature" units="F" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="82.6" />
|
||||||
<Value type="decimal" genre="user" instance="1" index="3" label="Luminance" units="lux" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="8" />
|
<Value type="decimal" genre="user" instance="1" index="3" label="Luminance" units="lux" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="0" />
|
||||||
<Value type="decimal" genre="user" instance="1" index="5" label="Relative Humidity" units="%" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="49" />
|
<Value type="decimal" genre="user" instance="1" index="5" label="Relative Humidity" units="%" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="49" />
|
||||||
<Value type="decimal" genre="user" instance="1" index="27" label="Ultraviolet" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="0" />
|
<Value type="decimal" genre="user" instance="1" index="27" label="Ultraviolet" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="0" />
|
||||||
</CommandClass>
|
</CommandClass>
|
||||||
|
@ -1605,7 +1539,7 @@
|
||||||
<Value type="byte" genre="user" instance="1" index="0" label="Alarm Type" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
|
<Value type="byte" genre="user" instance="1" index="0" label="Alarm Type" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
|
||||||
<Value type="byte" genre="user" instance="1" index="1" label="Alarm Level" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
|
<Value type="byte" genre="user" instance="1" index="1" label="Alarm Level" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
|
||||||
<Value type="byte" genre="user" instance="1" index="2" label="SourceNodeId" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
|
<Value type="byte" genre="user" instance="1" index="2" label="SourceNodeId" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
|
||||||
<Value type="byte" genre="user" instance="1" index="10" label="Burglar" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
|
<Value type="byte" genre="user" instance="1" index="10" label="Burglar" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="8" />
|
||||||
</CommandClass>
|
</CommandClass>
|
||||||
<CommandClass id="114" name="COMMAND_CLASS_MANUFACTURER_SPECIFIC" version="1" request_flags="4" innif="true">
|
<CommandClass id="114" name="COMMAND_CLASS_MANUFACTURER_SPECIFIC" version="1" request_flags="4" innif="true">
|
||||||
<Instance index="1" />
|
<Instance index="1" />
|
||||||
|
@ -1678,72 +1612,4 @@
|
||||||
</CommandClass>
|
</CommandClass>
|
||||||
</CommandClasses>
|
</CommandClasses>
|
||||||
</Node>
|
</Node>
|
||||||
<Node id="38" name="" location="" basic="4" generic="7" specific="1" type="Notification Sensor" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="CacheLoad">
|
|
||||||
<Manufacturer id="0" name="">
|
|
||||||
<Product type="0" id="0" name="" />
|
|
||||||
</Manufacturer>
|
|
||||||
<CommandClasses>
|
|
||||||
<CommandClass id="32" name="COMMAND_CLASS_BASIC" version="1">
|
|
||||||
<Instance index="1" />
|
|
||||||
<Value type="byte" genre="basic" instance="1" index="0" label="Basic" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
|
|
||||||
</CommandClass>
|
|
||||||
<CommandClass id="132" name="COMMAND_CLASS_WAKE_UP" version="1" request_flags="2">
|
|
||||||
<Instance index="1" />
|
|
||||||
<Value type="int" genre="system" instance="1" index="0" label="Wake-up Interval" units="Seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="3600" />
|
|
||||||
</CommandClass>
|
|
||||||
</CommandClasses>
|
|
||||||
</Node>
|
|
||||||
<Node id="39" name="" location="" basic="4" generic="49" specific="1" type="Simple Meter" listening="true" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="CacheLoad">
|
|
||||||
<Manufacturer id="0" name="">
|
|
||||||
<Product type="0" id="0" name="" />
|
|
||||||
</Manufacturer>
|
|
||||||
<CommandClasses>
|
|
||||||
<CommandClass id="32" name="COMMAND_CLASS_BASIC" version="1" after_mark="true" mapping="50">
|
|
||||||
<Instance index="1" />
|
|
||||||
</CommandClass>
|
|
||||||
<CommandClass id="50" name="COMMAND_CLASS_METER" version="1" request_flags="2">
|
|
||||||
<Instance index="1" />
|
|
||||||
<Value type="decimal" genre="user" instance="1" index="0" label="Unknown" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="0.0" />
|
|
||||||
</CommandClass>
|
|
||||||
<CommandClass id="114" name="COMMAND_CLASS_MANUFACTURER_SPECIFIC" version="1" request_flags="2">
|
|
||||||
<Instance index="1" />
|
|
||||||
</CommandClass>
|
|
||||||
<CommandClass id="134" name="COMMAND_CLASS_VERSION" version="1" request_flags="2">
|
|
||||||
<Instance index="1" />
|
|
||||||
<Value type="string" genre="system" instance="1" index="0" label="Library Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="Unknown" />
|
|
||||||
<Value type="string" genre="system" instance="1" index="1" label="Protocol Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="Unknown" />
|
|
||||||
<Value type="string" genre="system" instance="1" index="2" label="Application Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="Unknown" />
|
|
||||||
</CommandClass>
|
|
||||||
</CommandClasses>
|
|
||||||
</Node>
|
|
||||||
<Node id="41" name="" location="" basic="4" generic="7" specific="1" type="Notification Sensor" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="Probe">
|
|
||||||
<Manufacturer id="0" name="">
|
|
||||||
<Product type="0" id="0" name="" />
|
|
||||||
</Manufacturer>
|
|
||||||
<CommandClasses>
|
|
||||||
<CommandClass id="32" name="COMMAND_CLASS_BASIC" version="1">
|
|
||||||
<Instance index="1" />
|
|
||||||
<Value type="byte" genre="basic" instance="1" index="0" label="Basic" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
|
|
||||||
</CommandClass>
|
|
||||||
<CommandClass id="132" name="COMMAND_CLASS_WAKE_UP" version="1" request_flags="2">
|
|
||||||
<Instance index="1" />
|
|
||||||
<Value type="int" genre="system" instance="1" index="0" label="Wake-up Interval" units="Seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="3600" />
|
|
||||||
</CommandClass>
|
|
||||||
</CommandClasses>
|
|
||||||
</Node>
|
|
||||||
<Node id="42" name="" location="" basic="4" generic="7" specific="1" type="Notification Sensor" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="Probe">
|
|
||||||
<Manufacturer id="0" name="">
|
|
||||||
<Product type="0" id="0" name="" />
|
|
||||||
</Manufacturer>
|
|
||||||
<CommandClasses>
|
|
||||||
<CommandClass id="32" name="COMMAND_CLASS_BASIC" version="1">
|
|
||||||
<Instance index="1" />
|
|
||||||
<Value type="byte" genre="basic" instance="1" index="0" label="Basic" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
|
|
||||||
</CommandClass>
|
|
||||||
<CommandClass id="132" name="COMMAND_CLASS_WAKE_UP" version="1" request_flags="2">
|
|
||||||
<Instance index="1" />
|
|
||||||
<Value type="int" genre="system" instance="1" index="0" label="Wake-up Interval" units="Seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="3600" />
|
|
||||||
</CommandClass>
|
|
||||||
</CommandClasses>
|
|
||||||
</Node>
|
|
||||||
</Driver>
|
</Driver>
|
||||||
|
|
Loading…
Reference in New Issue