WebsitedataT.json

Category:Cumulus FilesCategory:Cumulus MX
Category:JSON Files
This Cumulus template file is found in the web sub-folder of the MX distribution from release 3.10.1 onwards. The content of this page is based on the template file included in release 3.10.1 of MX; hopefully anybody updating this Wiki page, for a later release with an updated file, will also update this paragraph.
It supplies the variable information that can be included in a web page by using Cumulus web tags to create a JavaScript Object Notation (.json) data file. 
=Explanatory Introduction=
JSON files are written in JavaScript, and that script language supports defining objects. Thus this template file defines a number of JavaScript objects, each has a variable name that is assigned to a Cumulus web tag, when MX processes the template file the values replace the tags and you end up with a data file. In the supplied file, some of these web tags employ input and/or output modification Parameters. Let me take one line from the file, and explain that line in detail in the hope you can then understand other lines:
 "recordsbegandateISO":"<#recordsbegandate format=yyyy-MM-dd>",
# The first string "recordsbegandateISO" defines the name for this variable in the object.
# The colon separates that object variable name from the value, think of it like an equals sign in ordinary arithmetic.
# The <# prefix defines the start of a Cumulus web tag.
# The recordsbegandate is the Cumulus tag name, the definition of this particular one can be found near the end of the table in 'Date & Time' section on webtags page.
# The format= is an output format modifier attribute defined in 'Multiple_Output_Format_Modifier_parameters_for_times_and_dates' section on the parameters sub-page.
# The yyyy-MM-dd defines the output format required, as explained in the tables on the Wiki page in the last cross-reference, this represents a four digit year, then a hyphen, then a two digit month code, then another hyphen, and finally a two digit day of month.
# The > symbol ends the Cumulus web tag definition.
# The double quotation marks round the Cumulus web tag ensure the output is treated as a string
# The comma at the end of the line I have used as an example is there because another parameter is defined on the next line.
# The whole object definition, of all the variables in the file, (not seen in single line extract above) is enclosed in brackets "{" to "}"
=How the file is used=
This wiki page is about a Cumulus template file. Settings for Optional_Web_Server describes how choosing the default web pages enables the processing of this file into a data file with values, and how that can be uploaded onto your web server. If we decide to tailor this template file, as described later, then we might use Extra web files settings within the settings interface to process and upload our tailored file(s).
MX has to be told to convert that to a data file. There is a full explanation of what is meant by 'Cumulus processing any template' here. In this case, MX will, while processing the template, generate a data file that is stored as "CumulusMX/web/websitedata.json". This data file is still coded as JavaScript file, but now the tags have gone as they have been replaced by values. 
The data file is used with the Web Pages supplied in the webfiles sub-folder of the MX distribution from release 3.10.1 onwards. On your web server, each HTML page will call another JavaScript file "/CumulusMX/webfiles/js/setpagedata.js" (after uploading this file once to web site), it is that script that will both read the uploaded data file, and insert the relevant value into HTML pages in a span which has the "cmxdata" attribute, with a value for that attribute set to the appropriate variable name for the relevant JSON object. Note that "js/setpagedata.js" uses a querystring for adding the current time to make the request unique, that just ensures a fresh copy is loaded each time, preventing your browser thinking because you have loaded the file before it can reuse the copy it cached.
In the HTML, <span data-cmxdata="recordsbegandateISO"></span> would be found and then processed in the "setpagedata.js" script. The HTML as displayed by the browser will then have a date within that span element. As explained at the start of this Wiki page, that date originated from MX processing a web tag in the template file.
In the tables below, that explain the data represented by various lines in the template file, there are multiple columns:
* Cumulus tag name (including whether any input/output modification parameters)
* JSON object variable name
* The span sequence used in HTML file to relate to this variable
* A description
The tables show the tag name and the JSON variable name because these might not agree. The tables show the span sequence because you might be looking at the HTML file and use what you see there as a starting point for working back to either the description or the Cumulus tag name (or the input/output modification parameter).
Please note for simplicity, not every line in the file is explained, sometimes just one example is given representing multiple lines, this is enough to show you the format (with or without parameters), and whether the tag name and JSON object variable name do match.
=File details=
* This file is designed to work with the MX default web pages (that you upload just once from the webfiles sub-folder of your MX installation).
* This template file lists all the JSON variables that those pages require to be uploaded to your web server so the default HTML pages can be used as a background structure to permit displaying your weather data. As explained above, a JavaScript file on your web site loads the file with JSON data and inserts the data in appropriate places on the web page.
* The file has to cater for the majority of people using the default web site, and assumes use of a Davis weather station, therefore its content might not be optimised for your use. 
* The default web pages, can only display JSON variables that are defined in this file (as per tables below) and formats for content are fixed. 
Note that the variables included in this file represent the degree symbol o in two different ways:
# As an HTML encoded entity &deg; that always translates to ° if you are using in HTML web page
# As a binary character (equates to decimal 176), that only translates to ° if you are using UTF-8 encoding (select this on Internet Settings → Web/FTP Settings → General Settings → tick UTF-8 encoding) to create this file with that encoding (to match the encoding used by the web pages included in webfiles folder)
==Tailoring the file==
If you have experience with how JSON files are coded, you can choose to use a different file to that provided with MX.
To avoid loss of you file when you are upgrading to a new MX release, best practice would be to create a template file with a different name, and/or in a different folder, and use the Extra Web Files settings to get your tailored template processed and uploaded at your preferred interval to become "webbsitedata.json" on your web server and disable the settings that get the default file processed and uploaded. 
If the remote file setting on the extra web files uses the same "webbsitedata.json" name, then "js/setpagedata.js" will load it ($.getJSON('websitedata.json?_=' + Date.now(),, here the plus sign is used to indicate concatenation within the query-string (bit prefixed by question mark)) and process whatever object names it finds, so all you need to do is edit the HTML file to use span definitions that match the object names.
If you have even more experience, you can also edit "js/setpagedata.js", perhaps so it can process multiple JSON files, so you can upload data that is static (see tables) or only changes when day changes at EOD in extra web files settings, and reduce the size of upload at your real-time interval. Of course you might even consider adding extra JavaScript that takes two json objects and outputs the difference between them, or you might make use of PHP that can also do a simple calculation or a much more complex one.
==Options==
There are 3 fixed pieces of information conveyed by this file (referring to Cumulus web tags for defining options):
# "useApparent" = whether Apparent Temperature or Feels Like temperature is required
# "showSolar" = whether a solar sensor is providing solar information or not
# "showUV" = whether a UV sensor is providing Ultra Violet information or not
The content values for these JSON object names as included in this file depend upon selections at Station Settings → Display Options.
==List of variables==
Listed in the order they appear in the file, and grouped as delimited by blank lines in the file. Blame the developer who created the file, not the contributors here, for any difficulty in finding a particular definition.
===Static information===
Web tag_name 	JSON Variable 	Web page span id	Function
<#locationenc> 	"location" 	 	The station location (as you entered in Settings) encoded for HTML
<#update> 	"update" 	 	The date and time of the last web site update. The default format depends on the locale you use to run Cumulus
<#version> 	"version" 	 	The version number associated with the MX release installed e.g. 3.10.1
<#build> 	"build" 	 	The build number associated with the MX release installed e.g. 3122
<#latitude> 	"latitude" 	 	The station latitude (as you entered in Settings) encoded for HTML e.g. N 59& deg;&nbsp;14&#39;&nbsp;33&quot; prints as N 59o 14" 33'
<#longitude> 	"longitude" 	 	The station longitude (as you entered in Settings) encoded for HTML.
<#altitude> 	"altitude" 	 	The station altitude value encoded for HTML (i.e. figure, '&nbsp;' and units) in either feet or metres, above sea level, just as you entered in Settings (so it is more complex to extract number for script arithmetic); e.g. 123&nbsp;m
<#recordsbegandate> 	"recordsbegandate" and "recordsbegandateISO"	e.g. 	Date when usage of MX began. The default format for first JSON parameter depends on the locale you use to run Cumulus, the second JSON parameter always returns a four digit year, then a hyphen, then a 2 digit month number, then a hyphen, then a 2 digit day of month number; this is using the date formatting element of ISO 8601 Data elements and interchange formats and was explained as an example in detail at the start of this Wiki page
<#forum> 	"forum" 	 	Defined within MX to include Universal Resource Location (URL) for the Cumulus Support Forum as hosted by Freddie, encoded for HTML menu using anchor tagging as ::<a href="https://cumulus.hosiene.co.uk/index.php">forum</a>:
<#forumurl> 	"forumurl" 	 	The raw URL, but without encoding for menu. Not available before version 3.10.1 release build 3116
<#webcam> and <#webcamurl>	"webcam" and "webcamurl" 	e.g. 	You can supply a URL within the Settings that will be output by these web tags. It can be used for a web cam page, or any other web page. The formatting is as for the forum, with or without the HTML anchor.
There are more pieces of Static Information in the group that follows the blank line, and called here "Current Conditions", each is identified as such.
===Current Conditions===
Web tag_name 	JSON Variable 	Web page span id	Function
<#currcondenc> 	"currcond" 	 	MX will look for a currentconditions.txt file in the same folder as CumulusMX.exe. The contents of this file will be encoded as HTML (i.e. all characters above {decimal base} code 159 will be encoded as HTML entities; for example this would encode any use of symbol for degree), and output through this web tag. The file will be deleted once Cumulus has processed it, so you need a process to create the file again and again.
<#dawn> 	"dawn" 	 	Start of most recent Civil Twilight (in time format specified for your locale, without date) as calculated for the latitude and longitude in the settings
<#sunrise> 	"sunrise" 	 	Most recent time (in time format specified for your locale, without date) that sunrise was due as calculated for the latitude and longitude in the settings; if the sun does not rise at that latitude returns "--:--"
<#moonrise> 	"moonrise" 	 	Current moonrise time at the latitude and longitude in the settings; ("--:--" if moon does not rise on current calendar day)
<#dusk> 	"dusk" 	 	End of next Civil Twilight at the latitude and longitude in the settings
<#sunset> 	"sunset" 	 	Most recent time (in time format specified for your locale, without date) that sunset was due as calculated for the latitude and longitude in the settings; if the sun does not set at that latitude returns "--:--"
<#moonset> 	"moonset" 	 	Current moonset time at the latitude and longitude in the settings; ("--:--" if moon does not set on current calendar day)
<#daylightlength> 	"daylightlength" 	 	Time interval between reported dawn and dusk times, those may not both relate to current calendar day
<#daylength> 	"daylength" 	 	Time interval between reported sunrise and sunset times, those may not both relate to current calendar day
<#moonphase> 	"moonphase" 	 	Current phase of the moon in words, eg "New Moon" etc. The names used can be altered in strings.ini.
<#longlocation> 	"longlocation" 	 	(Static information) Longer description of your location as entered in Settings
<#stationtype> 	"stationtype" 	 	(Static information) The weather station [Cumulus.ini#Section:_Station model] description (you choose what text appears for this in Settings)
<#interval> 	"interval" 	 	(Static information) The web site update interval in minutes (integer)
<#rollovertime> 	"rollovertime" 	 	(Static information if you use midnight rollover; changes when DST starts/stops if you have selected Use 10 am in Summer) The time that the logs rollover to the next day: will always return one of these: 'Midnight', '9 am' or '10 am'
<#forecastenc> 	"forecast" 	 	Depending on Settings, outputs either the forecast supplied by your weather station or the Cumulus (Zambretti) forecast. With all reserved HTML characters like space, and all those above {decimal base} character code 159, encoded as HTML entities
<#year> 	"year" 	 	(Static information except on New Year's Eve/New Year's Day transition) The current year as a 4-digit number. Example format: 2009
<#yesterday> 	"yesterday" 	 	(Fairly static information as only changes when calendar day changes) The date of the calendar day that has most recently finished. The default format depends on the locale you use to run Cumulus
<#metdateyesterday format=yyyy-MM-dd>	"metdateyesterdayISO" 	 	(Fairly static information as only changes at start of rollover) The date of the meteorological day that has most recently finished. Using the date formatting element of ISO 8601 Data elements and interchange formats
Note: The JSON object variable name is different to the tag name, the variable name chosen indicates this is in ISO 8601 format, not your locale format.
<#date> 	"date" 	 	(Only changes when calendar day changes) The current date - format depends on locale you use to run Cumulus
<#time> 	"time" 	 	The current time and date as per full date-time format in your locale. Example result (actual format depends on locale settings): 18:30 on 30 December 2009.
<#monthname> 	"monthname" 	 	(Only changes when calendar month changes) The current calendar month using words defined for your locale. Example format: July
Note: If you use 9 am or 10 am rollover, on the first day of a month this variable will (before rollover) display wrong meteorological month
<#temp> 	"temp" 	 	The most recently measured outside (air) temperature
<#tempunit> 	"tempunit" 	 	(Static information) The unit associated with all measured, and derived, temperature values
<#rainunit> 	"rainunit" 	 	(Static information) The unit associated with all reported rainfall values
<#windunit> 	"windunit" 	 	(Static information) The unit associated with all reported wind speed and gust values
<#windrununit> 	"windrununit" 	 	(Static information) The unit derived from previous entry after multiplying by time
<#pressunit> 	"pressunit" 	 	(Static information) The unit associated with all reported atmospheric pressure values
<#dew> 	"dew" 	 	The current dew point either as reported by weather station, or calculated by MX, depending on Settings
<#wchill> 	"wchill" 	 	The current wind chill either as reported by weather station, or calculated by MX from current air temperature and current average wind speed, depending on Settings
Note: There is more information on Feels Like temperature page.
<#hum> 	"hum" 	 	The current outside relative humidity as reported by weather station
<#heatindex> 	"heatindex" 	 	The current USA Heat index as calculated by MX. Note: There is more information on Feels Like temperature page.
<#apptemp> 	"apptemp" 	 	The current Australian apparent temperature. Note: There is more information on Feels Like temperature page.
<#feelslike> 	"feelslike" 	 	The current Feels Like temperature.
<#SolarRad> 	"SolarRad" 	 	Current solar radiation. Output should be ignored if your station does not have a solar sensor.
<#ET> 	"ET" 	 	Current evapotranspiration. Applies only to particular Davis stations, equipped with a solar sensor. The value provided by the Davis station is unreliable.
<#UV> 	"UV" 	 	Current UV index. Requires your station to have a UV sensor.
<#THWindex> 	"THWindex" 	n/a 	Included in release 3.10.1 file in error, this requires a Davis DLL that is not available to MX
<#TempChangeLastHour> 	"TempChangeLastHour" 	 	Calculated by MX by subtracting the outside air temperature one hour ago <#RecentOutsideTemp h=1> from the current outside air temperature <#temp>
<#rfall> 	"rfall" 	 	The total rainfall (derived from count now minus count at rollover) since last rollover (can be adjusted using Rain Today option in settings, but that does not affect the other outputs below)
<#rrate> 	"rrate" 	 	Cumulus calculates the rainfall rate by subtracting the count X minutes ago from the current count and dividing by X. When Cumulus is left running, the value of X is dependent on weather station type.
<#rmonth> 	"rmonth" 	 	The total rainfall (derived from summing daily rainfall amounts) for the month so far
<#ryear> 	"ryear" 	 	The total rainfall, (derived from summing daily rainfall amount, plus any adjustment defined in Settings for this calendar year) for the rain season (starting month defined in Settings, so does not have to align with calendar year)
<#rhour> 	"rhour" 	 	The total rainfall in last hour (derived from count now, minus count one hour ago). Equivalent to (<#rfall> - <#RecentRainToday h=1>) (unless rollover happened within last hour)
<#LastRainTip format="d MMM"> 	"LastRainTip" 	 	Date of last rain gauge tip (e.g 6 Sep)
<#rmidnight> 	"rmidnight" 	 	The total rainfall (derived from count now minus count at midnight) so far this calendar day
<#r24hour> 	"r24hour" 	 	The total rainfall (derived from count now minus count 24 hours ago) in last 24 hours
<#wgust> 	"wgust" 	 	The highest wind reading (by default) in the last 10 minutes. (Can be affected by Settings)
<#wspeed> 	"wspeed" 	 	The 10-minute average, if you have Cumulus set to calculate a 10-minute average. Otherwise, it's the latest 'wind' value from the console (i.e. the current speed as determined by the station).
<#avgbearing> 	"avgbearing" 	 	Average wind bearing in degrees over last X minutes. (X is ten by default or as configured using AvgBearingMinutes in Cumulus.ini) Range of output is 1-360, 0=Calm
<#wdir> 	"wdir" 	 	Average wind bearing over last 10 minutes as a compass point - e.g. ESE. The output can be configured using Strings.ini in a [Compass] section based on that in Samplestring.ini.
<#beaufort> and <#beaudesc> 	"beaufort" and "beaudesc"	e.g. 	The first JSON parameter reports the same as "wspeed", but expressed as a force number on the Beaufort scale, e.g. "6". The second parameter reports a description associated with that scale, that can be configured using Strings.ini in a [Beaufort] section based on that in Samplestring.ini.
<#BearingRangeFrom> 	"BearingRangeFrom" 	 	The 'lowest' clockwise bearing in the last X minutes (X is ten by default or as configured using AvgBearingMinutes in Cumulus.ini)
<#BearingRangeTo> 	"BearingRangeTo" 	 	The 'highest' clockwise bearing in the last 10 minutes (or as configured using AvgBearingMinutes in Cumulus.ini)
<#press> 	"press" 	 	The sea level pressure as supplied by your station (or if station only supplies actual pressure, corrected to SLP by a factor supplied by your weather station)
<#presstrend> 	"presstrend" 	 	The pressure trend in words - values can be set in the Strings.ini file in a [Trends] section based on that in Samplestring.ini.
<#presstrendval> 	"presstrendval" 	 	The average rate of pressure change over the last three hours, calculated from (<#press> - <#RecentPressure h=3>) / 3
===Daily extremes for today===
Web tag_name 	JSON Variable 	Web page span id 	Function
<#tempTH> and <#TtempTH> 	"tempTH" and "TtempTH" 	e.g.<span data-cmxdata="tempTH"> 	Highest temperature this meteorological day, and time, taken from Today.ini
<#tempTL> and <#TtempTL> 	"tempTL" and "TtempTL" 	e.g.<span data-cmxdata="tempTL"> 	Lowest temperature this meteorological day, and time, taken from today.ini
<#temprange> 	"temprange" 	e.g.<span data-cmxdata="temprange"> 	Calculated by MX using <#tempTH> - <#tempTL>
<#apptempTH> and <#TapptempTH> 	"apptempTH" and "TapptempTH" 	e.g.<span data-cmxdata="apptempTH"> 	Highest Australian Apparent Temperature derived by MX for this meteorological day, and time, taken from today.ini
<#apptempTL> and <#TapptempTL> 	"apptempTL" and "TapptempTL" 	e.g.<span data-cmxdata="apptempTL"> 	Lowest Australian Apparent Temperature derived by MX for this meteorological day, and time, taken from today.ini
<#feelslikeTH> and <#TfeelslikeTH> 	"feelslikeTH" and "TfeelslikeTH" 	e.g.<span data-cmxdata="feelslikeTH"> 	Highest Feels Like temperature derived by MX for this meteorological day, and time, taken from today.ini
<#feelslikeTL> and <#TfeelslikeTL> 	"feelslikeTL" and "TfeelslikeTL" 	e.g.<span data-cmxdata="feelslikeTL"> 	Lowest Feels Like temperature derived by MX for this meteorological day, and time, taken from today.ini
<#wchillTL> and <#TwchillTL> 	"wchillTL" and "TwchillTL" 	e.g.<span data-cmxdata="wchillTL"> 	Greatest Wind Chill, based on combining Highest Wind Speed and Lowest Outside Air Temperature, derived by MX for this meteorological day, and time, taken from today.ini
<#heatindexTH> and <#TheatindexTH> 	"heatindexTH" and "TheatindexTH" 	e.g.<span data-cmxdata="heatindexTH"> 	Highest USA Heat Index, derived by MX for this meteorological day, and time, taken from today.ini
Note: You could tailor the template to use Canadian Humidity Index (Humidex) instead by replacing <#heatindexTH> and <#TheatindexTH> with <#humidexTH> and <#ThumidexTH>
<#humTH> and <#ThumTH> 	"humTH" and "ThumTH" 	e.g.<span data-cmxdata="humTH"> 	Highest Relative Humidity, derived by MX for this meteorological day, and time, taken from today.ini
<#humTL> and <#ThumTL> 	"humTL" and "ThumTL" 	e.g.<span data-cmxdata="humTL"> 	Lowest Relative Humidity, derived by MX for this meteorological day, and time, taken from today.ini
<#solarTH> and <#TsolarTH> 	"solarTH" and "TsolarTH" 	e.g.<span data-cmxdata="solarTH"> 	Highest Solar Radiation, output should be ignored if your station does not have a solar sensor, derived by MX for this meteorological day, and time, taken from today.ini
<#SunshineHours> 	"SunshineHours" 	<span data-cmxdata="SunshineHours"> 	Today's hours of sunshine so far, output should be ignored if your station does not have a solar sensor, derived by MX for this meteorological day, taken from today.ini
<#UVTH> and <#TUVTH> 	"UVTH" and "TUVTH" 	e.g.<span data-cmxdata="UVTH"> 	Highest Ultra Violet Radiation, output should be ignored if your station does not have a UV sensor, derived by MX for this meteorological day, and time, taken from today.ini
<#rrateTM and <#TrrateTM> 	"rrateTM" and "TrrateTM" 	e.g.<span data-cmxdata="rrateTM"> 	Highest Rainfall Rate, derived by MX for this meteorological day, and time, taken from today.ini
<#hourlyrainTH> and <#ThourlyrainTH> 	"hourlyrainTH" and "ThourlyrainTH" 	e.g.<span data-cmxdata="hourlyrainH"> 	Highest Rainfall in any 60 minutes, derived by MX for this meteorological day, and time, taken from today.ini
<#ConsecutiveRainDays> and <#ConsecutiveDryDays>	"ConsecutiveRainDays" and "ConsecutiveDryDays"	e.g.<span data-cmxdata="ConsecutiveDryDays">	Counts by MX of consecutive days when daily rainfall is above, and below, respectively the threshold set in Settings
<#wgustTM> and <#wgustTM> 	"wgustTM" and "TwgustTM" 	e.g.<span data-cmxdata="wgustTM"> 	Highest Gust (maximum of all "highest wind reading in the last X minutes"), derived by MX for this meteorological day, and time, taken from today.ini
<#windTM> and <#TwindTM> 	"windTM" and "TwindTM" 	e.g.<span data-cmxdata="windTM"> 	Today's maximum (average) wind speed, derived by MX for this meteorological day, and time, taken from today.ini
<#Tbeaufort> 	"Tbeaufort" 	<span data-cmxdata="Tbeaufort"> 	Here the "T" prefix, does not mean time, but "today"; reports the Beaufort force represented by Today's maximum (average) wind speed
<#windrun> 	"windrun" 	<span data-cmxdata="windrun"> 	Today's overall average wind speed, multiplied by hours so far for this meteorological day, taken from today.ini
<#domwindbearing> and <#domwinddir> 	"domwindbearing" and "domwinddir" 	e.g.<span data-cmxdata="domwdirdir"> 	Taking the individual wind speeds and associated direction, so far for this meteorological day, MX calculates by vector arithmetric the dominant direction. The first JSON variable has the direction as a bearing in degrees (0=calm), and the second as a compass direction (see previous sub-section for how to customise this output)
<#pressTH> and <#TpressTH> 	"pressTH" and "TpressTH" 	e.g.<span data-cmxdata="pressTH"> 	Highest Sea Level Pressure, derived by MX for this meteorological day, and time, taken from today.ini
<#pressTL> and <#TpressTL> 	"pressTL" and "TpressTL" 	e.g.<span data-cmxdata="pressTL"> 	Lowest SL Pressure, derived by MX for this meteorological day, and time, taken from today.ini
===Daily extremes for yesterday===
Web tag_name 	JSON Variable 	Web page span id 	Function
<#tempYH> and <#TtempYH> 	"tempYH" and "TtempYH" 	e.g.<span data-cmxdata="tempYH"> 	Highest temperature on previous meteorological day, and time, taken from last line stored in Dayfile.txt
<#tempYL> and <#tempYL> 	"tempYL" and "TtempYL" 	e.g.<span data-cmxdata="tempYL"> 	Lowest temperature on previous meteorological day, and time, taken from last line stored in dayfile.txt
<#temprangeY> 	"temprangeY" 	<span data-cmxdata="temprangeYL"> 	Reports <#tempYH> - <#tempYL>
<#apptempYH> and <#TapptempYH> 	"apptempYH" and "TapptempYH" 	e.g.<span data-cmxdata="apptempYH"> 	Highest apparent temperature on previous meteorological day, and time, taken from last line stored in dayfile.txt
<#apptempYL> and <#apptempYL> 	"apptempYL" and "TapptempYL" 	e.g.<span data-cmxdata="apptempYL"> 	Lowest apparent temperature on previous meteorological day, and time, taken from last line stored in dayfile.txt
<#feelslikeYH> and <#TfeelslikeYH> 	"feelslikeYH" and "TfeelslikeYH" 	e.g.<span data-cmxdata="feelslikeYH"> 	Highest feels like temperature on previous meteorological day, and time, taken from last line stored in dayfile.txt
<#feelslikeYL> and <#TfeelslikeYL> 	"feelslikeYL" and "TfeelslikeYL" 	e.g.<span data-cmxdata="feelslikeYL"> 	Lowest feels like temperature on previous meteorological day, and time, taken from last line stored in dayfile.txt
<#wchillYL> and <#TwchillYL> 	"wchillYL" and "TwchillYL" 	e.g.<span data-cmxdata="wchillYL"> 	Greatest Wind Chill, based on combining Highest Wind Speed and Lowest Outside Air Temperature, taken from last line stored in dayfile.txt
<#heatindexYH> and <#TheatindexYH> 	"heatindexYH" and "TheatindexYH" 	e.g.<span data-cmxdata="heatindexYH"> 	Highest USA Heat Index, derived by MX for this meteorological day, and time, taken from last line stored in dayfile.txt
Note: The Canadian Humidity Index (Humidex) could be used instead by replacing <#heatindexYH> and <#TheatindexYH> with <#humidexYH> and <#ThumidexYH>
<#humYH> and <#ThumYH> 	"humYH" and "ThumYH" 	e.g.<span data-cmxdata="humYH"> 	Highest relative humidity on previous meteorological day, and time, taken from last line stored in dayfile.txt
<#humYL> and <#ThumYL> 	"humYL" and "ThumYL" 	e.g.<span data-cmxdata="humYL"> 	Lowest relative humidity on previous meteorological day, and time, taken from last line stored in dayfile.txt
<#solarYH> and <#solarYH> 	"solarYH" and "TsolarYH" 	e.g.<span data-cmxdata="solarYH"> 	Highest Solar Radiation, output should be ignored if your station does not have a solar sensor, and time, taken from last line stored in dayfile.txt
<#YSunshineHours> 	"YSunshineHours" 	e.g.<span data-cmxdata="YSunshineHours">	Yesterday's sunshine hours, taken from last line stored in dayfile.txt
<#UVYH> and <#TUVYH> 	"UVYH" and "TUVYH" 	e.g.<span data-cmxdata="UVYH"> 	Highest Ultra Violet Radiation, output should be ignored if your station does not have a UV sensor, taken from last line stored in dayfile.txt
<#rfallY>, <#rrateYM>, <#TrrateYM>, <#hourlyrainYH>, <#ThourlyrainYH>	"rfallY", "rrateYM", "TrrateYM", "hourlyrainYH", "ThourlyrainYH"	e.g.<span data-cmxdata="hourlyrainYH"> 	Respectively total rainfall, highest rainfall rate and time, highest rainfall in any 60 minutes and time, taken from last line stored in dayfile.txt
<#wgustYM> and <#TwgustYM> 	"wgustYM" and "TwgustYM" 	e.g.<span data-cmxdata="wgustYM"> 	Highest gust, and time, taken from last line stored in dayfile.txt
<#windYM> and <#TwindYM> and <#Ybeaufort> 	"windYM" and "TwindYM" and "Ybeaufort" 	e.g.<span data-cmxdata="windYM"> 	Highest average wind speed, time, and equivalent Beaufort Force number, taken from last line stored in dayfile.txt
<#windrunY> 	"windrunY" 	<span data-cmxdata="windrunY"> 	Yesterday's overall average wind speed, multiplied by 24 hours representing whole of that meteorological day, taken from last line stored in dayfile.txt
<#domwindbearingY> and <#domwinddirY> 	"domwindbearingY" and "domwinddirY" 	e.g.<span data-cmxdata="domwinddirY"> 	Taking the individual wind speeds and associated direction, for previous meteorological day, MX calculated (for last line stored in dayfile.txt) by vector arithmetric the dominant direction. The first JSON variable has the direction as a bearing in degrees (0=calm), and the second as a compass direction (see previous sub-section for how to customise this output)
<#pressYH> and <#TpressYH> 	"pressYH" and "TpressYH" 	e.g.<span data-cmxdata="pressYH"> 	Highest sea level pressure on previous meteorological day, and time, taken from last line stored in dayfile.txt
<#pressYL> and <#TpressYL> 	"pressYL" and "TpressYL" 	e.g.<span data-cmxdata="pressY"> 	Lowest SL pressure on previous meteorological day, and time, taken from last line stored in dayfile.txt
===Monthly extremes for month-to-date===
Web tag_name 	JSON Variable 	Web page span id 	Function
<#MonthTempH>, <#MonthTempHT> and <#MonthTempHD> 	"MonthTempH", "MonthTempHT" and "MonthTempHD" 	e.g.<span data-cmxdata="MonthTempH"> 	Highest temperature this meteorological month, time, and date, taken from Month.ini
<#MonthTempL>, <#MonthTempLT> and <#MonthTempLD> 	"MonthTempL", "MonthTempLT" and "MonthTempLD" 	e.g.<span data-cmxdata="MonthTempL"> 	Lowest temperature this meteorological month, time, and date, taken from month.ini
<#MonthDewPointH>, <#MonthDewPointHT> and <#MonthDewPointHD> 	"MonthDewPointH", "MonthDewPointHT" and "MonthDewPointHD" 	e.g.<span data-cmxdata="MonthDewPointH"> 	(Did you notice this was not included for today nor yesterday) Highest dew point this meteorological month, time, and date, either as reported by weather station, or calculated by MX, depending on Settings, taken from month.ini
<#MonthDewPointL>, <#MonthDewPointLT> and <#MonthDewPointLD> 	"MonthDewPointL", "MonthDewPointLT" and "MonthDewPointLD" 	e.g.<span data-cmxdata="MonthDewPointL"> 	(Did you notice this was not included for today nor yesterday) Lowest dew point this meteorological month, time, and date, either as reported by weather station, or calculated by MX, depending on Settings, taken from month.ini
<#MonthAppTempH>, <#MonthAppTempHT> and <#MonthAppTempHD> 	"MonthAppTempH", "MonthAppTempHT" and "MonthAppTempHD" 	e.g.<span data-cmxdata="MonthAppTempH"> 	Highest apparent temperature this meteorological month, time, and date, taken from month.ini
<#MonthAppTempL>, <#MonthAppTempLT> and <#MonthAppTempLD> 	"MonthAppTempL", "MonthAppTempLT" and "MonthAppTempLD" 	e.g.<span data-cmxdata="MonthAppTempLT"> 	Lowest apparent temperature this meteorological month, time, and date, taken from month.ini
<#MonthFeelsLikeH>, <#MonthFeelsLikeHT> and <#MonthFeelsLikeHD> 	"MonthFeelsLikeH", "MonthFeelsLikeHT" and "MonthFeelsLikeHD" 	e.g.<span data-cmxdata="MonthFeelsLikeH"> 	Highest feels like temperature this meteorological month, time, and date, taken from month.ini
<#MonthFeelsLikeL>, <#MonthFeelsLikeLT> and <#MonthFeelsLikeLD> 	"MonthFeelsLikeL", "MonthFeelsLikeLT" and "MonthFeelsLikeLD" 	e.g.<span data-cmxdata="MonthFeelsLikeLD"> 	Lowest feels like temperature this meteorological month, time, and date, taken from month.ini
<#MonthWChillL>, <#MonthWChillLT> and <#MonthWChillLD> 	"MonthWChillL", "MonthWChillLT" and "MonthWChillLD" 	e.g.<span data-cmxdata="MonthWChillLT"> 	Greatest Wind Chill, based on combining Highest Wind Speed and Lowest Outside Air Temperature, taken from month.ini
<#MonthHeatIndexH>, <#MonthHeatIndexHT> and <#MonthHeatIndexHT> 	"MonthHeatIndexH", "MonthHeatIndexHT" and "MonthHeatIndexHD" 	e.g.<span data-cmxdata="MonthheatIndexH"> 	Highest USA Heat Index, derived by MX for this meteorological month, time, and date, taken from month.ini
Note: The Canadian Humidity Index (Humidex) could be used instead by replacing <#MonthHeatIndexH>, <#MonthHeatIndexHT> and <#MonthHeatIndexHT> with <#MonthHumidexH>, <#MonthHumidexHT> and <#MonthHumidexHD>
<#MonthMinTempH> and <#MonthMinTempHD> 	"MonthMinTempH" and "MonthMinTempHD" 	e.g.<span data-cmxdata="MonthMinTempH"> 	From looking at all daily Highest temperature for this meteorological month, these JSON parameters report the lowest found, and the date.
NOTE: The time that temperature was seen is not reported in this file, so cannot be shown on the default web pages
<#MonthMaxTempL> and <#MonthMaxTempLD> 	"MonthMaxTempL" and "MonthMaxTempLD" 	e.g.<span data-cmxdata="MonthMaxTempLD"> 	From looking at all daily Lowest temperature for this meteorological month, these JSON parameters report the highest found, and the date.
NOTE: The time that temperature was seen is not reported in this file, so cannot be shown on the default web pages
<#MonthHumH>, "<#MonthHumHT> and <#MonthHumHD> 	"MonthHumH", "MonthHumHT" and "MonthHumHD" 	e.g.<span data-cmxdata="MonthHumH"> 	Highest relative humidity this meteorological month, time, and date, taken from month.ini
<#MonthHumL>, "<#MonthHumLT> and <#MonthHumLD> 	"MonthHumL", "MonthHumLT" and "MonthHumLD" 	e.g.<span data-cmxdata="MonthHumLD"> 	Lowest relative humidity this meteorological month, time, and date, taken from month.ini
<#MonthHighDailyTempRange> and <#MonthHighDailyTempRangeD> 	"MonthHighDailyTempRange" and "MonthHighDailyTempRangeD" 	e.g.<span data-cmxdata="MonthHighDailyTempRangeD">	Highest daily temperature range this meteorological month, time, and date, taken from month.ini
<#MonthLowDailyTempRange> and <#MonthLowDailyTempRangeD> 	"MonthLowDailyTempRange" and "MonthLowDailyTempRangeD" 	e.g.<span data-cmxdata="MonthLowDailyTempRange"> 	Lowest daily temperature range this meteorological month, time, and date, taken from month.ini
<#MonthRainRateH>, <#MonthRainRateHT> and <#MonthRainRateHD> 	"MonthRainRateH", "MonthRainRateHT" and "MonthRainRateHD" 	e.g.<span data-cmxdata="MonthRainRateH"> 	Highest rainfall rate this meteorological month, time, and date, taken from month.ini
<#MonthHourlyRainH>, <#MonthHourlyRainHT> and <#MonthHourlyRainHD> 	"MonthHourlyRainH", "MonthHourlyRainHT" and "MonthHourlyRainHD" 	e.g.<span data-cmxdata="MonthHourlyRainH"> 	Highest rainfall in any 60 minutes of this meteorological month, time, and date, taken from month.ini
<#MonthDailyRainH> and <#MonthDailyRainHD> 	"MonthDailyRainH" and "MonthDailyRainHD" 	e.g.<span data-cmxdata="MonthDailyRainH"> 	Amount and date for wettest day, of this meteorological month, taken from month.ini
<#MonthLongestDryPeriod>, <#MonthLongestDryPeriodD>, <#MonthLongestWetPeriod> and <#MonthLongestWetPeriodD>	"MonthLongestDryPeriod", "MonthLongestDryPeriodD", "MonthLongestWetPeriod" and "MonthLongestWetPeriodD"	e.g.<span data-cmxdata="MonthLongestWetPeriodD"> 	Largest Counts by MX of consecutive days when daily rainfall is above, and below, respectively the threshold set in Settings, of this meteorological month, taken from month.ini
<#MonthGustH>, <#MonthGustHT> and <#MonthGustHD> 	"MonthGustH", "MonthGustHT" and "MonthGustHD" 	e.g.<span data-cmxdata="MonthGustH"> 	Highest Gust (maximum of all "highest wind reading in the last X minutes"), derived by MX for this meteorological month, time, and date, taken from month.ini
<#MonthWindH>, <#MonthWindHT> and <#MonthWindHD> 	"MonthWindH", "MonthWindHT" and ""MonthWindHD" 	e.g.<span data-cmxdata="MonthWindH"> 	The maximum (average) wind speed, derived by MX for this meteorological month, time, and date, taken from month.ini
<#MonthWindRunH> and <#MonthWindRunHD> 	"MonthWindRunH" and "MonthWindRunHD" 	e.g.<span data-cmxdata="MonthWindRunH"> 	Highest daily wind run this meteorological month, and date, taken from month.ini
<#MonthPressL>, <#MonthPressLT> and <#MonthPressLD> 	"MonthPressL", "MonthPressLT" and "MonthPressLD" 	e.g.<span data-cmxdata="MonthPressLT"> 	Lowest Sea Level Pressure this meteorological month, time, and date, taken from month.ini
<#MonthPressH>, <#MonthPressHT> and <#MonthPressHD> 	"MonthPressH", "MonthPressHT" and "MonthPressHD" 	e.g.<span data-cmxdata="MonthPressH"> 	Highest Sea Level Pressure this meteorological month, time, and date, taken from month.ini
===Month-by-Month All-time Extremes===
Taken from Monthlyalltime.ini.
A JASON array called "monthlyrecs" contains several sub-arrays as follows:
JSON Array Variable 	Web page span id 	Function
"hightemp", "hightempT", "lowmaxtemp" and "lowmaxtempT" 	e.g.<span data-cmxdata="TempH"> 	Highest temperature extremes: First (value) and second (date/time) array contain highest of daily highs, third (value) and fourth (date/time) array contain lowest, for each month (elements numbered 1 to 12)
"lowtemp", "lowtempT", "highmintemp" and "highmintempT" 	e.g.<span data-cmxdata="TempL"> 	Lowest temperature extremes: First (value) and second (date/time) array contain lowest of daily lows, third (value) and fourth (date/time) array contain highest, for each month (elements numbered 1 to 12)
"highDP", "highDPT", "lowDP" and "lowDPT" 	e.g.<span data-cmxdata="DewPointH"> 	Dew Point: First (value) and second (date/time) array contain highest, third (value) and fourth (date/time) array contain lowest, for each month (elements numbered 1 to 12)
"highapptemp", "highapptempT", "lowapptemp" and "lowapptempT" 	e.g.<span data-cmxdata="AppTempH"> 	Apparent Temperature: First (value) and second (date/time) array contain highest, third (value) and fourth (date/time) array contain lowest, for each month (elements numbered 1 to 12)
"highfeelslike", "highfeelslikeT", "lowfeelslike" and "lowfeelslikeT"	e.g.<span data-cmxdata="FeelsLikeH"> 	Feels Like Temperature: First (value) and second (date/time) array contain highest, third (value) and fourth (date/time) array contain lowest, for each month (elements numbered 1 to 12)
"lowchill" and "lowchillT" 	e.g.<span data-cmxdata="WChillLT"> 	Greatest Wind Chill: First (value) and second (date/time) array contain combination of high wind speed and low temperature, for each month (elements numbered 1 to 12)
"highheatindex" and "highheatindexT" 	e.g.<span data-cmxdata="HeatIndexH"> 	Highest USA Heat Index: First (value) and second (date/time) array contain highest, for each month (elements numbered 1 to 12)
"highhum", "highhumT", "lowhum" and "lowhumT" 	e.g.<span data-cmxdata="HumH"> 	Relative Humidity: First (value) and second (date/time) array contain highest, third (value) and fourth (date/time) array contain lowest, for each month (elements numbered 1 to 12)
"hightemprange", "hightemprangeT", "lowtemprange" and "lowtemprangeT"	e.g.<span data-cmxdata="HighDailyTempRange">	Daily Temperature range: First (value) and second (date) array contain highest, third (value) and fourth (date) array contain lowest, for each month (elements numbered 1 to 12)
"rainrate", "rainrate", "hourlyrain", "hourlyrainT" 	e.g.<span data-cmxdata="RainRateH"> 	First (value) and second (date/time) array contain highest rain rate, third (value) and fourth (date/time) array contain highest rainfall in any 60 minutes, for each month (elements numbered 1 to 12)
"dailyrain", "dailyrainT", "monthlyrain" and "monthlyrainT" 	e.g.<span data-cmxdata="DailyRainH"> 	First (rainfall) and second (date) array contain wettest day, third (rainfall total) and fourth (year) array contain highest monthly rainfall, for each month (elements numbered 1 to 12)
"dryperiod", "dryperiodT", "wetperiod" and "wetperiodT" 	e.g.<span data-cmxdata="LongestWetPeriod"> 	Largest Counts by MX of consecutive days when daily rainfall is above, and below, respectively the threshold set in Settings: First (count) and second (end-date) array contain driest, third (count) and fourth (end-date) array contain wettest, for each month (elements numbered 1 to 12)
"highgust", "highgustT", "highwind" and "highwindT" 	e.g.<span data-cmxdata="GustH"> 	Wind Speeds:First (value) and second (date/time) array contain highest gust, third (value) and fourth (date/time) array contain highest average wind speed, for each month (elements numbered 1 to 12)
"highwindrun" and "highwindrun" 	e.g.<span data-cmxdata="WindRunH"> 	Daily Wind Run: First (value) and second (date/time) array contain highest, for each month (elements numbered 1 to 12)
"highpress", "highpressT", "lowpress" and "lowpressT" 	e.g.<span data-cmxdata="PressH"> 	Sea Level Pressure: First (value) and second (date/time) array contain highest, third (value) and fourth (date/time) array contain lowest, for each month (elements numbered 1 to 12)
===Yearly extremes for year-to-date===
See the monthly extremes table (above) and replace "Month" with "Year". Taken from Year.ini.
===All-time extremes (since Cumulus started)===
Taken from Alltime.ini.
Web tag_name 	JSON Variable 	Web page span id 	Function
<#tempH>, <#TtempH>, <#tempL> and <#TtempL> 	"tempH", "TtempH", "tempL" and "TtempL" 	e.g.<span data-cmxdata="tempH"> 	Outdoor Air temperature: First JASON variable contains highest value, second variable contains associated date/time, third variable contains lowest value, last variable contains associated date/time
<#dewpointH>, <#TdewpointH>, <#dewpointL> and <#TdewpointL> 	"dewpointH", "TdewpointH", "dewpointL" and "TdewpointL" 	e.g.<span data-cmxdata="dewpointH"> 	Dew point: First JASON variable contains highest value, second variable contains associated date/time, third variable contains lowest value, last variable contains associated date/time
<#apptempH>, <#TapptempH>, <#apptempL> and <#TapptempL> 	"apptempH", "TapptempH", "apptempL" and "TapptempL" 	e.g.<span data-cmxdata="apptempH"> 	Apparent Temperature: First JASON variable contains highest value, second variable contains associated date/time, third variable contains lowest value, last variable contains associated date/time
<#feelslikeH>, <#TfeelslikeH>, <#feelslikeL> and <#TfeelslikeL> 	"feelslikeH", "TfeelslikeH", "feelslikeL" and "TfeelslikeL" 	e.g.<span data-cmxdata="feelslikeH"> 	Feels Like temperature: First JASON variable contains highest value, second variable contains associated date/time, third variable contains lowest value, last variable contains associated date/time
<#wchillH> and <#TwchillH> 	"wchillH" and "TwchillH" 	e.g.<span data-cmxdata="wchillH"> 	Greatest Wind Chill: First (value) and second (date/time) array contain combination of high wind speed and low temperature
<#heatindexH> and <#TheatindexH> 	"heatindexH" and "TheatindexH" 	e.g.<span data-cmxdata="heatindexH"> 	Highest USA Heat Index: First (value) and second (date/time) array contain highest
(You need to manually edit this file,and the web page, to use Canadian Humidity Index instead)
<#mintempH> and <#TmintempH> 	"mintempH" and "TmintempH" 	e.g.<span data-cmxdata="mintempH"> 	All time high minimum temperature and date
<#maxtempL> and <#TmaxtempL> 	"maxtempL" and "TmaxtempL" 	e.g.<span data-cmxdata="TmaxtempL"> 	All time low maximum temperature and date
<#humH>, <#ThumH>, <#humL> and <#ThumL> 	"humH", "ThumH", "humL" and "ThumL" 	e.g.<span data-cmxdata="humH"> 	Relative Humidity: First JASON variable contains highest value, second variable contains associated date/time, third variable contains lowest value, last variable contains associated date/time
<#HighDailyTempRange>, <#THighDailyTempRange>, <#LowDailyTempRange> and <#TLowDailyTempRange> 	"HighDailyTempRange", "THighDailyTempRange", "LowDailyTempRange" and "TLowDailyTempRange"	e.g.<span data-cmxdata="THighDailyTempRange">	All time high and low daily temperature range
<#rrateM>, <#TrrateM>, <#rfallhH>, <#TrfallhH>, <#rfallH>, <#TrfallH>, <#rfallmH> and <#TrfallmH>	"rrateM", "TrrateM", "rfallhH", "TrfallhH", "rfallH", "TrfallH", "rfallmH" and "TrfallmH"	e.g.<span data-cmxdata="rfallH"> 	Highest ever rainfall rate and time/date, highest 60 minute rainfall and end-time/date, highest monthly rainfall and month/year
<#LongestDryPeriod>, <#TLongestDryPeriod>, <#LongestWetPeriod> and <#TLongestWetPeriod> 	"LongestDryPeriod", "TLongestDryPeriod", "LongestWetPeriod" and "TLongestWetPeriod" 	e.g.<span data-cmxdata="TLongestDryPeriod"> 	Largest Counts by MX of consecutive days when daily rainfall is above, and below, respectively the threshold set in Settings: First (count) and second (end-date) variable contain driest, third (count) and fourth (end-date) variable contain wettest
<#gustM>, <#TgustM>, <#wspeedH> and <#TwspeedH> 	"gustM", "TgustM", "wspeedH" and "TwspeedH" 	e.g.<span data-cmxdata="wspeedH"> 	Wind Speeds:First (value) and second (date/time) variable contain highest gust, third (value) and fourth (date/time) variable contain highest average wind speed
<#windrunH> and <#TwindrunH> 	"windrunH" and "TwindrunH" 	e.g.<span data-cmxdata="TwindrunH"> 	Daily Wind Run: First (value) and second (date/time) variables contain highest
<#pressL>, <#TpressL>, <#pressH> and <#TpressH> 	"pressL", "TpressL", "pressH" and "TpressH" 	e.g.<span data-cmxdata="TpressH"> 	Sea Level Pressure: First JASON variable contains highest value, second variable contains associated date/time, third variable contains lowest value, last variable contains associated date/time