Need to turn lights on earlier if it is cloudy.


After implementing the turn lights on 20 minutes before sunset automation in, I was quite happy to see our evening lights come on and off automatically each night.  But we encountered a few cloudy days in the past week, and it troubles me that the house gets too dark much earlier, so… need to look for a better solution.

Question, how to detect when it is getting too dark in the house?

The obvious answer will be using some photoelectric sensor that can monitor when it is too dark inside the house.  There are probably some smart sensor available in the market, and there are also light or light bulb that has photoelectric sensor built in.  But for now, I just can’t justify the additional cost for them.

Let’s look at the problem from a different perspective. So the house tends to get darker earlier if it is a cloudy day or when the weather is bad.

💡Maybe I can build an automation based on the current weather?

And yes, there are lots of weather info and forecast available online.  One actually comes by default with,  This weather forecast is delivered by the Norwegian Meteorological Institute and it free. You can monitor a dozen or so weather related items, such as temperature, precipitation, windspeed, humidity, cloudiness, … etc.

There is one item specifically called yr_symbol, which indicate the current weather condition. Clear sky, Partly cloudy, Cloudy, Rain showers, Heavy rain,… and so on. Maybe we can use this to drive when to turn on the evening lights?

Ok, let’s go for it. 

Below is the configuration added to automations.yaml file.  The automation is triggered by a time relative to sunset, in this case it is set to 40 minutes before sunset.  Condition is when the yr.symbol is above 4.  Confused? here is the explanation, the yr.symbol is a numeric value that maps to a weather condition. It goes from 1 to 50, as the number increase, the weather condition gets worst.  a number 4 means that it is cloudy.  For your reference, I will provide the more extensive list at the end of this post.  Please note that I also added a second condition to check if lights are already on, in that case, there is no need to turn them on again.

- id: 'turn lights on earlier if it is cloudy'
  alias: Turn lights on earlier if it is cloudy
  - event: sunset
    offset: -00:40:00
    platform: sun
  - condition: numeric_state
    entity_id: sensor.yr_symbol
    above: 4
  - condition: state
    entity_id: group.evening_lights
    state: 'off'
  - service: homeassistant.turn_on
      - group.evening_lights  
  - service: notify.mypushbullet
      message: Turn light on earlier if it is cloudy.

For your reference:

1;Clear sky
3;Partly cloudy
5;Rain showers
6;Rain showers and thunder
7;Sleet showers
8;Snow showers
10;Heavy rain
11;Heavy rain and thunder
14;Snow and thunder
20;Sleet showers and thunder
21;Snow showers and thunder
22;Rain and thunder
23;Sleet and thunder
24;Light rain showers and thunder
25;Heavy rain showers and thunder
26;Lights sleet showers and thunder
27;Heavy sleet showers and thunder
28;Lights snow showers and thunder
29;Heavy snow showers and thunder
30;Light rain and thunder
31;Light sleet and thunder
32;Heavy sleet and thunder
33;Light snow and thunder
34;Heavy snow and thunder
40;Light rain showers
41;Heavy rain showers
42;Light sleet showers
43;Heavy sleet showers
44;Light snow showers
45;Heavy snow showers
46;Light rain
47;Light sleet
48;Heavy sleet
49;Light snow
50;Heavy snow