mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	Force heater off on setup (#5161)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
This commit is contained in:
		| @@ -12,6 +12,8 @@ from esphome.const import ( | |||||||
|     UNIT_PERCENT, |     UNIT_PERCENT, | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | CONF_HEATER_ENABLED = "heater_enabled" | ||||||
|  |  | ||||||
| DEPENDENCIES = ["i2c"] | DEPENDENCIES = ["i2c"] | ||||||
| AUTO_LOAD = ["sensirion_common"] | AUTO_LOAD = ["sensirion_common"] | ||||||
|  |  | ||||||
| @@ -36,7 +38,8 @@ CONFIG_SCHEMA = ( | |||||||
|                 device_class=DEVICE_CLASS_HUMIDITY, |                 device_class=DEVICE_CLASS_HUMIDITY, | ||||||
|                 state_class=STATE_CLASS_MEASUREMENT, |                 state_class=STATE_CLASS_MEASUREMENT, | ||||||
|             ), |             ), | ||||||
|         } |             cv.Optional(CONF_HEATER_ENABLED, default=True): cv.boolean, | ||||||
|  |         }, | ||||||
|     ) |     ) | ||||||
|     .extend(cv.polling_component_schema("60s")) |     .extend(cv.polling_component_schema("60s")) | ||||||
|     .extend(i2c.i2c_device_schema(0x44)) |     .extend(i2c.i2c_device_schema(0x44)) | ||||||
| @@ -48,6 +51,8 @@ async def to_code(config): | |||||||
|     await cg.register_component(var, config) |     await cg.register_component(var, config) | ||||||
|     await i2c.register_i2c_device(var, config) |     await i2c.register_i2c_device(var, config) | ||||||
|  |  | ||||||
|  |     cg.add(var.set_heater_enabled(config[CONF_HEATER_ENABLED])) | ||||||
|  |  | ||||||
|     if CONF_TEMPERATURE in config: |     if CONF_TEMPERATURE in config: | ||||||
|         sens = await sensor.new_sensor(config[CONF_TEMPERATURE]) |         sens = await sensor.new_sensor(config[CONF_TEMPERATURE]) | ||||||
|         cg.add(var.set_temperature_sensor(sens)) |         cg.add(var.set_temperature_sensor(sens)) | ||||||
|   | |||||||
| @@ -22,6 +22,10 @@ void SHT3XDComponent::setup() { | |||||||
|     this->mark_failed(); |     this->mark_failed(); | ||||||
|     return; |     return; | ||||||
|   } |   } | ||||||
|  |   if (!this->write_command(heater_enabled_ ? SHT3XD_COMMAND_HEATER_ENABLE : SHT3XD_COMMAND_HEATER_DISABLE)) { | ||||||
|  |     this->mark_failed(); | ||||||
|  |     return; | ||||||
|  |   } | ||||||
|   uint32_t serial_number = (uint32_t(raw_serial_number[0]) << 16) | uint32_t(raw_serial_number[1]); |   uint32_t serial_number = (uint32_t(raw_serial_number[0]) << 16) | uint32_t(raw_serial_number[1]); | ||||||
|   ESP_LOGV(TAG, "    Serial Number: 0x%08X", serial_number); |   ESP_LOGV(TAG, "    Serial Number: 0x%08X", serial_number); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -17,10 +17,12 @@ class SHT3XDComponent : public PollingComponent, public sensirion_common::Sensir | |||||||
|   void dump_config() override; |   void dump_config() override; | ||||||
|   float get_setup_priority() const override; |   float get_setup_priority() const override; | ||||||
|   void update() override; |   void update() override; | ||||||
|  |   void set_heater_enabled(bool heater_enabled) { heater_enabled_ = heater_enabled; } | ||||||
|  |  | ||||||
|  protected: |  protected: | ||||||
|   sensor::Sensor *temperature_sensor_{nullptr}; |   sensor::Sensor *temperature_sensor_{nullptr}; | ||||||
|   sensor::Sensor *humidity_sensor_{nullptr}; |   sensor::Sensor *humidity_sensor_{nullptr}; | ||||||
|  |   bool heater_enabled_{true}; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| }  // namespace sht3xd | }  // namespace sht3xd | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user