Smaller steps for shutter motor / decimals as percentages

tl;dr: Shutter position can only be specified in integers. Opening the shutter by only 1% lets the full sunlight through. Roller shutter can therefore not be tilted.

Hello Home Assistant community

I am using Home Assistant for the first time and hope that someone can help me with this problem. Unfortunately, I have not yet been able to find any relevant threads/guides on this.

My girlfriend and I want to be woken up by the sunlight. As we already have automated shutters in the flat, I have fitted the shutter in the bedroom with a Sonoff Dual R3. For the time being, I controlled it via the associated eWeLink app, which works reasonably well.

However, I wanted to seize the opportunity to set up a proper setting. I had a Raspberry PI lying around from other projects and booted the Home Assistant OS onto it.

I was able to set up the Dual R3 using the LAN function and the “Sonoff LAN” package in HACS. This basically works flawlessly.

As in the eWeLink app, I can raise and lower the shutters up to a certain percentage. However, I can’t tilt the shutters properly because 1% already opens the shutters so far that practically full sunlight comes in. I would like to open it slowly. However, it should be possible to specify decimal values for this. If the roller shutter were only half as long, it would probably work, as an opening of 1% would then tilt the roller shutter.

If I enter something like “position: 0.5” or “position: 0.2” in the YAML editor, it is simply rounded to 0 and the motor does nothing.

Is it possible, and if so, how do I make it so that decimal values can be entered or somehow the minimum and maximum value can be changed (e.g. to 1000% maximum instead of 100%). Or is this a limitation of the manufacturer?

Thank you very much for your answers.

Edit: The shutters I have are apparently called ‘venetian blinds’. This might be relevant to understand the issue.

Edit 2: One possible solution could be to run the motor for just a few hundred milliseconds? Unfortunately, I have no idea whether and how this would be possible.

I do not own the device you mention. The position range or accuracy cannot be changed. But you also mention tilt. I own a duo curtain that uses the titlt setting to change micro positions on the blind. It is possible that the integration builder did something similar (assuming the device supports it). If not, there is not much you can do as far as I know.

Thanks for your answer. Unfortunately, I couldn’t find anything about tilt settings on the DUAL R3 device (as far as I understand, the tilt function that is generally mentioned only works for some covers/shutters/devices that have inputs specifically for tilt?).

I have now found a simple and actually obvious solution. Although it doesn’t allow me to work out exact positions, it’s enough for my needs.

The motor can be started with a sequence and stopped again directly after a short delay. With a delay of around 300ms to 400ms, the roller shutter can be tilted by approx. 50%. To tilt the roller shutter slowly, the sequence can be extended.

A delay of at least 200ms is required for the roller shutter to move at all when the motor is started initially. After that, small steps with delays of 10ms to 50ms (hardly makes a difference) can be used until the shutter is fully tilted. The delay times probably depend on the motor and the weight of the roller shutter.

To slowly tilt the roller shutter for 15 minutes and then raise it completely, my script looks like this:

sequence:
  - device_id: 7*****
    domain: cover
    entity_id: 8*****
    type: open
  - delay:
      hours: 0
      minutes: 0
      seconds: 0
      milliseconds: 200
  - device_id: 7*****
    domain: cover
    entity_id: 8*****
    type: stop
  - delay:
      hours: 0
      minutes: 2
      seconds: 30
      milliseconds: 0
  - device_id: 7*****
    domain: cover
    entity_id: 8*****
    type: open
  - delay:
      hours: 0
      minutes: 0
      seconds: 0
      milliseconds: 10
  - device_id: 7*****
    domain: cover
    entity_id: 8*****
    type: stop
  - delay:
      hours: 0
      minutes: 2
      seconds: 30
      milliseconds: 0
  - device_id: 7*****
    domain: cover
    entity_id: 8*****
    type: open
  - delay:
      hours: 0
      minutes: 0
      seconds: 0
      milliseconds: 10
  - device_id: 7*****
    domain: cover
    entity_id: 8*****
    type: stop
  - delay:
      hours: 0
      minutes: 2
      seconds: 30
      milliseconds: 0
  - device_id: 7*****
    domain: cover
    entity_id: 8*****
    type: open
  - delay:
      hours: 0
      minutes: 0
      seconds: 0
      milliseconds: 10
  - device_id: 7*****
    domain: cover
    entity_id: 8*****
    type: stop
  - delay:
      hours: 0
      minutes: 2
      seconds: 30
      milliseconds: 0
  - device_id: 7*****
    domain: cover
    entity_id: 8*****
    type: open
  - delay:
      hours: 0
      minutes: 0
      seconds: 0
      milliseconds: 10
  - device_id: 7*****
    domain: cover
    entity_id: 8*****
    type: stop
  - delay:
      hours: 0
      minutes: 2
      seconds: 30
      milliseconds: 0
  - device_id: 7*****
    domain: cover
    entity_id: 8*****
    type: open
  - delay:
      hours: 0
      minutes: 0
      seconds: 0
      milliseconds: 10
  - device_id: 7*****
    domain: cover
    entity_id: 8*****
    type: stop
  - delay:
      hours: 0
      minutes: 2
      seconds: 30
      milliseconds: 0
  - device_id: 7*****
    domain: cover
    entity_id: 8*****
    type: open
mode: single