19#ifndef SRC_SUPLA_PROTOCOL_WEATHERSENDER_H_
20#define SRC_SUPLA_PROTOCOL_WEATHERSENDER_H_
22#include <supla/log_wrapper.h>
23#include <supla/network/network.h>
24#include <supla/sensor/general_purpose_channel_base.h>
29enum SenorType : uint8_t {
49 lastSendTime = millis() - 100 * 1000;
54 SUPLA_LOG_DEBUG(
"weathersender: added sensor [%d]", type);
55 sensors[type] = sensor;
56 options[type] = option;
59 double getSensorValue(
int type) {
62 if (sensors[type] ==
nullptr) {
67 case Supla::SenorType::PM1:
69 ->getCalculatedValue();
70 SUPLA_LOG_DEBUG(
"weathersender: pm1.0 = %.2f", value);
72 case Supla::SenorType::PM2_5:
74 ->getCalculatedValue();
75 SUPLA_LOG_DEBUG(
"weathersender: pm2.5 = %.2f", value);
77 case Supla::SenorType::PM4:
79 ->getCalculatedValue();
80 SUPLA_LOG_DEBUG(
"weathersender: pm4 = %.2f", value);
82 case Supla::SenorType::PM10:
84 ->getCalculatedValue();
85 SUPLA_LOG_DEBUG(
"weathersender: pm10 = %.2f", value);
87 case Supla::SenorType::TEMP:
89 ->getLastTemperature();
90 SUPLA_LOG_DEBUG(
"weathersender: temperature = %.2f", value);
92 case Supla::SenorType::HUMI:
94 ->getValueDoubleSecond();
95 SUPLA_LOG_DEBUG(
"weathersender: humidity = %.2f", value);
97 case Supla::SenorType::PRESS:
100 SUPLA_LOG_DEBUG(
"weathersender: press = %.2f", value);
102 case Supla::SenorType::LIGHT:
104 ->getCalculatedValue();
105 SUPLA_LOG_DEBUG(
"weathersender: light = %.2f", value);
107 case Supla::SenorType::WIND:
110 SUPLA_LOG_DEBUG(
"weathersender: wind = %.2f", value);
112 case Supla::SenorType::RAIN:
115 SUPLA_LOG_DEBUG(
"weathersender: rain = %.2f", value);
117 case Supla::SenorType::CO2:
119 ->getCalculatedValue();
120 SUPLA_LOG_DEBUG(
"weathersender: co2 = %.2f", value);
127 virtual bool sendData() = 0;
130 if (millis() - lastSendTime > refreshTime * 1000) {
131 if (!Supla::Network::IsReady()) {
132 lastSendTime += 10000;
135 lastSendTime = millis();
137 lastSendTime += 10000;
143 int refreshTime = 180;
144 uint32_t lastSendTime = 0;
146 int options[MAXSENSORS] = {};
Base class for all elements of SuplaDevice.
Definition element.h:37
Definition local_action.h:52
void iterateAlways() override
Method called on each SuplaDevice iteration.
Definition weathersender.h:129
Base class for General Purpose Measurement (GPM/KPOP) and General Purpose Meter (GPM/KLOP)
Definition general_purpose_channel_base.h:37