ct code, idk if it works or not.

This commit is contained in:
Siwat Sirichai 2024-02-26 23:24:57 +07:00
parent 7279ae0a62
commit 7e3b0b992a
3 changed files with 41 additions and 2 deletions

View file

@ -1,6 +1,13 @@
#pragma once #pragma once
//start definition //start definition
#define CT_RMS_VOLTAGE 220
#define CT_PIN_LIGHT_PHASE1 0
#define CT_PIN_LIGHT_PHASE2 1
#define CT_PIN_SOCKET 2
#define CT_PIN_AC_PHASE1 3
#define CT_PIN_AC_PHASE2 4
#define CT_PIN_AC_PHASE3 5
/* /*
tentetive pin mapping tentetive pin mapping
@ -11,6 +18,7 @@ tentetive pin mapping
4: row 4 4: row 4
(value from 0-3) (value from 0-3)
change light assignment change light assignment
1: row 1 column 1 1: row 1 column 1
2: row 1 column 2 2: row 1 column 2

View file

@ -7,6 +7,15 @@ RemoteVariable weather = RemoteVariable();
RemoteVariable pm_switch = RemoteVariable(); RemoteVariable pm_switch = RemoteVariable();
RemoteVariable pm_fan_speed = RemoteVariable(); RemoteVariable pm_fan_speed = RemoteVariable();
AnalogCard AnalogCard = AnalogCard();
float *voltage = CT_RMS_VOLTAGE;
CurrentTransformerCard ct_light_phase1 = CurrentTransformerCard(&AnalogCard, CT_PIN_AC_PHASE1, &voltage, &adcToCurrent, 1000);
CurrentTransformerCard ct_light_phase2 = CurrentTransformerCard(&AnalogCard, CT_PIN_AC_PHASE2, &voltage, &adcToCurrent, 1000);
CurrentTransformerCard ct_socket = CurrentTransformerCard(&AnalogCard, CT_PIN_SOCKET, &voltage, &adcToCurrent, 1000);
CurrentTransformerCard ct_ac_phase1 = CurrentTransformerCard(&AnalogCard, CT_PIN_AC_PHASE1, &voltage, &adcToCurrent, 1000);
CurrentTransformerCard ct_ac_phase2 = CurrentTransformerCard(&AnalogCard, CT_PIN_AC_PHASE2, &voltage, &adcToCurrent, 1000);
CurrentTransformerCard ct_ac_phase3 = CurrentTransformerCard(&AnalogCard, CT_PIN_AC_PHASE3, &voltage, &adcToCurrent, 1000);
const char *mode_names[] = {"off", "cool", "fan_only", "dry"}; const char *mode_names[] = {"off", "cool", "fan_only", "dry"};
const char *fan_speed_names[] = {"auto", "high", "medium", "low"}; const char *fan_speed_names[] = {"auto", "high", "medium", "low"};
uint8_t row = 4; uint8_t row = 4;
@ -37,6 +46,15 @@ ClimateCard climateCard = ClimateCard(AIR_CONDITIONER_IR_PIN, ac,
AIR_CONDITIONER_SENSOR_TYPE, AIR_CONDITIONER_SENSOR_PIN, AIR_CONDITIONER_SENSOR_TYPE, AIR_CONDITIONER_SENSOR_PIN,
AIR_CONDITIONER_RMT_CHANNEL); AIR_CONDITIONER_RMT_CHANNEL);
void adc2current(uint16_t adc_value)
{
// 16 bit ADC value to current in amps
// ADC Range is 0-65535, It have an input range of 0-3.3V
// However, it have a resistor network that map 0-3.3V to 0-12V
// The current transformer output 0-10V with 0V as 0A and 10V as 50A
return (adc_value / 65535.0) * 12.0 / 10.0 * 50.0;
}
void handleMqttMessage(char *topic, char *payload) void handleMqttMessage(char *topic, char *payload)
{ {
} }
@ -115,6 +133,18 @@ void setup()
climateCard.loadStateFromFRAM(); climateCard.loadStateFromFRAM();
climateCard.setFRAMAutoSave(true); climateCard.setFRAMAutoSave(true);
espmega.display->bindClimateCard(&climateCard); espmega.display->bindClimateCard(&climateCard);
espmega.installCard(4, &ct_light_phase1);
espmega.installCard(5, &ct_light_phase2);
espmega.installCard(6, &ct_socket);
espmega.installCard(7, &ct_ac_phase1);
espmega.installCard(8, &ct_ac_phase2);
espmega.installCard(9, &ct_ac_phase3);
espmega->iot.registerCard(4);
espmega->iot.registerCard(5);
espmega->iot.registerCard(6);
espmega->iot.registerCard(7);
espmega->iot.registerCard(8);
espmega->iot.registerCard(9);
// auto binded_display_update_on_pm25_out = std::bind(&display_update,0,std::placeholders::_1); // 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_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); // auto binded_display_update_on_temp_out = std::bind(&display_update,2,std::placeholders::_1);

View file

@ -19,7 +19,7 @@ SET_LOOP_TASK_STACK_SIZE(32*1024);
// Air Conditioner Configuration // Air Conditioner Configuration
#define AIR_CONDITIONER_SENSOR_TYPE AC_SENSOR_TYPE_DHT22 #define AIR_CONDITIONER_SENSOR_TYPE AC_SENSOR_TYPE_DHT22
#define AIR_CONDITIONER_SENSOR_PIN 32 #define AIR_CONDITIONER_SENSOR_PIN 32
#define AIR_CONDITIONER_IR_PIN 5 #define AIR_CONDITIONER_IR_PIN
#define AIR_CONDITIONER_RMT_CHANNEL RMT_CHANNEL_0 #define AIR_CONDITIONER_RMT_CHANNEL RMT_CHANNEL_0
void handleMqttMessage(char *topic, char *payload); void handleMqttMessage(char *topic, char *payload);
@ -45,4 +45,5 @@ void pm25inupdatedisplay(char* value);
void tempoutupdatedisplay(char* value); void tempoutupdatedisplay(char* value);
void weatherupdatedisplay(char* value); void weatherupdatedisplay(char* value);
void pmfanspeedupdatedisplay(char* value); void pmfanspeedupdatedisplay(char* value);
void pmswitchupdatedisplay(char* value); void pmswitchupdatedisplay(char* value);
float adc2current(uint16_t adc_value);