mirror of
https://github.com/esphome/esphome.git
synced 2025-03-15 15:18:16 +00:00
Create xiaomi_miscale.h
This commit is contained in:
parent
c87ef7c45d
commit
ee672496f8
47
esphome/components/xiaomi_miscale/xiaomi_miscale.h
Normal file
47
esphome/components/xiaomi_miscale/xiaomi_miscale.h
Normal file
@ -0,0 +1,47 @@
|
||||
#pragma once
|
||||
|
||||
#include "esphome/core/component.h"
|
||||
#include "esphome/components/sensor/sensor.h"
|
||||
#include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h"
|
||||
#include "esphome/components/xiaomi_ble/xiaomi_ble.h"
|
||||
|
||||
#ifdef ARDUINO_ARCH_ESP32
|
||||
|
||||
namespace esphome {
|
||||
namespace xiaomi_miscale {
|
||||
|
||||
class XiaomiMiscale : public Component, public esp32_ble_tracker::ESPBTDeviceListener {
|
||||
public:
|
||||
void set_address(uint64_t address) { address_ = address; }
|
||||
|
||||
bool parse_device(const esp32_ble_tracker::ESPBTDevice &device) override {
|
||||
|
||||
if (device.address_uint64() != this->address_)
|
||||
return false;
|
||||
|
||||
auto res = xiaomi_ble::parse_xiaomi(device);
|
||||
if (!res.has_value())
|
||||
return false;
|
||||
|
||||
if (res->weight.has_value() && this->weight_ != nullptr)
|
||||
this->weight_->publish_state(*res->weight);
|
||||
if (res->battery_level.has_value() && this->battery_level_ != nullptr)
|
||||
this->battery_level_->publish_state(*res->battery_level);
|
||||
return true;
|
||||
}
|
||||
|
||||
void dump_config() override;
|
||||
float get_setup_priority() const override { return setup_priority::DATA; }
|
||||
void set_weight(sensor::Sensor *weight) { weight_ = weight; }
|
||||
void set_battery_level(sensor::Sensor *battery_level) { battery_level_ = battery_level; }
|
||||
|
||||
protected:
|
||||
uint64_t address_;
|
||||
sensor::Sensor *weight_{nullptr};
|
||||
sensor::Sensor *battery_level_{nullptr};
|
||||
};
|
||||
|
||||
} // namespace xiaomi_miscale
|
||||
} // namespace esphome
|
||||
|
||||
#endif
|
Loading…
x
Reference in New Issue
Block a user