Solar Shade - real-time shadow tracking from LiDAR

I made this integration LawPaul/HA_Solar_Shade for tracking solar radiation for my sprinkler zones that use Smart Irrigation. It allows for more accurate tracking of the various zones using freely available LiDAR.

Here is a chart of the solar radiation it outputs across my 9 sprinkler zones throughout the day:

Most of the US is covered in LiDAR which the integration will automatically download and process. It also has provisions for manually importing LiDAR if you do not live in a covered zone.

Here are a few UI screenshots showing how it is setup and looks. You can draw a polygon or point on the map to create a zone:



It has different visualization modes to better investigate the LiDAR data. Not all areas have as detailed of coverage as my example.

I’m sure it could also be helpful for people estimating solar panel sun coverage or automating stuff like blinds!

The integration provides 2 sensor outputs per zone:
sun (%): how much sun coverage the zone has
radiation (W/m^2): average solar radiation for the zone

For anyone else wanting to link it with Smart Irrigation, you simply add the output sensor to a sensor group:

Let me know your thoughts and if you run into any issues!

Right now, you can install it as a custom repository in HACS. I have submitted it to be in HACS default.

2 Likes

Wow this is seriously awesome! How is the coverage of the rest of the world?

Thanks! I really appreciate your work on smart irrigation!

I used the API for USGS Lidar Explorer Map to automatically grab LiDAR for the US. I’m not sure of public sources for other countries but I’m sure many do provide data.

The integration supports manually adding LiDAR outside the US for now. So if you’re able to find a source for your area, you can download the data from there and the integration will use it. Or further work could be done to automatically download from other sources!

1 Like

Just found your awesome integration — thank you for building this!

It’s nighttime here so no data yet, but I’m super excited to test it tomorrow. I’m based in Slovenia and was happy to discover that manually importing our national LiDAR data (CLSS — Cyclic Laser Scanning of Slovenia) in LAZ format works perfectly. The server was quite hungry on CPU and RAM while processing, but it got through it.

I recently added evapotranspiration sensor data from our national weather service to my HA setup, so combining that with your per-zone sun exposure data should make for some really nice smart irrigation automation. Tomorrow I’ll be testing how the zones look for my blueberry bushes (shaded area) vs. the vegetable garden before the growing season kicks in.

Great work — looking forward to contributing feedback!

1 Like

Awesome to hear! Did the visualizations (2D and 3D) look correct? Does your area have LiDAR classification data? I did some tests on areas with/without classification data, but best to see real world usage!

Update after a few days of testing!

Hey @LawPaul — first of all, huge thanks for the inspiration. Your integration is what got me thinking about using LiDAR data for shade analysis in Home Assistant.

After some experimentation, I found that the Slovenian CLSS (Cyclic Laser Scanning) data didn’t quite work out of the box with Solar Shade — different coordinate system (EPSG:3794), different tile structure on the GURS server, and a few quirks with the LAZ format they use. So rather than trying to force a square peg into a round hole, I ended up building a companion integration specifically tailored for Slovenian LiDAR data.

Some background: I had already built a Slovenian Weather integration for HA that pulls data from our national weather service (ARSO), including agrometeo data like evapotranspiration, water balance, and precipitation forecasts, originally with smart irrigation in mind. When I discovered your Solar Shade integration, the pieces just clicked: combining real-time per-zone shade analysis with agrometeo data could make for a really smart outdoor automation system. So I built a new integration that bridges the two:

  • Automatic tile download from the GURS/e-Prostor LiDAR server (auto-discovers the correct block number)
  • Interactive Zone Editor — a sidebar panel with a satellite map (Leaflet) where you draw polygon zones directly on the map
  • ARSO weather bridge — connects shade data with solar radiation, cloud coverage, evapotranspiration and water balance from my weather integration
  • Smart irrigation — combines per-zone shade % with agrometeo forecast to estimate daily watering needs per zone (shaded blueberries need less water than a sunny vegetable garden)
  • PV estimation — roof shade + measured solar radiation (or cloud coverage as fallback)
  • Facade zones for blind automation — narrow zones along each wall to know exactly when sun hits each window, including overhangs already captured in the LiDAR model

The blueberry zone vs. vegetable garden comparison I mentioned in my previous post is now working beautifully — each has its own polygon with separate shade/sun sensors.

Still early days (alpha stage), but once it’s more polished with proper screenshots and docs, I’ll make repo public. Will definitely keep contributing feedback on Solar Shade in the meantime!

Again — this wouldn’t exist without your integration as the starting point. Thanks for sharing your work with the community!

Very cool! The tile downloading for your area and facade zones sound like things that would be great to make a PR for on my project!

I currently have a PyScript running my irrigation based off inputs from smart irrigation, wind, sunrise, soil intake rate, dormancy state (from soil temp over time). Going to see how it does this summer.

Really cool integration!

Unfortunately, I wasn’t able to get the LiDAR data to load correctly into the tool.

I spent a few hours trying to transform it, but I never managed to get it loaded properly. The data I’m using comes from the Swedish agency Lantmäteriet and is in the format SWEREF99 TM / RH2000 with geoid model SWEN17_RH2000.

I can see how useful this could be for driving automation, but unfortunately, I couldn’t get it to work for my location.