Empowering a Million Households to Go Solar

Share

If you want to convince a million homes to install solar panels on their rooftops to power their homes, how would you do it? Informing the household, of their solar potential would be the first thing in my hitlist.

But first of all, why would anyone want to go solar. Well, it might help them save money on their electric bill. Research also shows that a solar installation increases the home value. And it goes without saying, it helps the environment.

Solar is a local phenomena

The average solar potential tends to be stable across a similar geography. There are solar potential estimates by ZIP codes provided by Google Solar Project. But in reality, solar potential is a local phenomena that has to be determined at the individual rooftop level. Remember solar power is derived primarily from the light that could be harvested, not much from the heat. That's why solar panels are called photovoltaic (photo = light) cells. A fast-growing tree beside your roof could potentially block that light source. More importantly, a neighboring skyscraper or a significantly taller building and even your roof's inclination and orientation would affect the optimum solar energy that you can harvest from your rooftop. That's why solar is truly a local phenomena.

Why LiDAR is :awesome:

To model this level of detail and to capture finer details from your mundane rooftop and neighboring trees and building, we need much more than building outlines and satellite imageries; we need something as awesome as LiDAR. The acronym for LiDAR is Li ght D etection A nd R anging and it is simply reflected laser pulses that are collected from an aircraft. What LiDAR provides is high resolution 3D point cloud of entire cities. In the video provided below, you can see a 3D rendition of LiDar point cloud around Russian Hill and Ghirardelli Square in San Francisco. As always, the best things in the world are often free. The Lidar tiles we used in the Proof of Concept were downloaded free of charge from the USGS site.

https://www.youtube.com/watch?v=8fceGLI6KX8

A lil something called as Skyview

Now, why are we collecting this LiDAR data? To calculate something known SkyView factor. Skyview is the percentage of unobstructed sky the solar panel sees at a location. Now the SkyView factor varies each hour of the day and each day of the year, because, the sun’s position does, and so does its shadow. LiDAR is one of the few data sources which can model this.

Modeling in Python

For our calculation, we are using an open-source Python library known as pvlib which can model the finer aspects of solar potential. The following lines of python code is all we needed to create a baseline model which provided us the solar potential at a location in Kilowatt Hours. The location component, should however, contain the altitude information derived from the LiDAR data. And we also improvised our model by incorporating Skyview factor, which was a key differentiator.

import pvlib

naive_times = pd.DatetimeIndex(start='2017', end='2018', freq='1h')

sandia_modules = pvlib.pvsystem.retrieve_sam('SandiaMod')

sapm_inverters = pvlib.pvsystem.retrieve_sam('cecinverter')

module = sandia_modules['Canadian_Solar_CS5P_220M___2009_']

inverter = sapm_inverters['ABB__MICRO_0_25_I_OUTD_US_208_208V__CEC_2014_']

system = {'module': module, 'inverter': inverter, 'surface_azimuth': 180}

def get_annual_energy(location):

    latitude, longitude, altitude = location

    timezone = get_timezone_for_location(location)

    times = naive_times.tz_localize(timezone)

    temp_air = get_temperature_df(location, times)

    wind_speed = get_wind_speeds_df(location, times)

    # The optimum surfact tilt is the angle of latitude

    system['surface_tilt'] = latitude

    solpos = pvlib.solarposition.get_solarposition(times, latitude, longitude)

    dni_extra = pvlib.irradiance.get_extra_radiation(times)

    airmass = pvlib.atmosphere.get_relative_airmass(solpos['apparent_zenith'])

    pressure = pvlib.atmosphere.alt2pres(altitude)

    am_abs = pvlib.atmosphere.get_absolute_airmass(airmass, pressure)

    tl = pvlib.clearsky.lookup_linke_turbidity(times, latitude, longitude)

    cs = pvlib.clearsky.ineichen(solpos['apparent_zenith'], am_abs, tl, dni_extra=dni_extra, altitude=altitude)

    aoi = pvlib.irradiance.aoi(system['surface_tilt'], system['surface_azimuth'], solpos['apparent_zenith'], solpos['azimuth'])

    total_irrad = pvlib.irradiance.get_total_irradiance(system['surface_tilt'], \
                                                        system['surface_azimuth'], \
                                                        solpos['apparent_zenith'], \
                                                        solpos['azimuth'], \
                                                        cs['dni'], \
                                                        cs['ghi'], \
                                                        cs['dhi'], \
                                                        dni_extra=dni_extra, \
                                                        model='haydavies')

    temps = pvlib.pvsystem.sapm_celltemp(total_irrad['poa_global'], wind_speed, temp_air)

    effective_irradiance = pvlib.pvsystem.sapm_effective_irradiance( total_irrad['poa_direct'], \
                                                                    total_irrad['poa_diffuse'], \
                                                                    am_abs, aoi, module)
    dc = pvlib.pvsystem.sapm(effective_irradiance, temps['temp_cell'], module)

    ac = pvlib.pvsystem.snlinverter(dc['v_mp'], dc['p_mp'], inverter)

    ac = ac/1000

    return ac

For the proof of concept we built for San Francisco we created a map-based tool to create a polygon on the rooftop. Once this is created, we are calculating that aerial extent of the polygon in square meters. And we also derive the height details at the polygon location from the LiDAR data corresponding to that location. All this information is used to calculate the annual rooftop solar potential that one can harvest in the given area in Kilowatt Hours which is the unit of electricity.

The Audacity of Hope

With the tools and data science techniques at our disposal, we are now highly optimistic on our ambitious endeavour to empower a million households to go Solar. Let us know what you think.


Originally published on LinkedIn.

Read more