mirror of
https://github.com/Threnklyn/esphome-dev.git
synced 2026-05-27 08:18:28 +02:00
520c4331e3
* Add device_class arg to homeassistant sensor_schema call * Add device_class arg to mqtt_subscribe sensor_schema call * Add device_class arg to dht sensor_schema call * Add device_class arg to dht12 sensor_schema call * Add device_class arg to am2320 sensor_schema call * Add device_class arg to atc_mithermometer sensor_schema call * Add device_class arg to atm90e32 sensor_schema call * Add device_class arg to bh1750 sensor_schema call * Add device_class arg to ble_rssi sensor_schema call * Add device_class arg to bme280 sensor_schema call * Add device_class arg to bme680 sensor_schema call * Add device_class arg to bmp085 sensor_schema call * Add device_class arg to bmp280 sensor_schema call * Add device_class arg to binary_sensor_map sensor_schema call * Add device_class arg to apds9960 sensor_schema call * Add device_class arg to as3935 sensor_schema call * Add device_class arg to ccs811 sensor_schema call * Add device_class arg to cse7766 sensor_schema call * Add device_class arg to ct_clamp sensor_schema call * Add device_class arg to dallas sensor_schema call * Add device_class arg to duty_cycle sensor_schema call * Add device_class arg to esp32_hall sensor_schema call * Add device_class arg to hdc1080 sensor_schema call * Add device_class arg to hlw8012 sensor_schema call * Add device_class arg to hm3301 sensor_schema call * Add device_class arg to hmc5883l sensor_schema call * Add device_class arg to htu21d sensor_schema call * Add device_class arg to hx711 sensor_schema call * Add device_class arg to ina219 sensor_schema call * Add device_class arg to ina226 sensor_schema call * Add device_class arg to ina3221 sensor_schema call * Add device_class arg to ibsth1 sensor_schema call * Add device_class arg to max31855 sensor_schema call * Add device_class arg to max31856 sensor_schema call * Add device_class arg to max31865 sensor_schema call * Add device_class arg to mhz19 sensor_schema call * Add device_class arg to max6675 sensor_schema call * Add device_class arg to mpu6050 sensor_schema call * Add device_class arg to ms5611 sensor_schema call * Add device_class arg to mcp9808 sensor_schema call * Add device_class arg to ntc sensor_schema call * Add device_class arg to pid sensor_schema call * Add device_class arg to pmsx003 sensor_schema call * Add device_class arg to pulse_counter sensor_schema call * Add device_class arg to pulse_width sensor_schema call * Add device_class arg to pzem004t sensor_schema call * Add device_class arg to pzemac sensor_schema call * Add device_class arg to pzemdc sensor_schema call * Add device_class arg to qmc5883l sensor_schema call * Add device_class arg to resistance sensor_schema call * Add device_class arg to rotary_encoder sensor_schema call * Add device_class arg to ruuvitag sensor_schema call * Add device_class arg to scd30 sensor_schema call * Add device_class arg to sds011 sensor_schema call * Add device_class arg to senseair sensor_schema call * Add device_class arg to sgp30 sensor_schema call * Add device_class arg to sht3xd sensor_schema call * Add device_class arg to shtcx sensor_schema call * Add device_class arg to sps30 sensor_schema call * Add device_class arg to sts3x sensor_schema call * Add device_class arg to sun sensor_schema call * Add device_class arg to tcs34725 sensor_schema call * Add device_class arg to teleinfo sensor_schema call * Add device_class arg to template sensor_schema call * Add device_class arg to tmp102 sensor_schema call * Add device_class arg to tmp117 sensor_schema call * Add device_class arg to tsl2561 sensor_schema call * Add device_class arg to tx20 sensor_schema call * Add device_class arg to ultrasonic sensor_schema call * Add device_class arg to uptime sensor_schema call * Add device_class arg to vl53l0x sensor_schema call * Add device_class arg to wifi_signal sensor_schema call * Add device_class arg to xiaomi_cgd1 sensor_schema call * Add device_class arg to xiaomi_cgg1 sensor_schema call * Add device_class arg to xiaomi_gcls002 sensor_schema call * Add device_class arg to xiaomi_hhccjcy01 sensor_schema call * Add device_class arg to xiaomi_hhccpot002 sensor_schema call * Add device_class arg to xiaomi_jqjcy01ym sensor_schema call * Add device_class arg to xiaomi_lywsd02 sensor_schema call * Add device_class arg to xiaomi_lywsd03mmc sensor_schema call * Add device_class arg to xiaomi_lywsdcgq sensor_schema call * Add device_class arg to xiaomi_mhoc401 sensor_schema call * Add device_class arg to xiaomi_mjyd02yla sensor_schema call * Add device_class arg to xiaomi_wx08zm sensor_schema call * Add device_class arg to zyaura sensor_schema call * Add device_class arg to ads1115 sensor_schema call * Add device_class arg to adc sensor_schema call * Add device_class arg to ade7953 sensor_schema call * Add device_class arg to aht10 sensor_schema call * Make args of sensor_schema required * lint Co-authored-by: Guillermo Ruffino <glm.net@gmail.com>
101 lines
4.5 KiB
Python
101 lines
4.5 KiB
Python
import esphome.codegen as cg
|
|
import esphome.config_validation as cv
|
|
from esphome.components import sensor, spi
|
|
from esphome.const import \
|
|
CONF_ID, CONF_VOLTAGE, CONF_CURRENT, CONF_POWER, CONF_POWER_FACTOR, CONF_FREQUENCY, \
|
|
DEVICE_CLASS_CURRENT, DEVICE_CLASS_EMPTY, DEVICE_CLASS_POWER, DEVICE_CLASS_POWER_FACTOR, \
|
|
DEVICE_CLASS_TEMPERATURE, DEVICE_CLASS_VOLTAGE, ICON_EMPTY, ICON_LIGHTBULB, ICON_CURRENT_AC, \
|
|
UNIT_HERTZ, UNIT_VOLT, UNIT_AMPERE, UNIT_WATT, UNIT_EMPTY, UNIT_CELSIUS, UNIT_VOLT_AMPS_REACTIVE
|
|
|
|
CONF_PHASE_A = 'phase_a'
|
|
CONF_PHASE_B = 'phase_b'
|
|
CONF_PHASE_C = 'phase_c'
|
|
|
|
CONF_REACTIVE_POWER = 'reactive_power'
|
|
CONF_LINE_FREQUENCY = 'line_frequency'
|
|
CONF_CHIP_TEMPERATURE = 'chip_temperature'
|
|
CONF_GAIN_PGA = 'gain_pga'
|
|
CONF_CURRENT_PHASES = 'current_phases'
|
|
CONF_GAIN_VOLTAGE = 'gain_voltage'
|
|
CONF_GAIN_CT = 'gain_ct'
|
|
LINE_FREQS = {
|
|
'50HZ': 50,
|
|
'60HZ': 60,
|
|
}
|
|
CURRENT_PHASES = {
|
|
'2': 2,
|
|
'3': 3,
|
|
}
|
|
PGA_GAINS = {
|
|
'1X': 0x0,
|
|
'2X': 0x15,
|
|
'4X': 0x2A,
|
|
}
|
|
|
|
atm90e32_ns = cg.esphome_ns.namespace('atm90e32')
|
|
ATM90E32Component = atm90e32_ns.class_('ATM90E32Component', cg.PollingComponent, spi.SPIDevice)
|
|
|
|
ATM90E32_PHASE_SCHEMA = cv.Schema({
|
|
cv.Optional(CONF_VOLTAGE): sensor.sensor_schema(UNIT_VOLT, ICON_EMPTY, 2, DEVICE_CLASS_VOLTAGE),
|
|
cv.Optional(CONF_CURRENT): sensor.sensor_schema(UNIT_AMPERE, ICON_EMPTY, 2,
|
|
DEVICE_CLASS_CURRENT),
|
|
cv.Optional(CONF_POWER): sensor.sensor_schema(UNIT_WATT, ICON_EMPTY, 2, DEVICE_CLASS_POWER),
|
|
cv.Optional(CONF_REACTIVE_POWER): sensor.sensor_schema(UNIT_VOLT_AMPS_REACTIVE,
|
|
ICON_LIGHTBULB, 2, DEVICE_CLASS_EMPTY),
|
|
cv.Optional(CONF_POWER_FACTOR): sensor.sensor_schema(UNIT_EMPTY, ICON_EMPTY, 2,
|
|
DEVICE_CLASS_POWER_FACTOR),
|
|
cv.Optional(CONF_GAIN_VOLTAGE, default=7305): cv.uint16_t,
|
|
cv.Optional(CONF_GAIN_CT, default=27961): cv.uint16_t,
|
|
})
|
|
|
|
CONFIG_SCHEMA = cv.Schema({
|
|
cv.GenerateID(): cv.declare_id(ATM90E32Component),
|
|
cv.Optional(CONF_PHASE_A): ATM90E32_PHASE_SCHEMA,
|
|
cv.Optional(CONF_PHASE_B): ATM90E32_PHASE_SCHEMA,
|
|
cv.Optional(CONF_PHASE_C): ATM90E32_PHASE_SCHEMA,
|
|
cv.Optional(CONF_FREQUENCY): sensor.sensor_schema(UNIT_HERTZ, ICON_CURRENT_AC, 1,
|
|
DEVICE_CLASS_EMPTY),
|
|
cv.Optional(CONF_CHIP_TEMPERATURE): sensor.sensor_schema(UNIT_CELSIUS, ICON_EMPTY, 1,
|
|
DEVICE_CLASS_TEMPERATURE),
|
|
cv.Required(CONF_LINE_FREQUENCY): cv.enum(LINE_FREQS, upper=True),
|
|
cv.Optional(CONF_CURRENT_PHASES, default='3'): cv.enum(CURRENT_PHASES, upper=True),
|
|
cv.Optional(CONF_GAIN_PGA, default='2X'): cv.enum(PGA_GAINS, upper=True),
|
|
}).extend(cv.polling_component_schema('60s')).extend(spi.spi_device_schema())
|
|
|
|
|
|
def to_code(config):
|
|
var = cg.new_Pvariable(config[CONF_ID])
|
|
yield cg.register_component(var, config)
|
|
yield spi.register_spi_device(var, config)
|
|
|
|
for i, phase in enumerate([CONF_PHASE_A, CONF_PHASE_B, CONF_PHASE_C]):
|
|
if phase not in config:
|
|
continue
|
|
conf = config[phase]
|
|
cg.add(var.set_volt_gain(i, conf[CONF_GAIN_VOLTAGE]))
|
|
cg.add(var.set_ct_gain(i, conf[CONF_GAIN_CT]))
|
|
if CONF_VOLTAGE in conf:
|
|
sens = yield sensor.new_sensor(conf[CONF_VOLTAGE])
|
|
cg.add(var.set_voltage_sensor(i, sens))
|
|
if CONF_CURRENT in conf:
|
|
sens = yield sensor.new_sensor(conf[CONF_CURRENT])
|
|
cg.add(var.set_current_sensor(i, sens))
|
|
if CONF_POWER in conf:
|
|
sens = yield sensor.new_sensor(conf[CONF_POWER])
|
|
cg.add(var.set_power_sensor(i, sens))
|
|
if CONF_REACTIVE_POWER in conf:
|
|
sens = yield sensor.new_sensor(conf[CONF_REACTIVE_POWER])
|
|
cg.add(var.set_reactive_power_sensor(i, sens))
|
|
if CONF_POWER_FACTOR in conf:
|
|
sens = yield sensor.new_sensor(conf[CONF_POWER_FACTOR])
|
|
cg.add(var.set_power_factor_sensor(i, sens))
|
|
if CONF_FREQUENCY in config:
|
|
sens = yield sensor.new_sensor(config[CONF_FREQUENCY])
|
|
cg.add(var.set_freq_sensor(sens))
|
|
if CONF_CHIP_TEMPERATURE in config:
|
|
sens = yield sensor.new_sensor(config[CONF_CHIP_TEMPERATURE])
|
|
cg.add(var.set_chip_temperature_sensor(sens))
|
|
cg.add(var.set_line_freq(config[CONF_LINE_FREQUENCY]))
|
|
cg.add(var.set_current_phases(config[CONF_CURRENT_PHASES]))
|
|
cg.add(var.set_pga_gain(config[CONF_GAIN_PGA]))
|