Automatic blinds / sunscreen control based on sun platform

I would be careful with using your phone as a compass, it can be quite unreliable

1 Like

Itā€™s the one uploaded 2 days ago Iā€™m trying out now. The previous one had a cap on azu_min and azu_max where the blinds would trigger, this version just draws out the actual cover height calculation without capping.

Edit: nevermind, it actually does cap it :slight_smile:

1 Like

Nice :slight_smile:

@basbrus is actually working on a HACS integration of this with a few more extra features

1 Like

I keep thinking iā€™m doing something wrong, because the covers are not reacting the way I think they shouldā€¦

Iā€™ve got a window at azimuth 245. Iā€™ve configured left at 90, right at 40. The window is facing W-SW.

According to this image, the bind should be opening around 20:20, and itā€™s now nearly 40 mins later and nothing has moved.

Could you help me out on what Iā€™m doing wrong?
Playing a bit more with suncalc.org, it would seem that fov_left = 40, and fov_right needs to be 90?

Would have to debut the automation to see whatā€™s going wrong, can you share the full trace?

The plot created by the python notebook also depends on the latitude/longitude, did you set that correctly? You could print the first timestamp solar elevation is > 0 deg and see if that matches the sunrise timestamp of your location.

(you could also use pvlib.solarposition.sun_rise_set_transit_spa())

1 Like

Well, inverting left and right made stuff work for me. So itā€™s really looking from the pov of the sun rays hitting the window.

Interestingā€¦ POV should be from the window looking outside.

Very nice blueprint! I donā€™t have any vertical blinds, unfortunately.

However it would be very much appreciated for my awning. Would be great to have this for winter/summer (low/high) sun position, with dynamic awning positions.

Are you working on that horizontal (with tilt) feature?

Iā€™m also very interested in having a solution for covers of roof windows.
Pleeeeease add this support :pray:

1 Like

Iā€™m looking for a tilt sunscreen as well. It will be helpful if there is an automation for these screens. Only max angle will be suitable for my use.

I think we can convert the calculated value for a vertical blind to a horizontal blind by converting the value with the angle of the awning.

Therefore we need to have two additional parameters: awning length and awning angle.
The window_height is than equal to the placement height of the awning to the wall.

@mbrammer Roof covers are a bit more complicated I guess. You will need to know the angle of the roof, the horizontal distance from the bottom of the cover in full closed position to the outer wall, probably the height from the floor to the top of the cover.
Than you also have to decide where the allowed non-shadow area, the former distance parameter, is considered; measured from the outer wall or from the window position

But maybe @langestefan can elaborate more on that

EDIT:
Calculation of the awning position can be done based on the Law of Sines.

We can determine all angles by following geometric rules.

A. The top corner in the triangle with the elevation degree is equal to the bottom corner of the triangle with the awn. (rule of opposite corners)
Equals = 180 - 90 - elev_deg

B. The top angle is 90 deg - the angle of the awn

C. The last unknown angle is 180 - step A - step B

We known the length of c = h_blind founded by the ā€˜old_algorithmā€™

( a / SinA ) = ( c / SinC )
So, a = ( c * SinA ) / SinC
Where a is the length of the awn, this could easily be converted to a percentage

1 Like

Here is the math I worked out for blinds that are perpendicular to the shaded area:

To support non-perpendicular blinds you need to extend this to oblique triangles.

1 Like

@swbouman and @ivarv

I do not own an awning/sunscreen myself. So I was wondering how the states report within HA?

Is fully extracted equal to 100%(open) or 0%(closed)?

Thatā€™s HA dependent. Eg. the Rademacher (german manufacturer) integration is reporting exactly the opposite, and the data needs to be reverted, before it getā€™s send to HA (very laymans terms). :slight_smile:

In HA itself 0 = closed and 100 = open. :wink:

EDIT: Donā€™t worry, I couldnā€™t have answered your post without prior checking on one of my blinds! :rofl: :rofl: This is something I just canā€™t remember after five minutesā€¦ :rofl: :rofl:

Impressive blueprint !
Do you think it could be easely transform for manage tilt of exterior venetian blind ?
Venetian blind is always 100% close but the tilt change for maximise the light without any sun to come inside during the dayā€¦ I guess d=0 and tilt remplace the h ?

Thanks for your help !

Hi. I think you are trying to follow the sun with the tilts? This is not really meant for that, but it is a very similar problem.

Yes itā€™s similar but i donā€™t find any blueprintā€¦
I made it works like that :

  • For simplification the tilts are only 2 positions (horizontal 0Ā° & 45Ā°) depending of the sun elevation.
  • Sun azimut trigger the automatisation when sun hit the window.
  • Interior temperature allow or not the sun to come inside (for winter)

Thank you for template, it was a great source of inspiration !

1 Like

Nice. You could also use a template to follow the sun, so the sun is always hitting the slats at 90 degrees to maximize the amount of light. But itā€™s not really necessary.

For everyone interested!

In the meantime I have build a small custom-integration based on the calculations with adding some more useful features. :smiley:

For now it supports:

  • Dedicated sensors that show the position in percentages
  • Vertical Covers
  • Horizontal Covers
  • Tilted Blinds
  • Inverse States (for the cover integrations that do not follow the guidelines)
  • Small and Easy integration specific Blueprint (auto-added)
  • Climate savings mode
9 Likes

Iā€™ve installed the Blueprint but I can never get the shades to close. The conditions are never met.
Azimuth: 163
Distance 4m
Height: 2.1
Min: 0
Default: 60%
Min Cover: 0%
FOV
90
90
90
90
Min Elev: 0
Min change: 1%
Timeout: 1 min

1 Like