moved to sensor class
This commit is contained in:
70
sensor.h
Normal file
70
sensor.h
Normal file
@@ -0,0 +1,70 @@
|
||||
#pragma once
|
||||
|
||||
#include "Arduino.h"
|
||||
#include "mqtt.h"
|
||||
|
||||
class AQSSensor
|
||||
{
|
||||
char _topic[50];
|
||||
char _topic_1h[50];
|
||||
char _topic_24h[255];
|
||||
const String _name;
|
||||
uint32_t _value;
|
||||
RunningMedian _average1h;
|
||||
RunningMedian _average24h;
|
||||
bool _publish = false;
|
||||
|
||||
public:
|
||||
AQSSensor(String name, String deviceID, uint8_t avgSamples) : _name(name),
|
||||
_average1h(avgSamples),
|
||||
_average24h(avgSamples * 24)
|
||||
{
|
||||
sprintf(_topic, "Sensors/%s/%s", deviceID.c_str(), name.c_str());
|
||||
sprintf(_topic_1h, "Sensors/%s/%s/1h/", deviceID.c_str(), name.c_str());
|
||||
sprintf(_topic_24h, "Sensors/%s/%s/24h/", deviceID.c_str(), name.c_str());
|
||||
}
|
||||
|
||||
void publish(void)
|
||||
{
|
||||
_publish = true;
|
||||
}
|
||||
|
||||
String getName(void)
|
||||
{
|
||||
return _name;
|
||||
}
|
||||
|
||||
void publishMQTT(void)
|
||||
{
|
||||
if (_publish == true)
|
||||
{
|
||||
publishSingle(_value, _topic);
|
||||
publishSingle(_average1h.getMedian(), _topic_1h);
|
||||
publishSingle(_average24h.getMedian(), _topic_24h);
|
||||
_publish = false;
|
||||
}
|
||||
}
|
||||
|
||||
virtual void set(uint32_t value)
|
||||
{
|
||||
_value = value;
|
||||
_average1h.add(_value);
|
||||
_average24h.add(_value);
|
||||
}
|
||||
|
||||
uint32_t value() { return _value; }
|
||||
|
||||
void print(void)
|
||||
{
|
||||
if (_publish)
|
||||
{
|
||||
Serial.printf("sensor:%s = %d\n", _name.c_str(), _value);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
void addSensorToList(AQSSensor *sensor);
|
||||
void reportToSerial(void);
|
||||
|
||||
void initSensor(void);
|
||||
void handleSensor(void);
|
||||
Reference in New Issue
Block a user