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;
88 bool local =
false)
override;
95 unsigned _supla_int_t getStoredTurnOnDurationMs();
96 void setStoredTurnOnDurationMs(uint32_t durationMs);
98 bool isStaircaseFunction(uint32_t functionToCheck = 0)
const;
99 bool isImpulseFunction(uint32_t functionToCheck = 0)
const;
100 void disableCountdownTimerFunction();
101 void enableCountdownTimerFunction();
102 bool isCountdownTimerFunctionEnabled()
const;
103 void setMinimumAllowedDurationMs(uint32_t durationMs);
104 void fillChannelConfig(
void *channelConfig,
106 uint8_t configType)
override;
108 static void setRelayStorageSaveDelay(
int delayMs);
110 bool isDefaultRelatedMeterChannelSet()
const;
111 uint32_t getCurrentValueFromMeter()
const;
112 void setDefaultRelatedMeterChannelNo(
int channelNo);
113 void setTurnOffWhenEmptyAggregator(
bool turnOff);
149 defaultStaircaseDurationMs = durationMs;
158 defaultImpulseDurationMs = durationMs;
161 bool setAndSaveFunction(uint32_t channelFunction)
override;
169 void saveConfig()
const;
170 void updateTimerValue();
171 void updateRelayHvacAggregator();
172 uint32_t durationMs = 0;
173 uint32_t storedTurnOnDurationMs = 0;
174 uint32_t durationTimestamp = 0;
175 uint16_t defaultStaircaseDurationMs = 10000;
176 uint16_t defaultImpulseDurationMs = 500;
178 uint32_t overcurrentThreshold = 0;
179 uint32_t overcurrentMaxAllowed = 0;
180 uint32_t overcurrentActiveTimestamp = 0;
181 uint32_t overcurrentCheckTimestamp = 0;
183 uint32_t timerUpdateTimestamp = 0;
188 uint16_t minimumAllowedDurationMs = 0;
191 bool highIsOn =
true;
192 bool keepTurnOnDurationMs =
false;
193 bool lastStateOnTimerUpdate =
false;
194 bool turnOffWhenEmptyAggregator =
true;
195 bool initDone =
false;
197 int8_t stateOnInit = STATE_ON_INIT_OFF;
199 int16_t defaultRelatedMeterChannelNo = -1;
201 static int16_t relayStorageSaveDelay;