1 """Support for X10 dimmer over Mochad."""
3 from __future__
import annotations
8 from pymochad
import controller, device
9 from pymochad.exceptions
import MochadException
10 import voluptuous
as vol
14 PLATFORM_SCHEMA
as LIGHT_PLATFORM_SCHEMA,
24 from .
import CONF_COMM_TYPE, DOMAIN, REQ_LOCK, MochadCtrl
26 _LOGGER = logging.getLogger(__name__)
27 CONF_BRIGHTNESS_LEVELS =
"brightness_levels"
29 PLATFORM_SCHEMA = LIGHT_PLATFORM_SCHEMA.extend(
31 vol.Required(CONF_PLATFORM): DOMAIN,
34 vol.Optional(CONF_NAME): cv.string,
35 vol.Required(CONF_ADDRESS): cv.x10_address,
36 vol.Optional(CONF_COMM_TYPE): cv.string,
37 vol.Optional(CONF_BRIGHTNESS_LEVELS, default=32): vol.All(
38 vol.Coerce(int), vol.In([32, 64, 256])
49 add_entities: AddEntitiesCallback,
50 discovery_info: DiscoveryInfoType |
None =
None,
52 """Set up X10 dimmers over a mochad controller."""
53 mochad_controller: MochadCtrl = hass.data[DOMAIN]
54 devs: list[dict[str, Any]] = config[CONF_DEVICES]
59 """Representation of a X10 dimmer over Mochad."""
61 _attr_assumed_state =
True
62 _attr_color_mode = ColorMode.BRIGHTNESS
63 _attr_supported_color_modes = {ColorMode.BRIGHTNESS}
66 self, hass: HomeAssistant, ctrl: controller.PyMochad, dev: dict[str, Any]
68 """Initialize a Mochad Light Device."""
71 self._address: str = dev[CONF_ADDRESS]
72 self._attr_name: str = dev.get(CONF_NAME, f
"x10_light_dev_{self._address}")
73 self._comm_type: str = dev.get(CONF_COMM_TYPE,
"pl")
74 self.
lightlight = device.Device(ctrl, self._address, comm_type=self._comm_type)
80 """Get the status of the light from mochad."""
93 self.
lightlight.send_cmd(f
"dim {mochad_brightness}")
98 self.
lightlight.send_cmd(f
"bright {mochad_brightness}")
102 """Send the command to turn the light on."""
104 brightness: int = kwargs.get(ATTR_BRIGHTNESS, 255)
111 self.
lightlight.send_cmd(f
"xdim {out_brightness}")
114 self.
lightlight.send_cmd(
"on")
123 except (MochadException, OSError)
as exc:
124 _LOGGER.error(
"Error with mochad communication: %s", exc)
127 """Send the command to turn the light on."""
133 self.
lightlight.send_cmd(
"off")
140 except (MochadException, OSError)
as exc:
141 _LOGGER.error(
"Error with mochad communication: %s", exc)
int|None brightness(self)
None turn_off(self, **Any kwargs)
bool _get_device_status(self)
None turn_on(self, **Any kwargs)
int _calculate_brightness_value(self, int value)
None _adjust_brightness(self, int brightness)
None __init__(self, HomeAssistant hass, controller.PyMochad ctrl, dict[str, Any] dev)
None add_entities(AsusWrtRouter router, AddEntitiesCallback async_add_entities, set[str] tracked)
def get_status(hass, host, port)
None setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback add_entities, DiscoveryInfoType|None discovery_info=None)