supla-device
Loading...
Searching...
No Matches
Supla::Control::RollerShutterInterface Class Reference
Inheritance diagram for Supla::Control::RollerShutterInterface:
Collaboration diagram for Supla::Control::RollerShutterInterface:

Classes

struct  ButtonListElement
 

Public Member Functions

 RollerShutterInterface (bool tiltFunctionsEnabled=false)
 Constructor.
 
virtual ~RollerShutterInterface ()
 Destructor.
 
 RollerShutterInterface (const RollerShutterInterface &)=delete
 
RollerShutterInterfaceoperator= (const RollerShutterInterface &)=delete
 
void addTiltFunctions ()
 Add tilt functions (facade blinds, vertical blinds) Changing of tilt functions will breake state storage.
 
bool isTiltFunctionsSupported () const
 Check if tilt functions are supported.
 
bool isTiltFunctionEnabled () const
 Check if tilt function is currently enabled.
 
bool isTiltConfigured () const
 Check if tilting is configured (time and control modes are set and isTiltFunctionEnabled is true)
 
bool isTopReached () const
 Check if top position (and tilt if applicable) is reached.
 
bool isBottomReached () const
 Check if bottom position (and tilt if applicable) is reached.
 
int32_t handleNewValueFromServer (TSD_SuplaChannelNewValue *newValue) override
 Handles "new value" request from server.
 
void handleAction (int event, int action) override
 
int handleCalcfgFromServer (TSD_DeviceCalCfgRequest *request) override
 Handles CALCFG requests from server.
 
Supla::ApplyConfigResult applyChannelConfig (TSD_ChannelConfig *result, bool local=false) override
 
void fillChannelConfig (void *channelConfig, int *size, uint8_t configType) override
 
void fillSuplaChannelNewValue (TSD_SuplaChannelNewValue *value) override
 Fills TSD_SuplaChannelNewValue based on current state.
 
virtual void close ()
 
virtual void open ()
 
virtual void stop ()
 
virtual void moveUp ()
 
virtual void moveDown ()
 
virtual void setTargetPosition (int newPosition, int newTilt=UNKNOWN_POSITION)
 
void setCurrentPosition (int newPosition, int newTilt=UNKNOWN_POSITION)
 Set current roller shutter/facade blind position (and tilt) (0 = open; 100 = closed)
 
void setNotCalibrated ()
 
void setCalibrationOngoing (int calibrationTime=1)
 
void setCalibrationFinished ()
 
int getCurrentPosition () const
 Get current roller shutter position.
 
int getCurrentTilt () const
 Get current tilt position.
 
int getTargetPosition () const
 Get target roller shutter position.
 
int getTargetTilt () const
 Get target tilt position.
 
int getCurrentDirection () const
 Get current roller shutter movement direction.
 
void configComfortUpValue (uint8_t position)
 
void configComfortDownValue (uint8_t position)
 
void configComfortUpTiltValue (uint8_t position)
 
void configComfortDownTiltValue (uint8_t position)
 
void onInit () override
 Third method called on element in SuplaDevice.begin()
 
void onLoadConfig (SuplaDeviceClass *sdc) override
 First method called on element in SuplaDevice.begin().
 
void saveConfig ()
 
void onLoadState () override
 Second method called on element in SuplaDevice.begin().
 
void onSaveState () override
 Method called periodically during SuplaDevice iteration.
 
void purgeConfig () override
 Removes all configration data related to the element from Storage::Config.
 
void iterateAlways () override
 Method called on each SuplaDevice iteration.
 
uint32_t getClosingTimeMs () const
 
uint32_t getOpeningTimeMs () const
 
uint32_t getTiltingTimeMs () const
 
uint32_t getTiltControlType () const
 
void attach (Supla::Control::Button *up, Supla::Control::Button *down)
 
void attach (Supla::Control::Button *button, bool upButton, bool asInternal)
 
virtual void triggerCalibration ()
 
void setCalibrationNeeded ()
 
bool isCalibrationRequested () const
 
bool isCalibrated () const
 
void setRsConfigMotorUpsideDownEnabled (bool enable)
 Enable/disable motor upside down configuration option.
 
void setRsConfigButtonsUpsideDownEnabled (bool enable)
 Enable/disable buttons upside down configuration option.
 
void setRsConfigTimeMarginEnabled (bool enable)
 Enable/disable time margin configuration option.
 
void setRsConfigMotorUpsideDownValue (uint8_t value)
 Set motor upside down value.
 
void setRsConfigButtonsUpsideDownValue (uint8_t value)
 Set buttons upside down value.
 
void setRsConfigTimeMarginValue (int8_t value)
 Set time margin value.
 
uint8_t getMotorUpsideDown () const
 
uint8_t getButtonsUpsideDown () const
 
int8_t getTimeMargin () const
 
virtual bool inMove ()
 
virtual bool isCalibrationInProgress () const
 
void startCalibration (uint32_t timeMs)
 
void stopCalibration ()
 
bool isCalibrationFailed () const
 
bool isCalibrationLost () const
 
bool isMotorProblem () const
 
bool isFunctionSupported (int32_t channelFunction) const
 
bool isAutoCalibrationSupported () const
 
void setOpenCloseTime (uint32_t newClosingTimeMs, uint32_t newOpeningTimeMs)
 
void setTiltingTime (uint32_t newTiltingTimeMs, bool local=true)
 
void setTiltControlType (uint8_t newTiltControlType, bool local=true)
 
void setCalibrationFailed (bool value)
 
void setCalibrationLost (bool value)
 
void setMotorProblem (bool value)
 
- Public Member Functions inherited from Supla::ChannelElement
 ChannelElement (int channelNumber=-1)
 
ChannelgetChannel () override
 
const ChannelgetChannel () const override
 Returns pointer to main channel.
 
- Public Member Functions inherited from Supla::ElementWithChannelActions
void addAction (uint16_t action, ActionHandler &client, uint16_t event, bool alwaysEnabled=false) override
 
void addAction (uint16_t action, ActionHandler *client, uint16_t event, bool alwaysEnabled=false) override
 
virtual void addAction (uint16_t action, ActionHandler &client, Supla::Condition *condition, bool alwaysEnabled=false)
 
virtual void addAction (uint16_t action, ActionHandler *client, Supla::Condition *condition, bool alwaysEnabled=false)
 
bool isEventAlreadyUsed (uint16_t event, bool ignoreAlwaysEnabled) override
 
void onRegistered (Supla::Protocol::SuplaSrpc *suplaSrpc) override
 Method called each time when device successfully registers to Supla server.
 
bool iterateConnected () override
 Method called on each SuplaDevice iteration when device is connected and registered to Supla server or other protocol.
 
void handleChannelConfigFinished () override
 Handles "channel config finished" message from server.
 
uint8_t handleChannelConfig (TSD_ChannelConfig *result, bool local) override
 Handles "set channel config" request from server.
 
void handleSetChannelConfigResult (TSDS_SetChannelConfigResult *result) override
 Handles "set channel config" reply from server.
 
void clearChannelConfigChangedFlag ()
 
void runAction (uint16_t event) const override
 
virtual bool setAndSaveFunction (uint32_t channelFunction)
 
virtual bool loadFunctionFromConfig ()
 
virtual bool saveConfigChangeFlag () const
 
virtual bool loadConfigChangeFlag ()
 
bool isAnyUpdatePending () override
 Returns true if any update is pending.
 
void triggerSetChannelConfig (int configType=SUPLA_CONFIG_TYPE_DEFAULT)
 
- Public Member Functions inherited from Supla::Element
Elementnext ()
 Returns next Element from the list.
 
virtual bool iterateConnected (void *ptr)
 deprecated
 
virtual void onTimer ()
 Method called on timer interupt.
 
virtual void onFastTimer ()
 Method called on fast timer interupt.
 
virtual void onSoftReset ()
 Method called when device soft restart is triggered.
 
virtual void onDeviceConfigChange (uint64_t fieldBit)
 Method called when device config is changed.
 
virtual void handleGetChannelState (TDSC_ChannelState *channelState)
 Handles "get channel state (i)" request from server.
 
virtual uint8_t handleWeeklySchedule (TSD_ChannelConfig *newWeeklySchedule, bool altSchedule=false, bool local=false)
 Handles "set channel config" with "weekly schedule" type request from server.
 
int getChannelNumber () const
 Returns channel number.
 
int getSecondaryChannelNumber () const
 Returns secondary channel number.
 
virtual bool isOwnerOfSubDeviceId (int subDeviceId) const
 Returns true if element is owner of subDeviceId.
 
virtual const ChannelgetSecondaryChannel () const
 Returns pointer to secondary channel.
 
virtual ChannelgetSecondaryChannel ()
 
virtual void generateKey (char *output, const char *key) const
 Generates key used for Config.
 
ElementdisableChannelState ()
 Disables channel state (i) function.
 
bool isChannelStateEnabled () const
 Returns true if channel state (i) function is enabled.
 
void setInitialCaption (const char *caption, bool secondaryChannel=false)
 Sets initial caption.
 
bool setDefaultFunction (uint32_t defaultFunction)
 Sets default channel's function.
 
bool setFunction (uint32_t newFunction)
 Sets channel's function.
 
virtual void onFunctionChange (uint32_t currentFunction, uint32_t newFunction)
 Called when channel function changes.
 
- Public Member Functions inherited from Supla::LocalAction
virtual ActionHandlerClientgetHandlerForFirstClient (uint16_t event)
 
virtual ActionHandlerClientgetHandlerForClient (ActionHandler *client, uint16_t event)
 
virtual void disableOtherClients (const ActionHandler &client, uint16_t event)
 
virtual void enableOtherClients (const ActionHandler &client, uint16_t event)
 
virtual void disableOtherClients (const ActionHandler *client, uint16_t event)
 
virtual void enableOtherClients (const ActionHandler *client, uint16_t event)
 
virtual void disableAction (int32_t action, ActionHandler *client, int32_t event)
 
virtual void enableAction (int32_t action, ActionHandler *client, int32_t event)
 
virtual bool disableActionsInConfigMode ()
 
- Public Member Functions inherited from Supla::ActionHandler
virtual void activateAction (int action)
 
virtual bool deleteClient ()
 
virtual ActionHandlergetRealClient ()
 

Static Public Member Functions

static void setRsStorageSaveDelay (int delayMs)
 
- Static Public Member Functions inherited from Supla::Element
static Elementbegin ()
 Returns first Element (based on creation order)
 
static Elementlast ()
 Returns last Element (based on creation order)
 
static ElementgetElementByChannelNumber (int channelNumber)
 Returns Element by channel number.
 
static ElementgetOwnerOfSubDeviceId (int subDeviceId)
 Returns Element which owns given subDeviceId.
 
static bool IsAnyUpdatePending ()
 Checks if any element has pending update for remote server.
 
static void NotifyElementsAboutConfigChange (uint64_t fieldBit)
 Notifies all elements about device config change.
 
static bool IsInvalidPtrSet ()
 When "invalid pointer" is set, previously obtained Element pointer may be invalid.
 
static void ClearInvalidPtr ()
 Clears "invalid pointer" flag.
 
- Static Public Member Functions inherited from Supla::LocalAction
static void DeleteActionsHandledBy (const ActionHandler *client)
 
static void DeleteActionsTriggeredBy (const LocalAction *action)
 
static void NullifyActionsHandledBy (const ActionHandler *client)
 
static ActionHandlerClientgetClientListPtr ()
 

Protected Member Functions

void setupButtonActions (Supla::Control::Button *button, bool upButton, bool asInternal)
 Configure additional buttons for roller shutter.
 
bool lastDirectionWasOpen () const
 
bool lastDirectionWasClose () const
 
bool isTimeSettingAvailable () const
 
bool getCalibrate () const
 
void setCalibrate (bool value)
 
void printConfig () const
 
uint32_t getTimeMarginValue (uint32_t fullTime) const
 
- Protected Member Functions inherited from Supla::ElementWithChannelActions
bool iterateConfigExchange ()
 
int getNextConfigType () const
 Returns the next config type to be sent.
 

Protected Attributes

uint8_t flags = 0
 
uint8_t comfortDownValue = 20
 
uint8_t comfortUpValue = 80
 
uint8_t comfortUpTiltValue = 0
 
uint8_t comfortDownTiltValue = 100
 
Directions currentDirection = Directions::STOP_DIR
 
Directions lastDirection = Directions::STOP_DIR
 
int16_t currentPosition
 
int16_t currentTilt
 
int8_t targetPosition = STOP_POSITION
 
int8_t targetTilt = UNKNOWN_POSITION
 
int16_t lastPositionBeforeMovement = UNKNOWN_POSITION
 
int16_t lastTiltBeforeMovement = UNKNOWN_POSITION
 
bool newTargetPositionAvailable = false
 
RollerShutterConfig rsConfig
 
TiltConfig tiltConfig
 
ButtonListElementbuttonList = nullptr
 
uint32_t closingTimeMs = 0
 
uint32_t openingTimeMs = 0
 
uint32_t calibrationTime = 0
 
uint32_t lastUpdateTime = 0
 
- Protected Attributes inherited from Supla::ChannelElement
Channel channel
 
- Protected Attributes inherited from Supla::ElementWithChannelActions
Supla::ChannelConfigState channelConfigState
 
uint8_t setChannelConfigAttempts = 0
 
ConfigTypesBitmap usedConfigTypes
 
ConfigTypesBitmap receivedConfigTypes
 
- Protected Attributes inherited from Supla::Element
ElementnextPtr = nullptr
 

Static Protected Attributes

static int16_t rsStorageSaveDelay = 5000
 
- Static Protected Attributes inherited from Supla::Element
static ElementfirstPtr = nullptr
 
static bool invalidatePtr = false
 

Constructor & Destructor Documentation

◆ RollerShutterInterface()

RollerShutterInterface::RollerShutterInterface ( bool tiltFunctionsEnabled = false)
explicit

Constructor.

Changing of tilt functions will breake state storage. So make sure that those functions are enabled before the first device startup. You can enable them in existing devices as well, but make sure that you don't have anything important in state storage (i.e. Electricity Meter data).

Parameters
tiltFunctionsEnabledtrue if tilt functions should be added

Member Function Documentation

◆ addTiltFunctions()

void RollerShutterInterface::addTiltFunctions ( )

Add tilt functions (facade blinds, vertical blinds) Changing of tilt functions will breake state storage.

So make sure that those functions are enabled before the first device startup. You can enable them in existing devices as well, but make sure that you don't have anything important in state storage (i.e. Electricity Meter data).

◆ applyChannelConfig()

Supla::ApplyConfigResult RollerShutterInterface::applyChannelConfig ( TSD_ChannelConfig * result,
bool local = false )
overridevirtual

Reimplemented from Supla::ElementWithChannelActions.

◆ fillChannelConfig()

void RollerShutterInterface::fillChannelConfig ( void * channelConfig,
int * size,
uint8_t configType )
overridevirtual

Reimplemented from Supla::ElementWithChannelActions.

◆ fillSuplaChannelNewValue()

void RollerShutterInterface::fillSuplaChannelNewValue ( TSD_SuplaChannelNewValue * value)
overridevirtual

Fills TSD_SuplaChannelNewValue based on current state.

Parameters
valuepointer to TSD_SuplaChannelNewValue which should be filled

Reimplemented from Supla::Element.

◆ getCurrentDirection()

int RollerShutterInterface::getCurrentDirection ( ) const

Get current roller shutter movement direction.

Returns
int value of enum Supla::Control::Directions

◆ getCurrentPosition()

int RollerShutterInterface::getCurrentPosition ( ) const

Get current roller shutter position.

Returns
0-100 (0 = open; 100 = closed); -1 if unknown

◆ getCurrentTilt()

int RollerShutterInterface::getCurrentTilt ( ) const

Get current tilt position.

Returns
0-100 (0 = final position after move up; 100 = final position after move down); -1 if unknown or N/A

◆ getTargetPosition()

int RollerShutterInterface::getTargetPosition ( ) const

Get target roller shutter position.

Returns
0-100 (0 = open; 100 = closed); -1 if unknown, -2 if stop, -3 if move up, -4 if move down

◆ getTargetTilt()

int RollerShutterInterface::getTargetTilt ( ) const

Get target tilt position.

Returns
0-100 (0 = final position after move up; 100 = final position after move down); -1 if unknown or N/A

◆ handleAction()

void RollerShutterInterface::handleAction ( int event,
int action )
overridevirtual

Implements Supla::ActionHandler.

◆ handleCalcfgFromServer()

int RollerShutterInterface::handleCalcfgFromServer ( TSD_DeviceCalCfgRequest * request)
overridevirtual

Handles CALCFG requests from server.

Parameters
request
Returns
SUPLA_CALCFG_RESULT_* (see proto.h)

Reimplemented from Supla::Element.

◆ handleNewValueFromServer()

int32_t RollerShutterInterface::handleNewValueFromServer ( TSD_SuplaChannelNewValue * newValue)
overridevirtual

Handles "new value" request from server.

Parameters
newValuepointer to TSD_SuplaChannelNewValue
Returns
-1 - don't send reply to server 0 - success==false 1 - success==true

Reimplemented from Supla::Element.

◆ isBottomReached()

bool RollerShutterInterface::isBottomReached ( ) const

Check if bottom position (and tilt if applicable) is reached.

Returns
true if bottom position is reached

◆ isTiltConfigured()

bool RollerShutterInterface::isTiltConfigured ( ) const

Check if tilting is configured (time and control modes are set and isTiltFunctionEnabled is true)

Returns
true if tilting is configured

◆ isTiltFunctionEnabled()

bool RollerShutterInterface::isTiltFunctionEnabled ( ) const

Check if tilt function is currently enabled.

Returns
true if tilt function is enabled

◆ isTiltFunctionsSupported()

bool RollerShutterInterface::isTiltFunctionsSupported ( ) const

Check if tilt functions are supported.

Returns
true if tilt functions are supported

◆ isTopReached()

bool RollerShutterInterface::isTopReached ( ) const

Check if top position (and tilt if applicable) is reached.

Returns
true if top position is reached

◆ iterateAlways()

void RollerShutterInterface::iterateAlways ( )
overridevirtual

Method called on each SuplaDevice iteration.

It should provide all actions that have to be executed periodically regardless of network state.

Reimplemented from Supla::Element.

◆ onInit()

void RollerShutterInterface::onInit ( )
overridevirtual

Third method called on element in SuplaDevice.begin()

Method called during SuplaDevice initialization. I.e. load initial state, initialize pins etc.

Reimplemented from Supla::Element.

Reimplemented in Supla::Control::TrippleButtonRollerShutter.

◆ onLoadConfig()

void RollerShutterInterface::onLoadConfig ( SuplaDeviceClass * sdc)
overridevirtual

First method called on element in SuplaDevice.begin().

Called only if Config Storage class is configured. Element should read its configration in this method.

Parameters
sdc

Reimplemented from Supla::Element.

◆ onLoadState()

void RollerShutterInterface::onLoadState ( )
overridevirtual

Second method called on element in SuplaDevice.begin().

Method called during state Storage initialization (i.e. read from EEPROM, FRAM). Called only if Storage class is configured.

Reimplemented from Supla::Element.

◆ onSaveState()

void RollerShutterInterface::onSaveState ( )
overridevirtual

Method called periodically during SuplaDevice iteration.

It should provide state saving for this elemnet to Storage

Reimplemented from Supla::Element.

◆ purgeConfig()

void RollerShutterInterface::purgeConfig ( )
overridevirtual

Removes all configration data related to the element from Storage::Config.

Reimplemented from Supla::ElementWithChannelActions.

◆ setCurrentPosition()

void RollerShutterInterface::setCurrentPosition ( int newPosition,
int newTilt = UNKNOWN_POSITION )

Set current roller shutter/facade blind position (and tilt) (0 = open; 100 = closed)

Parameters
newPosition
newTilt

◆ setRsConfigButtonsUpsideDownEnabled()

void RollerShutterInterface::setRsConfigButtonsUpsideDownEnabled ( bool enable)

Enable/disable buttons upside down configuration option.

If enabled, then buttons upside down can be set in configuration. If disabled, then buttons upside down can not be set in configuration.

Parameters
enable

◆ setRsConfigButtonsUpsideDownValue()

void RollerShutterInterface::setRsConfigButtonsUpsideDownValue ( uint8_t value)

Set buttons upside down value.

Works only if buttons upside down configuration option is enabled.

Parameters
value0 - not set/not used, 1 - false, 2 - true

◆ setRsConfigMotorUpsideDownEnabled()

void RollerShutterInterface::setRsConfigMotorUpsideDownEnabled ( bool enable)

Enable/disable motor upside down configuration option.

If enabled, then motor upside down can be set in configuration. If disabled, then motor upside down can not be set in configuration.

Parameters
enable

◆ setRsConfigMotorUpsideDownValue()

void RollerShutterInterface::setRsConfigMotorUpsideDownValue ( uint8_t value)

Set motor upside down value.

Works only if motor upside down configuration option is enabled.

Parameters
value0 - not set/not used, 1 - false, 2 - true

◆ setRsConfigTimeMarginEnabled()

void RollerShutterInterface::setRsConfigTimeMarginEnabled ( bool enable)

Enable/disable time margin configuration option.

If enabled, then time margin can be set in configuration. If disabled, then time margin can not be set in configuration.

Parameters
enable

◆ setRsConfigTimeMarginValue()

void RollerShutterInterface::setRsConfigTimeMarginValue ( int8_t value)

Set time margin value.

Works only if time margin configuration option is enabled.

Parameters
value-1 (use device specific default), 0 (not set/not used), 1 (no margin), > 1 (51% of opening/closing time added on extreme positions)

◆ setupButtonActions()

void RollerShutterInterface::setupButtonActions ( Supla::Control::Button * button,
bool upButton,
bool asInternal )
protected

Configure additional buttons for roller shutter.

Parameters
buttonButton
upButtontrue if button is up button, false if down
asInternaltrue if buttons are internal (they will be inverted by upsideDown config)

Member Data Documentation

◆ currentPosition

int16_t Supla::Control::RollerShutterInterface::currentPosition
protected
Initial value:
=
UNKNOWN_POSITION

◆ currentTilt

int16_t Supla::Control::RollerShutterInterface::currentTilt
protected
Initial value:
=
UNKNOWN_POSITION

The documentation for this class was generated from the following files: