Nicu Hodos 89da9a80e8 re-organize:
- move code for all devices in dedicated folder
- move code for gateway in the root folder
2025-09-20 10:00:42 +02:00

57 lines
1.3 KiB
C++

#pragma once
#include <DHT.h>
#include <HumiditySensor.h>
#include "TempSensor.h"
#define TEMP_POSITIVE PIN_B3
#define DHT_PIN PIN_B4
struct DhtValues {
int temperature;
int humidity;
};
class Dht22Sensor : public TempSensor, public HumiditySensor {
DHT dht = DHT(DHT_PIN, DHT22);
DhtValues values;
public:
Dht22Sensor(short id) :
TempSensor(id), HumiditySensor(id) {
}
void setup() override {
pinMode(TEMP_POSITIVE, OUTPUT);
digitalWrite(TEMP_POSITIVE, HIGH);
dht.begin();
delay(2000);
}
bool readTemp() override {
float temp = dht.readTemperature();
float humid = dht.readHumidity();
bool success = !isnan(temp) && !isnan(humid);
values.temperature = roundf(temp * 10);
values.humidity = roundf(humid * 10);
return success;
}
void sendValues(bool voltage) override {
voltage ? sendTempAndVoltage(values.temperature) : sendTemp(values.temperature);
delay(100);
sendHumidity(values.humidity);
}
void turnOnSensor() override {
pinMode(DHT_PIN, INPUT_PULLUP);
digitalWrite(TEMP_POSITIVE, HIGH);
}
void turnOffSensor() override {
digitalWrite(TEMP_POSITIVE, LOW);
pinMode(DHT_PIN, OUTPUT);
digitalWrite(DHT_PIN, LOW);
}
};