diff --git a/components/ip5306/__init__.py b/components/ip5306/__init__.py index 91212d43..6f3c9bcb 100644 --- a/components/ip5306/__init__.py +++ b/components/ip5306/__init__.py @@ -1,7 +1,7 @@ import esphome.codegen as cg import esphome.config_validation as cv from esphome.components import binary_sensor, i2c, sensor -from esphome.const import CONF_ID, CONF_BATTERY_LEVEL, DEVICE_CLASS_VOLTAGE, ICON_PERCENT, UNIT_PERCENT +from esphome.const import CONF_ID, CONF_BATTERY_LEVEL, DEVICE_CLASS_BATTERY, ICON_BATTERY, UNIT_PERCENT MULTI_CONF = True @@ -18,7 +18,7 @@ cv.GenerateID(): cv.declare_id(IP5306), cv.Optional(CONF_BATTERY_LEVEL): sensor.sensor_schema( unit_of_measurement=UNIT_PERCENT, - icon=ICON_PERCENT, + device_class=DEVICE_CLASS_BATTERY, accuracy_decimals=0, ), cv.Optional(CONF_CHARGER_CONNECTED): binary_sensor.binary_sensor_schema(), diff --git a/components/ip5306/ip5306.cpp b/components/ip5306/ip5306.cpp index 23e99868..acf09f26 100644 --- a/components/ip5306/ip5306.cpp +++ b/components/ip5306/ip5306.cpp @@ -25,7 +25,7 @@ void IP5306::setup() { } } -void IP5306::loop() { +void IP5306::update() { uint8_t data[2]; if (this->battery_level_ != nullptr) { if (this->read_register(IP5306_REG_LEVEL, data, 1) != i2c::ERROR_OK) { @@ -40,8 +40,7 @@ void IP5306::loop() { case 0x80: value = 75; break; case 0x00: value = 100; break; } - if (!this->battery_level_->has_state() || (this->battery_level_->state != value)) - this->battery_level_->publish_state(value); + this->battery_level_->publish_state(value); } if (this->read_register(IP5306_REG_READ0, data, 2) != i2c::ERROR_OK) { ESP_LOGE(TAG, "unable to read status"); diff --git a/components/ip5306/ip5306.h b/components/ip5306/ip5306.h index 7557b9bb..bec854b0 100644 --- a/components/ip5306/ip5306.h +++ b/components/ip5306/ip5306.h @@ -8,10 +8,11 @@ namespace esphome { namespace ip5306 { -class IP5306 : public i2c::I2CDevice, public Component { +class IP5306 : public i2c::I2CDevice, public PollingComponent { public: + IP5306() : PollingComponent(60000) {} void setup() override; - void loop() override; + void update() override; float get_setup_priority() const override;