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;
96 unsigned _supla_int_t getStoredTurnOnDurationMs();
97 void setStoredTurnOnDurationMs(uint32_t durationMs);
99 bool isStaircaseFunction(uint32_t functionToCheck = 0)
const;
100 bool isImpulseFunction(uint32_t functionToCheck = 0)
const;
101 void disableCountdownTimerFunction();
102 void enableCountdownTimerFunction();
103 bool isCountdownTimerFunctionEnabled()
const;
104 void setMinimumAllowedDurationMs(uint32_t durationMs);
105 void fillChannelConfig(
void *channelConfig,
107 uint8_t configType)
override;
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;
184 void saveConfig()
const;
185 void updateTimerValue();
186 void updateRelayHvacAggregator();
187 uint32_t durationMs = 0;
188 uint32_t storedTurnOnDurationMs = 0;
189 uint32_t durationTimestamp = 0;
190 uint16_t defaultStaircaseDurationMs = 10000;
191 uint16_t defaultImpulseDurationMs = 500;
193 uint32_t overcurrentThreshold = 0;
194 uint32_t overcurrentMaxAllowed = 0;
195 uint32_t overcurrentActiveTimestamp = 0;
196 uint32_t overcurrentCheckTimestamp = 0;
198 uint32_t timerUpdateTimestamp = 0;
203 uint16_t minimumAllowedDurationMs = 0;
206 bool highIsOn =
true;
207 bool keepTurnOnDurationMs =
false;
208 bool turnOffWhenEmptyAggregator =
true;
209 bool initDone =
false;
210 bool restartTimerOnToggle =
false;
212 int8_t stateOnInit = STATE_ON_INIT_OFF;
214 int16_t defaultRelatedMeterChannelNo = -1;
216 static int16_t relayStorageSaveDelay;