Homematic icon map / upper case on services (#6178)

* Set upper on service / add sensor icon mapper

* Add more icons

* fix id
This commit is contained in:
Pascal Vizeli 2017-02-23 15:31:32 +01:00 committed by GitHub
parent 89807f24ad
commit b725eaf67f
2 changed files with 30 additions and 15 deletions

View File

@ -77,16 +77,16 @@ HM_IGNORE_DISCOVERY_NODE = [
] ]
HM_ATTRIBUTE_SUPPORT = { HM_ATTRIBUTE_SUPPORT = {
'LOWBAT': ['Battery', {0: 'High', 1: 'Low'}], 'LOWBAT': ['battery', {0: 'High', 1: 'Low'}],
'ERROR': ['Sabotage', {0: 'No', 1: 'Yes'}], 'ERROR': ['sabotage', {0: 'No', 1: 'Yes'}],
'RSSI_DEVICE': ['RSSI', {}], 'RSSI_DEVICE': ['rssi', {}],
'VALVE_STATE': ['Valve', {}], 'VALVE_STATE': ['valve', {}],
'BATTERY_STATE': ['Battery', {}], 'BATTERY_STATE': ['battery', {}],
'CONTROL_MODE': ['Mode', {0: 'Auto', 1: 'Manual', 2: 'Away', 3: 'Boost'}], 'CONTROL_MODE': ['mode', {0: 'Auto', 1: 'Manual', 2: 'Away', 3: 'Boost'}],
'POWER': ['Power', {}], 'POWER': ['power', {}],
'CURRENT': ['Current', {}], 'CURRENT': ['current', {}],
'VOLTAGE': ['Voltage', {}], 'VOLTAGE': ['voltage', {}],
'WORKING': ['Working', {0: 'No', 1: 'Yes'}], 'WORKING': ['working', {0: 'No', 1: 'Yes'}],
} }
HM_PRESS_EVENTS = [ HM_PRESS_EVENTS = [
@ -172,7 +172,7 @@ CONFIG_SCHEMA = vol.Schema({
}, extra=vol.ALLOW_EXTRA) }, extra=vol.ALLOW_EXTRA)
SCHEMA_SERVICE_VIRTUALKEY = vol.Schema({ SCHEMA_SERVICE_VIRTUALKEY = vol.Schema({
vol.Required(ATTR_ADDRESS): cv.string, vol.Required(ATTR_ADDRESS): vol.All(cv.string, vol.Upper),
vol.Required(ATTR_CHANNEL): vol.Coerce(int), vol.Required(ATTR_CHANNEL): vol.Coerce(int),
vol.Required(ATTR_PARAM): cv.string, vol.Required(ATTR_PARAM): cv.string,
vol.Optional(ATTR_PROXY): cv.string, vol.Optional(ATTR_PROXY): cv.string,
@ -185,9 +185,9 @@ SCHEMA_SERVICE_SET_VAR_VALUE = vol.Schema({
}) })
SCHEMA_SERVICE_SET_DEV_VALUE = vol.Schema({ SCHEMA_SERVICE_SET_DEV_VALUE = vol.Schema({
vol.Required(ATTR_ADDRESS): cv.string, vol.Required(ATTR_ADDRESS): vol.All(cv.string, vol.Upper),
vol.Required(ATTR_CHANNEL): vol.Coerce(int), vol.Required(ATTR_CHANNEL): vol.Coerce(int),
vol.Required(ATTR_PARAM): cv.string, vol.Required(ATTR_PARAM): vol.All(cv.string, vol.Upper),
vol.Required(ATTR_VALUE): cv.match_all, vol.Required(ATTR_VALUE): cv.match_all,
vol.Optional(ATTR_PROXY): cv.string, vol.Optional(ATTR_PROXY): cv.string,
}) })
@ -715,7 +715,7 @@ class HMDevice(Entity):
attr[data[0]] = value attr[data[0]] = value
# static attributes # static attributes
attr['ID'] = self._hmdevice.ADDRESS attr['id'] = self._hmdevice.ADDRESS
attr['proxy'] = self._proxy attr['proxy'] = self._proxy
return attr return attr

View File

@ -40,7 +40,17 @@ HM_UNIT_HA_CAST = {
"SUNSHINEDURATION": "#", "SUNSHINEDURATION": "#",
"AIR_PRESSURE": "hPa", "AIR_PRESSURE": "hPa",
"FREQUENCY": "Hz", "FREQUENCY": "Hz",
"VALUE": "#" "VALUE": "#",
}
HM_ICON_HA_CAST = {
"WIND_SPEED": 'mdi:weather-windy',
"HUMIDITY": 'mdi:water-percent',
"TEMPERATURE": 'mdi:thermometer',
"LUX": 'mdi:weather-sunny',
"BRIGHTNESS": 'mdi:invert-colors',
"POWER": 'mdi:flash-red-eye',
"CURRENT": "mdi:flash-red-eye",
} }
@ -77,6 +87,11 @@ class HMSensor(HMDevice):
"""Return the unit of measurement of this entity, if any.""" """Return the unit of measurement of this entity, if any."""
return HM_UNIT_HA_CAST.get(self._state, None) return HM_UNIT_HA_CAST.get(self._state, None)
@property
def icon(self):
"""Return the icon to use in the frontend, if any."""
return HM_ICON_HA_CAST.get(self._state, None)
def _init_data_struct(self): def _init_data_struct(self):
"""Generate a data dict (self._data) from hm metadata.""" """Generate a data dict (self._data) from hm metadata."""
# Add state to data dict # Add state to data dict