Shelly Wiki

Device settings

Cover settings

End-position calibration, obstruction protection that stops or reverses on resistance, and slat angle for venetian blinds - what's specific to roller shutter and blind control.

Cover control (the Cover component) shares the basic approach with Common settings, but has its own values and its own fields for what's specific to a motor moving between two end positions: initial_state here is open, closed or stopped instead of on/off, and in_mode can be single, dual or detached depending on whether you have one or two physical buttons/switches connected.

Calibration

Before a cover or blind can report a position as a percentage, it has to be calibrated - the device runs up and down once to learn how long a full movement takes. That's done through a dedicated calibration function in the web interface or app (Cover.Calibrate in the RPC interface), not as an ongoing setting.

Two limits control how long the device waits to find the end position before giving up:

  • maxtime_open - maximum time (0.1-300 seconds) to run fully open
  • maxtime_close - maximum time (0.1-300 seconds) to run fully closed

If calibration fails with a timeout error, maxtime_open/maxtime_close are set too low for your cover - raise them and try again.

The motor's idle state is decided by motor.idle_power_thr (0-50 W) and motor.idle_confirm_period (0.25-2 seconds): together they decide when the device interprets the motor as stopped rather than still moving.

Obstruction protection

obstruction_detection stops or reverses movement if something is in the way:

  • obstruction_detection.enable - on/off
  • obstruction_detection.direction - on opening, closing, or both
  • obstruction_detection.action - stop or reverse when an obstruction is detected
  • obstruction_detection.power_thr - the power threshold counted as an obstruction
  • obstruction_detection.holdoff - how long after starting the obstruction protection is ignored, so it doesn't trigger on the motor's startup current

During calibration itself, obstruction protection is always disabled, regardless of what obstruction_detection.enable is set to.

There's also safety_switch - a separate safety input, with its own settings for direction (direction) and what should happen (action: stop, reverse or pause) when it trips, plus allowed_move for whether the device is allowed to move at all after a trip.

Slat (tilt) control

Blinds with rotating slats have a dedicated sub-system for that:

  • slat.enable - turns on slat control
  • slat.open_time / slat.close_time - time (0.5-30 seconds) to fully rotate the slats
  • slat.step - how large a step (1-100%) each rotate command makes
  • slat.retain_pos - whether the slat angle is kept on up/down commands
  • slat.precise_ctl - more precise but slower control

Other

  • swap_inputs - swaps which physical button drives up vs. down, without rewiring
  • invert_directions - flips which direction counts as up vs. down
  • maintenance_mode - temporarily disables normal control, for example during motor service
  • power_limit, voltage_limit, undervoltage_limit, current_limit - the same kind of protection as for relays, see Common settings
Report an error on this page

Briefly describe what looks wrong — we read every report.