1 #ifndef _POWERSENSOR_H_
2 #define _POWERSENSOR_H_
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");
14 unsigned long startTime = 0;
15 unsigned long lastPower = 0;
16 float getWattHours(
unsigned long currentTimestamp);
34 T& device =
static_cast<T&
>(*this);
36 DynamicJsonDocument eventMessage = device.prepareEvent(
"powerUsage", cause.c_str());
37 JsonObject event_value = eventMessage[
"payload"][
"value"];
39 power = voltage * current;
40 if (apparentPower != -1)
41 factor = power / apparentPower;
43 unsigned long currentTimestamp = device.getTimestamp();
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);
54 startTime = currentTimestamp;
56 return device.sendEvent(eventMessage);
62 return (currentTimestamp - startTime) * lastPower / 3600.0f;
PowerSensor.
Definition: PowerSensor.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: PowerSensor.h:33