49class Relay :
public ChannelElement,
public ActionHandler {
53 _supla_int_t functions = (0xFF ^
54 SUPLA_BIT_FUNC_CONTROLLINGTHEROLLERSHUTTER));
55 explicit Relay(
int pin,
57 _supla_int_t functions = (0xFF ^
58 SUPLA_BIT_FUNC_CONTROLLINGTHEROLLERSHUTTER));
62 virtual Relay &setDefaultStateOn();
63 virtual Relay &setDefaultStateOff();
64 virtual Relay &setDefaultStateRestore();
65 virtual Relay &keepTurnOnDuration(
bool keep =
true);
67 virtual uint8_t pinOnValue();
68 virtual uint8_t pinOffValue();
69 virtual void turnOn(_supla_int_t duration = 0);
70 virtual void turnOff(_supla_int_t duration = 0);
72 virtual void toggle(_supla_int_t duration = 0);
76 void handleAction(
int event,
int action)
override;
87 bool local =
false)
override;
94 unsigned _supla_int_t getStoredTurnOnDurationMs();
96 bool isStaircaseFunction()
const;
97 bool isImpulseFunction()
const;
98 void disableCountdownTimerFunction();
99 void enableCountdownTimerFunction();
100 bool isCountdownTimerFunctionEnabled()
const;
101 void setMinimumAllowedDurationMs(uint32_t durationMs);
102 void fillChannelConfig(
void *channelConfig,
int *size)
override;
104 static void setRelayStorageSaveDelay(
int delayMs);
106 void setDefaultRelatedMeterChannelNo(
int channelNo);
107 void setTurnOffWhenEmptyAggregator(
bool turnOff);
115 void setChannelFunction(_supla_int_t newFunction);
116 void updateTimerValue();
117 void updateRelayHvacAggregator();
118 int32_t channelFunction = 0;
119 uint32_t durationMs = 0;
120 uint32_t storedTurnOnDurationMs = 0;
121 uint32_t durationTimestamp = 0;
122 uint32_t overcurrentThreshold = 0;
124 uint32_t timerUpdateTimestamp = 0;
129 uint16_t minimumAllowedDurationMs = 0;
132 bool highIsOn =
true;
133 bool keepTurnOnDurationMs =
false;
134 bool lastStateOnTimerUpdate =
false;
135 bool turnOffWhenEmptyAggregator =
true;
137 int8_t stateOnInit = STATE_ON_INIT_OFF;
139 int16_t defaultRelatedMeterChannelNo = -1;
141 static int16_t relayStorageSaveDelay;