mirror of
https://github.com/esphome/esphome.git
synced 2025-09-21 12:42:21 +01:00
add-black (#1593)
* Add black Update pre commit Update pre commit add empty line * Format with black
This commit is contained in:
committed by
GitHub
parent
2b60b0f1fa
commit
69879920eb
@@ -3,37 +3,50 @@ from math import log
|
||||
import esphome.config_validation as cv
|
||||
import esphome.codegen as cg
|
||||
from esphome.components import sensor
|
||||
from esphome.const import CONF_CALIBRATION, CONF_ID, CONF_REFERENCE_RESISTANCE, \
|
||||
CONF_REFERENCE_TEMPERATURE, CONF_SENSOR, CONF_TEMPERATURE, CONF_VALUE, \
|
||||
DEVICE_CLASS_TEMPERATURE, ICON_EMPTY, UNIT_CELSIUS
|
||||
from esphome.const import (
|
||||
CONF_CALIBRATION,
|
||||
CONF_ID,
|
||||
CONF_REFERENCE_RESISTANCE,
|
||||
CONF_REFERENCE_TEMPERATURE,
|
||||
CONF_SENSOR,
|
||||
CONF_TEMPERATURE,
|
||||
CONF_VALUE,
|
||||
DEVICE_CLASS_TEMPERATURE,
|
||||
ICON_EMPTY,
|
||||
UNIT_CELSIUS,
|
||||
)
|
||||
|
||||
ntc_ns = cg.esphome_ns.namespace('ntc')
|
||||
NTC = ntc_ns.class_('NTC', cg.Component, sensor.Sensor)
|
||||
ntc_ns = cg.esphome_ns.namespace("ntc")
|
||||
NTC = ntc_ns.class_("NTC", cg.Component, sensor.Sensor)
|
||||
|
||||
CONF_B_CONSTANT = 'b_constant'
|
||||
CONF_A = 'a'
|
||||
CONF_B = 'b'
|
||||
CONF_C = 'c'
|
||||
CONF_B_CONSTANT = "b_constant"
|
||||
CONF_A = "a"
|
||||
CONF_B = "b"
|
||||
CONF_C = "c"
|
||||
ZERO_POINT = 273.15
|
||||
|
||||
|
||||
def validate_calibration_parameter(value):
|
||||
if isinstance(value, dict):
|
||||
return cv.Schema({
|
||||
cv.Required(CONF_TEMPERATURE): cv.float_,
|
||||
cv.Required(CONF_VALUE): cv.float_,
|
||||
})(value)
|
||||
return cv.Schema(
|
||||
{
|
||||
cv.Required(CONF_TEMPERATURE): cv.float_,
|
||||
cv.Required(CONF_VALUE): cv.float_,
|
||||
}
|
||||
)(value)
|
||||
|
||||
value = cv.string(value)
|
||||
parts = value.split('->')
|
||||
parts = value.split("->")
|
||||
if len(parts) != 2:
|
||||
raise cv.Invalid("Calibration parameter must be of form 3000 -> 23°C")
|
||||
voltage = cv.resistance(parts[0].strip())
|
||||
temperature = cv.temperature(parts[1].strip())
|
||||
return validate_calibration_parameter({
|
||||
CONF_TEMPERATURE: temperature,
|
||||
CONF_VALUE: voltage,
|
||||
})
|
||||
return validate_calibration_parameter(
|
||||
{
|
||||
CONF_TEMPERATURE: temperature,
|
||||
CONF_VALUE: voltage,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def calc_steinhart_hart(value):
|
||||
@@ -48,16 +61,16 @@ def calc_steinhart_hart(value):
|
||||
l2 = log(r2)
|
||||
l3 = log(r3)
|
||||
|
||||
y1 = 1/t1
|
||||
y2 = 1/t2
|
||||
y3 = 1/t3
|
||||
y1 = 1 / t1
|
||||
y2 = 1 / t2
|
||||
y3 = 1 / t3
|
||||
|
||||
g2 = (y2-y1)/(l2-l1)
|
||||
g3 = (y3-y1)/(l3-l1)
|
||||
g2 = (y2 - y1) / (l2 - l1)
|
||||
g3 = (y3 - y1) / (l3 - l1)
|
||||
|
||||
c = (g3-g2)/(l3-l2) * 1/(l1+l2+l3)
|
||||
b = g2 - c*(l1*l1 + l1*l2 + l2*l2)
|
||||
a = y1 - (b + l1*l1*c) * l1
|
||||
c = (g3 - g2) / (l3 - l2) * 1 / (l1 + l2 + l3)
|
||||
b = g2 - c * (l1 * l1 + l1 * l2 + l2 * l2)
|
||||
a = y1 - (b + l1 * l1 * c) * l1
|
||||
return a, b, c
|
||||
|
||||
|
||||
@@ -66,8 +79,8 @@ def calc_b(value):
|
||||
t0 = value[CONF_REFERENCE_TEMPERATURE] + ZERO_POINT
|
||||
r0 = value[CONF_REFERENCE_RESISTANCE]
|
||||
|
||||
a = (1/t0) - (1/beta) * log(r0)
|
||||
b = 1/beta
|
||||
a = (1 / t0) - (1 / beta) * log(r0)
|
||||
b = 1 / beta
|
||||
c = 0
|
||||
|
||||
return a, b, c
|
||||
@@ -75,21 +88,27 @@ def calc_b(value):
|
||||
|
||||
def process_calibration(value):
|
||||
if isinstance(value, dict):
|
||||
value = cv.Schema({
|
||||
cv.Required(CONF_B_CONSTANT): cv.float_,
|
||||
cv.Required(CONF_REFERENCE_TEMPERATURE): cv.temperature,
|
||||
cv.Required(CONF_REFERENCE_RESISTANCE): cv.resistance,
|
||||
})(value)
|
||||
value = cv.Schema(
|
||||
{
|
||||
cv.Required(CONF_B_CONSTANT): cv.float_,
|
||||
cv.Required(CONF_REFERENCE_TEMPERATURE): cv.temperature,
|
||||
cv.Required(CONF_REFERENCE_RESISTANCE): cv.resistance,
|
||||
}
|
||||
)(value)
|
||||
a, b, c = calc_b(value)
|
||||
elif isinstance(value, list):
|
||||
if len(value) != 3:
|
||||
raise cv.Invalid("Steinhart–Hart Calibration must consist of exactly three values")
|
||||
raise cv.Invalid(
|
||||
"Steinhart–Hart Calibration must consist of exactly three values"
|
||||
)
|
||||
value = cv.Schema([validate_calibration_parameter])(value)
|
||||
a, b, c = calc_steinhart_hart(value)
|
||||
else:
|
||||
raise cv.Invalid("Calibration parameter accepts either a list for steinhart-hart "
|
||||
"calibration, or mapping for b-constant calibration, "
|
||||
"not {}".format(type(value)))
|
||||
raise cv.Invalid(
|
||||
"Calibration parameter accepts either a list for steinhart-hart "
|
||||
"calibration, or mapping for b-constant calibration, "
|
||||
"not {}".format(type(value))
|
||||
)
|
||||
|
||||
return {
|
||||
CONF_A: a,
|
||||
@@ -98,11 +117,17 @@ def process_calibration(value):
|
||||
}
|
||||
|
||||
|
||||
CONFIG_SCHEMA = sensor.sensor_schema(UNIT_CELSIUS, ICON_EMPTY, 1, DEVICE_CLASS_TEMPERATURE).extend({
|
||||
cv.GenerateID(): cv.declare_id(NTC),
|
||||
cv.Required(CONF_SENSOR): cv.use_id(sensor.Sensor),
|
||||
cv.Required(CONF_CALIBRATION): process_calibration,
|
||||
}).extend(cv.COMPONENT_SCHEMA)
|
||||
CONFIG_SCHEMA = (
|
||||
sensor.sensor_schema(UNIT_CELSIUS, ICON_EMPTY, 1, DEVICE_CLASS_TEMPERATURE)
|
||||
.extend(
|
||||
{
|
||||
cv.GenerateID(): cv.declare_id(NTC),
|
||||
cv.Required(CONF_SENSOR): cv.use_id(sensor.Sensor),
|
||||
cv.Required(CONF_CALIBRATION): process_calibration,
|
||||
}
|
||||
)
|
||||
.extend(cv.COMPONENT_SCHEMA)
|
||||
)
|
||||
|
||||
|
||||
def to_code(config):
|
||||
|
Reference in New Issue
Block a user