mirror of
https://github.com/esphome/esphome.git
synced 2025-03-13 22:28:14 +00:00
Add SM16716 support.
This commit is contained in:
parent
cb9f36a153
commit
6b397a9ea5
36
esphome/components/output/sm16716.py
Normal file
36
esphome/components/output/sm16716.py
Normal file
@ -0,0 +1,36 @@
|
||||
import voluptuous as vol
|
||||
|
||||
from esphome.components import output
|
||||
from esphome.components.sm16716 import SM16716OutputComponent
|
||||
import esphome.config_validation as cv
|
||||
from esphome.const import CONF_CHANNEL, CONF_ID, CONF_SM16716_ID, CONF_POWER_SUPPLY
|
||||
from esphome.cpp_generator import Pvariable, get_variable
|
||||
from esphome.cpp_helpers import setup_component
|
||||
|
||||
DEPENDENCIES = ['sm16716']
|
||||
|
||||
Channel = SM16716OutputComponent.class_('Channel', output.FloatOutput)
|
||||
|
||||
PLATFORM_SCHEMA = output.FLOAT_OUTPUT_PLATFORM_SCHEMA.extend({
|
||||
vol.Required(CONF_ID): cv.declare_variable_id(Channel),
|
||||
vol.Required(CONF_CHANNEL): vol.All(vol.Coerce(int),
|
||||
vol.Range(min=0, max=65535)),
|
||||
cv.GenerateID(CONF_SM16716_ID): cv.use_variable_id(SM16716OutputComponent),
|
||||
}).extend(cv.COMPONENT_SCHEMA.schema)
|
||||
|
||||
|
||||
def to_code(config):
|
||||
power_supply = None
|
||||
if CONF_POWER_SUPPLY in config:
|
||||
for power_supply in get_variable(config[CONF_POWER_SUPPLY]):
|
||||
yield
|
||||
sm16716 = None
|
||||
for sm16716 in get_variable(config[CONF_SM16716_ID]):
|
||||
yield
|
||||
rhs = sm16716.create_channel(config[CONF_CHANNEL], power_supply)
|
||||
out = Pvariable(config[CONF_ID], rhs)
|
||||
output.setup_output_platform(out, config, skip_power_supply=True)
|
||||
setup_component(out, config)
|
||||
|
||||
|
||||
BUILD_FLAGS = '-DUSE_SM16716_OUTPUT'
|
43
esphome/components/sm16716.py
Normal file
43
esphome/components/sm16716.py
Normal file
@ -0,0 +1,43 @@
|
||||
import voluptuous as vol
|
||||
|
||||
from esphome import pins
|
||||
from esphome.components import output
|
||||
import esphome.config_validation as cv
|
||||
from esphome.const import (CONF_CLOCK_PIN, CONF_DATA_PIN, CONF_ID,
|
||||
CONF_NUM_CHANNELS, CONF_NUM_CHIPS, CONF_UPDATE_ON_BOOT)
|
||||
from esphome.cpp_generator import Pvariable, add
|
||||
from esphome.cpp_helpers import gpio_output_pin_expression, setup_component
|
||||
from esphome.cpp_types import App, Component
|
||||
|
||||
SM16716OutputComponent = output.output_ns.class_('SM16716OutputComponent', Component)
|
||||
MULTI_CONF = True
|
||||
|
||||
CONFIG_SCHEMA = cv.Schema({
|
||||
cv.GenerateID(): cv.declare_variable_id(SM16716OutputComponent),
|
||||
vol.Required(CONF_DATA_PIN): pins.gpio_output_pin_schema,
|
||||
vol.Required(CONF_CLOCK_PIN): pins.gpio_output_pin_schema,
|
||||
vol.Optional(CONF_NUM_CHANNELS): vol.All(vol.Coerce(int),
|
||||
vol.Range(3, 255)),
|
||||
vol.Optional(CONF_NUM_CHIPS): vol.All(vol.Coerce(int),
|
||||
vol.Range(1, 85)),
|
||||
vol.Optional(CONF_UPDATE_ON_BOOT): vol.Coerce(bool),
|
||||
}).extend(cv.COMPONENT_SCHEMA.schema)
|
||||
|
||||
|
||||
def to_code(config):
|
||||
for mosi in gpio_output_pin_expression(config[CONF_DATA_PIN]):
|
||||
yield
|
||||
for sclk in gpio_output_pin_expression(config[CONF_CLOCK_PIN]):
|
||||
yield
|
||||
rhs = App.make_sm16716_component(mosi, sclk)
|
||||
sm16716 = Pvariable(config[CONF_ID], rhs)
|
||||
if CONF_NUM_CHANNELS in config:
|
||||
add(sm16716.set_num_channels(config[CONF_NUM_CHANNELS]))
|
||||
if CONF_NUM_CHIPS in config:
|
||||
add(sm16716.set_num_chips(config[CONF_NUM_CHIPS]))
|
||||
if CONF_UPDATE_ON_BOOT in config:
|
||||
add(sm16716.set_update(config[CONF_UPDATE_ON_BOOT]))
|
||||
setup_component(sm16716, config)
|
||||
|
||||
|
||||
BUILD_FLAGS = '-DUSE_SM16716_OUTPUT'
|
@ -384,6 +384,7 @@ CONF_RESTORE_STATE = 'restore_state'
|
||||
CONF_TIMING = 'timing'
|
||||
CONF_INVALID_COOLDOWN = 'invalid_cooldown'
|
||||
CONF_MY9231_ID = 'my9231_id'
|
||||
CONF_SM16716_ID = 'sm16716_id'
|
||||
CONF_NUM_CHANNELS = 'num_channels'
|
||||
CONF_UPDATE_ON_BOOT = 'update_on_boot'
|
||||
CONF_INITIAL_VALUE = 'initial_value'
|
||||
|
@ -640,6 +640,12 @@ my9231:
|
||||
num_chips: 2
|
||||
bit_depth: 16
|
||||
|
||||
sm16716:
|
||||
data_pin: GPIO14
|
||||
clock_pin: GPIO4
|
||||
num_channels: 3
|
||||
num_chips: 1
|
||||
|
||||
output:
|
||||
- platform: gpio
|
||||
pin: GPIO26
|
||||
@ -709,6 +715,15 @@ output:
|
||||
- platform: my9231
|
||||
id: my_5
|
||||
channel: 5
|
||||
- platform: sm16716
|
||||
id: sm_0
|
||||
channel: 0
|
||||
- platform: sm16716
|
||||
id: sm_1
|
||||
channel: 1
|
||||
- platform: sm16716
|
||||
id: sm_2
|
||||
channel: 2
|
||||
- platform: copy
|
||||
id: my_copy1
|
||||
outputs:
|
||||
|
Loading…
x
Reference in New Issue
Block a user