-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathExtraLogFileRecord.cs
More file actions
114 lines (106 loc) · 3.33 KB
/
ExtraLogFileRecord.cs
File metadata and controls
114 lines (106 loc) · 3.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
using System.Globalization;
using System.Text;
namespace ImportWD
{
class ExtraLogFileRecord(DateTime logTime)
{
public DateTime LogTime { get; set; } = logTime;
public double?[] Temperature { get; set; } = [null, null, null, null, null, null, null, null, null, null];
public int?[] Humidity { get; set; } = [null, null, null, null, null, null, null, null, null, null];
public double?[] Dewpoint { get; set; } = [null, null, null, null, null, null, null, null, null, null];
public double?[] SoilTemp { get; set; } = [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null];
public int?[] SoilMoisture { get; set; } = [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null];
public double?[] LeafTemp { get; set; } = [null, null];
public int?[] LeafWetness { get; set; } = [null, null];
public string RecToCsv()
{
// Writes an entry to the n-minute extralogfile. Fields are comma-separated:
// 0 Date in the form dd/mm/yy (the slash may be replaced by a dash in some cases)
// 1 Current time - hh:mm
// 2-11 Temperature 1-10
// 12-21 Humidity 1-10
// 22-31 Dew point 1-10
// 32-35 Soil temp 1-4
// 36-39 Soil moisture 1-4
// 40-41 Leaf temp 1-2
// 42-43 Leaf wetness 1-2
// 44-55 Soil temp 5-16
// 56-67 Soil moisture 5-16
// 68-71 Air quality 1-4
// 72-75 Air quality avg 1-4
// 76-83 User temperature 1-8
// 84 CO2
// 85 CO2 avg
// 86 CO2 pm2.5
// 87 CO2 pm2.5 avg
// 88 CO2 pm10
// 89 CO2 pm10 avg
// 90 CO2 temp
// 91 CO2 hum
Program.LogDebugMessage("DoExtraLogFile: Writing log entry for " + LogTime);
var inv = CultureInfo.InvariantCulture;
var sep = ',';
var sb = new StringBuilder(256);
sb.Append(LogTime.ToString("dd/MM/yy", inv) + sep);
sb.Append(LogTime.ToString("HH:mm", inv) + sep);
// Extra Temp 1-10
for (int i = 0; i < 10; i++)
{
sb.Append((Temperature[i] ?? 0).ToString(Program.Cumulus.TempFormat, inv) + sep);
}
// Extra Hum 1-10
for (int i = 0; i < 10; i++)
{
sb.Append((Humidity[i] ?? 0).ToString() + sep);
}
// Extra Dewpoint 1-10
for (int i = 0; i < 10; i++)
{
sb.Append((Dewpoint[i] ?? 0).ToString(Program.Cumulus.TempFormat, inv) + sep);
}
// Extra Soil Temp 1-4
for (int i = 0; i < 4; i++)
{
sb.Append((SoilTemp[i] ?? 0).ToString(Program.Cumulus.TempFormat, inv) + sep);
}
// Extra Soil Moisture 1-4
for (int i = 0; i < 4; i++)
{
sb.Append((SoilMoisture[i] ?? 0).ToString() + sep);
}
// Leaf temp - not used
sb.Append("0,0,0,0,");
// Extra Leaf wetness 1-2
sb.Append((LeafWetness[0] ?? 0).ToString() + sep);
sb.Append((LeafWetness[1] ?? 0).ToString() + sep);
// Soil Temp 5-16
for (int i = 4; i < 16; i++)
{
sb.Append((SoilTemp[i] ?? 0).ToString(Program.Cumulus.TempFormat, inv) + sep);
}
// Soil Moisture 5-16
for (int i = 4; i < 16; i++)
{
sb.Append((SoilMoisture[i] ?? 0).ToString() + sep);
}
// Air quality 1-4
for (int i = 0; i < 4; i++)
{
sb.Append("0" + sep);
}
// Air quality avg 1-4
for (int i = 0; i < 4; i++)
{
sb.Append("0" + sep);
}
// User temp 1-8
for (int i = 0; i < 8; i++)
{
sb.Append("0" + sep);
}
// CO2
sb.Append("0,0,0,0,0,0,0,0");
return sb.ToString();
}
}
}