diff --git a/src/main.cpp b/src/main.cpp index 716a133..a640a5b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -7,6 +7,23 @@ RemoteVariable weather = RemoteVariable(); RemoteVariable pm_switch = RemoteVariable(); RemoteVariable pm_fan_speed = RemoteVariable(); +AnalogCard analogCard = AnalogCard(); + +float voltage = 220.0; + +float adc2current(uint16_t adc_val) { + return adc_val * 0.707; +} + +#define CT_INTERVAL 5000 + +CurrentTransformerCard ct1 = CurrentTransformerCard(&analogCard, 0, &voltage, &adc2current, CT_INTERVAL); +CurrentTransformerCard ct2 = CurrentTransformerCard(&analogCard, 1, &voltage, &adc2current, CT_INTERVAL); +CurrentTransformerCard ct3 = CurrentTransformerCard(&analogCard, 2, &voltage, &adc2current, CT_INTERVAL); +CurrentTransformerCard ct4 = CurrentTransformerCard(&analogCard, 3, &voltage, &adc2current, CT_INTERVAL); +CurrentTransformerCard ct5 = CurrentTransformerCard(&analogCard, 4, &voltage, &adc2current, CT_INTERVAL); +CurrentTransformerCard ct6 = CurrentTransformerCard(&analogCard, 5, &voltage, &adc2current, CT_INTERVAL); + const char *mode_names[] = {"off", "cool", "fan_only", "dry"}; const char *fan_speed_names[] = {"auto", "high", "medium", "low"}; uint8_t row = 4; @@ -115,6 +132,28 @@ void setup() climateCard.loadStateFromFRAM(); climateCard.setFRAMAutoSave(true); espmega.display->bindClimateCard(&climateCard); + + // Current Transformers + espmega.installCard(4, &analogCard); + espmega.installCard(5, &ct1); + ct1.bindFRAM(&espmega.fram, 6000); + espmega.iot->registerCard(5); + espmega.installCard(6, &ct2); + ct2.bindFRAM(&espmega.fram, 6100); + espmega.iot->registerCard(6); + espmega.installCard(7, &ct3); + ct3.bindFRAM(&espmega.fram, 6200); + espmega.iot->registerCard(7); + espmega.installCard(8, &ct4); + ct4.bindFRAM(&espmega.fram, 6300); + espmega.iot->registerCard(8); + espmega.installCard(9, &ct5); + ct5.bindFRAM(&espmega.fram, 6400); + espmega.iot->registerCard(9); + espmega.installCard(10, &ct6); + ct6.bindFRAM(&espmega.fram, 6500); + espmega.iot->registerCard(10); + // auto binded_display_update_on_pm25_out = std::bind(&display_update,0,std::placeholders::_1); // auto binded_display_update_on_pm25_in = std::bind(&display_update,1,std::placeholders::_1); // auto binded_display_update_on_temp_out = std::bind(&display_update,2,std::placeholders::_1); diff --git a/src/main.hpp b/src/main.hpp index 61aa049..fed4ce2 100644 --- a/src/main.hpp +++ b/src/main.hpp @@ -3,6 +3,7 @@ SET_LOOP_TASK_STACK_SIZE(32*1024); #include #include +#include