updated components and test according to remark jesserocks

This commit is contained in:
KoenBreeman 2024-08-16 11:55:01 +02:00
parent f7a8c8be46
commit 181fc3ec26
10 changed files with 55 additions and 183 deletions

View File

@ -1,7 +1,7 @@
import esphome.codegen as cg import esphome.codegen as cg
import esphome.config_validation as cv import esphome.config_validation as cv
from esphome.components import i2c, switch from esphome.components import i2c, switch
from esphome.const import CONF_CHANNEL, CONF_INTERLOCK from esphome.const import CONF_CHANNEL
from .. import ( from .. import (
seeedmultichannelrelay_ns, seeedmultichannelrelay_ns,
@ -28,18 +28,6 @@ CONF_Relay_8 = 8
RelayBit_ = seeedmultichannelrelay_ns.enum("RelayBit", is_class=True) RelayBit_ = seeedmultichannelrelay_ns.enum("RelayBit", is_class=True)
SWITCH_MAP = {
CONF_Relay_1: RelayBit_.RELAY1,
CONF_Relay_2: RelayBit_.RELAY2,
CONF_Relay_3: RelayBit_.RELAY3,
CONF_Relay_4: RelayBit_.RELAY4,
CONF_Relay_5: RelayBit_.RELAY5,
CONF_Relay_6: RelayBit_.RELAY6,
CONF_Relay_7: RelayBit_.RELAY7,
CONF_Relay_8: RelayBit_.RELAY8,
}
CONFIG_SCHEMA = ( CONFIG_SCHEMA = (
switch.switch_schema(SeeedMultiChannelRelaySwitch) switch.switch_schema(SeeedMultiChannelRelaySwitch)
.extend( .extend(
@ -48,11 +36,7 @@ CONFIG_SCHEMA = (
cv.GenerateID(CONF_SEEEDMULTICHANNELRELAY_ID): cv.use_id( cv.GenerateID(CONF_SEEEDMULTICHANNELRELAY_ID): cv.use_id(
SeeedMultiChannelRelay SeeedMultiChannelRelay
), ),
cv.Required(CONF_CHANNEL): cv.enum(SWITCH_MAP), cv.Required(CONF_CHANNEL): cv.int_range(min=1, max=8),
cv.Optional(CONF_INTERLOCK): cv.ensure_list(cv.use_id(switch.Switch)),
cv.Optional(
CONF_INTERLOCK_WAIT_TIME, default="0ms"
): cv.positive_time_period_milliseconds,
} }
) )
.extend(cv.COMPONENT_SCHEMA) .extend(cv.COMPONENT_SCHEMA)
@ -66,10 +50,3 @@ async def to_code(config):
cg.add(var.set_channel(config[CONF_CHANNEL])) cg.add(var.set_channel(config[CONF_CHANNEL]))
if CONF_INTERLOCK in config:
interlock = []
for it in config[CONF_INTERLOCK]:
lock = await cg.get_variable(it)
interlock.append(lock)
cg.add(var.set_interlock(interlock))
cg.add(var.set_interlock_wait_time(config[CONF_INTERLOCK_WAIT_TIME]))

View File

@ -23,7 +23,7 @@ void SeeedMultiChannelRelaySwitch::setup() {
void SeeedMultiChannelRelaySwitch::dump_config() { void SeeedMultiChannelRelaySwitch::dump_config() {
LOG_SWITCH("", "SeeedMultiChannelRelay Switch", this); LOG_SWITCH("", "SeeedMultiChannelRelay Switch", this);
ESP_LOGCONFIG(TAG, " Channel: %u", this->channel_);
if (!this->interlock_.empty()) { if (!this->interlock_.empty()) {
ESP_LOGCONFIG(TAG, " Interlocks:"); ESP_LOGCONFIG(TAG, " Interlocks:");
for (auto *lock : this->interlock_) { for (auto *lock : this->interlock_) {

View File

@ -16,7 +16,7 @@ class SeeedMultiChannelRelaySwitch : public Component, public switch_::Switch, p
void dump_config() override; void dump_config() override;
void write_state(bool state) override; void write_state(bool state) override;
void set_channel(RelayBit channel) { this->channel_ = (uint8_t) channel; } void set_channel(uint8_t channel) { this->channel_ = channel; }
void set_interlock(const std::vector<Switch *> &interlock); void set_interlock(const std::vector<Switch *> &interlock);
void set_interlock_wait_time(uint32_t interlock_wait_time) { interlock_wait_time_ = interlock_wait_time; } void set_interlock_wait_time(uint32_t interlock_wait_time) { interlock_wait_time_ = interlock_wait_time; }

View File

@ -0,0 +1,27 @@
i2c:
- id: i2c_seeedmultichannelrelay
scl: ${scl_pin}
sda: ${sda_pin}
seeedmultichannelrelay:
id: SeeedMultiChannelRelay_ID
change_address_to: 0x01
switch:
- platform: seeedmultichannelrelay
id: seeedmultichannelrelay_1
name: seeedmultichannelrelay1
channel: 1
seeedmultichannelrelay_id: SeeedMultiChannelRelay_ID
- platform: seeedmultichannelrelay
id: seeedmultichannelrelay_2
name: seeedmultichannelrelay2
channel: 2
seeedmultichannelrelay_id: SeeedMultiChannelRelay_ID
- platform: seeedmultichannelrelay
id: seeedmultichannelrelay_8
name: seeedmultichannelrelay8
channel: 8
seeedmultichannelrelay_id: SeeedMultiChannelRelay_ID

View File

@ -1,27 +1,5 @@
i2c: substitutions:
- id: i2c_seeedmultichannelrelay scl_pin: "16"
scl: 16 sda_pin: "17"
sda: 17
seeedmultichannelrelay: <<: !include common.yaml
id: SeeedMultiChannelRelay_ID
change_address_to: 0x01
switch:
- platform: seeedmultichannelrelay
id: seeedmultichannelrelay_1
name: seeedmultichannelrelay1
channel: 1
seeedmultichannelrelay_id: SeeedMultiChannelRelay_ID
- platform: seeedmultichannelrelay
id: seeedmultichannelrelay_2
name: seeedmultichannelrelay2
channel: 2
seeedmultichannelrelay_id: SeeedMultiChannelRelay_ID
- platform: seeedmultichannelrelay
id: seeedmultichannelrelay_8
name: seeedmultichannelrelay8
channel: 8
seeedmultichannelrelay_id: SeeedMultiChannelRelay_ID

View File

@ -1,27 +1,5 @@
i2c: substitutions:
- id: i2c_seeedmultichannelrelay scl_pin: "5"
scl: 5 sda_pin: "4"
sda: 4
seeedmultichannelrelay: <<: !include common.yaml
id: SeeedMultiChannelRelay_ID
change_address_to: 0x01
switch:
- platform: seeedmultichannelrelay
id: seeedmultichannelrelay_1
name: seeedmultichannelrelay1
channel: 1
seeedmultichannelrelay_id: SeeedMultiChannelRelay_ID
- platform: seeedmultichannelrelay
id: seeedmultichannelrelay_2
name: seeedmultichannelrelay2
channel: 2
seeedmultichannelrelay_id: SeeedMultiChannelRelay_ID
- platform: seeedmultichannelrelay
id: seeedmultichannelrelay_8
name: seeedmultichannelrelay8
channel: 8
seeedmultichannelrelay_id: SeeedMultiChannelRelay_ID

View File

@ -1,27 +1,5 @@
i2c: substitutions:
- id: i2c_seeedmultichannelrelay scl_pin: "5"
scl: 5 sda_pin: "4"
sda: 4
seeedmultichannelrelay: <<: !include common.yaml
id: SeeedMultiChannelRelay_ID
change_address_to: 0x01
switch:
- platform: seeedmultichannelrelay
id: seeedmultichannelrelay_1
name: seeedmultichannelrelay1
channel: 1
seeedmultichannelrelay_id: SeeedMultiChannelRelay_ID
- platform: seeedmultichannelrelay
id: seeedmultichannelrelay_2
name: seeedmultichannelrelay2
channel: 2
seeedmultichannelrelay_id: SeeedMultiChannelRelay_ID
- platform: seeedmultichannelrelay
id: seeedmultichannelrelay_8
name: seeedmultichannelrelay8
channel: 8
seeedmultichannelrelay_id: SeeedMultiChannelRelay_ID

View File

@ -1,27 +1,5 @@
i2c: substitutions:
- id: i2c_seeedmultichannelrelay scl_pin: "16"
scl: 16 sda_pin: "17"
sda: 17
seeedmultichannelrelay: <<: !include common.yaml
id: SeeedMultiChannelRelay_ID
change_address_to: 0x01
switch:
- platform: seeedmultichannelrelay
id: seeedmultichannelrelay_1
name: seeedmultichannelrelay1
channel: 1
seeedmultichannelrelay_id: SeeedMultiChannelRelay_ID
- platform: seeedmultichannelrelay
id: seeedmultichannelrelay_2
name: seeedmultichannelrelay2
channel: 2
seeedmultichannelrelay_id: SeeedMultiChannelRelay_ID
- platform: seeedmultichannelrelay
id: seeedmultichannelrelay_8
name: seeedmultichannelrelay8
channel: 8
seeedmultichannelrelay_id: SeeedMultiChannelRelay_ID

View File

@ -1,27 +1,5 @@
i2c: substitutions:
- id: i2c_seeedmultichannelrelay scl_pin: "5"
scl: 5 sda_pin: "4"
sda: 4
seeedmultichannelrelay: <<: !include common.yaml
id: SeeedMultiChannelRelay_ID
change_address_to: 0x01
switch:
- platform: seeedmultichannelrelay
id: seeedmultichannelrelay_1
name: seeedmultichannelrelay1
channel: 1
seeedmultichannelrelay_id: SeeedMultiChannelRelay_ID
- platform: seeedmultichannelrelay
id: seeedmultichannelrelay_2
name: seeedmultichannelrelay2
channel: 2
seeedmultichannelrelay_id: SeeedMultiChannelRelay_ID
- platform: seeedmultichannelrelay
id: seeedmultichannelrelay_8
name: seeedmultichannelrelay8
channel: 8
seeedmultichannelrelay_id: SeeedMultiChannelRelay_ID

View File

@ -1,27 +1,5 @@
i2c: substitutions:
- id: i2c_seeedmultichannelrelay scl_pin: "5"
scl: 5 sda_pin: "4"
sda: 4
seeedmultichannelrelay: <<: !include common.yaml
id: SeeedMultiChannelRelay_ID
change_address_to: 0x01
switch:
- platform: seeedmultichannelrelay
id: seeedmultichannelrelay_1
name: seeedmultichannelrelay1
channel: 1
seeedmultichannelrelay_id: SeeedMultiChannelRelay_ID
- platform: seeedmultichannelrelay
id: seeedmultichannelrelay_2
name: seeedmultichannelrelay2
channel: 2
seeedmultichannelrelay_id: SeeedMultiChannelRelay_ID
- platform: seeedmultichannelrelay
id: seeedmultichannelrelay_8
name: seeedmultichannelrelay8
channel: 8
seeedmultichannelrelay_id: SeeedMultiChannelRelay_ID