SinricPro Library
Doorbell.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(DOORBELL, DoorbellPress); // "DoorbellPress"
10 FSTR(DOORBELL, state); // "state"
11 FSTR(DOORBELL, pressed); // "pressed"
12 
17 template <typename T>
18 class Doorbell {
19  public:
20  Doorbell();
21  bool sendDoorbellEvent(String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
22  private:
23  EventLimiter event_limiter;
24 };
25 
26 template <typename T>
28 : event_limiter(EVENT_LIMIT_SENSOR_STATE) {}
29 
38 template <typename T>
39 bool Doorbell<T>::sendDoorbellEvent(String cause) {
40  if (event_limiter) return false;
41  T* device = static_cast<T*>(this);
42 
43  JsonDocument eventMessage = device->prepareEvent(FSTR_DOORBELL_DoorbellPress, cause.c_str());
44  JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
45  event_value[FSTR_DOORBELL_state] = FSTR_DOORBELL_pressed;
46  return device->sendEvent(eventMessage);
47 }
48 
49 } // SINRICPRO_NAMESPACE
50 
51 template <typename T>
52 using Doorbell = SINRICPRO_NAMESPACE::Doorbell<T>;
Dorbell.
Definition: Doorbell.h:18
bool sendDoorbellEvent(String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send Doorbell event to SinricPro Server indicating someone pressed the doorbell button.
Definition: Doorbell.h:39