Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions src/Capabilities/PushNotification.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
#pragma once

#include "../EventLimiter.h"
#include "../SinricProStrings.h"

#include "../SinricProNamespace.h"
namespace SINRICPRO_NAMESPACE {

FSTR(PUSHNOTIFICATION, pushNotification); // "pushNotification"
FSTR(PUSHNOTIFICATION, alert); // "alert"

/**
* @brief PushNotification
* @ingroup Capabilities
**/
template <typename T>
class PushNotification {
public:
PushNotification();
bool sendPushNotification(String notification);
private:
EventLimiter event_limiter;
};

template <typename T>
PushNotification<T>::PushNotification()
: event_limiter (EVENT_LIMIT_SENSOR_VALUE) {}

/**
* @brief Sending push notifications to SinricPro App
*
* @param notification `String` with the notification
* @return the success of sending the event
* @retval true event has been sent successfully
* @retval false event has not been sent, maybe you sent to much events in a short distance of time
**/
template <typename T>
bool PushNotification<T>::sendPushNotification(String notification) {
if (event_limiter) return false;
T* device = static_cast<T*>(this);

DynamicJsonDocument eventMessage = device->prepareEvent(FSTR_PUSHNOTIFICATION_pushNotification, FSTR_SINRICPRO_ALERT);
JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];

event_value[FSTR_PUSHNOTIFICATION_alert] = notification;

return device->sendEvent(eventMessage);
}

} // SINRICPRO_NAMESPACE

template <typename T>
using PushNotification = SINRICPRO_NAMESPACE::PushNotification<T>;
4 changes: 3 additions & 1 deletion src/SinricProAirQualitySensor.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

#include "SinricProDevice.h"
#include "Capabilities/SettingController.h"
#include "Capabilities/PushNotification.h"
#include "Capabilities/PowerStateController.h"
#include "Capabilities/AirQualitySensor.h"

Expand All @@ -21,12 +22,13 @@ namespace SINRICPRO_NAMESPACE {
*/
class SinricProAirQualitySensor : public SinricProDevice,
public SettingController<SinricProAirQualitySensor>,
public PushNotification<SinricProAirQualitySensor>,
public PowerStateController<SinricProAirQualitySensor>,
public AirQualitySensor<SinricProAirQualitySensor> {
friend class SettingController<SinricProAirQualitySensor>;
friend class PushNotification<AirQualitySensor>;
friend class PowerStateController<SinricProAirQualitySensor>;
friend class AirQualitySensor<SinricProAirQualitySensor>;

public:
SinricProAirQualitySensor(const String &deviceId) : SinricProDevice(deviceId, "AIR_QUALITY_SENSOR"){};
};
Expand Down
3 changes: 3 additions & 0 deletions src/SinricProBlinds.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

#include "SinricProDevice.h"
#include "Capabilities/SettingController.h"
#include "Capabilities/PushNotification.h"
#include "Capabilities/RangeController.h"
#include "Capabilities/PowerStateController.h"

Expand All @@ -26,9 +27,11 @@ namespace SINRICPRO_NAMESPACE {
**/
class SinricProBlinds : public SinricProDevice,
public SettingController<SinricProBlinds>,
public PushNotification<SinricProBlinds>,
public PowerStateController<SinricProBlinds>,
public RangeController<SinricProBlinds> {
friend class SettingController<SinricProBlinds>;
friend class PushNotification<SinricProBlinds>;
friend class PowerStateController<SinricProBlinds>;
friend class RangeController<SinricProBlinds>;
public:
Expand Down
3 changes: 3 additions & 0 deletions src/SinricProCamera.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

#include "SinricProDevice.h"
#include "Capabilities/SettingController.h"
#include "Capabilities/PushNotification.h"
#include "Capabilities/PowerStateController.h"

#include "SinricProNamespace.h"
Expand All @@ -21,8 +22,10 @@ namespace SINRICPRO_NAMESPACE {
**/
class SinricProCamera : public SinricProDevice,
public SettingController<SinricProCamera>,
public PushNotification<SinricProCamera>,
public PowerStateController<SinricProCamera> {
friend class SettingController<SinricProCamera>;
friend class PushNotification<SinricProCamera>;
friend class PowerStateController<SinricProCamera>;
public:
SinricProCamera(const String &deviceId) : SinricProDevice(deviceId, "CAMERA") {}
Expand Down
3 changes: 3 additions & 0 deletions src/SinricProContactsensor.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

#include "SinricProDevice.h"
#include "Capabilities/SettingController.h"
#include "Capabilities/PushNotification.h"
#include "Capabilities/PowerStateController.h"
#include "Capabilities/ContactSensor.h"

Expand All @@ -21,9 +22,11 @@ namespace SINRICPRO_NAMESPACE {
**/
class SinricProContactsensor : public SinricProDevice,
public SettingController<SinricProContactsensor>,
public PushNotification<SinricProContactsensor>,
public PowerStateController<SinricProContactsensor>,
public ContactSensor<SinricProContactsensor> {
friend class SettingController<SinricProContactsensor>;
friend class PushNotification<SinricProContactsensor>;
friend class PowerStateController<SinricProContactsensor>;
friend class ContactSensor<SinricProContactsensor>;
public:
Expand Down
3 changes: 3 additions & 0 deletions src/SinricProDimSwitch.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

#include "SinricProDevice.h"
#include "Capabilities/SettingController.h"
#include "Capabilities/PushNotification.h"
#include "Capabilities/PowerStateController.h"
#include "Capabilities/PowerLevelController.h"

Expand All @@ -22,9 +23,11 @@ namespace SINRICPRO_NAMESPACE {
**/
class SinricProDimSwitch : public SinricProDevice,
public SettingController<SinricProDimSwitch>,
public PushNotification<SinricProDimSwitch>,
public PowerStateController<SinricProDimSwitch>,
public PowerLevelController<SinricProDimSwitch> {
friend class SettingController<SinricProDimSwitch>;
friend class PushNotification<SinricProDimSwitch>;
friend class PowerStateController<SinricProDimSwitch>;
friend class PowerLevelController<SinricProDimSwitch>;
public:
Expand Down
3 changes: 3 additions & 0 deletions src/SinricProDoorbell.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

#include "SinricProDevice.h"
#include "Capabilities/SettingController.h"
#include "Capabilities/PushNotification.h"
#include "Capabilities/PowerStateController.h"
#include "Capabilities/Doorbell.h"

Expand All @@ -21,9 +22,11 @@ namespace SINRICPRO_NAMESPACE {
**/
class SinricProDoorbell : public SinricProDevice,
public SettingController<SinricProDoorbell>,
public PushNotification<SinricProDoorbell>,
public PowerStateController<SinricProDoorbell>,
public Doorbell<SinricProDoorbell> {
friend class SettingController<SinricProDoorbell>;
friend class PushNotification<SinricProDoorbell>;
friend class PowerStateController<SinricProDoorbell>;
friend class Doorbell<SinricProDoorbell>;
public:
Expand Down
3 changes: 3 additions & 0 deletions src/SinricProFan.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

#include "SinricProDevice.h"
#include "Capabilities/SettingController.h"
#include "Capabilities/PushNotification.h"
#include "Capabilities/PowerStateController.h"
#include "Capabilities/PowerLevelController.h"

Expand All @@ -22,9 +23,11 @@ namespace SINRICPRO_NAMESPACE {
**/
class SinricProFan : public SinricProDevice,
public SettingController<SinricProFan>,
public PushNotification<SinricProFan>,
public PowerStateController<SinricProFan>,
public PowerLevelController<SinricProFan> {
friend class SettingController<SinricProFan>;
friend class PushNotification<SinricProFan>;
friend class PowerStateController<SinricProFan>;
friend class PowerLevelController<SinricProFan>;
public:
Expand Down
3 changes: 3 additions & 0 deletions src/SinricProFanUS.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

#include "SinricProDevice.h"
#include "Capabilities/SettingController.h"
#include "Capabilities/PushNotification.h"
#include "Capabilities/PowerStateController.h"
#include "Capabilities/RangeController.h"

Expand All @@ -22,9 +23,11 @@ namespace SINRICPRO_NAMESPACE {
*/
class SinricProFanUS : public SinricProDevice,
public SettingController<SinricProFanUS>,
public PushNotification<SinricProFanUS>,
public PowerStateController<SinricProFanUS>,
public RangeController<SinricProFanUS> {
friend class SettingController<SinricProFanUS>;
friend class PushNotification<SinricProFanUS>;
friend class PowerStateController<SinricProFanUS>;
friend class RangeController<SinricProFanUS>;
public:
Expand Down
3 changes: 3 additions & 0 deletions src/SinricProGarageDoor.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

#include "SinricProDevice.h"
#include "Capabilities/SettingController.h"
#include "Capabilities/PushNotification.h"
#include "Capabilities/DoorController.h"

#include "SinricProNamespace.h"
Expand All @@ -24,8 +25,10 @@ namespace SINRICPRO_NAMESPACE {
**/
class SinricProGarageDoor : public SinricProDevice,
public SettingController<SinricProGarageDoor>,
public PushNotification<SinricProGarageDoor>,
public DoorController<SinricProGarageDoor> {
friend class SettingController<SinricProGarageDoor>;
friend class PushNotification<SinricProGarageDoor>;
friend class DoorController<SinricProGarageDoor>;
public:
SinricProGarageDoor(const String &deviceId) : SinricProDevice(deviceId, "GARAGE_DOOR") {}
Expand Down
3 changes: 3 additions & 0 deletions src/SinricProLight.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

#include "SinricProDevice.h"
#include "Capabilities/SettingController.h"
#include "Capabilities/PushNotification.h"
#include "Capabilities/PowerStateController.h"
#include "Capabilities/BrightnessController.h"
#include "Capabilities/ColorController.h"
Expand All @@ -29,11 +30,13 @@ namespace SINRICPRO_NAMESPACE {
**/
class SinricProLight : public SinricProDevice,
public SettingController<SinricProLight>,
public PushNotification<SinricProLight>,
public PowerStateController<SinricProLight>,
public BrightnessController<SinricProLight>,
public ColorController<SinricProLight>,
public ColorTemperatureController<SinricProLight> {
friend class SettingController<SinricProLight>;
friend class PushNotification<SinricProLight>;
friend class PowerStateController<SinricProLight>;
friend class BrightnessController<SinricProLight>;
friend class ColorController<SinricProLight>;
Expand Down
3 changes: 3 additions & 0 deletions src/SinricProLock.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

#include "SinricProDevice.h"
#include "Capabilities/SettingController.h"
#include "Capabilities/PushNotification.h"
#include "Capabilities/LockController.h"

#include "SinricProNamespace.h"
Expand All @@ -25,8 +26,10 @@ namespace SINRICPRO_NAMESPACE {
**/
class SinricProLock : public SinricProDevice,
public SettingController<SinricProLock>,
public PushNotification<SinricProLock>,
public LockController<SinricProLock> {
friend class SettingController<SinricProLock>;
friend class PushNotification<SinricProLock>;
friend class LockController<SinricProLock>;
public:
SinricProLock(const String &deviceId) : SinricProDevice(deviceId, "SMARTLOCK") {}
Expand Down
3 changes: 3 additions & 0 deletions src/SinricProMotionsensor.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

#include "SinricProDevice.h"
#include "Capabilities/SettingController.h"
#include "Capabilities/PushNotification.h"
#include "Capabilities/PowerStateController.h"
#include "Capabilities/MotionSensor.h"

Expand All @@ -22,9 +23,11 @@ namespace SINRICPRO_NAMESPACE {
*/
class SinricProMotionsensor : public SinricProDevice,
public SettingController<SinricProMotionsensor>,
public PushNotification<SinricProMotionsensor>,
public PowerStateController<SinricProMotionsensor>,
public MotionSensor<SinricProMotionsensor> {
friend class SettingController<SinricProMotionsensor>;
friend class PushNotification<SinricProMotionsensor>;
friend class PowerStateController<SinricProMotionsensor>;
friend class MotionSensor<SinricProMotionsensor>;
public:
Expand Down
3 changes: 3 additions & 0 deletions src/SinricProPowerSensor.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

#include "SinricProDevice.h"
#include "Capabilities/SettingController.h"
#include "Capabilities/PushNotification.h"
#include "Capabilities/PowerSensor.h"
#include "Capabilities/PowerStateController.h"

Expand All @@ -22,9 +23,11 @@ namespace SINRICPRO_NAMESPACE {
**/
class SinricProPowerSensor : public SinricProDevice,
public SettingController<SinricProPowerSensor>,
public PushNotification<SinricProPowerSensor>,
public PowerSensor<SinricProPowerSensor>,
public PowerStateController<SinricProPowerSensor> {
friend class SettingController<SinricProPowerSensor>;
friend class PushNotification<SinricProPowerSensor>;
friend class PowerSensor<SinricProPowerSensor>;
friend class PowerStateController<SinricProPowerSensor>;
public:
Expand Down
3 changes: 3 additions & 0 deletions src/SinricProSpeaker.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

#include "SinricProDevice.h"
#include "Capabilities/SettingController.h"
#include "Capabilities/PushNotification.h"
#include "Capabilities/PowerStateController.h"
#include "Capabilities/MuteController.h"
#include "Capabilities/VolumeController.h"
Expand Down Expand Up @@ -42,6 +43,7 @@ namespace SINRICPRO_NAMESPACE {
*/
class SinricProSpeaker : public SinricProDevice,
public SettingController<SinricProSpeaker>,
public PushNotification<SinricProSpeaker>,
public PowerStateController<SinricProSpeaker>,
public MuteController<SinricProSpeaker>,
public VolumeController<SinricProSpeaker>,
Expand All @@ -50,6 +52,7 @@ class SinricProSpeaker : public SinricProDevice,
public EqualizerController<SinricProSpeaker>,
public ModeController<SinricProSpeaker> {
friend class SettingController<SinricProSpeaker>;
friend class PushNotification<SinricProSpeaker>;
friend class PowerStateController<SinricProSpeaker>;
friend class MuteController<SinricProSpeaker>;
friend class VolumeController<SinricProSpeaker>;
Expand Down
1 change: 1 addition & 0 deletions src/SinricProStrings.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ FSTR(SINRICPRO, HMAC); // "HMAC"
FSTR(SINRICPRO, timestamp); // "timestamp"
FSTR(SINRICPRO, PERIODIC_POLL); // "PERIODIC_POLL"
FSTR(SINRICPRO, PHYSICAL_INTERACTION); // "PHYSICAL_INTERACTION"
FSTR(SINRICPRO, ALERT); // "ALERT"
FSTR(SINRICPRO, OK); // "OK"

} // SINRICPRO_NAMESPACE
3 changes: 3 additions & 0 deletions src/SinricProSwitch.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

#include "SinricProDevice.h"
#include "Capabilities/SettingController.h"
#include "Capabilities/PushNotification.h"
#include "Capabilities/PowerStateController.h"

#include "SinricProNamespace.h"
Expand All @@ -21,8 +22,10 @@ namespace SINRICPRO_NAMESPACE {
**/
class SinricProSwitch : public SinricProDevice,
public SettingController<SinricProSwitch>,
public PushNotification<SinricProSwitch>,
public PowerStateController<SinricProSwitch> {
friend class SettingController<SinricProSwitch>;
friend class PushNotification<SinricProSwitch>;
friend class PowerStateController<SinricProSwitch>;
public:
SinricProSwitch(const String &deviceId) : SinricProDevice(deviceId, "SWITCH") {};
Expand Down
3 changes: 3 additions & 0 deletions src/SinricProTV.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

#include "SinricProDevice.h"
#include "Capabilities/SettingController.h"
#include "Capabilities/PushNotification.h"
#include "Capabilities/PowerStateController.h"
#include "Capabilities/VolumeController.h"
#include "Capabilities/MuteController.h"
Expand Down Expand Up @@ -37,13 +38,15 @@ namespace SINRICPRO_NAMESPACE {
*/
class SinricProTV : public SinricProDevice,
public SettingController<SinricProTV>,
public PushNotification<SinricProTV>,
public PowerStateController<SinricProTV>,
public VolumeController<SinricProTV>,
public MuteController<SinricProTV>,
public MediaController<SinricProTV>,
public InputController<SinricProTV>,
public ChannelController<SinricProTV> {
friend class SettingController<SinricProTV>;
friend class PushNotification<SinricProTV>;
friend class PowerStateController<SinricProTV>;
friend class VolumeController<SinricProTV>;
friend class MuteController<SinricProTV>;
Expand Down
Loading