blob: 117c32b31f2785b3ba0475f6c9dc3d2919e622b5 (
plain)
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
|
/*
* Copyright 2025 Birte Kristina Friesel
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#ifndef SEN66_H
#define SEN66_H
class SEN66 {
private:
SEN66(const SEN66 ©);
unsigned char const address = 0x6b;
unsigned char txbuf[2];
unsigned char rxbuf[27];
unsigned char crcWord(unsigned char byte1, unsigned char byte2);
bool crcValid(unsigned char* data, unsigned char length);
public:
SEN66() {}
unsigned short const PM_INVALID = 0xffff;
signed short const TEMPERATURE_INVALID = 0x7fff;
signed short const HUMIDITY_INVALID = 0x7fff;
signed short const VOC_INVALID = 0x7fff;
signed short const NOX_INVALID = 0x7fff;
signed short const CO2_INVALID = 0xffff;
struct {
unsigned int fan_speed_warning : 1;
unsigned int gas_sensor_error : 1;
unsigned int rht_sensor_error : 1;
unsigned int co2_sensor_error : 1;
unsigned int pm_sensor_error : 1;
unsigned int fan_error : 1;
};
/*
* PM1.0 value, scaled by 10.
* PM1.0 [µg/m³] = pm10 / 10
*/
unsigned short pm1;
/*
* PM2.5 value, scaled by 10.
* PM2.5 [µg/m3] = pm2_5 / 10
*/
unsigned short pm2_5;
/*
* PM4.0 value, scaled by 10.
* PM4.0 [µg/m3] = pm4 / 10
*/
unsigned short pm4;
/*
* PM10 value, scaled by 10.
* PM10 [µg/m3] = pm10 / 10
*/
unsigned short pm10;
/*
* Temperature, scaled by 200.
* Temperature [°c] = temperature / 200
*/
signed short temperature;
/*
* Relative Humidity, scaled by 100.
* Relative Humidity [%] = humidity / 100
*/
signed short humidity;
/*
* VOC Index, scaled by 10.
* VOC index = voc / 10
*/
signed short voc;
/*
* NOx Index, scaled by 10.
* NOx index = nox / 10
*/
signed short nox;
/*
* CO₂ concentration [ppm].
*/
unsigned short co2;
void start();
void stop();
void cleanFan();
bool read();
bool readStatus();
};
extern SEN66 sen66;
#endif
|