Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from voluptuous.schema_builder import Undefined
- import esphome.codegen as cg
- import esphome.config_validation as cv
- from esphome.components import binary_sensor, sensor, esp32_ble_tracker
- from esphome.const import (
- CONF_BATTERY_LEVEL,
- CONF_BATTERY_VOLTAGE,
- CONF_BINARY_SENSOR,
- CONF_MAC_ADDRESS,
- CONF_HUMIDITY,
- CONF_TEMPERATURE,
- CONF_ID,
- DEVICE_CLASS_BATTERY,
- DEVICE_CLASS_HUMIDITY,
- DEVICE_CLASS_TEMPERATURE,
- DEVICE_CLASS_VOLTAGE,
- ENTITY_CATEGORY_DIAGNOSTIC,
- ICON_EMPTY,
- STATE_CLASS_MEASUREMENT,
- UNIT_CELSIUS,
- UNIT_EMPTY,
- UNIT_PERCENT,
- UNIT_VOLT,
- )
- CONF_FLAG_VALUE = 'flag_value'
- CONF_REED_SWITCH = 'reed_switch'
- CODEOWNERS = ["@pasiz"]
- DEPENDENCIES = ["esp32_ble_tracker"]
- pvvx_mithermometer_ns = cg.esphome_ns.namespace("pvvx_mithermometer")
- PVVXMiThermometer = pvvx_mithermometer_ns.class_(
- "PVVXMiThermometer", esp32_ble_tracker.ESPBTDeviceListener, cg.Component
- )
- CONFIG_SCHEMA = (
- cv.Schema(
- {
- cv.GenerateID(): cv.declare_id(PVVXMiThermometer),
- cv.Required(CONF_MAC_ADDRESS): cv.mac_address,
- cv.Optional(CONF_TEMPERATURE): sensor.sensor_schema(
- unit_of_measurement=UNIT_CELSIUS,
- accuracy_decimals=2,
- device_class=DEVICE_CLASS_TEMPERATURE,
- state_class=STATE_CLASS_MEASUREMENT,
- ),
- cv.Optional(CONF_HUMIDITY): sensor.sensor_schema(
- unit_of_measurement=UNIT_PERCENT,
- accuracy_decimals=2,
- device_class=DEVICE_CLASS_HUMIDITY,
- state_class=STATE_CLASS_MEASUREMENT,
- ),
- cv.Optional(CONF_BATTERY_LEVEL): sensor.sensor_schema(
- unit_of_measurement=UNIT_PERCENT,
- accuracy_decimals=0,
- device_class=DEVICE_CLASS_BATTERY,
- state_class=STATE_CLASS_MEASUREMENT,
- entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
- ),
- cv.Optional(CONF_BATTERY_VOLTAGE): sensor.sensor_schema(
- unit_of_measurement=UNIT_VOLT,
- accuracy_decimals=3,
- device_class=DEVICE_CLASS_VOLTAGE,
- state_class=STATE_CLASS_MEASUREMENT,
- entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
- ),
- cv.Optional(CONF_FLAG_VALUE): sensor.sensor_schema(
- entity_category=ENTITY_CATEGORY_DIAGNOSTIC,
- ),
- cv.Optional(CONF_REED_SWITCH): binary_sensor.BINARY_SENSOR_SCHEMA(
- ),
- }
- )
- .extend(esp32_ble_tracker.ESP_BLE_DEVICE_SCHEMA)
- .extend(cv.COMPONENT_SCHEMA)
- )
- async def to_code(config):
- var = cg.new_Pvariable(config[CONF_ID])
- await cg.register_component(var, config)
- await esp32_ble_tracker.register_ble_device(var, config)
- cg.add(var.set_address(config[CONF_MAC_ADDRESS].as_hex))
- if CONF_TEMPERATURE in config:
- sens = await sensor.new_sensor(config[CONF_TEMPERATURE])
- cg.add(var.set_temperature(sens))
- if CONF_HUMIDITY in config:
- sens = await sensor.new_sensor(config[CONF_HUMIDITY])
- cg.add(var.set_humidity(sens))
- if CONF_BATTERY_LEVEL in config:
- sens = await sensor.new_sensor(config[CONF_BATTERY_LEVEL])
- cg.add(var.set_battery_level(sens))
- if CONF_BATTERY_VOLTAGE in config:
- sens = await sensor.new_sensor(config[CONF_BATTERY_VOLTAGE])
- cg.add(var.set_battery_voltage(sens))
- if CONF_FLAG_VALUE in config:
- sens = await sensor.new_sensor(config[CONF_FLAG_VALUE])
- cg.add(var.set_flag_value(sens))
- if CONF_REED_SWITCH in config:
- sens = await binary_sensor.new_binary_sensor(config[CONF_REED_SWITCH])
- cg.add(var.set_reed_switch(sens))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement