1 """Support the UPB PIM."""
3 import voluptuous
as vol
10 ATTR_ADDRESS =
"address"
11 ATTR_BLINK_RATE =
"blink_rate"
12 ATTR_BRIGHTNESS =
"brightness"
13 ATTR_BRIGHTNESS_PCT =
"brightness_pct"
15 CONF_NETWORK =
"network"
16 EVENT_UPB_SCENE_CHANGED =
"upb.scene_changed"
18 VALID_BRIGHTNESS = vol.All(vol.Coerce(int), vol.Clamp(min=0, max=255))
19 VALID_BRIGHTNESS_PCT = vol.All(vol.Coerce(float), vol.Range(min=0, max=100))
20 VALID_RATE = vol.All(vol.Coerce(float), vol.Clamp(min=-1, max=3600))
22 UPB_BRIGHTNESS_RATE_SCHEMA = vol.All(
23 cv.has_at_least_one_key(ATTR_BRIGHTNESS, ATTR_BRIGHTNESS_PCT),
24 cv.make_entity_service_schema(
26 vol.Exclusive(ATTR_BRIGHTNESS, ATTR_BRIGHTNESS): VALID_BRIGHTNESS,
27 vol.Exclusive(ATTR_BRIGHTNESS_PCT, ATTR_BRIGHTNESS): VALID_BRIGHTNESS_PCT,
28 vol.Optional(ATTR_RATE, default=-1): VALID_RATE,
33 UPB_BLINK_RATE_SCHEMA: VolDictType = {
34 vol.Required(ATTR_BLINK_RATE, default=0.5): vol.All(
35 vol.Coerce(float), vol.Range(min=0, max=4.25)