Skip to content

Commit e0d6734

Browse files
authored
Merge pull request #273 from sivar2311/push_notification
PushNotifications
2 parents e4e249d + f2cab70 commit e0d6734

21 files changed

+111
-1
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#pragma once
2+
3+
#include "../EventLimiter.h"
4+
#include "../SinricProStrings.h"
5+
6+
#include "../SinricProNamespace.h"
7+
namespace SINRICPRO_NAMESPACE {
8+
9+
FSTR(PUSHNOTIFICATION, pushNotification); // "pushNotification"
10+
FSTR(PUSHNOTIFICATION, alert); // "alert"
11+
12+
/**
13+
* @brief PushNotification
14+
* @ingroup Capabilities
15+
**/
16+
template <typename T>
17+
class PushNotification {
18+
public:
19+
PushNotification();
20+
bool sendPushNotification(String notification);
21+
private:
22+
EventLimiter event_limiter;
23+
};
24+
25+
template <typename T>
26+
PushNotification<T>::PushNotification()
27+
: event_limiter (EVENT_LIMIT_SENSOR_VALUE) {}
28+
29+
/**
30+
* @brief Sending push notifications to SinricPro App
31+
*
32+
* @param notification `String` with the notification
33+
* @return the success of sending the event
34+
* @retval true event has been sent successfully
35+
* @retval false event has not been sent, maybe you sent to much events in a short distance of time
36+
**/
37+
template <typename T>
38+
bool PushNotification<T>::sendPushNotification(String notification) {
39+
if (event_limiter) return false;
40+
T* device = static_cast<T*>(this);
41+
42+
DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_PUSHNOTIFICATION_pushNotification, FSTR_SINRICPRO_ALERT);
43+
JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
44+
45+
event_value[FSTR_PUSHNOTIFICATION_alert] = notification;
46+
47+
return device->sendEvent(eventMessage);
48+
}
49+
50+
} // SINRICPRO_NAMESPACE
51+
52+
template <typename T>
53+
using PushNotification = SINRICPRO_NAMESPACE::PushNotification<T>;

src/SinricProAirQualitySensor.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
#include "SinricProDevice.h"
1010
#include "Capabilities/SettingController.h"
11+
#include "Capabilities/PushNotification.h"
1112
#include "Capabilities/PowerStateController.h"
1213
#include "Capabilities/AirQualitySensor.h"
1314

@@ -21,12 +22,13 @@ namespace SINRICPRO_NAMESPACE {
2122
*/
2223
class SinricProAirQualitySensor : public SinricProDevice,
2324
public SettingController<SinricProAirQualitySensor>,
25+
public PushNotification<SinricProAirQualitySensor>,
2426
public PowerStateController<SinricProAirQualitySensor>,
2527
public AirQualitySensor<SinricProAirQualitySensor> {
2628
friend class SettingController<SinricProAirQualitySensor>;
29+
friend class PushNotification<AirQualitySensor>;
2730
friend class PowerStateController<SinricProAirQualitySensor>;
2831
friend class AirQualitySensor<SinricProAirQualitySensor>;
29-
3032
public:
3133
SinricProAirQualitySensor(const String &deviceId) : SinricProDevice(deviceId, "AIR_QUALITY_SENSOR"){};
3234
};

src/SinricProBlinds.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
#include "SinricProDevice.h"
1010
#include "Capabilities/SettingController.h"
11+
#include "Capabilities/PushNotification.h"
1112
#include "Capabilities/RangeController.h"
1213
#include "Capabilities/PowerStateController.h"
1314

@@ -26,9 +27,11 @@ namespace SINRICPRO_NAMESPACE {
2627
**/
2728
class SinricProBlinds : public SinricProDevice,
2829
public SettingController<SinricProBlinds>,
30+
public PushNotification<SinricProBlinds>,
2931
public PowerStateController<SinricProBlinds>,
3032
public RangeController<SinricProBlinds> {
3133
friend class SettingController<SinricProBlinds>;
34+
friend class PushNotification<SinricProBlinds>;
3235
friend class PowerStateController<SinricProBlinds>;
3336
friend class RangeController<SinricProBlinds>;
3437
public:

src/SinricProCamera.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
#include "SinricProDevice.h"
1111
#include "Capabilities/SettingController.h"
12+
#include "Capabilities/PushNotification.h"
1213
#include "Capabilities/PowerStateController.h"
1314

1415
#include "SinricProNamespace.h"
@@ -21,8 +22,10 @@ namespace SINRICPRO_NAMESPACE {
2122
**/
2223
class SinricProCamera : public SinricProDevice,
2324
public SettingController<SinricProCamera>,
25+
public PushNotification<SinricProCamera>,
2426
public PowerStateController<SinricProCamera> {
2527
friend class SettingController<SinricProCamera>;
28+
friend class PushNotification<SinricProCamera>;
2629
friend class PowerStateController<SinricProCamera>;
2730
public:
2831
SinricProCamera(const String &deviceId) : SinricProDevice(deviceId, "CAMERA") {}

src/SinricProContactsensor.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
#include "SinricProDevice.h"
1010
#include "Capabilities/SettingController.h"
11+
#include "Capabilities/PushNotification.h"
1112
#include "Capabilities/PowerStateController.h"
1213
#include "Capabilities/ContactSensor.h"
1314

@@ -21,9 +22,11 @@ namespace SINRICPRO_NAMESPACE {
2122
**/
2223
class SinricProContactsensor : public SinricProDevice,
2324
public SettingController<SinricProContactsensor>,
25+
public PushNotification<SinricProContactsensor>,
2426
public PowerStateController<SinricProContactsensor>,
2527
public ContactSensor<SinricProContactsensor> {
2628
friend class SettingController<SinricProContactsensor>;
29+
friend class PushNotification<SinricProContactsensor>;
2730
friend class PowerStateController<SinricProContactsensor>;
2831
friend class ContactSensor<SinricProContactsensor>;
2932
public:

src/SinricProDimSwitch.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
#include "SinricProDevice.h"
1111
#include "Capabilities/SettingController.h"
12+
#include "Capabilities/PushNotification.h"
1213
#include "Capabilities/PowerStateController.h"
1314
#include "Capabilities/PowerLevelController.h"
1415

@@ -22,9 +23,11 @@ namespace SINRICPRO_NAMESPACE {
2223
**/
2324
class SinricProDimSwitch : public SinricProDevice,
2425
public SettingController<SinricProDimSwitch>,
26+
public PushNotification<SinricProDimSwitch>,
2527
public PowerStateController<SinricProDimSwitch>,
2628
public PowerLevelController<SinricProDimSwitch> {
2729
friend class SettingController<SinricProDimSwitch>;
30+
friend class PushNotification<SinricProDimSwitch>;
2831
friend class PowerStateController<SinricProDimSwitch>;
2932
friend class PowerLevelController<SinricProDimSwitch>;
3033
public:

src/SinricProDoorbell.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
#include "SinricProDevice.h"
1010
#include "Capabilities/SettingController.h"
11+
#include "Capabilities/PushNotification.h"
1112
#include "Capabilities/PowerStateController.h"
1213
#include "Capabilities/Doorbell.h"
1314

@@ -21,9 +22,11 @@ namespace SINRICPRO_NAMESPACE {
2122
**/
2223
class SinricProDoorbell : public SinricProDevice,
2324
public SettingController<SinricProDoorbell>,
25+
public PushNotification<SinricProDoorbell>,
2426
public PowerStateController<SinricProDoorbell>,
2527
public Doorbell<SinricProDoorbell> {
2628
friend class SettingController<SinricProDoorbell>;
29+
friend class PushNotification<SinricProDoorbell>;
2730
friend class PowerStateController<SinricProDoorbell>;
2831
friend class Doorbell<SinricProDoorbell>;
2932
public:

src/SinricProFan.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
#include "SinricProDevice.h"
1111
#include "Capabilities/SettingController.h"
12+
#include "Capabilities/PushNotification.h"
1213
#include "Capabilities/PowerStateController.h"
1314
#include "Capabilities/PowerLevelController.h"
1415

@@ -22,9 +23,11 @@ namespace SINRICPRO_NAMESPACE {
2223
**/
2324
class SinricProFan : public SinricProDevice,
2425
public SettingController<SinricProFan>,
26+
public PushNotification<SinricProFan>,
2527
public PowerStateController<SinricProFan>,
2628
public PowerLevelController<SinricProFan> {
2729
friend class SettingController<SinricProFan>;
30+
friend class PushNotification<SinricProFan>;
2831
friend class PowerStateController<SinricProFan>;
2932
friend class PowerLevelController<SinricProFan>;
3033
public:

src/SinricProFanUS.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
#include "SinricProDevice.h"
1111
#include "Capabilities/SettingController.h"
12+
#include "Capabilities/PushNotification.h"
1213
#include "Capabilities/PowerStateController.h"
1314
#include "Capabilities/RangeController.h"
1415

@@ -22,9 +23,11 @@ namespace SINRICPRO_NAMESPACE {
2223
*/
2324
class SinricProFanUS : public SinricProDevice,
2425
public SettingController<SinricProFanUS>,
26+
public PushNotification<SinricProFanUS>,
2527
public PowerStateController<SinricProFanUS>,
2628
public RangeController<SinricProFanUS> {
2729
friend class SettingController<SinricProFanUS>;
30+
friend class PushNotification<SinricProFanUS>;
2831
friend class PowerStateController<SinricProFanUS>;
2932
friend class RangeController<SinricProFanUS>;
3033
public:

src/SinricProGarageDoor.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
#include "SinricProDevice.h"
1111
#include "Capabilities/SettingController.h"
12+
#include "Capabilities/PushNotification.h"
1213
#include "Capabilities/DoorController.h"
1314

1415
#include "SinricProNamespace.h"
@@ -24,8 +25,10 @@ namespace SINRICPRO_NAMESPACE {
2425
**/
2526
class SinricProGarageDoor : public SinricProDevice,
2627
public SettingController<SinricProGarageDoor>,
28+
public PushNotification<SinricProGarageDoor>,
2729
public DoorController<SinricProGarageDoor> {
2830
friend class SettingController<SinricProGarageDoor>;
31+
friend class PushNotification<SinricProGarageDoor>;
2932
friend class DoorController<SinricProGarageDoor>;
3033
public:
3134
SinricProGarageDoor(const String &deviceId) : SinricProDevice(deviceId, "GARAGE_DOOR") {}

0 commit comments

Comments
 (0)