Files
hassos_config/esphome/include/acs712_component.h

34 lines
988 B
C++

#include "ACS712.h"
class ACS712Sensor : public PollingComponent {
public:
ACS712 *ACS = new ACS712(A0, 5.0, 1023, 100);
Sensor *current_sensor = new Sensor();
Sensor *power_sensor = new Sensor();
ACS712Sensor() : PollingComponent(15000) {}
void setup() override {
ACS->autoMidPoint();
ESP_LOGD("acs712", "MidPoint: %d", ACS->getMidPoint());
ACS->setNoisemV(43);
ESP_LOGD("acs712", "Noise mV: %d", ACS->getNoisemV());
}
void update() override {
float average = 0;
//uint32_t start = millis();
int count = 5;
for (int i = 0; i < count; i++) {
average += ACS->mA_DC();
}
float amps = average / count / 1000.0;
// float mA = ACS.mA_AC(50,10);
//uint32_t duration = millis() - start;
//ESP_LOGD("acs712", "Time: %d A: ", duration, amps);
current_sensor->publish_state(amps);
power_sensor->publish_state(amps * 19);
}
};