38 const char*
id=
config.cropId;
40 if (strcmp(
id,
"tomato")==0) rec={22,60,1500,6.5,40,10,30};
41 else if (strcmp(
id,
"cucumber")==0) rec={24,70,1800,6.2,35,12,28};
42 else if (strcmp(
id,
"pepper")==0) rec={23,65,1600,6.3,38,11,29};
43 else if (strcmp(
id,
"lettuce")==0) rec={20,75,1000,6.0,30,8,25};
44 else if (strcmp(
id,
"blueberry")==0) rec={18,65,1200,5.0,30,10,20};
45 else if (strcmp(
id,
"lawn")==0) rec={20,50,800,6.3,25,8,20};
46 else if (strcmp(
id,
"grape")==0) rec={22,55,1400,6.5,35,12,25};
47 else if (strcmp(
id,
"conifer")==0) rec={18,55,1000,5.5,25,8,15};
48 else if (strcmp(
id,
"strawberry")==0) rec={20,70,1500,6.0,35,10,25};
49 else if (strcmp(
id,
"apple")==0) rec={18,60,1200,6.5,25,10,20};
50 else if (strcmp(
id,
"pear")==0) rec={18,60,1200,6.5,25,10,20};
51 else if (strcmp(
id,
"cherry")==0) rec={20,60,1300,6.5,30,10,25};
52 else if (strcmp(
id,
"raspberry")==0) rec={18,65,1100,6.2,30,10,22};
53 else if (strcmp(
id,
"currant")==0) rec={17,65,1000,6.2,25,9,20};
57 int soil=
config.soilProfile;
58 if(soil==0){ rec.hum+=-5; }
59 else if(soil==2){ rec.hum+=10; rec.ph-=0.3f; }
60 else if(soil==3){ rec.hum+=5; }
61 else if(soil==1){ rec.hum+=5; }
64 switch(
config.environmentType){
66 rec.hum+=10; rec.ec+=300; rec.n+=5; rec.k+=5; rec.t+=2;
break;
68 rec.hum+=-5; rec.ec-=200; rec.t+=1;
break;
72 constexpr float NPK_FACTOR = 6.5f;
78 if(
config.flags.seasonalAdjustEnabled){
79 time_t now=time(
nullptr);
struct tm* ti=localtime(&now);
80 int m=ti?ti->tm_mon+1:1;
81 bool rainy=(m==4||m==5||m==6||m==10);
84 if(rainy){ rec.hum+=5; rec.ec-=100; }
85 else{ rec.hum+=-2; rec.ec+=100; }
88 if(
config.environmentType == 0) {
89 if(m >= 3 && m <= 5) {
94 else if(m >= 6 && m <= 8) {
99 else if(m >= 9 && m <= 11) {
110 else if(
config.environmentType == 1) {
111 if(m >= 3 && m <= 5) {
116 else if(m >= 6 && m <= 8) {
121 else if(m >= 9 && m <= 11) {