Implement Multisensor Capabilities #4
5 changed files with 18 additions and 16 deletions
|
@ -51,7 +51,7 @@ uint8_t MHZ19C::getSensorData(char * payload, uint8_t startbyte) {
|
||||||
if (readBytes > 0) {
|
if (readBytes > 0) {
|
||||||
switch(buffer[1]) {
|
switch(buffer[1]) {
|
||||||
case 0x86:
|
case 0x86:
|
||||||
int16_t value = (buffer[2]*256) + buffer[3];
|
uint16_t value = (buffer[2]*256) + buffer[3];
|
||||||
payload[startbyte] = (value) & 0xFF;
|
payload[startbyte] = (value) & 0xFF;
|
||||||
payload[startbyte+1] = (value >> 8) & 0xFF;
|
payload[startbyte+1] = (value >> 8) & 0xFF;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -44,7 +44,7 @@ uint8_t SENSAIRS8::getSensorData(char *payload, uint8_t startbyte) {
|
||||||
payload[startbyte] = 0x00;
|
payload[startbyte] = 0x00;
|
||||||
payload[startbyte+1] = 0x00;
|
payload[startbyte+1] = 0x00;
|
||||||
if (readBytes > 0) {
|
if (readBytes > 0) {
|
||||||
int16_t value = (buffer[3]*256) + buffer[4];
|
uint16_t value = (buffer[3]*256) + buffer[4];
|
||||||
payload[startbyte] = (value) & 0xFF;
|
payload[startbyte] = (value) & 0xFF;
|
||||||
payload[startbyte+1] = (value >> 8) & 0xFF;
|
payload[startbyte+1] = (value >> 8) & 0xFF;
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
#define CMD_GET_SER 0x12 // Get Sensor Serial
|
#define CMD_GET_SER 0x12 // Get Sensor Serial
|
||||||
#define CMD_GET_PPM 0x14 // Get Current PPM Reading
|
#define CMD_GET_PPM 0x14 // Get Current PPM Reading
|
||||||
|
|
||||||
class SG112A {
|
class SG112A : public AttSensor {
|
||||||
private:
|
private:
|
||||||
uint8_t buffer[SER_BUF_LEN];
|
uint8_t buffer[SER_BUF_LEN];
|
||||||
|
|
||||||
|
|
|
@ -37,8 +37,7 @@
|
||||||
#define SHT21_HUMINOHOLD 0xF5
|
#define SHT21_HUMINOHOLD 0xF5
|
||||||
#define SHT21_SOFTRESET 0xFE
|
#define SHT21_SOFTRESET 0xFE
|
||||||
|
|
||||||
class SHT21
|
class SHT21 : public AttSensor {
|
||||||
{
|
|
||||||
private:
|
private:
|
||||||
uint16_t sensorRead(uint8_t command);
|
uint16_t sensorRead(uint8_t command);
|
||||||
|
|
||||||
|
|
23
src/main.cpp
23
src/main.cpp
|
@ -212,30 +212,32 @@ void do_send(osjob_t* j) {
|
||||||
for (int i=0; i < NUM_SENSORS; i++)
|
for (int i=0; i < NUM_SENSORS; i++)
|
||||||
curByte = sensors[i]->getSensorData(payload, curByte);
|
curByte = sensors[i]->getSensorData(payload, curByte);
|
||||||
|
|
||||||
// Queue Packet for Sending
|
#if defined WS2812B_PIN && (defined HAS_SG112A || defined HAS_MHZ19C || defined HAS_SENSAIRS8)
|
||||||
DEBUG_PRINTLN("LoRa-Packet Queued");
|
|
||||||
LMIC_setTxData2(1, payload, sizeof(payload), 0);
|
|
||||||
|
|
||||||
#if defined WS2812B_PIN && (defined HAS_SG112A || defined HAS_MHZ19C)
|
|
||||||
|
|
||||||
// CO2 PPM Levels and LED Colors
|
// CO2 PPM Levels and LED Colors
|
||||||
// < 1000 ppm green
|
// < 1000 ppm green
|
||||||
// < 1800 ppm yellow
|
// < 1800 ppm yellow
|
||||||
// > 1000 ppm red
|
// > 1000 ppm red
|
||||||
|
|
||||||
if (data.ppm > 0 && data.ppm <= 1000) {
|
// Get PPM from Payload:
|
||||||
|
uint16_t ppm = word(payload[2], payload[1]);
|
||||||
|
|
||||||
|
// Set WS2812B-LED accodring to PPM Value
|
||||||
|
if (ppm > 0 && ppm <= 1000) {
|
||||||
WS2812B_SETLED(0,0,127,0);
|
WS2812B_SETLED(0,0,127,0);
|
||||||
} else if (data.ppm > 1000 && data.ppm <= 1800) {
|
} else if (ppm > 1000 && ppm <= 1800) {
|
||||||
WS2812B_SETLED(0,127,127,0);
|
WS2812B_SETLED(0,127,127,0);
|
||||||
} else if (data.ppm > 1800) {
|
} else if (ppm > 1800) {
|
||||||
WS2812B_SETLED(0,127,0,0);
|
WS2812B_SETLED(0,127,0,0);
|
||||||
} else {
|
} else {
|
||||||
WS2812B_SETLED(0,0,0,0);
|
WS2812B_SETLED(0,0,0,0);
|
||||||
}
|
}
|
||||||
#endif // WS2812B
|
#endif // WS2812B
|
||||||
#endif // #infdef HAS_NO_SENSOR
|
|
||||||
|
|
||||||
|
#endif // HAS_NO_SENSOR
|
||||||
|
|
||||||
|
// Queue Packet for Sending
|
||||||
|
DEBUG_PRINTLN("LoRa-Packet Queued");
|
||||||
|
LMIC_setTxData2(1, payload, sizeof(payload), 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -263,6 +265,7 @@ void setup()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Setup all Sensors
|
// Setup all Sensors
|
||||||
|
// Order of the Sensors here is Order in the Payload
|
||||||
uint8_t i = 0;
|
uint8_t i = 0;
|
||||||
#ifdef HAS_MHZ19C
|
#ifdef HAS_MHZ19C
|
||||||
sensors[i] = new MHZ19C();
|
sensors[i] = new MHZ19C();
|
||||||
|
|
Loading…
Reference in a new issue