SinricPro Library
PowerSensorEventSource.h
1 #ifndef _POWERSENSOREVENTSOURCE_H_
2 #define _POWERSENSOREVENTSOURCE_H_
3 
8 template <typename T>
10 public:
11  bool sendPowerSensorEvent(float voltage, float current, float power = -1.0f, float apparentPower = -1.0f, float reactivePower = -1.0f, float factor = -1.0f, String cause = "PERIODIC_POLL");
12 
13 private:
14  unsigned long startTime = 0;
15  unsigned long lastPower = 0;
16  float getWattHours(unsigned long currentTimestamp);
17 };
18 
32 template <typename T>
33 bool PowerSensorEventSource<T>::sendPowerSensorEvent(float voltage, float current, float power, float apparentPower, float reactivePower, float factor, String cause) {
34  T& device = static_cast<T&>(*this);
35 
36  DynamicJsonDocument eventMessage = device.prepareEvent("powerUsage", cause.c_str());
37  JsonObject event_value = eventMessage["payload"]["value"];
38  if (power == -1)
39  power = voltage * current;
40  if (apparentPower != -1)
41  factor = power / apparentPower;
42 
43  unsigned long currentTimestamp = device.getTimestamp();
44 
45  event_value["startTime"] = startTime;
46  event_value["voltage"] = voltage;
47  event_value["current"] = current;
48  event_value["power"] = power;
49  event_value["apparentPower"] = apparentPower;
50  event_value["reactivePower"] = reactivePower;
51  event_value["factor"] = factor;
52  event_value["wattHours"] = getWattHours(currentTimestamp);
53 
54  startTime = currentTimestamp;
55  lastPower = power;
56  return device.sendEvent(eventMessage);
57 }
58 
59 template <typename T>
60 float PowerSensorEventSource<T>::getWattHours(unsigned long currentTimestamp) {
61  if (startTime)
62  return (currentTimestamp - startTime) * lastPower / 3600.0f;
63  return 0;
64 }
65 
66 #endif
PowerSensorEventSource.
Definition: PowerSensorEventSource.h:9
bool sendPowerSensorEvent(float voltage, float current, float power=-1.0f, float apparentPower=-1.0f, float reactivePower=-1.0f, float factor=-1.0f, String cause="PERIODIC_POLL")
Send PowerSensor event to SinricPro Server.
Definition: PowerSensorEventSource.h:33