-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathExtraLogFileRecord.cs
More file actions
170 lines (160 loc) · 4.79 KB
/
Copy pathExtraLogFileRecord.cs
File metadata and controls
170 lines (160 loc) · 4.79 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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
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, null, null, null, null, null, null];
public int?[] Humidity { get; set; } = [null, null, null, null, null, null, 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, 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 hh:mm
// 1 Unix Timestamp
// 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
// 92-95 Laser distance 1-4
// 96-99 Laser depth 1-4
// 100 Snow depth
// 101-106 Temperature 11-16
// 107-112 Humidity 11-16
// 113-118 Dewpoint 11-16
// 119-122 AQ pm10 1-4
// 123-126 AQ pm10 avg 1-4
// 127-142 Soil EC 1-16
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 HH:mm", inv) + sep);
sb.Append(new DateTimeOffset(LogTime).ToUnixTimeSeconds() + sep);
// Extra Temp 1-10
for (int i = 0; i < 10; i++)
{
if (Temperature[i].HasValue) sb.Append(Temperature[i]!.Value.ToString(Program.Cumulus.TempFormat, inv));
sb.Append(sep);
}
// Extra Hum 1-10
for (int i = 0; i < 10; i++)
{
if (Humidity[i].HasValue) sb.Append(Humidity[i]!.Value);
sb.Append(sep);
}
// Extra Dewpoint 1-10
for (int i = 0; i < 10; i++)
{
if (Dewpoint[i].HasValue) sb.Append(Dewpoint[i]!.Value.ToString(Program.Cumulus.TempFormat, inv));
sb.Append(sep);
}
// Extra Soil Temp 1-4
for (int i = 0; i < 4; i++)
{
if (SoilTemp[i].HasValue) sb.Append(SoilTemp[i]!.Value.ToString(Program.Cumulus.TempFormat, inv));
sb.Append(sep);
}
// Extra Soil Moisture 1-4
for (int i = 0; i < 4; i++)
{
if (SoilMoisture[i].HasValue) sb.Append(SoilMoisture[i]!.Value);
sb.Append(sep);
}
// Leaf temp - not used
sb.Append(sep, 2);
// Extra Leaf wetness 1-2
if (LeafWetness[0].HasValue) sb.Append(LeafWetness[0]!.Value);
sb.Append(sep);
if (LeafWetness[1].HasValue) sb.Append(LeafWetness[1]!.Value);
sb.Append(sep);
// Soil Temp 5-16
for (int i = 4; i < 16; i++)
{
if (SoilTemp[i].HasValue) sb.Append(SoilTemp[i]!.Value.ToString(Program.Cumulus.TempFormat, inv));
sb.Append(sep);
}
// Soil Moisture 5-16
for (int i = 4; i < 16; i++)
{
if (SoilMoisture[i].HasValue) sb.Append(SoilMoisture[i]!.Value);
sb.Append(sep);
}
// Air quality 1-4
for (int i = 0; i < 4; i++)
{
sb.Append(sep);
}
// Air quality avg 1-4
for (int i = 0; i < 4; i++)
{
sb.Append(sep);
}
// User temp 1-8
for (int i = 0; i < 8; i++)
{
sb.Append(sep);
}
// CO2
sb.Append(sep, 8);
// Laser dist 1-4
sb.Append(sep, 4);
// Laser dept 1-4
sb.Append(sep, 4);
// Snow depth
sb.Append(sep);
// Extra Temp 11-6
for (int i = 10; i < 16; i++)
{
if (Temperature[i].HasValue) sb.Append(Temperature[i]!.Value.ToString(Program.Cumulus.TempFormat, inv));
sb.Append(sep);
}
// Extra Hum 11-16
for (int i = 10; i < 16; i++)
{
if (Humidity[i].HasValue) sb.Append(Humidity[i]!.Value);
sb.Append(sep);
}
// Extra Dewpoint 1-16
for (int i = 10; i < 16; i++)
{
if (Dewpoint[i].HasValue) sb.Append(Dewpoint[i]!.Value.ToString(Program.Cumulus.TempFormat, inv));
sb.Append(sep);
}
// Air quality pm10 1-4
for (int i = 0; i < 4; i++)
{
sb.Append(sep);
}
// Air quality pm10 avg 1-4
for (int i = 0; i < 4; i++)
{
sb.Append(sep);
}
// Soil EC 1-16
sb.Append(sep, 15);
return sb.ToString();
}
}
}