SinricPro Library
TemperatureSensor.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(TEMPERATURE, currentTemperature); // "currentTemperature"
10 FSTR(TEMPERATURE, humidity); // "humidity"
11 FSTR(TEMPERATURE, temperature); // "temperature"
12 
17 template <typename T>
19  public:
21  bool sendTemperatureEvent(float temperature, float humidity = -1, String cause = FSTR_SINRICPRO_PERIODIC_POLL);
22  private:
23  EventLimiter event_limiter;
24 };
25 
26 template <typename T>
28 : event_limiter(EVENT_LIMIT_SENSOR_VALUE) {}
29 
40 template <typename T>
41 bool TemperatureSensor<T>::sendTemperatureEvent(float temperature, float humidity, String cause) {
42  if (event_limiter) return false;
43  T* device = static_cast<T*>(this);
44 
45  JsonDocument eventMessage = device->prepareEvent(FSTR_TEMPERATURE_currentTemperature, cause.c_str());
46  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
47  event_value[FSTR_TEMPERATURE_humidity] = roundf(humidity * 100) / 100.0;
48  event_value[FSTR_TEMPERATURE_temperature] = roundf(temperature * 10) / 10.0;
49  return device->sendEvent(eventMessage);
50 }
51 
52 } // SINRICPRO_NAMESPACE
53 
54 template <typename T>
55 using TemperatureSensor = SINRICPRO_NAMESPACE::TemperatureSensor<T>;
TemperatureSensor.
Definition: TemperatureSensor.h:18
bool sendTemperatureEvent(float temperature, float humidity=-1, String cause=FSTR_SINRICPRO_PERIODIC_POLL)
Send currentTemperature event to report actual temperature (measured by a sensor)
Definition: TemperatureSensor.h:41