optimise data sending

This commit is contained in:
Nicu Hodos 2021-12-28 19:06:16 +01:00
parent 2b414d3778
commit 0ce4ca5637
2 changed files with 22 additions and 21 deletions

View File

@ -1,17 +1,17 @@
#pragma once
#define ID(value) (value & 0x1F)
#define STATE(value) ((value & 0x1) << 5)
#define VCC(value) ((value & 0x1FFF) << 6)
#define TEMP(value) (((unsigned long)value & 0x1FF) << 19)
#define HUMIDITY(value) (((unsigned long)value & 0x7F) << 19)
#define VCC(value) ((value & 0x1FFF) << 5)
#define TEMP(value) (((unsigned long)value & 0x2FF) << 18)
#define HUMIDITY(value) (((unsigned long)value & 0x2FF) << 18)
#define STATE(value) ((value & 0x1) << 27)
#define TYPE(value) (((unsigned long)value & 0xF) << 28)
#define GET_TYPE(value) (((unsigned long)value >> 28) & 0xF)
#define GET_TEMP(value) (((unsigned long)value >> 19) & 0x1FF)
#define GET_HUMIDITY(value) (((unsigned long)value >> 19) & 0x7F)
#define GET_VCC(value) ((value >> 6) & 0x1FFF)
#define GET_STATE(value) ((value >> 5) & 0x1)
#define GET_STATE(value) ((value >> 27) & 0x1)
#define GET_TEMP(value) (((unsigned long)value >> 18) & 0x2FF)
#define GET_HUMIDITY(value) (((unsigned long)value >> 18) & 0x2FF)
#define GET_VCC(value) ((value >> 5) & 0x1FFF)
enum SensorType {
HUMIDITY = 5,

View File

@ -29,6 +29,7 @@ void setup() {
pinMode(TEMP_POSITIVE, OUTPUT);
digitalWrite(TEMP_POSITIVE, HIGH);
dht.begin();
delay(2000);
TinySwitch::setup(SENDER);
TinyPower::setup();
@ -36,15 +37,14 @@ void setup() {
}
void loop() {
if (counter % SEND_VCC_INTERVAL == 0) {
if (counter % SEND_INTERVAL == 0) {
DhtValues values = readTemp();
tempSensor.sendTempAndVoltage(values.temperature);
delay(100);
humidSensor.sendHumidity(values.humidity);
counter = 0;
} else if (counter % SEND_INTERVAL == 0) {
DhtValues values = readTemp();
tempSensor.sendTemp(values.temperature);
if (counter % SEND_VCC_INTERVAL == 0) {
tempSensor.sendTempAndVoltage(values.temperature);
counter = 0;
} else {
tempSensor.sendTemp(values.temperature);
}
delay(100);
humidSensor.sendHumidity(values.humidity);
}
@ -52,18 +52,19 @@ void loop() {
}
DhtValues readTemp() {
digitalWrite(TEMP_POSITIVE, HIGH);
delay(10);
DhtValues dhtValues;
dhtValues.temperature = roundf(dht.readTemperature() * 10);
dhtValues.humidity = roundf(dht.readHumidity() * 10);
digitalWrite(TEMP_POSITIVE, LOW);
pinMode(DHT_PIN, OUTPUT);
digitalWrite(DHT_PIN, LOW);
return dhtValues;
}
ISR(PCINT0_vect) {
}
ISR(WDT_vect) {
counter++;
if (((counter + 1) % SEND_INTERVAL == 0) || ((counter + 1) % SEND_VCC_INTERVAL == 0)) {
pinMode(DHT_PIN, INPUT_PULLUP);
digitalWrite(TEMP_POSITIVE, HIGH);
}
}