Compare commits

..

4 Commits

Author SHA1 Message Date
Cossid d197cf0b16
Merge a58549a23f into 98df9e7f9a 2024-12-18 11:32:46 -10:00
pre-commit-ci[bot] 98df9e7f9a
[pre-commit.ci] pre-commit autoupdate (#333)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-12-18 11:32:43 -10:00
J. Nick Koston d6b4c012bf
chore: add black and isort to pre-commit (#348) 2024-12-18 11:32:27 -10:00
Paul Wieland 5846d3bf6b
Update README.md 2024-12-16 11:43:48 -05:00
4 changed files with 70 additions and 41 deletions

View File

@ -8,7 +8,7 @@ repos:
- id: end-of-file-fixer
- id: check-added-large-files
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v19.1.2
rev: v19.1.5
hooks:
- id: clang-format
types_or:
@ -16,3 +16,11 @@ repos:
- "c"
- "cuda"
args: [-style=Webkit, -i]
- repo: https://github.com/PyCQA/isort
rev: 5.13.2
hooks:
- id: isort
- repo: https://github.com/psf/black
rev: 24.10.0
hooks:
- id: black

View File

@ -3,7 +3,7 @@
This is a port of the ratgdo software for the v2.0/v2.5 board to ESPHome.
[Visit the github.io page to purchase boards](https://paulwieland.github.io/ratgdo/#order)
[Visit the the store to purchase boards](https://ratcloud.llc)
## Installation

View File

@ -2,8 +2,8 @@ import esphome.codegen as cg
import esphome.config_validation as cv
import voluptuous as vol
from esphome import automation, pins
from esphome.const import CONF_ID, CONF_TRIGGER_ID
from esphome.components import binary_sensor
from esphome.const import CONF_ID, CONF_TRIGGER_ID
DEPENDENCIES = ["preferences"]
MULTI_CONF = True
@ -44,15 +44,27 @@ CONF_DRY_CONTACT_OPEN_SENSOR = "dry_contact_open_sensor"
CONF_DRY_CONTACT_CLOSE_SENSOR = "dry_contact_close_sensor"
CONF_DRY_CONTACT_SENSOR_GROUP = "dry_contact_sensor_group"
def validate_protocol(config):
if config.get(CONF_PROTOCOL, None) == PROTOCOL_DRYCONTACT and (CONF_DRY_CONTACT_CLOSE_SENSOR not in config or CONF_DRY_CONTACT_OPEN_SENSOR not in config):
raise cv.Invalid("dry_contact_close_sensor and dry_contact_open_sensor are required when using protocol drycontact")
if config.get(CONF_PROTOCOL, None) != PROTOCOL_DRYCONTACT and (CONF_DRY_CONTACT_CLOSE_SENSOR in config or CONF_DRY_CONTACT_OPEN_SENSOR in config):
raise cv.Invalid("dry_contact_close_sensor and dry_contact_open_sensor are only valid when using protocol drycontact")
if config.get(CONF_PROTOCOL, None) == PROTOCOL_DRYCONTACT and (
CONF_DRY_CONTACT_CLOSE_SENSOR not in config
or CONF_DRY_CONTACT_OPEN_SENSOR not in config
):
raise cv.Invalid(
"dry_contact_close_sensor and dry_contact_open_sensor are required when using protocol drycontact"
)
if config.get(CONF_PROTOCOL, None) != PROTOCOL_DRYCONTACT and (
CONF_DRY_CONTACT_CLOSE_SENSOR in config
or CONF_DRY_CONTACT_OPEN_SENSOR in config
):
raise cv.Invalid(
"dry_contact_close_sensor and dry_contact_open_sensor are only valid when using protocol drycontact"
)
# if config.get(CONF_PROTOCOL, None) == PROTOCOL_DRYCONTACT and CONF_DRY_CONTACT_OPEN_SENSOR not in config:
# raise cv.Invalid("dry_contact_open_sensor is required when using protocol drycontact")
return config
CONFIG_SCHEMA = cv.All(
cv.Schema(
{
@ -73,13 +85,17 @@ CONFIG_SCHEMA = cv.All(
cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(SyncFailed),
}
),
cv.Optional(CONF_PROTOCOL, default=PROTOCOL_SECPLUSV2): cv.All(vol.In(
SUPPORTED_PROTOCOLS
)),
cv.Optional(CONF_PROTOCOL, default=PROTOCOL_SECPLUSV2): cv.All(
vol.In(SUPPORTED_PROTOCOLS)
),
# cv.Inclusive(CONF_DRY_CONTACT_OPEN_SENSOR,CONF_DRY_CONTACT_SENSOR_GROUP): cv.use_id(binary_sensor.BinarySensor),
# cv.Inclusive(CONF_DRY_CONTACT_CLOSE_SENSOR,CONF_DRY_CONTACT_SENSOR_GROUP): cv.use_id(binary_sensor.BinarySensor),
cv.Optional(CONF_DRY_CONTACT_OPEN_SENSOR): cv.use_id(binary_sensor.BinarySensor),
cv.Optional(CONF_DRY_CONTACT_CLOSE_SENSOR): cv.use_id(binary_sensor.BinarySensor),
cv.Optional(CONF_DRY_CONTACT_OPEN_SENSOR): cv.use_id(
binary_sensor.BinarySensor
),
cv.Optional(CONF_DRY_CONTACT_CLOSE_SENSOR): cv.use_id(
binary_sensor.BinarySensor
),
}
).extend(cv.COMPONENT_SCHEMA),
validate_protocol,
@ -109,11 +125,18 @@ async def to_code(config):
cg.add(var.set_input_obst_pin(pin))
if CONF_DRY_CONTACT_OPEN_SENSOR in config and config[CONF_DRY_CONTACT_OPEN_SENSOR]:
dry_contact_open_sensor = await cg.get_variable(config[CONF_DRY_CONTACT_OPEN_SENSOR])
dry_contact_open_sensor = await cg.get_variable(
config[CONF_DRY_CONTACT_OPEN_SENSOR]
)
cg.add(var.set_dry_contact_open_sensor(dry_contact_open_sensor))
if CONF_DRY_CONTACT_CLOSE_SENSOR in config and config[CONF_DRY_CONTACT_CLOSE_SENSOR]:
dry_contact_close_sensor = await cg.get_variable(config[CONF_DRY_CONTACT_CLOSE_SENSOR])
if (
CONF_DRY_CONTACT_CLOSE_SENSOR in config
and config[CONF_DRY_CONTACT_CLOSE_SENSOR]
):
dry_contact_close_sensor = await cg.get_variable(
config[CONF_DRY_CONTACT_CLOSE_SENSOR]
)
cg.add(var.set_dry_contact_close_sensor(dry_contact_close_sensor))
for conf in config.get(CONF_ON_SYNC_FAILED, []):

View File

@ -18,9 +18,7 @@ CoverOpeningTrigger = ratgdo_ns.class_(
CoverClosingTrigger = ratgdo_ns.class_(
"CoverClosingTrigger", automation.Trigger.template()
)
CoverStateTrigger = ratgdo_ns.class_(
"CoverStateTrigger", automation.Trigger.template()
)
CoverStateTrigger = ratgdo_ns.class_("CoverStateTrigger", automation.Trigger.template())
CONF_ON_OPENING = "on_opening"
CONF_ON_CLOSING = "on_closing"