++
This commit is contained in:
@@ -2,8 +2,9 @@ DEPENDENCIES = ["uart", "sensor"]
|
||||
|
||||
import esphome.codegen as cg
|
||||
import esphome.config_validation as cv
|
||||
from esphome.components import uart, sensor
|
||||
from esphome.components import uart, sensor, button
|
||||
from esphome.const import CONF_ID, CONF_DEBUG
|
||||
import esphome.automation as automation
|
||||
|
||||
CONF_STATE_SENSOR = "state_sensor"
|
||||
CONF_B0_STATUS_SENSOR = "b0_status_sensor"
|
||||
@@ -18,12 +19,14 @@ CONF_PALLET_SENSOR = "pallet_sensor"
|
||||
CONF_ERROR_CODE_SENSOR = "error_code_sensor"
|
||||
CONF_GRAIN_TRAY_SENSOR = "grain_tray_sensor"
|
||||
CONF_STATUS_TEXT_SENSOR = "status_text_sensor"
|
||||
CONF_PACKETS = "packets"
|
||||
CONF_SAECO_ID = "saeco_id"
|
||||
|
||||
saeco_series_6000_ns = cg.esphome_ns.namespace('saeco_series_6000')
|
||||
SaecoSeries6000 = saeco_series_6000_ns.class_('SaecoSeries6000', cg.Component)
|
||||
|
||||
CONFIG_SCHEMA = cv.Schema({
|
||||
cv.GenerateID(): cv.declare_id(SaecoSeries6000),
|
||||
cv.Required(cv.CONF_ID): cv.declare_id(SaecoSeries6000),
|
||||
cv.Required('uart_display'): cv.use_id(uart.UARTComponent),
|
||||
cv.Required('uart_mainboard'): cv.use_id(uart.UARTComponent),
|
||||
cv.Optional(CONF_DEBUG, default=False): cv.boolean,
|
||||
@@ -45,4 +48,51 @@ def to_code(config):
|
||||
|
||||
if CONF_STATE_SENSOR in config:
|
||||
sens = yield sensor.new_sensor(config[CONF_STATE_SENSOR])
|
||||
cg.add(var.set_status_sensor(sens))
|
||||
cg.add(var.set_status_sensor(sens))
|
||||
|
||||
def validate_packet(value):
|
||||
if isinstance(value, str):
|
||||
return [int(x, 16) for x in value.split()]
|
||||
return [cv.hex_uint8_t(x) for x in value]
|
||||
|
||||
SEND_PACKETS_ACTION_SCHEMA = cv.Schema({
|
||||
cv.Required(CONF_ID): cv.use_id(SaecoSeries6000),
|
||||
cv.Required(CONF_PACKETS): [cv.All(validate_packet)],
|
||||
cv.Optional("delay_ms", default=10): cv.positive_int,
|
||||
})
|
||||
|
||||
SendPacketsAction = saeco_series_6000_ns.class_("SendPacketsAction", automation.Action)
|
||||
|
||||
@automation.register_action(
|
||||
"saeco_series_6000.send_packets",
|
||||
SendPacketsAction,
|
||||
SEND_PACKETS_ACTION_SCHEMA,
|
||||
)
|
||||
def send_packets_to_mainboard_action_to_code(config, action_id, template_arg, args):
|
||||
var = cg.new_Pvariable(action_id)
|
||||
parent = yield cg.get_variable(config[CONF_ID])
|
||||
var.set_parent(parent)
|
||||
var.set_packets(config[CONF_PACKETS])
|
||||
var.set_delay_ms(config.get("delay_ms", 10))
|
||||
return var
|
||||
|
||||
SaecoSendPacketsButton = saeco_series_6000_ns.class_("SaecoSendPacketsButton", button.Button, cg.Component)
|
||||
|
||||
SAECO_SEND_PACKETS_BUTTON_SCHEMA = button.BUTTON_SCHEMA.extend({
|
||||
cv.GenerateID(): cv.declare_id(SaecoSendPacketsButton),
|
||||
cv.Required(CONF_ID): cv.use_id(SaecoSeries6000),
|
||||
cv.Required(CONF_PACKETS): [cv.All(validate_packet)],
|
||||
cv.Optional("delay_ms", default=10): cv.positive_int,
|
||||
}).extend(cv.COMPONENT_SCHEMA)
|
||||
|
||||
async def saeco_send_packets_button_to_code(config):
|
||||
parent = await cg.get_variable(config[CONF_SAECO_ID])
|
||||
var = cg.new_Pvariable(config["id"])
|
||||
await cg.register_component(var, config)
|
||||
await button.register_button(var, config)
|
||||
cg.add(var.set_parent(parent))
|
||||
cg.add(var.set_packets(config[CONF_PACKETS]))
|
||||
cg.add(var.set_delay_ms(config.get("delay_ms", 10)))
|
||||
return var
|
||||
|
||||
button.register_button("saeco_series_6000", saeco_send_packets_button_to_code)
|
||||
Reference in New Issue
Block a user