1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- import typing
- # circuitpython
- import busio
- import digitalio
- import adafruit_mcp3xxx.analog_in
- import adafruit_mcp3xxx.mcp3008
- import homeassistant.const
- import homeassistant.core
- import homeassistant.helpers.entity
- class MCP3008Channel(homeassistant.helpers.entity.Entity):
- def __init__(self, adc: adafruit_mcp3xxx.mcp3008.MCP3008, channel: int) -> None:
- self._input = adafruit_mcp3xxx.analog_in.AnalogIn(adc, channel)
- self._channel = channel
- self._state: typing.Optional[float] = None
- # https://developers.home-assistant.io/docs/core/entity/#generic-properties
- @property
- def name(self) -> str:
- return f"MCP3008 Channel #{self._channel}"
- @property
- def unique_id(self) -> str:
- return f"mcp3008-ch{self._channel}"
- # https://developers.home-assistant.io/docs/core/entity/sensor/#properties
- @property
- def state(self) -> typing.Optional[float]:
- return self._state
- @property
- def device_class(self) -> str:
- return "voltage"
- @property
- def unit_of_measurement(self) -> str:
- return homeassistant.const.VOLT
- def update(self) -> None:
- self._state = self._input.voltage
- def setup_platform(
- hass: homeassistant.core.HomeAssistant,
- config: dict,
- add_entities: typing.Callable,
- discovery_info=None,
- ):
- board = __import__("board") # raises NotImplementedError
- spi = busio.SPI(clock=board.SCK, MISO=board.MISO, MOSI=board.MOSI)
- spi_chip_select = digitalio.DigitalInOut(board.D5)
- adc = adafruit_mcp3xxx.mcp3008.MCP3008(
- spi_bus=spi, cs=spi_chip_select, ref_voltage=3.3
- )
- add_entities(
- [
- MCP3008Channel(adc=adc, channel=c)
- for c in [
- adafruit_mcp3xxx.mcp3008.P0,
- adafruit_mcp3xxx.mcp3008.P1,
- adafruit_mcp3xxx.mcp3008.P2,
- adafruit_mcp3xxx.mcp3008.P3,
- adafruit_mcp3xxx.mcp3008.P4,
- adafruit_mcp3xxx.mcp3008.P5,
- adafruit_mcp3xxx.mcp3008.P6,
- adafruit_mcp3xxx.mcp3008.P7,
- ]
- ]
- )
|