parent
1cace5782c
commit
fb0232429e
3 changed files with 38 additions and 44 deletions
|
@ -13,33 +13,31 @@ import homeassistant.components.mqtt as mqtt
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
STATE_ALARM_ARMED_AWAY, STATE_ALARM_ARMED_HOME, STATE_ALARM_DISARMED,
|
STATE_ALARM_ARMED_AWAY, STATE_ALARM_ARMED_HOME, STATE_ALARM_DISARMED,
|
||||||
STATE_ALARM_PENDING, STATE_ALARM_TRIGGERED, STATE_UNKNOWN,
|
STATE_ALARM_PENDING, STATE_ALARM_TRIGGERED, STATE_UNKNOWN,
|
||||||
CONF_NAME)
|
CONF_NAME, CONF_CODE)
|
||||||
from homeassistant.components.mqtt import (
|
from homeassistant.components.mqtt import (
|
||||||
CONF_STATE_TOPIC, CONF_COMMAND_TOPIC, CONF_QOS)
|
CONF_STATE_TOPIC, CONF_COMMAND_TOPIC, CONF_QOS)
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
DEPENDENCIES = ['mqtt']
|
|
||||||
|
|
||||||
CONF_PAYLOAD_DISARM = 'payload_disarm'
|
CONF_PAYLOAD_DISARM = 'payload_disarm'
|
||||||
CONF_PAYLOAD_ARM_HOME = 'payload_arm_home'
|
CONF_PAYLOAD_ARM_HOME = 'payload_arm_home'
|
||||||
CONF_PAYLOAD_ARM_AWAY = 'payload_arm_away'
|
CONF_PAYLOAD_ARM_AWAY = 'payload_arm_away'
|
||||||
CONF_CODE = 'code'
|
|
||||||
|
|
||||||
DEFAULT_NAME = "MQTT Alarm"
|
DEFAULT_ARM_AWAY = 'ARM_AWAY'
|
||||||
DEFAULT_DISARM = "DISARM"
|
DEFAULT_ARM_HOME = 'ARM_HOME'
|
||||||
DEFAULT_ARM_HOME = "ARM_HOME"
|
DEFAULT_DISARM = 'DISARM'
|
||||||
DEFAULT_ARM_AWAY = "ARM_AWAY"
|
DEFAULT_NAME = 'MQTT Alarm'
|
||||||
|
DEPENDENCIES = ['mqtt']
|
||||||
|
|
||||||
PLATFORM_SCHEMA = mqtt.MQTT_BASE_PLATFORM_SCHEMA.extend({
|
PLATFORM_SCHEMA = mqtt.MQTT_BASE_PLATFORM_SCHEMA.extend({
|
||||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
|
||||||
vol.Required(CONF_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
|
||||||
vol.Required(CONF_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
vol.Required(CONF_COMMAND_TOPIC): mqtt.valid_publish_topic,
|
||||||
vol.Optional(CONF_PAYLOAD_DISARM, default=DEFAULT_DISARM): cv.string,
|
vol.Required(CONF_STATE_TOPIC): mqtt.valid_subscribe_topic,
|
||||||
vol.Optional(CONF_PAYLOAD_ARM_HOME, default=DEFAULT_ARM_HOME): cv.string,
|
|
||||||
vol.Optional(CONF_PAYLOAD_ARM_AWAY, default=DEFAULT_ARM_AWAY): cv.string,
|
|
||||||
vol.Optional(CONF_CODE): cv.string,
|
vol.Optional(CONF_CODE): cv.string,
|
||||||
|
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||||
|
vol.Optional(CONF_PAYLOAD_ARM_AWAY, default=DEFAULT_ARM_AWAY): cv.string,
|
||||||
|
vol.Optional(CONF_PAYLOAD_ARM_HOME, default=DEFAULT_ARM_HOME): cv.string,
|
||||||
|
vol.Optional(CONF_PAYLOAD_DISARM, default=DEFAULT_DISARM): cv.string,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
@ -47,20 +45,20 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
|
||||||
"""Setup the MQTT platform."""
|
"""Setup the MQTT platform."""
|
||||||
add_devices([MqttAlarm(
|
add_devices([MqttAlarm(
|
||||||
hass,
|
hass,
|
||||||
config[CONF_NAME],
|
config.get(CONF_NAME),
|
||||||
config[CONF_STATE_TOPIC],
|
config.get(CONF_STATE_TOPIC),
|
||||||
config[CONF_COMMAND_TOPIC],
|
config.get(CONF_COMMAND_TOPIC),
|
||||||
config[CONF_QOS],
|
config.get(CONF_QOS),
|
||||||
config[CONF_PAYLOAD_DISARM],
|
config.get(CONF_PAYLOAD_DISARM),
|
||||||
config[CONF_PAYLOAD_ARM_HOME],
|
config.get(CONF_PAYLOAD_ARM_HOME),
|
||||||
config[CONF_PAYLOAD_ARM_AWAY],
|
config.get(CONF_PAYLOAD_ARM_AWAY),
|
||||||
config.get(CONF_CODE))])
|
config.get(CONF_CODE))])
|
||||||
|
|
||||||
|
|
||||||
# pylint: disable=too-many-arguments, too-many-instance-attributes
|
# pylint: disable=too-many-arguments, too-many-instance-attributes
|
||||||
# pylint: disable=abstract-method
|
# pylint: disable=abstract-method
|
||||||
class MqttAlarm(alarm.AlarmControlPanel):
|
class MqttAlarm(alarm.AlarmControlPanel):
|
||||||
"""Represent a MQTT alarm status."""
|
"""Representation of a MQTT alarm status."""
|
||||||
|
|
||||||
def __init__(self, hass, name, state_topic, command_topic, qos,
|
def __init__(self, hass, name, state_topic, command_topic, qos,
|
||||||
payload_disarm, payload_arm_home, payload_arm_away, code):
|
payload_disarm, payload_arm_home, payload_arm_away, code):
|
||||||
|
|
|
@ -7,13 +7,12 @@ at https://home-assistant.io/components/automation/#mqtt-trigger
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
import homeassistant.components.mqtt as mqtt
|
import homeassistant.components.mqtt as mqtt
|
||||||
from homeassistant.const import CONF_PLATFORM
|
from homeassistant.const import (CONF_PLATFORM, CONF_PAYLOAD)
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
|
|
||||||
DEPENDENCIES = ['mqtt']
|
DEPENDENCIES = ['mqtt']
|
||||||
|
|
||||||
CONF_TOPIC = 'topic'
|
CONF_TOPIC = 'topic'
|
||||||
CONF_PAYLOAD = 'payload'
|
|
||||||
|
|
||||||
TRIGGER_SCHEMA = vol.Schema({
|
TRIGGER_SCHEMA = vol.Schema({
|
||||||
vol.Required(CONF_PLATFORM): mqtt.DOMAIN,
|
vol.Required(CONF_PLATFORM): mqtt.DOMAIN,
|
||||||
|
@ -24,7 +23,7 @@ TRIGGER_SCHEMA = vol.Schema({
|
||||||
|
|
||||||
def trigger(hass, config, action):
|
def trigger(hass, config, action):
|
||||||
"""Listen for state changes based on configuration."""
|
"""Listen for state changes based on configuration."""
|
||||||
topic = config[CONF_TOPIC]
|
topic = config.get(CONF_TOPIC)
|
||||||
payload = config.get(CONF_PAYLOAD)
|
payload = config.get(CONF_PAYLOAD)
|
||||||
|
|
||||||
def mqtt_automation_listener(msg_topic, msg_payload, qos):
|
def mqtt_automation_listener(msg_topic, msg_payload, qos):
|
||||||
|
|
|
@ -9,45 +9,42 @@ import logging
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
import homeassistant.components.mqtt as mqtt
|
import homeassistant.components.mqtt as mqtt
|
||||||
from homeassistant.components.binary_sensor import (BinarySensorDevice,
|
from homeassistant.components.binary_sensor import (
|
||||||
SENSOR_CLASSES)
|
BinarySensorDevice, SENSOR_CLASSES)
|
||||||
from homeassistant.const import CONF_NAME, CONF_VALUE_TEMPLATE
|
from homeassistant.const import (
|
||||||
from homeassistant.components.mqtt import CONF_STATE_TOPIC, CONF_QOS
|
CONF_NAME, CONF_VALUE_TEMPLATE, CONF_PAYLOAD_ON, CONF_PAYLOAD_OFF,
|
||||||
|
CONF_SENSOR_CLASS)
|
||||||
|
from homeassistant.components.mqtt import (CONF_STATE_TOPIC, CONF_QOS)
|
||||||
from homeassistant.helpers import template
|
from homeassistant.helpers import template
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
DEPENDENCIES = ['mqtt']
|
|
||||||
|
|
||||||
CONF_SENSOR_CLASS = 'sensor_class'
|
|
||||||
CONF_PAYLOAD_ON = 'payload_on'
|
|
||||||
CONF_PAYLOAD_OFF = 'payload_off'
|
|
||||||
|
|
||||||
DEFAULT_NAME = 'MQTT Binary sensor'
|
DEFAULT_NAME = 'MQTT Binary sensor'
|
||||||
DEFAULT_PAYLOAD_ON = 'ON'
|
|
||||||
DEFAULT_PAYLOAD_OFF = 'OFF'
|
DEFAULT_PAYLOAD_OFF = 'OFF'
|
||||||
|
DEFAULT_PAYLOAD_ON = 'ON'
|
||||||
|
DEPENDENCIES = ['mqtt']
|
||||||
|
|
||||||
PLATFORM_SCHEMA = mqtt.MQTT_RO_PLATFORM_SCHEMA.extend({
|
PLATFORM_SCHEMA = mqtt.MQTT_RO_PLATFORM_SCHEMA.extend({
|
||||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||||
|
vol.Optional(CONF_PAYLOAD_OFF, default=DEFAULT_PAYLOAD_OFF): cv.string,
|
||||||
|
vol.Optional(CONF_PAYLOAD_ON, default=DEFAULT_PAYLOAD_ON): cv.string,
|
||||||
vol.Optional(CONF_SENSOR_CLASS, default=None):
|
vol.Optional(CONF_SENSOR_CLASS, default=None):
|
||||||
vol.Any(vol.In(SENSOR_CLASSES), vol.SetTo(None)),
|
vol.Any(vol.In(SENSOR_CLASSES), vol.SetTo(None)),
|
||||||
vol.Optional(CONF_PAYLOAD_ON, default=DEFAULT_PAYLOAD_ON): cv.string,
|
|
||||||
vol.Optional(CONF_PAYLOAD_OFF, default=DEFAULT_PAYLOAD_OFF): cv.string,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
# pylint: disable=unused-argument
|
# pylint: disable=unused-argument
|
||||||
def setup_platform(hass, config, add_devices, discovery_info=None):
|
def setup_platform(hass, config, add_devices, discovery_info=None):
|
||||||
"""Add MQTT binary sensor."""
|
"""Setup the MQTT binary sensor."""
|
||||||
add_devices([MqttBinarySensor(
|
add_devices([MqttBinarySensor(
|
||||||
hass,
|
hass,
|
||||||
config[CONF_NAME],
|
config.get(CONF_NAME),
|
||||||
config[CONF_STATE_TOPIC],
|
config.get(CONF_STATE_TOPIC),
|
||||||
config[CONF_SENSOR_CLASS],
|
config.get(CONF_SENSOR_CLASS),
|
||||||
config[CONF_QOS],
|
config.get(CONF_QOS),
|
||||||
config[CONF_PAYLOAD_ON],
|
config.get(CONF_PAYLOAD_ON),
|
||||||
config[CONF_PAYLOAD_OFF],
|
config.get(CONF_PAYLOAD_OFF),
|
||||||
config.get(CONF_VALUE_TEMPLATE)
|
config.get(CONF_VALUE_TEMPLATE)
|
||||||
)])
|
)])
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue