So in my other work I build cloud software and we do everything with real time dashboards that collects statistics from many thousands of data points and bring these all together dashboards to show us what is going in near real time. So I thought combined with some of the sensors I have been installing I would start building something for the vineyard and it is now starting to come together nicely.

Note all of the below are real graphs updated at the least frequently hourly.

Soil Moisture

One of the key stats we use to manage irrigation is soil moisture, this is measured in Cb and comes from a number of sensors at different depths. Currently we are working on a number of rules of when to water which blocks at what growing stages. This will shortly be hooked up to our irrigation system for fully automated irrigation by variety and growing stage. We have a deep clay loam that holds moisture pretty well, especially after dry conditions have formed a crust on the surface and currently water when >45Cb from fruit set to veraision and likely > 60Cb at other times.

[iframe src=”http://54.66.131.195/app/kibana#/visualize/edit/Daily-Soil-Moisture?embed&_g=(refreshInterval:(display:’5%20minutes’,pause:!f,section:2,value:300000),time:(from:now-30d,mode:quick,to:now))&_a=(filters:!(),linked:!f,query:(query_string:(analyze_wildcard:!t,query:’*’)),uiState:(),vis:(aggs:!((id:’3′,params:(field:current_observation.davis_current_observation.soil_moisture_1),schema:metric,type:max),(id:’4′,params:(customInterval:’2h’,extended_bounds:(),field:timestamp,interval:d,min_doc_count:1),schema:segment,type:date_histogram)),listeners:(),params:(addLegend:!f,addTimeMarker:!f,addTooltip:!t,defaultYExtents:!f,drawLinesBetweenPoints:!t,interpolate:linear,radiusRatio:9,scale:linear,setYExtents:!f,shareYAxis:!t,showCircles:!t,smoothLines:!f,times:!(),yAxis:()),type:line))” width=”100%” height=”400″]

Soil temp

Can be useful to understand how warm things are from an evaporation perspective as well as getting on idea early in the season of when nutrients will become available

[iframe src=”http://54.66.131.195/app/kibana#/visualize/edit/Soil-temp-in-C?embed&_g=(refreshInterval:(display:’5%20minutes’,pause:!f,section:2,value:300000),time:(from:now-30d,mode:quick,to:now))&_a=(filters:!(),linked:!f,query:(query_string:(analyze_wildcard:!t,query:’*’)),uiState:(),vis:(aggs:!((id:’2′,params:(field:current_observation.davis_current_observation.temp_soil_1_c),schema:metric,type:max),(id:’3′,params:(customInterval:’2h’,extended_bounds:(),field:timestamp,interval:auto,min_doc_count:1),schema:segment,type:date_histogram)),listeners:(),params:(addLegend:!f,addTimeMarker:!f,addTooltip:!t,defaultYExtents:!f,drawLinesBetweenPoints:!t,interpolate:linear,radiusRatio:9,scale:linear,setYExtents:!f,shareYAxis:!t,showCircles:!t,smoothLines:!t,times:!(),yAxis:()),type:line))” width=”100%” height=”300″]

Leaf Wetness and Humidity

Key stats for managing disease pressure of the fungal variery are leaf wetness, humidity and temperature (see below for that).

[iframe src=”http://54.66.131.195/app/kibana#/visualize/edit/Leaf-wetness-and-humidity?embed&_g=(refreshInterval:(display:’5%20minutes’,pause:!f,section:2,value:300000),time:(from:now-30d,mode:quick,to:now))&_a=(filters:!(),linked:!f,query:(query_string:(analyze_wildcard:!t,query:’*’)),uiState:(),vis:(aggs:!((id:’2′,params:(field:current_observation.davis_current_observation.leaf_wetness_1),schema:metric,type:max),(id:’5′,params:(field:current_observation.relative_humidity),schema:metric,type:avg),(id:’6′,params:(customInterval:’2h’,extended_bounds:(),field:timestamp,interval:auto,min_doc_count:1),schema:segment,type:date_histogram)),listeners:(),params:(addLegend:!f,addTimeMarker:!f,addTooltip:!t,defaultYExtents:!f,drawLinesBetweenPoints:!t,interpolate:linear,radiusRatio:9,scale:linear,setYExtents:!f,shareYAxis:!t,showCircles:!t,smoothLines:!f,times:!(),yAxis:()),type:line))” width=”100%” height=”400″]

There are a number of reasonably well established models around that can be used to interpret this data into a scorecard or alert. These include:

Downy Mildew 10:10:24

>10mm rain and >=10C for 24 hours can trigger an outbreak, so either quickly get a spray on or monitor closely if you haven’t done recently.

Powdery Mildew

Leaf wetness, temperature and humidity, more details here: http://www.ipm.ucdavis.edu/DISEASE/DATABASE/grapepowderymildew.html

Bortrytis

18-21C, leaf wetness from rain, dew, fog and high soil moisture

Temperature and Growing Degree Days

We will be adding a cumulative measure of growing degrees shortly which provide a good indicator of the total amount of warmth above a base level (we are using base 10 which seems to be a reasonable value for grapevines).

[iframe src=”http://54.66.131.195/app/kibana#/visualize/edit/Degree-Days?embed&_g=(refreshInterval:(display:’5%20minutes’,pause:!f,section:2,value:300000),time:(from:now-30d,mode:quick,to:now))&_a=(filters:!(),linked:!f,query:(query_string:(analyze_wildcard:!t,query:’*’)),uiState:(),vis:(aggs:!((id:’2′,params:(field:degree_day),schema:metric,type:max),(id:’3′,params:(customInterval:’2h’,extended_bounds:(),field:timestamp,interval:d,min_doc_count:1),schema:segment,type:date_histogram)),listeners:(),params:(addLegend:!f,addTimeMarker:!f,addTooltip:!t,defaultYExtents:!f,mode:stacked,scale:linear,setYExtents:!f,shareYAxis:!t,times:!(),yAxis:()),type:histogram))” width=”100%” height=”400″]

Min and Max temp in C

[iframe src=”http://54.66.131.195/app/kibana#/visualize/edit/Min-and-max-temp-C?embed&_g=(refreshInterval:(display:’5%20minutes’,pause:!f,section:2,value:300000),time:(from:now-30d,mode:quick,to:now))&_a=(filters:!(),linked:!f,query:(query_string:(analyze_wildcard:!t,query:’*’)),uiState:(),vis:(aggs:!((id:’2′,params:(field:current_observation.temp_c),schema:metric,type:max),(id:’3′,params:(customInterval:’2h’,extended_bounds:(),field:timestamp,interval:d,min_doc_count:1),schema:segment,type:date_histogram),(id:’4′,params:(field:current_observation.temp_c),schema:metric,type:min)),listeners:(),params:(addLegend:!f,addTimeMarker:!f,addTooltip:!t,defaultYExtents:!f,drawLinesBetweenPoints:!t,interpolate:linear,radiusRatio:9,scale:linear,setYExtents:!f,shareYAxis:!t,showCircles:!t,smoothLines:!f,times:!(),yAxis:()),type:line))” width=”100%” height=”400″]

Dewpoint with min and max temp

Useful for attributing leaf wetness or measuring frost which is when the dewpoint is reached and the temperature is <=0C. It the light blue line cross the other lines (min and max dewpoint) then there will be dew or frost.

[iframe src=”http://54.66.131.195/app/kibana#/visualize/edit/Dewpoint-with-min-and-max-temp?embed&_g=(refreshInterval:(display:’5%20minutes’,pause:!f,section:2,value:300000),time:(from:now-30d,mode:quick,to:now))&_a=(filters:!(),linked:!f,query:(query_string:(analyze_wildcard:!t,query:’*’)),uiState:(),vis:(aggs:!((id:’2′,params:(field:current_observation.dewpoint_c),schema:metric,type:min),(id:’3′,params:(customInterval:’2h’,extended_bounds:(),field:timestamp,interval:auto,min_doc_count:1),schema:segment,type:date_histogram),(id:’4′,params:(field:current_observation.temp_c),schema:metric,type:min),(id:’5′,params:(field:current_observation.dewpoint_c),schema:metric,type:max)),listeners:(),params:(addLegend:!f,addTimeMarker:!f,addTooltip:!t,defaultYExtents:!f,drawLinesBetweenPoints:!t,interpolate:linear,radiusRatio:9,scale:linear,setYExtents:!f,shareYAxis:!t,showCircles:!t,smoothLines:!f,times:!(),yAxis:()),type:line))” width=”100%” height=”400″]

Real time wind

Very useful for managing spray, as sailors we measure wind in knots and don’t spray > 10 kts. Note currently for this we look at data direct from our weather station as it is the most up to date

[iframe src=”http://www.weatherlink.com/user/ajsinclair/index.php?view=main&headers=0″ height=”400″]

Historical Wind

Useful to understand if excess wind is having an adverse impact on growing

[iframe src=”http://54.66.131.195/app/kibana#/visualize/edit/Wind-speed-(kts)?embed&_g=(refreshInterval:(display:’5%20minutes’,pause:!f,section:2,value:300000),time:(from:now-30d,mode:quick,to:now))&_a=(filters:!(),linked:!f,query:(query_string:(analyze_wildcard:!t,query:’*’)),uiState:(),vis:(aggs:!((id:’2′,params:(field:current_observation.wind_kt),schema:metric,type:max),(id:’3′,params:(customInterval:’2h’,extended_bounds:(),field:timestamp,interval:auto,min_doc_count:1),schema:segment,type:date_histogram)),listeners:(),params:(addLegend:!f,addTimeMarker:!f,addTooltip:!t,defaultYExtents:!f,drawLinesBetweenPoints:!t,interpolate:linear,radiusRatio:9,scale:linear,setYExtents:!f,shareYAxis:!t,showCircles:!t,smoothLines:!t,times:!(),yAxis:()),type:line))” width=”100%” height=”400″]

Rainfail

Not very exciting to look at on the season this post was written as there hasn’t been a lot of it but also an important metric to measure.

[iframe src=”http://54.66.131.195/app/kibana#/visualize/edit/Rain-day-in-mm?embed&_g=(refreshInterval:(display:’5%20minutes’,pause:!f,section:2,value:300000),time:(from:now-30d,mode:quick,to:now))&_a=(filters:!(),linked:!f,query:(query_string:(analyze_wildcard:!t,query:’*’)),uiState:(),vis:(aggs:!((id:’4′,params:(field:current_observation.davis_current_observation.rain_day_mm),schema:metric,type:max),(id:’5′,params:(customInterval:’2h’,extended_bounds:(),field:timestamp,interval:auto,min_doc_count:1),schema:segment,type:date_histogram)),listeners:(),params:(addLegend:!f,addTimeMarker:!f,addTooltip:!t,defaultYExtents:!f,drawLinesBetweenPoints:!t,interpolate:linear,radiusRatio:9,scale:linear,setYExtents:!f,shareYAxis:!t,showCircles:!t,smoothLines:!t,times:!(),yAxis:()),type:line))” width=”100%” height=”400″]

Coming soon

A number of alerts that can be used to monitor the risk of the disease pressure mentioned above.

Technology

At the core of our setup is a Davis Instruments weather station, to be specific it is:

  • Vantage Pro 2 with solar power with Weatherlink IP
  • Wireless leaf wetness and soil moisture station
  • A small Python script that takes the XML data from weatherlink and converts it into a JSON object for posting to the REST API
  • Elasticsearch: a fantastic tool for storing and accessing data at web scale and speeds. Allows us to store virtually any amount of data and query very rapidly for both structured and unstructed data. We can also do real time calculations and aggregations on the fields and support any number of weather stations
  • Kibana: another great tool from for visualisation in real time of very large data sets
  • Apigee: coming soon will be a bit more control on the inbound API side if anyone else wants to use this setup

If you are interested in using this drop me a line at andrew@52.62.84.164 or on Twitter @capebernier