This commit is contained in:
xin
2025-11-04 17:19:32 +08:00
parent 030381aa5c
commit 7c9b5728b9
37 changed files with 677 additions and 191 deletions

View File

@ -53,33 +53,92 @@ void TemperatureRegulator::setconfig(json jconfig) {
}
m_TemperaTureWoker=new TemperaTureWoker();
m_TemperaTureWoker->OpenCom(Port_Name,BaudRate);
int pin1_H=7;
int pin1_L=10;
int pin2_H=2;
int pin2_L=4;
// int pin1_H=7;
// int pin1_L=10;
// int pin2_H=2;
// int pin2_L=4;
// if (jconfig.contains("Pin")) {
// if (jconfig["Pin"].contains("")) {
// if (jconfig["Pin"]["TG"].contains("Pin_H")) {
// pin1_H=jconfig["Pin"]["TG"]["Pin_H"];
// }
// if (jconfig["Pin"]["TG"].contains("Pin_L")) {
// pin1_L=jconfig["Pin"]["TG"]["Pin_L"];
// }
// }
// if (jconfig["Pin"].contains("Fan")) {
// if (jconfig["Pin"]["Fan"].contains("Pin")) {
// pin2_H=jconfig["Pin"]["Fan"]["Pin"];
// }
// }
// if (jconfig["Pin"].contains("HOT")) {
// if (jconfig["Pin"]["HOT"].contains("Pin")) {
// pin2_L=jconfig["Pin"]["HOT"]["Pin"];
// }
// }
// }
/*
* "Pin": {
"COOLER": {
"Pin": 24
},
"Fan": {
"Pin_H": 3,
"Pin_L": 2
},
"HOT": {
"Pin": 19
},
"WINDOWS": {
"Pin_H": 7,
"Pin_L": 10,
"WaitTime": 40
}
},
*/
int Cooler_Pin_EN=24;
int Fan_Pin_H=3;
int Fan_Pin_L=2;
int Hot_Pin_EN=19;
int Windows_Pin_H=7;
int Windows_Pin_L=10;
int Windows_WaitTime=40;
if (jconfig.contains("Pin")) {
if (jconfig["Pin"].contains("TG")) {
if (jconfig["Pin"]["TG"].contains("Pin_H")) {
pin1_H=jconfig["Pin"]["TG"]["Pin_H"];
}
if (jconfig["Pin"]["TG"].contains("Pin_L")) {
pin1_L=jconfig["Pin"]["TG"]["Pin_L"];
if (jconfig["Pin"].contains("COOLER")) {
if (jconfig["Pin"]["COOLER"].contains("Pin")) {
Cooler_Pin_EN=jconfig["Pin"]["COOLER"]["Pin"];
}
}
if (jconfig["Pin"].contains("Fan")) {
if (jconfig["Pin"]["Fan"].contains("Pin")) {
pin2_H=jconfig["Pin"]["Fan"]["Pin"];
if (jconfig["Pin"]["Fan"].contains("Pin_H")) {
Fan_Pin_H=jconfig["Pin"]["Fan"]["Pin_H"];
}
if (jconfig["Pin"]["Fan"].contains("Pin_L")) {
Fan_Pin_L=jconfig["Pin"]["Fan"]["Pin_L"];
}
}
if (jconfig["Pin"].contains("HOT")) {
if (jconfig["Pin"]["HOT"].contains("Pin")) {
pin2_L=jconfig["Pin"]["HOT"]["Pin"];
Hot_Pin_EN=jconfig["Pin"]["HOT"]["Pin"];
}
}
if (jconfig["Pin"].contains("WINDOWS")) {
if (jconfig["Pin"]["WINDOWS"].contains("Pin_H")) {
Windows_Pin_H=jconfig["Pin"]["WINDOWS"]["Pin_H"];
}
if (jconfig["Pin"]["WINDOWS"].contains("Pin_L")) {
Windows_Pin_L=jconfig["Pin"]["WINDOWS"]["Pin_L"];
}
if (jconfig["Pin"]["WINDOWS"].contains("WaitTime")) {
Windows_WaitTime=jconfig["Pin"]["WINDOWS"]["WaitTime"];
}
}
}
m_TG_Manager=new TG_Manager();
m_TG_Manager->SetPin(pin1_H,pin1_L,pin2_H,pin2_L);
m_TG_Manager->SetPin_V2(Windows_Pin_H,Windows_Pin_L,Cooler_Pin_EN,Hot_Pin_EN,Fan_Pin_H,Fan_Pin_L);
// m_TG_Manager->SetPin(pin1_H,pin1_L,pin2_H,pin2_L);
if (jconfig.contains("Constant_Temperature")) {
if (jconfig["Constant_Temperature"].contains("CoolBegin_Temp_Insight")) {
m_CoolBegin_Temp_Insight=jconfig["Constant_Temperature"]["CoolBegin_Temp_Insight"];
@ -238,10 +297,68 @@ void TemperatureRegulator::init(){
void TemperatureRegulator::PanduanCooling() {
}
int timesforlog=0;
void TemperatureRegulator::loopsample() {
if (!isinit) return;
m_TemperaTureWoker->ReadTempreature();
// todo <20><>savedata<74><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼temperature
QString datastr="";
for (int i = 0; i < m_TemperaTureWoker->m_Tempreaturegroups.size(); ++i) {
for (int j = 0; j < 8; ++j) {
datastr+=QString::number(m_TemperaTureWoker->m_Tempreaturegroups[i].tempera[j])+",";
}
}
saveDataToFile("Tempratrue",datastr);
QDateTime currentTime=QDateTime::currentDateTime();
int year=currentTime.date().year();
int month=currentTime.date().month();
int day=currentTime.date().day();
int nowhour=currentTime.time().hour();
int nowminute=currentTime.time().minute();
long nowminuteofday=nowhour*60+nowminute;
SunInfo sunInfo=calculateSunriseSunset(year,month,day,m_Latitude,m_Longitude);
float sunrise_minte=sunInfo.sunrise_h*60+sunInfo.sunrise_m;
float sunset_minte=sunInfo.sunset_h*60+sunInfo.sunset_m;
if (timesforlog%60==0) {
logout("Temp","now minute of day is "+QString::number(nowminuteofday)+
" sunrise minute is "+QString::number(sunrise_minte)+
" sunset minute is "+QString::number(sunset_minte),6);
}
timesforlog++ ;
//<2F>ų<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ǰһ<C7B0><D2BB>Сʱ
if (nowminuteofday>60) {
if (last_time_in_today_minute<sunrise_minte&&nowminuteofday>=sunrise_minte&&nowminuteofday<sunset_minte) {
//sunrise happened
logout("Temp","sunrise happened",6);
m_TG_Manager->Windows_Close();
// m_TG_Manager->Stop();
}
if (last_time_in_today_minute<sunset_minte&&nowminuteofday>=sunset_minte) {
//sunset happened
logout("Temp","sunset happened",6);
m_TG_Manager->Windows_Open();
// m_TG_Manager->Stop();
}
}
last_time_in_today_minute=nowminuteofday;
};
void TemperatureRegulator::loop(){
if (!isinit) return;
m_TemperaTureWoker->ReadTempreature();
// todo <20><>savedata<74><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼temperature
QString datastr="";
for (int i = 0; i < m_TemperaTureWoker->m_Tempreaturegroups.size(); ++i) {
for (int j = 0; j < 8; ++j) {
datastr+=QString::number(m_TemperaTureWoker->m_Tempreaturegroups[i].tempera[j])+",";
}
}
saveDataToFile("Tempratrue",datastr);
QDateTime currentTime=QDateTime::currentDateTime();
int year=currentTime.date().year();
int month=currentTime.date().month();
@ -267,7 +384,7 @@ void TemperatureRegulator::loop(){
if (diff>m_CoolBegin_Diff_Temp) {
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰinsight<68>¶ȴ<C2B6><C8B4><EFBFBD><EFBFBD><EFBFBD><E8B6A8>ʼֵ
if (maxinsighttemp>m_CoolBegin_Temp_Insight) {
m_TG_Manager->Cooling();
m_TG_Manager->Cooling(true);
logout("Temp","current max insight temp is "+QString::number(maxinsighttemp),6);
} else {
m_TG_Manager->Stop();
@ -295,7 +412,7 @@ void TemperatureRegulator::loop(){
//<2F>ڶ<EFBFBD><DAB6><EFBFBD> <20><>m_HeatingBeginTemp_Insight<68>Ƚ<EFBFBD>
if (mininsighttemp<m_HeatingBegin_Temp_Insight)
{
m_TG_Manager->Heating();
m_TG_Manager->Heating(true);
logout("Temp","current min insight temp is "+QString::number(mininsighttemp),6);
}
else
@ -316,7 +433,7 @@ void TemperatureRegulator::loop(){
// <20><><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>
if (maxinsighttemp>minoutsighttemp)
{
m_TG_Manager->Cooling();
m_TG_Manager->Cooling(true);
logout("Temp","current max insight temp is "+QString::number(maxinsighttemp),6);
}
else
@ -337,11 +454,11 @@ void TemperatureRegulator::loop(){
// qDebug()<< "current tempreture is " << tempreture;
if (tempreture>M_Targert_Max_Tempreature)
{
m_TG_Manager->Cooling();
m_TG_Manager->Cooling(true);
}
else if (tempreture<M_Targert_Min_Tempreature)
{
m_TG_Manager->Heating();
m_TG_Manager->Heating(true);
}
else
{
@ -352,7 +469,7 @@ void TemperatureRegulator::loop(){
}
bool TemperatureRegulator::looptask() {
g_tempretureRegulator->loop();
g_tempretureRegulator->loopsample();
}