50class Relay :
public ChannelElement,
public ActionHandler {
54 _supla_int_t functions = (0xFF ^
55 SUPLA_BIT_FUNC_CONTROLLINGTHEROLLERSHUTTER));
56 explicit Relay(
int pin,
58 _supla_int_t functions = (0xFF ^
59 SUPLA_BIT_FUNC_CONTROLLINGTHEROLLERSHUTTER));
63 virtual Relay &setDefaultStateOn();
64 virtual Relay &setDefaultStateOff();
65 virtual Relay &setDefaultStateRestore();
66 virtual Relay &keepTurnOnDuration(
bool keep =
true);
68 virtual uint8_t pinOnValue();
69 virtual uint8_t pinOffValue();
70 virtual void turnOn(_supla_int_t duration = 0);
71 virtual void turnOff(_supla_int_t duration = 0);
73 virtual void toggle(_supla_int_t duration = 0);
77 void handleAction(
int event,
int action)
override;
89 bool local =
false)
override;
90 void fillChannelConfig(
void *channelConfig,
92 uint8_t configType)
override;
99 unsigned _supla_int_t getStoredTurnOnDurationMs();
100 void setStoredTurnOnDurationMs(uint32_t durationMs);
102 bool isStaircaseFunction(uint32_t functionToCheck = 0)
const;
103 bool isImpulseFunction(uint32_t functionToCheck = 0)
const;
104 void disableCountdownTimerFunction();
105 void enableCountdownTimerFunction();
106 bool isCountdownTimerFunctionEnabled()
const;
107 void setMinimumAllowedDurationMs(uint32_t durationMs);
109 static void setRelayStorageSaveDelay(
int delayMs);
111 bool isDefaultRelatedMeterChannelSet()
const;
112 uint32_t getCurrentValueFromMeter()
const;
113 void setDefaultRelatedMeterChannelNo(
int channelNo);
114 void setTurnOffWhenEmptyAggregator(
bool turnOff);
150 defaultStaircaseDurationMs = durationMs;
159 defaultImpulseDurationMs = durationMs;
162 bool setAndSaveFunction(uint32_t channelFunction)
override;
178 bool isFullyInitialized()
const;
180 void enableCyclicMode(uint32_t turnOnTimeMs, uint32_t turnOffTimeMs);
181 void disableCyclicMode();
182 bool isCyclicMode()
const;
190 void applyDuration(
int durationMs,
bool turnOn);
192 virtual void setNewChannelValue(
bool value);
194 void saveConfig()
const;
195 void updateTimerValue();
196 void updateRelayHvacAggregator();
197 uint32_t durationMs = 0;
198 uint32_t storedTurnOnDurationMs = 0;
199 uint32_t durationTimestamp = 0;
200 uint32_t turnOffDurationForCycle = 0;
201 uint16_t defaultStaircaseDurationMs = 10000;
202 uint16_t defaultImpulseDurationMs = 500;
204 uint32_t overcurrentThreshold = 0;
205 uint32_t overcurrentMaxAllowed = 0;
206 uint32_t overcurrentActiveTimestamp = 0;
207 uint32_t overcurrentCheckTimestamp = 0;
209 uint32_t timerUpdateTimestamp = 0;
210 uint32_t postponeCommTimestamp = 0;
215 uint16_t minimumAllowedDurationMs = 0;
217 int16_t defaultRelatedMeterChannelNo = -1;
219 bool highIsOn =
true;
220 bool keepTurnOnDurationMs =
false;
221 bool turnOffWhenEmptyAggregator =
true;
222 bool initDone =
false;
223 bool restartTimerOnToggle =
false;
224 bool skipInitialStateSetting =
false;
226 int8_t stateOnInit = STATE_ON_INIT_OFF;
228 static int16_t relayStorageSaveDelay;