SinricPro Library
AirQualitySensor.h
1 #pragma once
2 
3 #include "../EventLimiter.h"
4 #include "../SinricProStrings.h"
5 
6 #include "../SinricProNamespace.h"
7 namespace SINRICPRO_NAMESPACE {
8 
9 FSTR(AIRQUALITY, airQuality); // "airQuality"
10 FSTR(AIRQUALITY, pm1); // "pm1"
11 FSTR(AIRQUALITY, pm2_5); // "pm2_5"
12 FSTR(AIRQUALITY, pm10); // "pm10"
13 
18 template <typename T>
20  public:
22  bool sendAirQualityEvent(int pm1 = 0, int pm2_5 = 0, int pm10 = 0, String cause = FSTR_SINRICPRO_PERIODIC_POLL);
23  private:
24  EventLimiter event_limiter;
25 };
26 
27 template <typename T>
29 : event_limiter (EVENT_LIMIT_SENSOR_VALUE) {}
30 
42 template <typename T>
43 bool AirQualitySensor<T>::sendAirQualityEvent(int pm1, int pm2_5, int pm10, String cause) {
44  if (event_limiter) return false;
45  T* device = static_cast<T*>(this);
46 
47  JsonDocument eventMessage = device->prepareEvent(FSTR_AIRQUALITY_airQuality, cause.c_str());
48  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
49 
50  event_value[FSTR_AIRQUALITY_pm1] = pm1;
51  event_value[FSTR_AIRQUALITY_pm2_5] = pm2_5;
52  event_value[FSTR_AIRQUALITY_pm10] = pm10;
53 
54  return device->sendEvent(eventMessage);
55 }
56 
57 } // SINRICPRO_NAMESPACE
58 
59 template <typename T>
60 using AirQualitySensor = SINRICPRO_NAMESPACE::AirQualitySensor<T>;
AirQuality.
Definition: AirQualitySensor.h:19
bool sendAirQualityEvent(int pm1=0, int pm2_5=0, int pm10=0, String cause=FSTR_SINRICPRO_PERIODIC_POLL)
Sending air quality to SinricPro server.
Definition: AirQualitySensor.h:43