mirror of
https://github.com/esphome/esphome.git
synced 2024-11-25 08:28:12 +01:00
commit
c037e95861
5 changed files with 18 additions and 9 deletions
|
@ -9,6 +9,7 @@ from esphome.const import (
|
||||||
DEVICE_CLASS_POWER,
|
DEVICE_CLASS_POWER,
|
||||||
DEVICE_CLASS_VOLTAGE,
|
DEVICE_CLASS_VOLTAGE,
|
||||||
STATE_CLASS_MEASUREMENT,
|
STATE_CLASS_MEASUREMENT,
|
||||||
|
STATE_CLASS_TOTAL_INCREASING,
|
||||||
UNIT_AMPERE,
|
UNIT_AMPERE,
|
||||||
UNIT_KILOWATT_HOURS,
|
UNIT_KILOWATT_HOURS,
|
||||||
UNIT_VOLT,
|
UNIT_VOLT,
|
||||||
|
@ -66,16 +67,19 @@ CONFIG_SCHEMA = (
|
||||||
unit_of_measurement=UNIT_KILOWATT_HOURS,
|
unit_of_measurement=UNIT_KILOWATT_HOURS,
|
||||||
accuracy_decimals=3,
|
accuracy_decimals=3,
|
||||||
device_class=DEVICE_CLASS_ENERGY,
|
device_class=DEVICE_CLASS_ENERGY,
|
||||||
|
state_class=STATE_CLASS_TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_ENERGY_2): sensor.sensor_schema(
|
cv.Optional(CONF_ENERGY_2): sensor.sensor_schema(
|
||||||
unit_of_measurement=UNIT_KILOWATT_HOURS,
|
unit_of_measurement=UNIT_KILOWATT_HOURS,
|
||||||
accuracy_decimals=3,
|
accuracy_decimals=3,
|
||||||
device_class=DEVICE_CLASS_ENERGY,
|
device_class=DEVICE_CLASS_ENERGY,
|
||||||
|
state_class=STATE_CLASS_TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_ENERGY_TOTAL): sensor.sensor_schema(
|
cv.Optional(CONF_ENERGY_TOTAL): sensor.sensor_schema(
|
||||||
unit_of_measurement=UNIT_KILOWATT_HOURS,
|
unit_of_measurement=UNIT_KILOWATT_HOURS,
|
||||||
accuracy_decimals=3,
|
accuracy_decimals=3,
|
||||||
device_class=DEVICE_CLASS_ENERGY,
|
device_class=DEVICE_CLASS_ENERGY,
|
||||||
|
state_class=STATE_CLASS_TOTAL_INCREASING,
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
|
@ -79,7 +79,9 @@ def register_trigger(name, type, data_type):
|
||||||
validator = automation.validate_automation(
|
validator = automation.validate_automation(
|
||||||
{
|
{
|
||||||
cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(type),
|
cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(type),
|
||||||
cv.GenerateID(CONF_RECEIVER_ID): cv.use_id(RemoteReceiverBase),
|
cv.Optional(CONF_RECEIVER_ID): cv.invalid(
|
||||||
|
"This has been removed in ESPHome 2022.3.0 and the trigger attaches directly to the parent receiver."
|
||||||
|
),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
registerer = TRIGGER_REGISTRY.register(f"on_{name}", validator)
|
registerer = TRIGGER_REGISTRY.register(f"on_{name}", validator)
|
||||||
|
@ -87,7 +89,6 @@ def register_trigger(name, type, data_type):
|
||||||
def decorator(func):
|
def decorator(func):
|
||||||
async def new_func(config):
|
async def new_func(config):
|
||||||
var = cg.new_Pvariable(config[CONF_TRIGGER_ID])
|
var = cg.new_Pvariable(config[CONF_TRIGGER_ID])
|
||||||
await register_listener(var, config)
|
|
||||||
await coroutine(func)(var, config)
|
await coroutine(func)(var, config)
|
||||||
await automation.build_automation(var, [(data_type, "x")], config)
|
await automation.build_automation(var, [(data_type, "x")], config)
|
||||||
return var
|
return var
|
||||||
|
@ -223,10 +224,12 @@ async def build_binary_sensor(full_config):
|
||||||
|
|
||||||
|
|
||||||
async def build_triggers(full_config):
|
async def build_triggers(full_config):
|
||||||
|
triggers = []
|
||||||
for key in TRIGGER_REGISTRY:
|
for key in TRIGGER_REGISTRY:
|
||||||
for config in full_config.get(key, []):
|
for config in full_config.get(key, []):
|
||||||
func = TRIGGER_REGISTRY[key][0]
|
func = TRIGGER_REGISTRY[key][0]
|
||||||
await func(config)
|
triggers.append(await func(config))
|
||||||
|
return triggers
|
||||||
|
|
||||||
|
|
||||||
async def build_dumpers(config):
|
async def build_dumpers(config):
|
||||||
|
|
|
@ -56,7 +56,9 @@ async def to_code(config):
|
||||||
for dumper in dumpers:
|
for dumper in dumpers:
|
||||||
cg.add(var.register_dumper(dumper))
|
cg.add(var.register_dumper(dumper))
|
||||||
|
|
||||||
await remote_base.build_triggers(config)
|
triggers = await remote_base.build_triggers(config)
|
||||||
|
for trigger in triggers:
|
||||||
|
cg.add(var.register_listener(trigger))
|
||||||
await cg.register_component(var, config)
|
await cg.register_component(var, config)
|
||||||
|
|
||||||
cg.add(var.set_tolerance(config[CONF_TOLERANCE]))
|
cg.add(var.set_tolerance(config[CONF_TOLERANCE]))
|
||||||
|
|
|
@ -38,8 +38,8 @@ void Wiegand::setup() {
|
||||||
bool check_eparity(uint64_t value, int start, int length) {
|
bool check_eparity(uint64_t value, int start, int length) {
|
||||||
int parity = 0;
|
int parity = 0;
|
||||||
uint64_t mask = 1LL << start;
|
uint64_t mask = 1LL << start;
|
||||||
for (int i = 0; i <= length; i++, mask <<= 1) {
|
for (int i = 0; i < length; i++, mask <<= 1) {
|
||||||
if (value & i)
|
if (value & mask)
|
||||||
parity++;
|
parity++;
|
||||||
}
|
}
|
||||||
return !(parity & 1);
|
return !(parity & 1);
|
||||||
|
@ -48,8 +48,8 @@ bool check_eparity(uint64_t value, int start, int length) {
|
||||||
bool check_oparity(uint64_t value, int start, int length) {
|
bool check_oparity(uint64_t value, int start, int length) {
|
||||||
int parity = 0;
|
int parity = 0;
|
||||||
uint64_t mask = 1LL << start;
|
uint64_t mask = 1LL << start;
|
||||||
for (int i = 0; i <= length; i++, mask <<= 1) {
|
for (int i = 0; i < length; i++, mask <<= 1) {
|
||||||
if (value & i)
|
if (value & mask)
|
||||||
parity++;
|
parity++;
|
||||||
}
|
}
|
||||||
return parity & 1;
|
return parity & 1;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
"""Constants used by esphome."""
|
"""Constants used by esphome."""
|
||||||
|
|
||||||
__version__ = "2023.2.3"
|
__version__ = "2023.2.4"
|
||||||
|
|
||||||
ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"
|
ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue