mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	Minor change to support sht85 sensor (#6415)
This commit is contained in:
		| @@ -309,6 +309,7 @@ esphome/components/sfa30/* @ghsensdev | |||||||
| esphome/components/sgp40/* @SenexCrenshaw | esphome/components/sgp40/* @SenexCrenshaw | ||||||
| esphome/components/sgp4x/* @SenexCrenshaw @martgras | esphome/components/sgp4x/* @SenexCrenshaw @martgras | ||||||
| esphome/components/shelly_dimmer/* @edge90 @rnauber | esphome/components/shelly_dimmer/* @edge90 @rnauber | ||||||
|  | esphome/components/sht3xd/* @mrtoy-me | ||||||
| esphome/components/sht4x/* @sjtrny | esphome/components/sht4x/* @sjtrny | ||||||
| esphome/components/shutdown/* @esphome/core @jsuanet | esphome/components/shutdown/* @esphome/core @jsuanet | ||||||
| esphome/components/sigma_delta_output/* @Cat-Ion | esphome/components/sigma_delta_output/* @Cat-Ion | ||||||
|   | |||||||
| @@ -14,6 +14,8 @@ from esphome.const import ( | |||||||
|  |  | ||||||
| CONF_HEATER_ENABLED = "heater_enabled" | CONF_HEATER_ENABLED = "heater_enabled" | ||||||
|  |  | ||||||
|  | CODEOWNERS = ["@mrtoy-me"] | ||||||
|  |  | ||||||
| DEPENDENCIES = ["i2c"] | DEPENDENCIES = ["i2c"] | ||||||
| AUTO_LOAD = ["sensirion_common"] | AUTO_LOAD = ["sensirion_common"] | ||||||
|  |  | ||||||
| @@ -26,13 +28,13 @@ CONFIG_SCHEMA = ( | |||||||
|     cv.Schema( |     cv.Schema( | ||||||
|         { |         { | ||||||
|             cv.GenerateID(): cv.declare_id(SHT3XDComponent), |             cv.GenerateID(): cv.declare_id(SHT3XDComponent), | ||||||
|             cv.Required(CONF_TEMPERATURE): sensor.sensor_schema( |             cv.Optional(CONF_TEMPERATURE): sensor.sensor_schema( | ||||||
|                 unit_of_measurement=UNIT_CELSIUS, |                 unit_of_measurement=UNIT_CELSIUS, | ||||||
|                 accuracy_decimals=1, |                 accuracy_decimals=1, | ||||||
|                 device_class=DEVICE_CLASS_TEMPERATURE, |                 device_class=DEVICE_CLASS_TEMPERATURE, | ||||||
|                 state_class=STATE_CLASS_MEASUREMENT, |                 state_class=STATE_CLASS_MEASUREMENT, | ||||||
|             ), |             ), | ||||||
|             cv.Required(CONF_HUMIDITY): sensor.sensor_schema( |             cv.Optional(CONF_HUMIDITY): sensor.sensor_schema( | ||||||
|                 unit_of_measurement=UNIT_PERCENT, |                 unit_of_measurement=UNIT_PERCENT, | ||||||
|                 accuracy_decimals=1, |                 accuracy_decimals=1, | ||||||
|                 device_class=DEVICE_CLASS_HUMIDITY, |                 device_class=DEVICE_CLASS_HUMIDITY, | ||||||
|   | |||||||
| @@ -6,7 +6,11 @@ namespace sht3xd { | |||||||
|  |  | ||||||
| static const char *const TAG = "sht3xd"; | static const char *const TAG = "sht3xd"; | ||||||
|  |  | ||||||
| static const uint16_t SHT3XD_COMMAND_READ_SERIAL_NUMBER = 0x3780; | // use read serial number register with clock stretching disabled as per other SHT3XD_COMMAND registers | ||||||
|  | // which provides support for SHT85 sensor | ||||||
|  | // SHT85 does not support clock stretching and uses same registers as SHT3xd with clock stretching disabled | ||||||
|  | static const uint16_t SHT3XD_COMMAND_READ_SERIAL_NUMBER = 0x3682; | ||||||
|  |  | ||||||
| static const uint16_t SHT3XD_COMMAND_READ_STATUS = 0xF32D; | static const uint16_t SHT3XD_COMMAND_READ_STATUS = 0xF32D; | ||||||
| static const uint16_t SHT3XD_COMMAND_CLEAR_STATUS = 0x3041; | static const uint16_t SHT3XD_COMMAND_CLEAR_STATUS = 0x3041; | ||||||
| static const uint16_t SHT3XD_COMMAND_HEATER_ENABLE = 0x306D; | static const uint16_t SHT3XD_COMMAND_HEATER_ENABLE = 0x306D; | ||||||
| @@ -22,25 +26,32 @@ void SHT3XDComponent::setup() { | |||||||
|     this->mark_failed(); |     this->mark_failed(); | ||||||
|     return; |     return; | ||||||
|   } |   } | ||||||
|  |   this->serial_number_ = (uint32_t(raw_serial_number[0]) << 16) | uint32_t(raw_serial_number[1]); | ||||||
|  |  | ||||||
|   if (!this->write_command(heater_enabled_ ? SHT3XD_COMMAND_HEATER_ENABLE : SHT3XD_COMMAND_HEATER_DISABLE)) { |   if (!this->write_command(heater_enabled_ ? SHT3XD_COMMAND_HEATER_ENABLE : SHT3XD_COMMAND_HEATER_DISABLE)) { | ||||||
|     this->mark_failed(); |     this->mark_failed(); | ||||||
|     return; |     return; | ||||||
|   } |   } | ||||||
|   uint32_t serial_number = (uint32_t(raw_serial_number[0]) << 16) | uint32_t(raw_serial_number[1]); |  | ||||||
|   ESP_LOGV(TAG, "    Serial Number: 0x%08" PRIX32, serial_number); |  | ||||||
| } | } | ||||||
|  |  | ||||||
| void SHT3XDComponent::dump_config() { | void SHT3XDComponent::dump_config() { | ||||||
|   ESP_LOGCONFIG(TAG, "SHT3xD:"); |   ESP_LOGCONFIG(TAG, "SHT3xD:"); | ||||||
|   LOG_I2C_DEVICE(this); |  | ||||||
|   if (this->is_failed()) { |   if (this->is_failed()) { | ||||||
|     ESP_LOGE(TAG, "Communication with SHT3xD failed!"); |     ESP_LOGE(TAG, "  Communication with SHT3xD failed!"); | ||||||
|  |     return; | ||||||
|   } |   } | ||||||
|  |   ESP_LOGD(TAG, "  Serial Number: 0x%08" PRIX32, this->serial_number_); | ||||||
|  |   ESP_LOGD(TAG, "  Heater Enabled: %s", this->heater_enabled_ ? "true" : "false"); | ||||||
|  |  | ||||||
|  |   LOG_I2C_DEVICE(this); | ||||||
|   LOG_UPDATE_INTERVAL(this); |   LOG_UPDATE_INTERVAL(this); | ||||||
|  |  | ||||||
|   LOG_SENSOR("  ", "Temperature", this->temperature_sensor_); |   LOG_SENSOR("  ", "Temperature", this->temperature_sensor_); | ||||||
|   LOG_SENSOR("  ", "Humidity", this->humidity_sensor_); |   LOG_SENSOR("  ", "Humidity", this->humidity_sensor_); | ||||||
| } | } | ||||||
|  |  | ||||||
| float SHT3XDComponent::get_setup_priority() const { return setup_priority::DATA; } | float SHT3XDComponent::get_setup_priority() const { return setup_priority::DATA; } | ||||||
|  |  | ||||||
| void SHT3XDComponent::update() { | void SHT3XDComponent::update() { | ||||||
|   if (this->status_has_warning()) { |   if (this->status_has_warning()) { | ||||||
|     ESP_LOGD(TAG, "Retrying to reconnect the sensor."); |     ESP_LOGD(TAG, "Retrying to reconnect the sensor."); | ||||||
|   | |||||||
| @@ -25,6 +25,7 @@ class SHT3XDComponent : public PollingComponent, public sensirion_common::Sensir | |||||||
|   sensor::Sensor *temperature_sensor_{nullptr}; |   sensor::Sensor *temperature_sensor_{nullptr}; | ||||||
|   sensor::Sensor *humidity_sensor_{nullptr}; |   sensor::Sensor *humidity_sensor_{nullptr}; | ||||||
|   bool heater_enabled_{true}; |   bool heater_enabled_{true}; | ||||||
|  |   uint32_t serial_number_{0}; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| }  // namespace sht3xd | }  // namespace sht3xd | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user