48class Relay :
public ChannelElement,
public ActionHandler {
52 _supla_int_t functions = (0xFF ^
53 SUPLA_BIT_FUNC_CONTROLLINGTHEROLLERSHUTTER));
54 explicit Relay(
int pin,
56 _supla_int_t functions = (0xFF ^
57 SUPLA_BIT_FUNC_CONTROLLINGTHEROLLERSHUTTER));
61 virtual Relay &setDefaultStateOn();
62 virtual Relay &setDefaultStateOff();
63 virtual Relay &setDefaultStateRestore();
64 virtual Relay &keepTurnOnDuration(
bool keep =
true);
66 virtual uint8_t pinOnValue();
67 virtual uint8_t pinOffValue();
68 virtual void turnOn(_supla_int_t duration = 0);
69 virtual void turnOff(_supla_int_t duration = 0);
71 virtual void toggle(_supla_int_t duration = 0);
75 void handleAction(
int event,
int action)
override;
86 bool local =
false)
override;
93 unsigned _supla_int_t getStoredTurnOnDurationMs();
95 bool isStaircaseFunction()
const;
96 bool isImpulseFunction()
const;
97 void disableCountdownTimerFunction();
98 void enableCountdownTimerFunction();
99 bool isCountdownTimerFunctionEnabled()
const;
100 void setMinimumAllowedDurationMs(uint32_t durationMs);
101 void fillChannelConfig(
void *channelConfig,
103 uint8_t configType)
override;
105 static void setRelayStorageSaveDelay(
int delayMs);
107 bool isDefaultRelatedMeterChannelSet()
const;
108 uint32_t getCurrentValueFromMeter()
const;
109 void setDefaultRelatedMeterChannelNo(
int channelNo);
110 void setTurnOffWhenEmptyAggregator(
bool turnOff);
146 void saveConfig()
const;
147 void setChannelFunction(_supla_int_t newFunction);
148 void updateTimerValue();
149 void updateRelayHvacAggregator();
150 int32_t channelFunction = 0;
151 uint32_t durationMs = 0;
152 uint32_t storedTurnOnDurationMs = 0;
153 uint32_t durationTimestamp = 0;
155 uint32_t overcurrentThreshold = 0;
156 uint32_t overcurrentMaxAllowed = 0;
157 uint32_t overcurrentActiveTimestamp = 0;
158 uint32_t overcurrentCheckTimestamp = 0;
160 uint32_t timerUpdateTimestamp = 0;
165 uint16_t minimumAllowedDurationMs = 0;
168 bool highIsOn =
true;
169 bool keepTurnOnDurationMs =
false;
170 bool lastStateOnTimerUpdate =
false;
171 bool turnOffWhenEmptyAggregator =
true;
173 int8_t stateOnInit = STATE_ON_INIT_OFF;
175 int16_t defaultRelatedMeterChannelNo = -1;
177 static int16_t relayStorageSaveDelay;