mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 20:57:21 +00:00
homematic: Add homematic.put_paramset service (#16024)
Service to call putParamset method of XML-RPC API
This commit is contained in:
parent
7ed8ed83e3
commit
b9733d0d99
@ -48,6 +48,8 @@ ATTR_MESSAGE = 'message'
|
|||||||
ATTR_MODE = 'mode'
|
ATTR_MODE = 'mode'
|
||||||
ATTR_TIME = 'time'
|
ATTR_TIME = 'time'
|
||||||
ATTR_UNIQUE_ID = 'unique_id'
|
ATTR_UNIQUE_ID = 'unique_id'
|
||||||
|
ATTR_PARAMSET_KEY = 'paramset_key'
|
||||||
|
ATTR_PARAMSET = 'paramset'
|
||||||
|
|
||||||
EVENT_KEYPRESS = 'homematic.keypress'
|
EVENT_KEYPRESS = 'homematic.keypress'
|
||||||
EVENT_IMPULSE = 'homematic.impulse'
|
EVENT_IMPULSE = 'homematic.impulse'
|
||||||
@ -58,6 +60,7 @@ SERVICE_RECONNECT = 'reconnect'
|
|||||||
SERVICE_SET_VARIABLE_VALUE = 'set_variable_value'
|
SERVICE_SET_VARIABLE_VALUE = 'set_variable_value'
|
||||||
SERVICE_SET_DEVICE_VALUE = 'set_device_value'
|
SERVICE_SET_DEVICE_VALUE = 'set_device_value'
|
||||||
SERVICE_SET_INSTALL_MODE = 'set_install_mode'
|
SERVICE_SET_INSTALL_MODE = 'set_install_mode'
|
||||||
|
SERVICE_PUT_PARAMSET = 'put_paramset'
|
||||||
|
|
||||||
HM_DEVICE_TYPES = {
|
HM_DEVICE_TYPES = {
|
||||||
DISCOVER_SWITCHES: [
|
DISCOVER_SWITCHES: [
|
||||||
@ -232,6 +235,13 @@ SCHEMA_SERVICE_SET_INSTALL_MODE = vol.Schema({
|
|||||||
vol.Optional(ATTR_ADDRESS): vol.All(cv.string, vol.Upper),
|
vol.Optional(ATTR_ADDRESS): vol.All(cv.string, vol.Upper),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
SCHEMA_SERVICE_PUT_PARAMSET = vol.Schema({
|
||||||
|
vol.Required(ATTR_INTERFACE): cv.string,
|
||||||
|
vol.Required(ATTR_ADDRESS): vol.All(cv.string, vol.Upper),
|
||||||
|
vol.Required(ATTR_PARAMSET_KEY): vol.All(cv.string, vol.Upper),
|
||||||
|
vol.Required(ATTR_PARAMSET): dict,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
@bind_hass
|
@bind_hass
|
||||||
def virtualkey(hass, address, channel, param, interface=None):
|
def virtualkey(hass, address, channel, param, interface=None):
|
||||||
@ -271,6 +281,19 @@ def set_device_value(hass, address, channel, param, value, interface=None):
|
|||||||
hass.services.call(DOMAIN, SERVICE_SET_DEVICE_VALUE, data)
|
hass.services.call(DOMAIN, SERVICE_SET_DEVICE_VALUE, data)
|
||||||
|
|
||||||
|
|
||||||
|
@bind_hass
|
||||||
|
def put_paramset(hass, interface, address, paramset_key, paramset):
|
||||||
|
"""Call putParamset XML-RPC method of supplied interface."""
|
||||||
|
data = {
|
||||||
|
ATTR_INTERFACE: interface,
|
||||||
|
ATTR_ADDRESS: address,
|
||||||
|
ATTR_PARAMSET_KEY: paramset_key,
|
||||||
|
ATTR_PARAMSET: paramset,
|
||||||
|
}
|
||||||
|
|
||||||
|
hass.services.call(DOMAIN, SERVICE_PUT_PARAMSET, data)
|
||||||
|
|
||||||
|
|
||||||
@bind_hass
|
@bind_hass
|
||||||
def set_install_mode(hass, interface, mode=None, time=None, address=None):
|
def set_install_mode(hass, interface, mode=None, time=None, address=None):
|
||||||
"""Call setInstallMode XML-RPC method of supplied interface."""
|
"""Call setInstallMode XML-RPC method of supplied interface."""
|
||||||
@ -439,6 +462,26 @@ def setup(hass, config):
|
|||||||
DOMAIN, SERVICE_SET_INSTALL_MODE, _service_handle_install_mode,
|
DOMAIN, SERVICE_SET_INSTALL_MODE, _service_handle_install_mode,
|
||||||
schema=SCHEMA_SERVICE_SET_INSTALL_MODE)
|
schema=SCHEMA_SERVICE_SET_INSTALL_MODE)
|
||||||
|
|
||||||
|
def _service_put_paramset(service):
|
||||||
|
"""Service to call the putParamset method on a HomeMatic connection."""
|
||||||
|
interface = service.data.get(ATTR_INTERFACE)
|
||||||
|
address = service.data.get(ATTR_ADDRESS)
|
||||||
|
paramset_key = service.data.get(ATTR_PARAMSET_KEY)
|
||||||
|
# When passing in the paramset from a YAML file we get an OrderedDict
|
||||||
|
# here instead of a dict, so add this explicit cast.
|
||||||
|
# The service schema makes sure that this cast works.
|
||||||
|
paramset = dict(service.data.get(ATTR_PARAMSET))
|
||||||
|
|
||||||
|
_LOGGER.debug(
|
||||||
|
"Calling putParamset: %s, %s, %s, %s",
|
||||||
|
interface, address, paramset_key, paramset
|
||||||
|
)
|
||||||
|
homematic.putParamset(interface, address, paramset_key, paramset)
|
||||||
|
|
||||||
|
hass.services.register(
|
||||||
|
DOMAIN, SERVICE_PUT_PARAMSET, _service_put_paramset,
|
||||||
|
schema=SCHEMA_SERVICE_PUT_PARAMSET)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
@ -66,3 +66,20 @@ set_install_mode:
|
|||||||
address:
|
address:
|
||||||
description: (Optional) Address of homematic device or BidCoS-RF to learn
|
description: (Optional) Address of homematic device or BidCoS-RF to learn
|
||||||
example: LEQ3948571
|
example: LEQ3948571
|
||||||
|
|
||||||
|
put_paramset:
|
||||||
|
description: Call to putParamset in the RPC XML interface
|
||||||
|
fields:
|
||||||
|
interface:
|
||||||
|
description: The interfaces name from the config
|
||||||
|
example: wireless
|
||||||
|
address:
|
||||||
|
description: Address of Homematic device
|
||||||
|
example: LEQ3948571
|
||||||
|
paramset_key:
|
||||||
|
description: The paramset_key argument to putParamset
|
||||||
|
example: MASTER
|
||||||
|
paramset:
|
||||||
|
description: A paramset dictionary
|
||||||
|
example: '{"WEEK_PROGRAM_POINTER": 1}'
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user