63 lines
1.7 KiB
Python
63 lines
1.7 KiB
Python
"""Support for w800rf32 devices."""
|
|
import logging
|
|
|
|
import voluptuous as vol
|
|
|
|
from homeassistant.const import (CONF_DEVICE,
|
|
EVENT_HOMEASSISTANT_START,
|
|
EVENT_HOMEASSISTANT_STOP)
|
|
|
|
import homeassistant.helpers.config_validation as cv
|
|
from homeassistant.helpers.dispatcher import (dispatcher_send)
|
|
|
|
REQUIREMENTS = ['pyW800rf32==0.1']
|
|
|
|
DATA_W800RF32 = 'data_w800rf32'
|
|
DOMAIN = 'w800rf32'
|
|
|
|
W800RF32_DEVICE = 'w800rf32_{}'
|
|
|
|
_LOGGER = logging.getLogger(__name__)
|
|
|
|
CONFIG_SCHEMA = vol.Schema({
|
|
DOMAIN: vol.Schema({
|
|
vol.Required(CONF_DEVICE): cv.string,
|
|
}),
|
|
}, extra=vol.ALLOW_EXTRA)
|
|
|
|
|
|
def setup(hass, config):
|
|
"""Set up the w800rf32 component."""
|
|
# Try to load the W800rf32 module.
|
|
import W800rf32 as w800
|
|
|
|
# Declare the Handle event
|
|
def handle_receive(event):
|
|
"""Handle received messages from w800rf32 gateway."""
|
|
# Log event
|
|
if not event.device:
|
|
return
|
|
_LOGGER.debug("Receive W800rf32 event in handle_receive")
|
|
|
|
# Get device_type from device_id in hass.data
|
|
device_id = event.device.lower()
|
|
signal = W800RF32_DEVICE.format(device_id)
|
|
dispatcher_send(hass, signal, event)
|
|
|
|
# device --> /dev/ttyUSB0
|
|
device = config[DOMAIN][CONF_DEVICE]
|
|
w800_object = w800.Connect(device, None)
|
|
|
|
def _start_w800rf32(event):
|
|
w800_object.event_callback = handle_receive
|
|
hass.bus.listen_once(EVENT_HOMEASSISTANT_START, _start_w800rf32)
|
|
|
|
def _shutdown_w800rf32(event):
|
|
"""Close connection with w800rf32."""
|
|
w800_object.close_connection()
|
|
hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, _shutdown_w800rf32)
|
|
|
|
hass.data[DATA_W800RF32] = w800_object
|
|
|
|
return True
|