mirror of
https://github.com/esphome/esphome.git
synced 2025-03-15 15:18:16 +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_TIMING = 'timing'
|
||||||
CONF_INVALID_COOLDOWN = 'invalid_cooldown'
|
CONF_INVALID_COOLDOWN = 'invalid_cooldown'
|
||||||
CONF_MY9231_ID = 'my9231_id'
|
CONF_MY9231_ID = 'my9231_id'
|
||||||
|
CONF_SM16716_ID = 'sm16716_id'
|
||||||
CONF_NUM_CHANNELS = 'num_channels'
|
CONF_NUM_CHANNELS = 'num_channels'
|
||||||
CONF_UPDATE_ON_BOOT = 'update_on_boot'
|
CONF_UPDATE_ON_BOOT = 'update_on_boot'
|
||||||
CONF_INITIAL_VALUE = 'initial_value'
|
CONF_INITIAL_VALUE = 'initial_value'
|
||||||
|
@ -640,6 +640,12 @@ my9231:
|
|||||||
num_chips: 2
|
num_chips: 2
|
||||||
bit_depth: 16
|
bit_depth: 16
|
||||||
|
|
||||||
|
sm16716:
|
||||||
|
data_pin: GPIO14
|
||||||
|
clock_pin: GPIO4
|
||||||
|
num_channels: 3
|
||||||
|
num_chips: 1
|
||||||
|
|
||||||
output:
|
output:
|
||||||
- platform: gpio
|
- platform: gpio
|
||||||
pin: GPIO26
|
pin: GPIO26
|
||||||
@ -709,6 +715,15 @@ output:
|
|||||||
- platform: my9231
|
- platform: my9231
|
||||||
id: my_5
|
id: my_5
|
||||||
channel: 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
|
- platform: copy
|
||||||
id: my_copy1
|
id: my_copy1
|
||||||
outputs:
|
outputs:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user