4#ifndef SRC_SUPLA_PROTOCOL_WEATHERSENDER_H_
5#define SRC_SUPLA_PROTOCOL_WEATHERSENDER_H_
7#include <supla/log_wrapper.h>
8#include <supla/network/network.h>
9#include <supla/sensor/general_purpose_channel_base.h>
14enum SenorType : uint8_t {
34 lastSendTime = millis() - 100 * 1000;
39 SUPLA_LOG_DEBUG(
"weathersender: added sensor [%d]", type);
40 sensors[type] = sensor;
41 options[type] = option;
44 double getSensorValue(
int type) {
47 if (sensors[type] ==
nullptr) {
52 case Supla::SenorType::PM1:
54 ->getCalculatedValue();
55 SUPLA_LOG_DEBUG(
"weathersender: pm1.0 = %.2f", value);
57 case Supla::SenorType::PM2_5:
59 ->getCalculatedValue();
60 SUPLA_LOG_DEBUG(
"weathersender: pm2.5 = %.2f", value);
62 case Supla::SenorType::PM4:
64 ->getCalculatedValue();
65 SUPLA_LOG_DEBUG(
"weathersender: pm4 = %.2f", value);
67 case Supla::SenorType::PM10:
69 ->getCalculatedValue();
70 SUPLA_LOG_DEBUG(
"weathersender: pm10 = %.2f", value);
72 case Supla::SenorType::TEMP:
74 ->getLastTemperature();
75 SUPLA_LOG_DEBUG(
"weathersender: temperature = %.2f", value);
77 case Supla::SenorType::HUMI:
79 ->getValueDoubleSecond();
80 SUPLA_LOG_DEBUG(
"weathersender: humidity = %.2f", value);
82 case Supla::SenorType::PRESS:
85 SUPLA_LOG_DEBUG(
"weathersender: press = %.2f", value);
87 case Supla::SenorType::LIGHT:
89 ->getCalculatedValue();
90 SUPLA_LOG_DEBUG(
"weathersender: light = %.2f", value);
92 case Supla::SenorType::WIND:
95 SUPLA_LOG_DEBUG(
"weathersender: wind = %.2f", value);
97 case Supla::SenorType::RAIN:
100 SUPLA_LOG_DEBUG(
"weathersender: rain = %.2f", value);
102 case Supla::SenorType::CO2:
104 ->getCalculatedValue();
105 SUPLA_LOG_DEBUG(
"weathersender: co2 = %.2f", value);
112 virtual bool sendData() = 0;
115 if (millis() - lastSendTime > refreshTime * 1000) {
116 if (!Supla::Network::IsReady()) {
117 lastSendTime += 10000;
120 lastSendTime = millis();
122 lastSendTime += 10000;
128 int refreshTime = 180;
129 uint32_t lastSendTime = 0;
131 int options[MAXSENSORS] = {};
Base class for all elements of SuplaDevice.
Definition element.h:27
Definition local_action.h:42
Definition weathersender.h:30
void iterateAlways() override
Method called on each SuplaDevice iteration.
Definition weathersender.h:114
Base class for General Purpose Measurement (GPM/KPOP) and General Purpose Meter (GPM/KLOP)
Definition general_purpose_channel_base.h:22