Great will have a look!
I am trying to understand the temperature settings. Where do input_number.irrigation_high_temp_1
(High temp yesterday) get updated from?
Thanks
Great will have a look!
I am trying to understand the temperature settings. Where do input_number.irrigation_high_temp_1
(High temp yesterday) get updated from?
Thanks
Have a look in garden_weather_temperature.yaml
Every night at one minute past midnight it cycles the previous four days high temp.
Is that what you mean?
Yes, found it… Using my own rain and temperature now.
Hi all after a few weeks i have managed to get this up with the displays showing correctly etc, took me a while but i decided to run this on a fresh install of home assistant, all plug - ins, resources are loaded as stated, using the Sonoff 4ch pro and ESPHome naming my switch’s the same as Klogg’ switch’s.
The issue i have is in the cycles which show unknown, i can select the 1st switch but it wont let me change the zone name, and in the 2, 3 and 4 pop up box it wont let me input anything ? not sure whats going on there.
when i run the cycle in test mode or not, my zone / box 1 activates fine triggering my valve but because i cannot enter anything into the other box’s it does nothing, or should i say its activating a empty switch, anyone got any ideas to get this finally up and running.
All up and running finally.
zone 1 i can select/ input switch name but not zone name.
zone2 and 3 and 4 are the same i can’t input any switch’s.
@klogg: great work!
I’ll use your 2nd version asap, meanwhile I have a trouble with 1st version. When a cycle ends and I have selected"Alternate" or “Daily” as Cycle_watering_days, it never update the “Next scheduled run time”. The script “update_next_runtime” is never called.
Could you help me?
Gents,
I am a newbie here - I have installed HA and Klopp’s great irrigation controller. I’m having issues with the UI & Smartweather.
I’m wondering if someone could point me where to set the location code etc for smart weather. I’m have been through the smartweather.md (https://github.com/kloggy/HA-Irrigation-Version2/blob/d30c3d284595202ad2af38c3a53c5968b1c8ce6f/smartweather_example.md) but it doesn’t say where and what file need to be modified.
Below is a screenshot of the error:
by the way, the two stations what are close to my area are:
https://smartweather.weatherflow.com/station/4581/grid
https://smartweather.weatherflow.com/station/2306/grid
Any assistance with be much appreciated.
thanks
Hi, you need to set it in secrets.yaml file
Hi,
My secret.yaml is currently empty. What should be the content to solve the smartweather issue?
Thanks
smartweather_location_code_1: youcode
Where youcode is your personal url for smartweather config
Hi itajackass,
The example on github appears to be a massive file (https://github.com/kloggy/HA-Irrigation-Version2/blob/d30c3d284595202ad2af38c3a53c5968b1c8ce6f/smartweather_example.md). what the minimum that I need to put in my smartweather config to get it to work.
Apologies to be a pain, I’m a bit lost in this part of the process. Hope after I fix this smartweather config, I won’t encounter other probs
Thanks again
The first question is will you use SmartWeather, have you found stations close to you that you can use?
Hi Klogg,
Yes I’m planning to use smartweather. These stations are very close to where I am:
Thanks
Ok, then you should be able to take the example file and adapt it to your needs.
Almost everything in there is repeated five times. Delete (or comment) everything relating to stations 3, 4 and 5.
Add the appropriate secrets and follow all the instructions and prerequisites.
That should at least get you on the way…
I’m not really supporting Version 1 anymore but I just had a quick look and it seems impossible for that script not to at least start if the script irrigation_run_a_cycle
completed.
Do you get any errors in the logs?
Hi,
I had a few issues with this untill I realised (and it does say in the file) that smartweather_example.md
has 2 files within it (if you download it), if you download the whole file and comment out (or delete) lines 668 downwards.
You then need making in secret.yaml the following:
smartweather_location_code_1:
to how many you need…
smartweather_resource_1:
to how many you need…
smartweather_resource_1:
needs the following afterwards:
http://swd.weatherflow.com/swd/rest/observations/station/
followed by (no spaces) the station number… your example would be:
http://swd.weatherflow.com/swd/rest/observations/station/4581
then add ?api_key=
then add your api key…
api key can be found here:
https://weatherflow.github.io/SmartWeather/api/#getting-started
so you will end up with
http://swd.weatherflow.com/swd/rest/observations/station/4581?api_key=
apikey
Hope that makes sense…
It is also detailed in the prerequisites…
Thanks Mattee, I must be doing something really wrong here. I have deleted locations 3 - 5 and its now throwing up this error:
Secret smartweather_location_code_3 not defined
Below are my codeS:
item_settings_smartweather_stations_used.yaml:
#===============================
#=== SmartWeather Stations Used
#===============================
type: custom:hui-element
card_type: horizontal-stack
cards:
- type: custom:button-card
name: SMARTWEATHER<br>STATIONS
styles:
card:
- font-size: 12px
- font-family: "[[[ return states['input_text.irrigation_ui_font_family'].state ]]]"
- background: none
- box-shadow: none
- color: var(--secondary-text-color)
tap_action:
action: call-service
service: browser_mod.popup
service_data:
title: Smartweather Rainfall
card:
type: markdown
content: >
{% set id1 = states('input_text.smartweather_location_code1') %}
{% set id2 = states('input_text.smartweather_location_code2') %}
{% set name1 = states('input_text.smartweather_location_name1') %}
{% set name2 = states('input_text.smartweather_location_name2') %}
{% set today1 = states('sensor.smartweather_1_rain_today') %}
{% set yesterday1 = states('sensor.smartweather_1_rain_yesterday') %}
{% set today2 = states('sensor.smartweather_2_rain_today') %}
{% set yesterday2 = states('sensor.smartweather_2_rain_yesterday') %}
Station | Today (mm) | Yesterday (mm)
---|:---:|:---:
{{ id1 }}: {{ name1 }} | {{ today1 | round(1) }} | {{ yesterday1 | round(1) }}
{{ id2 }}: {{ name2 }} | {{ today2 | round(1) }} | {{ yesterday2 | round(1) }}
deviceID:
- this
style:
font-family: "[[[ return states['input_text.irrigation_ui_font_family'].state ]]]"
font-size: 14px
box-shadow: 0em 0em 0.5em
opacity: 0.9
- !include
- item_settings_smartweather_check_box.yaml
- entity: input_boolean.smartweather_rainfall_use_location_1
name: !secret smartweather_location_code_1z
- !include
- item_settings_smartweather_check_box.yaml
- entity: input_boolean.smartweather_rainfall_use_location_2
name: !secret smartweather_location_code_2
smartweather.yaml
#===================
#=== Input Booleans
#===================
input_boolean:
#================================================
#=== Indicate which stations to use for rainfall
#================================================
smartweather_rainfall_use_location_1:
smartweather_rainfall_use_location_2:
#================
#=== Input Texts
#================
input_text:
#=== Smartweather Location Codes
smartweather_location_code1:
min: 0
max: 7
initial: !secret smartweather_location_code_1
smartweather_location_code2:
min: 0
max: 7
initial: !secret smartweather_location_code_2
#=== Smartweather Location Names
smartweather_location_name1:
min: 0
max: 30
initial: !secret smartweather_location_name_1
smartweather_location_name2:
min: 0
max: 30
initial: !secret smartweather_location_name_2
#============
#=== Sensors
#============
sensor:
#====================================================
#=== SmartWeather Sensors
#=== see - https://smartweather.weatherflow.com/map
#=== for location of weather stations
#===
#=== Used to create sensors for
#=== illuminance
#=== rain today
#=== rain yesterday
#====================================================
#=== Station 1 (see secrets.yaml)
- platform: rest
resource: !secret smartweather_resource_1
name: smartweather_1
value_template: >
{{ value_json.station_id }}
json_attributes:
- status
- station_units
- obs
scan_interval:
minutes: 86400
#=== Station 2 (see secrets.yaml)
- platform: rest
resource: !secret smartweather_resource_2
name: smartweather_2
value_template: >
{{ value_json.station_id }}
json_attributes:
- status
- station_units
- obs
scan_interval:
minutes: 86400
#=== Average Smartweather Illuminance
- platform: min_max
type: mean
name: Smartweather Average Illuminance
entity_ids:
- sensor.smartweather_1_illuminance
- sensor.smartweather_2_illuminance
#=== Average Smartweather Rain Today
- platform: min_max
type: mean
name: Smartweather Average Rain today
entity_ids:
- sensor.smartweather_1_rain_today
- sensor.smartweather_2_rain_today
#=== Average Smartweather Rain Yesterday
- platform: min_max
type: mean
name: Smartweather Average Rain yesterday
entity_ids:
- sensor.smartweather_1_rain_yesterday
- sensor.smartweather_2_rain_yesterday
- platform: template
sensors:
#=============================
#=== SmartWeather Illuminance
#=============================
smartweather_1_illuminance:
friendly_name: SmartWeather (id 1) Illuminance
value_template: >
{% set obs = state_attr('sensor.smartweather_1', 'obs') %}
{% if obs is sequence and obs|length > 0 and obs[0].brightness is defined %}
{{ obs[0].brightness }}
{% else %}
unknown
{% endif %}
unit_of_measurement: lux
smartweather_2_illuminance:
friendly_name: SmartWeather (id 2) Illuminance
value_template: >
{% set obs = state_attr('sensor.smartweather_2', 'obs') %}
{% if obs is sequence and obs|length > 0 and obs[0].brightness is defined %}
{{ obs[0].brightness }}
{% else %}
unknown
{% endif %}
unit_of_measurement: lux
#========================================
#=== Decode illuminance to a light level
#========================================
outside_light_level:
friendly_name: Outside Light Level
value_template: >
{% if states('sensor.current_light_level_sensor') == 'SmartWeather' %}
{% set light_level = states('sensor.smartweather_average_illuminance') | int %}
{% else %}
{% set light_level = states('sensor.brightness') | int %}
{% endif %}
{% if light_level == 0 %} Dark
{% elif light_level <= 1 %} Bright moonlight
{% elif light_level <= 2 %} Night light
{% elif light_level <= 10 %} Dimmed light
{% elif light_level <= 50 %} 'Cosy' living room
{% elif light_level <= 150 %} 'Normal' non-task light
{% elif light_level <= 350 %} Working / reading
{% elif light_level <= 700 %} Inside daylight
{% elif light_level <= 2000 %} Maximum to avoid glare
{% elif light_level <= 10000 %} Clear daylight
{% elif light_level <= 120000 %} Direct sunlight
{% else %} Too bright!
{% endif %}
icon_template: >
{% if states('sensor.current_light_level_sensor') == 'SmartWeather' %}
{% set light_level = states('sensor.smartweather_average_illuminance') | int %}
{% else %}
{% set light_level = states('sensor.brightness') | int %}
{% endif %}
{% if light_level == 0 %} mdi:brightness-1
{% elif light_level <= 1 %} mdi:brightness-3
{% elif light_level <= 2 %} mdi:candle
{% elif light_level <= 10 %} mdi:brightness-4
{% elif light_level <= 50 %} mdi:fireplace
{% elif light_level <= 150 %} mdi:ceiling-light
{% elif light_level <= 350 %} mdi:book-open-page-variant
{% elif light_level <= 700 %} mdi:window-closed
{% elif light_level <= 2000 %} mdi:weather-sunny
{% elif light_level <= 10000 %} mdi:white-balance-sunny
{% elif light_level <= 120000 %} mdi:sunglasses
{% else %} mdi:alert-octagram-outline
{% endif %}
#============================
#=== SmartWeather Rain Today
#============================
smartweather_1_rain_today:
friendly_name: SmartWeather (id 1) Rain Today
value_template: >
{% set obs = state_attr('sensor.smartweather_1', 'obs') %}
{% if is_state('input_boolean.smartweather_rainfall_use_location_1', 'off') %}
unknown
{% elif obs is sequence and obs|length > 0 and obs[0].precip_accum_local_day is defined %}
{{ obs[0].precip_accum_local_day }}
{% else %}
unknown
{% endif %}
unit_of_measurement: mm
smartweather_2_rain_today:
friendly_name: SmartWeather (id 2) Rain Today
value_template: >
{% set obs = state_attr('sensor.smartweather_2', 'obs') %}
{% if is_state('input_boolean.smartweather_rainfall_use_location_2', 'off') %}
unknown
{% elif obs is sequence and obs|length > 0 and obs[0].precip_accum_local_day is defined %}
{{ obs[0].precip_accum_local_day }}
{% else %}
unknown
{% endif %}
unit_of_measurement: mm
#================================
#=== SmartWeather Rain Yesterday
#================================
smartweather_1_rain_yesterday:
friendly_name: SmartWeather (id 1) Rain Yesterday
value_template: >
{% set obs = state_attr('sensor.smartweather_1', 'obs') %}
{% if is_state('input_boolean.smartweather_rainfall_use_location_1', 'off') %}
unknown
{% elif obs is sequence and obs|length > 0 and obs[0].precip_accum_local_yesterday is defined %}
{{ obs[0].precip_accum_local_yesterday }}
{% else %}
unknown
{% endif %}
unit_of_measurement: mm
smartweather_2_rain_yesterday:
friendly_name: SmartWeather (id 2) Rain Yesterday
value_template: >
{% set obs = state_attr('sensor.smartweather_2', 'obs') %}
{% if is_state('input_boolean.smartweather_rainfall_use_location_2', 'off') %}
unknown
{% elif obs is sequence and obs|length > 0 and obs[0].precip_accum_local_yesterday is defined %}
{{ obs[0].precip_accum_local_yesterday }}
{% else %}
unknown
{% endif %}
unit_of_measurement: mm
#================
#=== Automations
#================
automation:
#=====================================================
#=== Set up timing of sensor updates for Smartweather
#=== When HA starts or sun elevation goes above -6
#=====================================================
- alias: SmartWeather Set Up Sensors
trigger:
- platform: homeassistant
event: start
- platform: numeric_state
entity_id: sensor.elevation
above: -6
action:
- service: script.turn_off
entity_id:
- script.loop_smartweather_set_sensor_interval
- script.smartweather_set_sensor_interval
- delay: '00:00:01'
- service: script.smartweather_set_sensor_interval
#============
#=== Scripts
#============
script:
#=================================================================
#=== Set interval for the SmartWeather sensors
#===
#=== If using SmartWeather
#=== When sun elevation >= -6
#=== If SmartWeather brightness <= 5000, set 1 minute
#=== Else if SmartWeather brightness <= 7500, set 15 minutes
#=== Else if SmartWeather brightness > 7500, set 30 minutes
#=== Else set 18 hours
#===
#=== If using Brightness
#=== When sun elevation >= -6
#=== If Brightness <= 25, set 1 minute
#=== Else if Brightness <= 30, set 15 minutes
#=== Else if Brightness > 30, set 30 minutes
#=== Else set 18 hours
#===
#==================================================================
smartweather_set_sensor_interval:
sequence:
#=== Wait for script.loop_smartweather_set_sensor_interval to stop
- service: homeassistant.turn_off
entity_id: script.loop_smartweather_set_sensor_interval
- wait_template: >
{{ is_state('script.loop_smartweather_set_sensor_interval', 'off') }}
- service: script.loop_smartweather_set_sensor_interval
data_template:
interval: >
{% if states('sensor.elevation') | float >= -6 and
states('sensor.current_light_level_sensor') == 'SmartWeather' %}
{% if states('sensor.smartweather_average_illuminance') | int <= 5000 %}
00:01:00
{% elif states('sensor.smartweather_average_illuminance') | int <= 7500 %}
00:15:00
{% else %}
00:30:00
{% endif %}
{% elif states('sensor.elevation') | float >= -6 and
states('sensor.current_light_level_sensor') == 'Brightness' %}
{% if states('sensor.brightness') | int <= 25 %}
00:01:00
{% elif states('sensor.brightness') | int <= 30 %}
00:15:00
{% else %}
00:30:00
{% endif %}
{% else %}
18:00:00
{% endif %}
#========================================================================
#=== Update the sensor and loop the script that sets the sensor interval
#===
#=== Passed
#=== interval - time to wait between sensor updates
#========================================================================
loop_smartweather_set_sensor_interval:
description: Smartweather Loop The Sensor Interval Script
fields:
interval:
description: Time to wait between sensor updates
example: 00:01:00
sequence:
#=== Update sensor
- service: homeassistant.update_entity
entity_id: sensor.smartweather_1
#=== Update sensor
- service: homeassistant.update_entity
entity_id: sensor.smartweather_2
#=== Wait the desired time
- delay: "{{ interval }}"
#=== Start the process again
- service: script.smartweather_set_sensor_interval
secrets.yaml
smartweather_location_code_1: smartweather.yaml
smartweather_resource_1: http://swd.weatherflow.com/swd/rest/observations/station/2306?api_key=20c70eae-e62f-4d3b-b3a4-8586e90f3ac8
smartweather_location_code_2: smartweather.yaml
smartweather_resource_2: http://swd.weatherflow.com/swd/rest/observations/station/4581?api_key=20c70eae-e62f-4d3b-b3a4-8586e90f3ac8
configuration.yaml
# Configure a default setup of Home Assistant (frontend, api, etc)
homeassistant:
packages: !include_dir_named packages
default_config:
frontend:
themes: !include_dir_merge_named themes
# Uncomment this if you are using SSL/TLS, running in Docker container, etc.
# http:
# base_url: example.duckdns.org:8123
# Text to speech
tts:
- platform: google_translate
group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
lovelace_gen:
lovelace:
mode: yaml
resources:
- url: /local/community/mini-graph-card/mini-graph-card-bundle.js
type: module
- url: /local/community/power-wheel-card/power-wheel-card.js
type: module
- url: /local/community/lovelace-card-mod/card-mod.js
type: module
- url: /local/community/button-card/button-card.js
type: module
- url: /local/community/lovelace-multiple-entity-row/multiple-entity-row.js
type: module
- url: /local/community/config-template-card/config-template-card.js
type: module
- url: /local/community/lovelace-layout-card/layout-card.js
type: module
- url: /local/community/lovelace-state-switch/state-switch.js
type: module
- url: /local/community/lovelace-hui-element/hui-element.js
type: module
browser_mod:
vacuum:
- platform: xiaomi_miio
host: 192.168.1.160
token: xxxxxxxxxxxxxxxxxxxxxxxx
sensor:
- platform: mqtt
state_topic: 'tele/BthHum/SENSOR'
name: 'Temperature'
unit_of_measurement: '°F'
value_template: '{{ value_json.DHT11.Temperature }}'
- platform: mqtt
state_topic: 'tele/BthHum/SENSOR'
name: 'Humidity'
unit_of_measurement: '%'
value_template: '{{ value_json.DHT11.Humidity }}'
- platform: mqtt
state_topic: 'tele/BthHum/SENSOR'
name: 'DewPoint'
unit_of_measurement: '%'
value_template: '{{ value_json.DHT11.DewPoint }}'
- platform: yr
- platform: fronius_inverter
ip_address: "192.168.1.250"
monitored_conditions:
- ac_power
- day_energy
- year_energy
- total_energy
- grid_usage
- panel_status
- house_load
- grid_usage
ui-lovelace.yaml
title: MyHome
views:
- !include /config/lovelace/my_view.yaml
- !include /config/lovelace/view_garden_version2.yaml
my_view.yaml
views:
- path: default_view
title: Home
badges:
- entity: binary_sensor.updater
- entity: binary_sensor.bd1gpo1_button1
- entity: binary_sensor.bd1gpo1_button2
- entity: person.xxxxx
- entity: sensor.sm_g973f_battery_level
- entity: sensor.sm_g973f_geocoded_location
- entity: sensor.sm_g973f_wifi_connection
- entity: sensor.bd1gpo1_status
- entity: sun.sun
- entity: vacuum.xiaomi_vacuum_cleaner
cards:
- type: media-control
entity: media_player.kdl_50w800c
- type: entities
entities:
- sensor.fronius_ac_power
- sensor.fronius_day_energy
- sensor.fronius_total_energy
- sensor.fronius_year_energy
title: Solar Power
- type: entities
entities:
- switch.bd1gpo1
- switch.bd1gpo2
title: Main Bedroom
- type: entities
entities:
- vacuum.xiaomi_vacuum_cleaner
title: Vacuum
- type: entities
entities:
- sensor.bathroom_temphum_dht11_temperature
- sensor.bathroom_temphum_dht11_humidity
- sensor.bathroom_temphum_dht11_dewpoint
title: Bathroom
- type: weather-forecast
entity: weather.xxxxx
- type: entities
entities:
- sensor.tasmota_si7021_temperature
- sensor.tasmota_si7021_humidity
title: Living Room
- type: entities
entities:
- sensor.adguard_dns_queries
- sensor.adguard_safe_browsing_blocked
- sensor.adguard_average_processing_speed
title: Cloud
- badges: []
cards:
- entities:
- entity: sensor.fronius_ac_power
- entity: sensor.fronius_day_energy
- entity: sensor.fronius_grid_usage
- entity: sensor.fronius_house_load
hours_to_show: 24
refresh_interval: 0
type: history-graph
- entity: sensor.fronius_day_energy
max: 100
min: 0
theme: default
type: gauge
- entity: sensor.fronius_ac_power
max: 100
min: 0
theme: default
type: gauge
- entity: sensor.fronius_grid_usage
max: 100
min: 0
theme: default
type: gauge
- entity: sensor.fronius_house_load
max: 100
min: 0
theme: default
type: gauge
- grid_power_entity: sensor.fronius_grid_usage
home_energy_entity: sensor.fronius_house_load
production_is_positive: false
solar_power_entity: sensor.fronius_panel_status
title: Solar Power
type: 'custom:power-wheel-card'
- entities:
- entity: sensor.fronius_panel_status
- entity: sensor.fronius_day_energy
- entity: sensor.fronius_house_load
- entity: sensor.fronius_grid_usage
- entity: sensor.fronius_total_energy
- entity: sensor.fronius_year_energy
type: entities
- animate: true
entities:
- entity: sensor.fronius_ac_power
name: Kitchen Temperature
show_fill: false
show_state: true
- entity: sensor.fronius_day_energy
name: Bedroom Temperature
show_fill: false
show_state: true
- entity: sensor.fronius_grid_usage
name: Kitchen Temperature
show_fill: false
show_state: true
- entity: sensor.sensor.fronius_house_load
name: Kitchen Temperature
show_fill: false
show_state: true
hours_to_show: 24
points_per_hour: 12
refresh_interval: 0
title: House Temperatures
type: 'custom:mini-graph-card'
path: energy
title: Energy
view_garden_version2.yaml
# lovelace_gen
title: Garden
path: garden
# icon: mdi:flower
# icon: mdi:tree
icon: mdi:sprinkler-variant
# theme: irrigation_theme
panel: true
cards:
- type: custom:layout-card
layout: horizontal
cards:
#==================
#=== SYSTEM STATUS
#==================
- !include templates/garden/status/page_status.yaml
#==============
#=== SCHEDULES
#==============
- type: vertical-stack
cards:
- type: conditional
conditions:
- entity: input_boolean.irrigation_master_control_switch
state: "on"
card:
!include templates/garden/cycles/page_cycles.yaml
- type: conditional
conditions:
- entity: input_boolean.irrigation_master_control_switch
state: "on"
card:
type: custom:hui-element
card_type: custom:state-switch
entity: sensor.irrigation_ui_selected_cycle
default: cycle1
states:
cycle1:
!include
- templates/garden/cycles/section_cycle1_2_schedule.yaml
- cycle: 1
cycle2:
!include
- templates/garden/cycles/section_cycle1_2_schedule.yaml
- cycle: 2
cycle3:
!include templates/garden/cycles/section_cycle3_schedule.yaml
#=============
#=== SETTINGS
#=============
- type: vertical-stack
cards:
- type: conditional
conditions:
- entity: input_boolean.irrigation_master_control_switch
state: "on"
card:
!include templates/garden/settings/page_settings.yaml
- type: conditional
conditions:
- entity: input_boolean.irrigation_master_control_switch
state: "on"
card:
type: custom:hui-element
card_type: custom:state-switch
entity: sensor.irrigation_ui_selected_settings
default: general
states:
general:
!include templates/garden/settings/general/section_settings_general.yaml
rainfall:
!include templates/garden/settings/rainfall/section_settings_rainfall.yaml
temperature:
!include templates/garden/settings/temperature/section_settings_temperature.yaml
I am unable to located reference to location 3.
I’ve checked the logs, no errors. But I’ve found a space error in my script… now works like a charm!
Sorry, my fault.
Thanks a lot!
Look at the bottom in,
item_settings_smartweather_stations_used.yaml
You need to remove the !includes for station 3, 4 and 5.
I am not sure how the formatting will look with only two stations but if you don’t like it try adding the following three times, once for each !include you removed.
- type: custom:button-card
color_type: blank-card
Obviously check the indenting is correct.
Each adds a blank button in place of the !include so you can use 1,2 or 3 blanks depending on how you prefer the look. Experiment!
Hi Klogg,
I have removed the !includes already as per the code I posted above and its still complaining about location 3.
Also, out of curiosity, whats the benefit of using 5 stations?
Thanks