mirror of
https://github.com/Threnklyn/esphome-dev.git
synced 2026-05-31 02:08:26 +02:00
Cleanup dashboard JS (#491)
* Cleanup dashboard JS * Add vscode * Save start_mark/end_mark * Updates * Updates * Remove need for cv.nameable It's a bit hacky but removes so much bloat from integrations * Add enum helper * Document APIs, and Improvements * Fixes * Fixes * Update PULL_REQUEST_TEMPLATE.md * Updates * Updates * Updates
This commit is contained in:
@@ -7,12 +7,6 @@ namespace dht {
|
||||
|
||||
static const char *TAG = "dht";
|
||||
|
||||
DHT::DHT(const std::string &temperature_name, const std::string &humidity_name, GPIOPin *pin, uint32_t update_interval)
|
||||
: PollingComponent(update_interval),
|
||||
pin_(pin),
|
||||
temperature_sensor_(new sensor::Sensor(temperature_name)),
|
||||
humidity_sensor_(new sensor::Sensor(humidity_name)) {}
|
||||
|
||||
void DHT::setup() {
|
||||
ESP_LOGCONFIG(TAG, "Setting up DHT...");
|
||||
this->pin_->digital_write(true);
|
||||
@@ -71,8 +65,6 @@ void DHT::set_dht_model(DHTModel model) {
|
||||
this->model_ = model;
|
||||
this->is_auto_detect_ = model == DHT_MODEL_AUTO_DETECT;
|
||||
}
|
||||
sensor::Sensor *DHT::get_temperature_sensor() const { return this->temperature_sensor_; }
|
||||
sensor::Sensor *DHT::get_humidity_sensor() const { return this->humidity_sensor_; }
|
||||
bool HOT DHT::read_sensor_(float *temperature, float *humidity, bool report_errors) {
|
||||
*humidity = NAN;
|
||||
*temperature = NAN;
|
||||
|
||||
@@ -18,13 +18,6 @@ enum DHTModel {
|
||||
/// Component for reading temperature/humidity measurements from DHT11/DHT22 sensors.
|
||||
class DHT : public PollingComponent {
|
||||
public:
|
||||
/** Construct a DHTComponent.
|
||||
*
|
||||
* @param pin The pin which DHT sensor is connected to.
|
||||
* @param update_interval The interval in ms the sensor should be checked.
|
||||
*/
|
||||
DHT(const std::string &temperature_name, const std::string &humidity_name, GPIOPin *pin, uint32_t update_interval);
|
||||
|
||||
/** Manually select the DHT model.
|
||||
*
|
||||
* Valid values are:
|
||||
@@ -40,10 +33,10 @@ class DHT : public PollingComponent {
|
||||
*/
|
||||
void set_dht_model(DHTModel model);
|
||||
|
||||
// ========== INTERNAL METHODS ==========
|
||||
// (In most use cases you won't need these)
|
||||
sensor::Sensor *get_temperature_sensor() const;
|
||||
sensor::Sensor *get_humidity_sensor() const;
|
||||
void set_pin(GPIOPin *pin) { pin_ = pin; }
|
||||
void set_model(DHTModel model) { model_ = model; }
|
||||
void set_temperature_sensor(sensor::Sensor *temperature_sensor) { temperature_sensor_ = temperature_sensor; }
|
||||
void set_humidity_sensor(sensor::Sensor *humidity_sensor) { humidity_sensor_ = humidity_sensor; }
|
||||
|
||||
/// Set up the pins and check connection.
|
||||
void setup() override;
|
||||
@@ -59,8 +52,8 @@ class DHT : public PollingComponent {
|
||||
GPIOPin *pin_;
|
||||
DHTModel model_{DHT_MODEL_AUTO_DETECT};
|
||||
bool is_auto_detect_{false};
|
||||
sensor::Sensor *temperature_sensor_;
|
||||
sensor::Sensor *humidity_sensor_;
|
||||
sensor::Sensor *temperature_sensor_{nullptr};
|
||||
sensor::Sensor *humidity_sensor_{nullptr};
|
||||
};
|
||||
|
||||
} // namespace dht
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
from esphome.components import sensor
|
||||
import esphome.config_validation as cv
|
||||
import esphome.codegen as cg
|
||||
from esphome.const import CONF_HUMIDITY, CONF_ID, CONF_MODEL, CONF_NAME, \
|
||||
CONF_PIN, CONF_TEMPERATURE, CONF_UPDATE_INTERVAL, CONF_ACCURACY_DECIMALS, CONF_ICON, \
|
||||
ICON_THERMOMETER, CONF_UNIT_OF_MEASUREMENT, UNIT_CELSIUS, ICON_WATER_PERCENT, UNIT_PERCENT
|
||||
import esphome.config_validation as cv
|
||||
from esphome import pins
|
||||
from esphome.components import sensor
|
||||
from esphome.const import CONF_HUMIDITY, CONF_ID, CONF_MODEL, CONF_PIN, CONF_TEMPERATURE, \
|
||||
CONF_UPDATE_INTERVAL, ICON_THERMOMETER, UNIT_CELSIUS, ICON_WATER_PERCENT, UNIT_PERCENT
|
||||
from esphome.cpp_helpers import gpio_pin_expression
|
||||
from esphome.pins import gpio_input_pullup_pin_schema
|
||||
|
||||
dht_ns = cg.esphome_ns.namespace('dht')
|
||||
DHTModel = dht_ns.enum('DHTModel')
|
||||
@@ -20,31 +19,27 @@ DHT_MODELS = {
|
||||
DHT = dht_ns.class_('DHT', cg.PollingComponent)
|
||||
|
||||
CONFIG_SCHEMA = cv.Schema({
|
||||
cv.GenerateID(): cv.declare_variable_id(DHT),
|
||||
cv.Required(CONF_PIN): gpio_input_pullup_pin_schema,
|
||||
cv.Required(CONF_TEMPERATURE): cv.nameable(sensor.SENSOR_SCHEMA.extend({
|
||||
cv.Optional(CONF_ACCURACY_DECIMALS, default=1): sensor.accuracy_decimals,
|
||||
cv.Optional(CONF_ICON, default=ICON_THERMOMETER): sensor.icon,
|
||||
cv.Optional(CONF_UNIT_OF_MEASUREMENT, default=UNIT_CELSIUS): sensor.unit_of_measurement,
|
||||
})),
|
||||
cv.Required(CONF_HUMIDITY): cv.nameable(sensor.SENSOR_SCHEMA.extend({
|
||||
cv.Optional(CONF_ACCURACY_DECIMALS, default=0): sensor.accuracy_decimals,
|
||||
cv.Optional(CONF_ICON, default=ICON_WATER_PERCENT): sensor.icon,
|
||||
cv.Optional(CONF_UNIT_OF_MEASUREMENT, default=UNIT_PERCENT): sensor.unit_of_measurement,
|
||||
})),
|
||||
cv.Optional(CONF_MODEL, default='auto detect'): cv.one_of(*DHT_MODELS, upper=True, space='_'),
|
||||
cv.GenerateID(): cv.declare_id(DHT),
|
||||
cv.Required(CONF_PIN): pins.gpio_input_pin_schema,
|
||||
cv.Optional(CONF_TEMPERATURE): sensor.sensor_schema(UNIT_CELSIUS, ICON_THERMOMETER, 1),
|
||||
cv.Optional(CONF_HUMIDITY): sensor.sensor_schema(UNIT_PERCENT, ICON_WATER_PERCENT, 0),
|
||||
cv.Optional(CONF_MODEL, default='auto detect'): cv.enum(DHT_MODELS, upper=True, space='_'),
|
||||
cv.Optional(CONF_UPDATE_INTERVAL, default='60s'): cv.update_interval,
|
||||
}).extend(cv.COMPONENT_SCHEMA)
|
||||
}).extend(cv.polling_component_schema('60s'))
|
||||
|
||||
|
||||
def to_code(config):
|
||||
pin = yield gpio_pin_expression(config[CONF_PIN])
|
||||
rhs = DHT.new(config[CONF_TEMPERATURE][CONF_NAME],
|
||||
config[CONF_HUMIDITY][CONF_NAME],
|
||||
pin, config[CONF_UPDATE_INTERVAL])
|
||||
dht = cg.Pvariable(config[CONF_ID], rhs)
|
||||
yield cg.register_component(dht, config)
|
||||
yield sensor.register_sensor(dht.Pget_temperature_sensor(), config[CONF_TEMPERATURE])
|
||||
yield sensor.register_sensor(dht.Pget_humidity_sensor(), config[CONF_HUMIDITY])
|
||||
var = cg.new_Pvariable(config[CONF_ID])
|
||||
yield cg.register_component(var, config)
|
||||
|
||||
cg.add(dht.set_dht_model(DHT_MODELS[config[CONF_MODEL]]))
|
||||
pin = yield gpio_pin_expression(config[CONF_PIN])
|
||||
cg.add(var.set_pin(pin))
|
||||
|
||||
if CONF_TEMPERATURE in config:
|
||||
sens = yield sensor.new_sensor(config[CONF_TEMPERATURE])
|
||||
cg.add(var.set_temperature_sensor(sens))
|
||||
if CONF_HUMIDITY in config:
|
||||
sens = yield sensor.new_sensor(config[CONF_HUMIDITY])
|
||||
cg.add(var.set_humidity_sensor(sens))
|
||||
|
||||
cg.add(var.set_dht_model(config[CONF_MODEL]))
|
||||
|
||||
Reference in New Issue
Block a user