Category:Cumulus MX and Webtags (preserving history): Difference between pages

From Cumulus Wiki
(Difference between pages)
Jump to navigationJump to search
m
→‎Today: Snow explanation rewritten to emphasise C1 and MX differences
 
m (→‎Today: Snow explanation rewritten to emphasise C1 and MX differences)
 
[[Category:Terminology]]
 
=What is a web tag? =
 
Put simply, a web tag is included in a Cumulus template file to indicate where Cumulus should insert values when it produces an output file. The concept of [[Customised_templates#What_is_meant_by_.27Cumulus_processes_templates.27|processing templates]] is explained in another article. The output file can be a [[Customised_templates#HTML_5_-_a_very_quick_guide_to_structure|web page]], a [[Feels_Like#HTML_code_to_translate_web_tags_to_JavaScript_variables_.28as_modified_for_additional_parameters.29|JavaScript file]], a PHP script, or a [[Xml_webtags|eXtensible Mark-up Language (XML)]] file.
 
== Why does MX talk about tokens? ==
 
MX uses a '''token parser''' to read the web tags and replace them with the correct value, so if diagnostic output refers to tokens, it is saying the attempt to actually work out what content to return to replace the web tag with its tag name and parameters has encountered a problem.
 
<big>'''If you have any suggestions for improving this article'''</big>, either edit this page yourself, or put your suggestion in the correct [https://cumulus.hosiene.co.uk/viewforum.php?f=38 Support Sub-Forum]. Thank you.
{{TOCright}}
= Introduction =
 
=GENERAL TIP=
== What does Cumulus MX do? ==
 
The web tags available in the version/build you are using, can be listed (in Cumulus 1 or Cumulus MX) by adding the following line to [[Cumulus.ini#Section:_Station|Cumulus.ini]] in the [station] section...
That is covered elsewhere, in [[About Cumulus|the article that introduces Cumulus]].
 
ListWebTags=1
You may want to read that article first, that that will explain what Cumulus software can do and perhaps help you to:
*Learn what it can offer you if you are unsure whether Cumulus is right for you
*If you already use Cumulus, this might remind you of everything it offers.
 
Then start Cumulus and it will create a file called WebTags.txt in the same folder as where the executable is found. That file will list all the tags your build of Cumulus can currently generate. This list only contains the tag_names, it does not indicate what parameters they can take, nor does it include the brackets the tag name is surrounded by when you quote it in a template file for Cumulus to process.
If you do go off to read that article now, you will be linked back to this page.
 
An example of the output for an early MX version is at the end of this page (the actual output does not include commas, and has just one item per line, it has been compressed for inclusion in this article).
== This article ==
 
To stop Cumulus continuing to produce new versions of that file change the line to say ...
This Wiki article was originally exactly what Steve Loft said in the [https://cumulus.hosiene.co.uk/viewforum.php?f=39 MX early builds support forum] when he first started experimenting with Cumulus MX and access was restricted to those willing to experiment with his tests.
 
ListWebTags=0
In this rewrite, I am adding more as I explore more of the functionality of MX; and as I learn more from posts in the forum.
 
{{Version badge 1}}If you are using Cumulus 1, each build of that contains a build specific version of Cumulus Help, and within that help is a list of web tags with basic information on what each tag_name returns.
If you can correct anything I write, add anything I have not yet covered, or know something that I might not know, then please remember, anyone can update this article, I don't have any special access in the Wiki and any page I edit can be edited/corrected by anyone else.
 
=What this article covers =
During a period of my time in employment I was responsible for approving documentation on a large computerisation project, and later for supplying updated information for a public faced web site, and in both cases there were house style, and I probably continue to use that style.
 
#At the last count, a 3.5.x version of MX produces ''nine and a half million'' '''web tags'''!
You might be afraid to add your contribution because my style is not the same as your natural one. Don't worry; as long as you use short paragraphs or bullet points, with lots of headings, then your contribution can blend in.
# Those millions of web tags can actually produce billions of different outputs!
#But the file mentioned in previous section contains just 717 items (at 3.5.0, later versions of MX raise this count by another forty tags or so).
#How come this discrepancy?
 
*Well each web tag has the general format <tt><#tag_name optional_input_parameter optional_output_parameter></tt> and it is adding the optional input parameters that allow 717 tag names to define 9½ million values!
This article was originally comparatively short, as it gets longer I have moved some parts out. You may have suggestions for what else can be moved out of this article into separate articles? When in doubt to apply changes, please use the discussion page first.
*Adding all possible different output parameters generates the billions of different outputs!
 
Consequently, this article describes:
= Cumulus flavours =
*Over 7 hundred web tags -'''THIS ARTICLE MAY NOT CONTAIN ALL WEB TAGS AVAILABLE IN LATEST VERSION - It depends on someone updating this article if the developer does not have time to do so'''
*A score of input parameters that modify some of those tags (meaning some web tags can represent 12 different months for example)
*The components that make up output parameters (a guide to how you modify the output format)
** some control number of decimal places
** one controls whether decimal comma (if used) is replaced by decimal point (useful for some script languages)
**the majority modify the output from almost all web tags that report a time and/or date (there are so many ways to represent times and dates this multiples up the available output considerably)
*The way that some of those date modifiers are used for naming NOAA reports (a simple, but useful table)
 
==Cumulus 1 ==
 
The tables below are not able to indicate which of the billions of combinations possible are valid or invalid for particular tag names nor for particular release versions..
*Cumulus 1 was created in 2003 when Steve Loft moved to Wanlockhead and bought himself a weather station. Initial releases were very much tailored to his needs, changing what weather station it supported to match the make he was using.
*Subsequently, he made his software available to anybody, and enhanced what it did to suit not only his requirements buy also what other users asked for.
*The functionality of Cumulus grew and grew, there were a few bugs, and a few mistakes, but generally Cumulus software had a high reliability, and grew in popularity, especially when the internet made it easier for people to praise Cumulus on many unrelated sites.
*Increased popularity meant an increase in demand for more functionality, increased functionality made it more popular, and the spiral of development continued.
*Cumulus 1 had extensive help screens built into the package, it had an installation package, and produced a main screen when it was running that summarised the weather and gave access to all the settings and editors. This made Cumulus 1 very user friendly.
*Demand for enhancements soon exceeded the amount of spare time, Steve could devote to Cumulus outside his full-time job. A register of enhancement requests was created, so that Steve could track which he had implemented, but that register was lost when Steve moved to a different host.
*One widely supported request could not be implemented for Cumulus 1, to offer a version that would run on multiple operating systems, so Cumulus 2 was born (see below).
*Cumulus 1 development was halted for a while by the focus on Cumulus 2.
*Cumulus 1 development restarted when Cumulus 2 was aborted.
*The development environment for Cumulus 1 became obsolete, and Windows operating systems changed, making the development of Cumulus 1 more difficult, so Steve decided to have another go at a replacement (Cumulus 3).
*Development of Cumulus 1 ceased once Cumulus 3 (aka MX, see below) was able to work better than its C# predecessor Cumulus 2.
*Steve Loft decided not to release source code for Cumulus 1, so nobody else can develop Cumulus 1 any further.
*Consequently, Cumulus 1 functionality can not be changed, and without knowledge of how it was written, there is no ongoing support, just the experience of those who have used it, or are still using it.
*Fortunately, Steve Loft documented Cumulus 1 very well in the forum, and in the new Wiki that was started in August 2009, so Cumulus 1 continued to attract new users even when Cumulus 3 was made available as MX.
*When this article was first created in 2017, Cumulus 1 was still recommended for most users, and it would remain so for another couple of years.
*Even now in 2020, '''there are many, many more people using Cumulus 1 than are using MX'''.
 
==Applicability by version and build==
 
The tip at the start of this article tells you how to check which tags are available in whatever build of Cumulus you are actually using. Given how often a new release alters either what web tags are available or what parameters can be used with particular web tags, it is possible the tables below do not list all web tags at any version, and the tables can't say which modifiers are available at your version.
== Cumulus 2 ==
 
Because Cumulus 2 is no longer available, it has been ignored in the tables below. It never really worked for web page generation, so if you happen to have installed Cumulus 2 from when it was available, you probably don't care which web tags it supports.
*Steve Loft produced a Cumulus 2 where he tried to start again in September 2009. It was written in C# (which is the language used for MX), and it is fair to say that Steve did not find that new programming language easy, and in March 2010 he was really struggling to make Cumulus 2 work how he desired.
* Cumulus 2 did prove that a number of concepts (like separating "engine" from "admin interface") could work and it was a useful learning curve for when Steve decided to write Cumulus 3 (see below).
*One change that had been requested by several Cumulus 1 users was for better international viewing of web pages, with less dependence on time zones. To achieve this, one suggestion was that Cumulus should work in GMT (more widely known now as UTC). Cumulus 2 therefore read and logged all readings by UTC. Unfortunately, converting from local time used by weather stations, and most computer devices, never worked as smoothly as Steve Loft hoped, so this is one idea that was not adopted for Cumulus 3.
* Furthermore, Cumulus 2 never succeeded in getting some of the basic functionality like driving web pages to work, so it never offered much of the more useful functionality of Cumulus 1.
*But it was a good testing ground for new functionality and enhancements and regardless of whether they could be made to work fully in Cumulus 2, some were highlighting what Cumulus 1 lacked.
*In August 2010, the new features being tested in Cumulus 2 were added to Cumulus 1, and Cumulus 2 was discontinued.
 
[[File:Badge v1.png]]This badge is used to highlight text that applies to Cumulus 1.
== Cumulus 3 ==
*Use of this badge does NOT mean that all builds of Cumulus 1 are able to use the web tag.
*There are gaps in the Cumulus 1 documentation, and so it is not usual for the table entry to indicate when a particular web tags started to be available
*If you are using the final version of Cumulus 1, then the text highlighted by that badge does apply to you.
*In general, Cumulus 1 will silently ignore any web tag it does not recognise. This means that you might see the raw
web tag remaining after processing, or you might see nothing where the web tag was prior to processing. It also means that if you try to do a numeric calculation on a web tag that Cumulus 1 does not recognise, the calculation will fail, but you might not see an error message.
 
[[File:Badge vMx.png]]This badge is used to highlight text that applies to Cumulus 3 (MX) only.
*In 2015, Cumulus 3 also known as MX once it was made available to users, was experimental and it had limited functionality, much less than was available in Cumulus 1. This made MX innovative, but unfriendly.
*In many cases, it highlights web tags that are not available in Cumulus 1
*Consequently, at that time, most Cumulus users were using Cumulus 1, and just those wishing to take part in beta testing used MX.
*Use of this badge does not mean that all builds of MX are able to use this web tag
*Steve Loft started development of MX while he was still in full-time employment, but as retirement approached he worked fewer days per week and was faced with the question as to whether to spend more time on MX or more time with his wife, Beth, exploring places.
*Some attempt has been made to indicate '''either''' which MX build introduced individual tags, '''or''' from which build the web tag started giving the correct response (where earlier builds reported incorrect values for that web tag in some cases).
*When he fully retired, a life on the road beckoned, and they started travelling. Work on MX decreased, and work on Cumulus 1 was no longer possible, as he was limited to what his laptop and internet connection at stops could cope with.
*MX will raise an error:
*Various people offered to help him with MX if he was willing to make his source code available. Initially, Steve did not want anyone else to interfere with his creation, but when he and his wife found a new home the priorities changed in favour of a focus on his new life, and he wanted to cease involvement with Cumulus software, its wiki and forum.
**for any web tag it does not recognise at the version you are running
*Steve Loft who wrote and developed Cumulus 1 and MX while he was in Scotland, decided to cease to offer any support from his new home in France. After quite a while considering it, he decided to make the source code available.
**for any input parameter that the token parser is unable to recognise
*The various people who had offered to help develop MX now were able to see the source code and decide whether they really did want to get involved.
*MX treats output parameters differently:
*One programmer launched Cumulus 4, a new approach. Work continued on this for a while, but as far as I know it never made it into a working system, and I believe like Cumulus 2, it is abandoned.
**any output parameter that it does not recognise at all, is ignored
*Other programmers looked at the source and thought we can make MX useful by adding the missing functionality, both what Steve added in the source but never got into a public release; and the functionality that makes Cumulus 1 so popular but is missing in MX and makes it difficult for those who are using MX.
**any output parameter in a web tag that '''does not''' accept output parameters is also ignored
**any output parameter in a web tag that does accept output parameters, where the supplied parameter is inconsistent with the content of the web tag, is reported as an error by the token parser
**an output parameter that specifies only part of the standard output may be reported as an error because of single character rules (for example a tag that reports a time cannot understand '''format=H''', amongst the acceptable formats are ''format=%H'' for just hour and '''format=H:mm''' for hour and minutes but not seconds.
**any output parameter that contains incorrectly formatted characters in that output parameter will be treated as an error by the token parser (a common mistake is forgetting spaces are expected to be included with other literal characters by the MX token parser)
**if you use valid parameters but the wrong parameters, you are likely to be confused by the output (the most common cases result in seeing minutes where a month is wanted, or there is a misunderstanding of the concept where the same character has different meanings when on its own and when with other characters).
 
= NOAA style Report Naming =
== The MX future ==
 
== A brief history of these reports ==
* Mark Crossley was one of those who tried updating the MX source and producing a new release.
* In 2019, he made a successful first new release, and then focussed on adding some of the missing functionality. By 2020, he was not just adding in his own version of features that had been in Cumulus 1, he was also making MX talk to new weather station designs and deal with new sensors.
* '''During 2020 much extra functionality has been added to MX''', and MX is now able to persuade [[Moving from Cumulus 1 to MX|Cumulus 1 users]] that it might be the right time to make the swap to MX.
*Cumulus 1 was designed to work with weather stations that were available when it was written, the technology used by stations, and the models available, have both been changing since then.
*The ongoing development is adding lots more functionality into MX, it can do a lot more with the the numbers it reads from weather stations, and it can be updated when weather station features change.
*Therefore, the advice to newcomers is to use Cumulus MX, sometimes called Cumulus 3, because there was a Cumulus 2 (that was abandoned) and sometime ago there was a start on a Cumulus 4.
*Similarly, the advice to established Cumulus 1 users is you should now consider a move to MX as you are now missing out on many features available only in MX.
*However, there are no instructions built into the MX package, so it is hoped that the update of this article will help people to understand MX sufficiently to use it both more easily and to maximum capability.
*Currently, Mark Crossley who has been responsible for all recent MX releases is able to answer questions in the support forum [https://cumulus.hosiene.co.uk/viewforum.php?f=40 for recent MX releases], but this article will hopefully allow him to spend less time answering questions and more time improving MX (and more time for everything else in his life)
 
Cumulus 1, 2, and MX, generate climatological reports for both Monthly and Yearly periods. The reports were first added to Cumulus 2 after someone asked for this feature in enhancement request 44. They were based on Weatherlink reports, that in turn were based on climatological reports issued by The US National Oceanic and Atmospheric Administration's National Weather Service (the reason for using NOAA in the naming of the reports). Ken True implemented the Weatherlink reports in his Saragota suite, and Steve Loft took that as his starting point. Although they were first only in Cumulus 2, they were added to Cumulus 1 in version 1.9.2 (build 1004) released in July 2011, after the abandonment of Cumulus 2.
It would be wrong not to repeat what Mark has said here - '''MX is still not bug free, there is a lot more to correct as well as all the enhancements to cope with new weather station hardware'''.
 
== Encoding ==
There is a page (created in October 2018) listing [[MX Issues|MX Issues to be resolved]], but I suspect it is out of date. If you look through the release announcements for 2020, yes there are a lot of new features being added, but there is even more work on resolving bugs.
 
=== Why does encoding matter?===
== Restrictions on who can use MX ==
 
If you have problems with a web page not displaying the '''&deg;''' symbol correctly, it will be because the character set encoding is either not declared or not consistent.
MX makes extensive use of library packages:
* like bootstrap (cascade styling),
*datatables (display and manipulation of tables),
*JQuery (JavaScript package that provides code supports for multiple browsers and other libraries to work together),
*high stock (for drawing charts),
*datepicker (a JavaScript based routine for making date selection possible using a calendar type interface as not all browsers directly support that),
*handlebars (templates for generating HTML),
* alapaca (JavaScript from Gitana Software that generates interactive HTML5 forms),
*Steelseries (provides the gauges used),
*altEditor (for editing the log files) and a few more.
 
=== What encoding does my web page use?===
Fuller information on these is in [[#Library_software|Library software]] section.
Put simply, most modern web pages start with this:
<pre>
<!DOCTYPE html>
<!-- the above must be on the first line by itself and tells the browser that HTML 5 applies -->
<html lang="en"><!-- modify this to indicate your language -->
<head>
<meta charset="UTF-8"><!-- assigns the recommended standard encoding that copes with all international characters -->
...
</pre>
The last line shown there is critical, it indicates that the web page uses "utf-8" encoding.
 
You will find that all standard web templates included with MX start as shown above. For Cumulus 1, from build 1094 up the various builds defined for final release, the above code is used. However for earlier builds of Cumulus 1, the standard web pages start as follows:
Most of these are open software and free for personal use, but some have restrictions on commercial use requiring a licence. Consequently, MX does have to declare it is not for use on a commercial web site.
<pre><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 
<head>
=== Message from Steve Loft about who can use MX ===
<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type" /></pre>
The last line there shows how the original web templates (designed by Beth Loft) used the ISO 8859-1 character set. Consequently, the original NOAA reports used ISO-8859-1 encoding and for compatibility with this original setting, the default encoding for NOAA reports is unchanged despite the mismatch with web pages, because Cumulus 1 does not contain any web page to display NOAA reports.
 
===How does MX complicate encodings?===
Note: The graphs used in Cumulus MX are drawn using Highcharts and they are free for non-commercial use only, i.e. you may not use them on a company web site, see http://shop.highsoft.com/faq/non-commercial for clarification. '''For this reason, and others, use of Cumulus MX in a commercial environment is expressly forbidden.'''
MX complicates the issue, the admin interface does include a web page for displaying reports, (/CumulusMX/interface/noaayearreport.html). This web page includes <tt><meta charset="utf-8"></tt>, but the defaults prior to using the web page for editing NOAA settings (/CumulusMX/interface/noaasettings.html) include not using "utf-8" building in an inconsistency because there is nothing in the hints on that page to help you select reasonable settings!
===Consistency for encoding===
To add just a little more detail here, if you choose to implement a web page to display these Cumulus reports, then the HTML of the web page to display the report, the JavaScript that selects which report to show, and inserts the report into the HTML, and the report itself '''must all use the same encoding''', otherwise you will not get characters like &deg; displaying correctly.
 
===When did Cumulus 1 change?===
''Please include a link to the Highstock web site (as the supplied web page does) if you use the charts under the terms of the non-commercial licence.''
In April 2014, Steve introduced the choice in Cumulus 1 of either ISO-8859-1 encoding (as he used originally) or UTF-8 encoding (what he migrated his web page templates to) for these reports. For backwards compliance, the default selected by Steve Loft is his original ISO-8859-1 encoding, but his recommendation strongly expressed was that users should switch to UTF-8. This choice with the former as default, but the latter as recommended, remains unchanged in MX. The encoding for NOAA reports can be selected on the NOAA Settings screen of either Cumulus 1 or MX, and you are as Steve says strongly advised to reverse the setting.
 
===Relevance to Extra Web Files===
== Documentation for MX ==
Before I go into any more technical detail, this same advice of selecting "UTF-8" applies to any choices on the '''Extra web files''' in MX (or Files tab of internet settings in Cumulus 1).
 
===TECHNICAL BIT===
=== Cross reference to article on [[Moving from Cumulus 1 to MX]] (includes general issues regarding running on Windows) ===
'''With that introduction, you can now choose whether to read the rest of this section which uses more technical terminology.'''
 
''Let me explain that technical term, essentially encoding refers to the character set used by any file''.
You may be reading this article on MX as a Cumulus 1 user considering moving to MX, if so then the separate article linked from the heading to this section will interest you as it explains all issues when moving from Cumulus 1 to MX.
 
A computer uses binary, binary can only be in state 0 or state 1, so a combination of 0 and 1 states needs to be defined for every character you want to represent. What you can include in that character set depends to some extent on how many binary bits are used to be mapped to individual characters; and if more than one byte worth of bits is used the order in which the bits within the multiple bytes are used must be defined for each particular encoding.
You may have no interest in Cumulus 1, but you are using MX on Windows, if so you still may find the separate article linked from the heading to this section will interest you as it gives a lot of information about installing Cumulus MX on Windows.
 
With any fixed number of bits available, there will be a limit to how many characters can be defined, and different organisations might select different characters to include. This is what leads to multiple encoding standards. One might use a particular arrangement of bits to represent the degree symbol, while another encoding uses that particular arrangement of bits for a different purpose. The general problem is that unless you match the encoding used initially, any retrieval cannot know what character to display for certain combinations of bits.
Finally, if you are using MX on another device, then ignore the link in the heading to this section.
 
This means that when you read a file you probably find the letters A to Z where you expect them, but whether you see correct case cannot be guaranteed. Some encodings put capital letters at lower binary values than lower case letters, and some put capitals at higher binary values.
=== Cross reference to article on [[Updating MX to new version]] ===
 
If you use 7 bits, you have 127 combinations, enough for standard 26 letters in both capitals, and lower case, plus 10 digits (0 to 9), some punctuation, and some control characters (like new line, end of file, and so on). If you use 8 bits, a whole byte, you have 254 combinations, and you can start coping with accented letters, with alphabets that don't have 26 letters, and even add some symbols. Obviously, once you start using more than one byte, you can have 16, 32, 64, or even more bits to use and can include lots more characters and the bigger character sets start including lots of symbols and the biggest add smilies or emotion icons.
Whether you have not updated for a long time, or simply wonder whether you are updating the easiest way, follow the link in the heading for this section, to an article that focusses on all to do with updating from one MX version to another.
Remember, most modern web pages (including the standard web templates provided with both flavours of Cumulus) use UTF-8 encoding. The only problem is MX not defaulting to this for NOAA reports.
 
== The format used for naming reports==
Critically, this linked article contains advice '''both''' for those updating each time there is a new release available '''and''' for those using an old version (perhaps when MX was still in beta) wishing to update to a new version skipping some in-between versions and need advice on whether to do it in multiple steps.
 
The monthly reports have a name in this format '''"NOAAMO"...".txt"'''. The yearly reports have a name in this format '''"NOAAYR"...".txt"'''. This format with 4 double quotes in all cases is used both in the NOAA settings screen and in the [[Cumulus.ini#Section:_NOAA|[NOAA] section of Cumulus.ini]].
=== Cross reference to [[Cumulus MX FAQ]] ===
 
It is between the double quotes where I have placed '...' that Cumulus expects us to use the date output modifiers described. Note that the double quotes must be used at each of the places where they are shown when you define your report naming in the NOAA Settings screen of either Cumulus 1 or MX. The default selected by Steve Loft is '''MMyyyy''' and '''yyyy''' respectively (expressed in a way that suits both Cumulus 1 and MX) so the inserted part is all numerical. Here is a table showing the main alternative options, for more details about these selectors see the [[Webtags#List_of_allowed_modifiers|table below]] as there are obviously a lot more options.
A new FAQ for MX has been started at [[Cumulus_MX_FAQ|another page]]. As I add the link here, the Cumulus MX FAQ is in a mess, but hopefully someone will have time to sort it out.
 
{| class="wikitable" border="1"
Meanwhile most MX specific questions are now covered by the updating of text on this "Cumulus MX" page.
|-
!style="width:150px" | {{Version badge 1}}Delphi Specifier for Cumulus 1.9.x
!style="width:150px" | [[File:Badge vMx.png]]Mono Specifier for Cumulus MX
!style="width:600px" | Explanation
!style="width:150px" | Setting to use that suits both flavours
!style="width:600px" | Example of produced name
|-
|colspan="5" style="background:lightgray;"|Yearly report
|-
|YYYY or yyyy
|yyyy
|Note that Cumulus 1 accepts lower or upper case, this is the default mentioned above
|"NOAAYR"yyyy".txt"
|NOAAYR2010.txt
|-
|YY or yy
|yy
|Note that Cumulus 1 accepts lower or upper case, this represents a 2 digit year number alternative format
|"NOAAYR"yy".txt"
|NOAAYR10.txt
|-
|colspan="5" style="background:lightgray;"|Monthly report
|-
|mmyyyy (or MMYYYY)
|MMyyyy
|Note that Cumulus 1 accepts lower or upper case, these are equivalent to default mentioned above, so this is most common for users who first encounter with Cumulus is with MX flavour
|"NOAAMO"MMyyyy".txt"
|NOAAMO032010.txt
|-
|mmyy (or MMyy or mmYY or MMYY)
|MMyy
|Note that Cumulus 1 accepts lower or upper case, this represents a 2 digit year number alternative format, this was the format frequently selected by Cumulus 1 users as it keeps file names as short as possible
|"NOAAMO"MMyy".txt"
|NOAAMO0310.txt
|-
|yyyy-mm (or YYYY-MM)
|yyyy-MM
||Note that Cumulus 1 accepts lower or upper case, this naming format is popular as it results in files being in chronological sequence when listed by file name
|"NOAAMO"yyyy-MM".txt"
|NOAAM2010-03.txt
|-
|MMMyyyy
|MMMyyyy
|Note that Cumulus 1 accepts lower or upper case, this represents an informative naming format using 3 letter month name as defined for your locale on your device, in '''.NET''' or in '''MONO''' so it is used by those who want to quickly spot which report they want to look at.
|"NOAAMO"MMMyyyy".txt"
|NOAAMOMar2010.txt (for English locales)
|}
 
If you migrate from Cumulus 1 (where case does not matter) to Cumulus MX (where case does matter), from version 3.3.0 onwards the NOAA default monthly name if it reads "NOAAMO'mmyy'.txt" (MX believes "mm" '''means minutes''', not month) is changed into "NOAAMO'MMyy'.txt" (which works on both Cumulus 1 and MX).
=== Cross reference to [[MX Issues]] ===
 
= Template Files =
The [[MX Issues|Cumulus MX Known Issues]] article was based on [https://cumulus.hosiene.co.uk/viewtopic.php?f=39&t=12943 Steve Loft's forum post] so based on an early beta version of MX, and there has been minimal attempt to update the contents as MX has been developed further and come out of the original beta. <big>Anyone willing to check the linked article and do a further update?</big>
 
This is the name given by Steve Loft to any files that contain web tags and need to be processed before they actually include values.
 
When Cumulus processes these files it generates output files where the tags/tokens have been replaced by values. Consequently, a single template will actually generate a different file each time Cumulus processes that template because the part of the content that was web tags is now populated with text (values, times, dates, etc.) and as these values change that make the file different to the previous generated file.
=== Cross-reference to [[What to do when I have a problem with MX]] ===
 
For standard Cumulus, all the output files are web pages which it then uploads to your web site. There is more about processing of files on the [[Customised templates]] page, but think of a template as containing text that Cumulus copies from the template file to the web page it is constructing. The processing process is basically a parse, each time it finds what MX calls a token (a web tag complete with any parameters it needs) it looks up the value that it will use to replace that web tag before moving on through the text.
The text that was here has been moved to a separate article, that makes it more accessible, please see [[What to do when I have a problem with MX|What to do when I have a problem with MX article]]
 
The example web templates provided by Cumulus insert a "T" at the end of the intended web page name before the extension (.htm or .html), so that the template files and generated web pages cannot be confused. The generated file will often have "tmp" added to the end
=== Cross reference to [[MX Administrative Interface|Administrative Interface]] ===
 
When writing your own templates, some people will stick to this "T" notation, others will change the extension to "tmpl" or "cum" to indicate they are Cumulus templates. Cumulus does not care what extension is used for any local file specified in the MX '''Extra Web Files''' settings or Cumulus 1 '''Files''' tab settings.
This requires a whole topic to itself, and indeed it has an article to itself, reached from link in heading for this section.
 
For Cumulus 1 and MX, there are one template held within the program code, this is what produces the default [[Realtime.txt]]. You can define an alternative template with web tags and Cumulus can process that instead of its default template.
 
For MX only, there are other templates held within the program code (so you cannot edit them), these output in json format. Some are application program interface, and feed information to the admin interface, you can only view these by using the development interface in your browser that lets you see what has been loaded. The rest become the json files that are created in the '''web''' folder from where (like the web pages produced after processing the standard web templates), they can be uploaded to your web site.
=== Message from Steve Loft about documentation ===
 
= Web tags available in Cumulus =
''The following was written by Steve Loft when he first made his MX beta available to Cumulus users. Although somewhat outdated it is preserved here.''
 
Those special markers in the file are called web tags, during processing Cumulus will replace them with the actual values. Typically you would use this to build your own website by having an HTML template file with your layout, static text and graphics. In the position on the page you wish Cumulus to insert the relevant data place a web tag in the form (briefly mentioned earlier in this page):
There's quite a lot to read before you start - please do read all of this page and all the references it mentions, most of it is very important.
 
<pre><#tag_name [optional input parameters][optional output parameters]></pre>
Note that most of the Cumulus 1 documentation also applies to Cumulus MX. MX specific documentation is currently in very early stages and some settings may not be obvious. Looking at the [[FAQ|Frequently Asked Questions for Cumulus 1]], [[Cumulus MX FAQ|Frequently asked questions for MX]], and articles elsewhere in this wiki will help, as will looking at the Cumulus 1 help file, it is available on the [[Software#Resources|Software Resources page]]. If you already use Cumulus 1, the help is part of the standard installation.
If MX is your first encounter with Cumulus, you will be at a disadvantage regarding documentation of many of the features, while those who have previously been familiar with Cumulus 1 will find most aspects of MX easier to pick up.
 
''Note: When you put a tag into your template, be careful that whatever program you are using to develop your web pages doesn't change the angle brackets to slightly different symbols -- this is a common cause of failure!'' There are a number of editing tools that are '''designed for editing programming code''' and you should use one of those (e.g. Notepad++, Brackets, NoteTab Light, HTML kit, amongst many others), ''rather than a tool designed for web page design editing'' (e.g. Dreamweaver, word press, amongst others).
=== Message about this update to documentation ===
 
== Beta Builds of Cumulus ==
Although the message above from Steve Loft has been retained, it is no longer really true. When that was written on 2 January 2015, MX had been worked on for a year or so and had just opened up for beta testing.
 
{{Version badge 1}}The [[BETA webtags|additional webtags]] page was created to hold web tags that were not yet available in any Cumulus 1 formal release, but were available in any Beta version that was under development.
Since then, of course MX has come out of beta and added a lot more functionality. More importantly, it has gained a large user base (although Cumulus 1 is still used by considerably more people than MX, there has been a recent surge of converts), and that means it is much better known, and consequently it is possible now to document it much better. The update made to this page draws on what has been said spread over lots of posts on the support forum and attempts to make it more accessible by repeating it on this page. Consequently, you don't now need to search in the way that Steve Loft's original text above implies.
 
[[File:Badge vMx.png]]When development of Cumulus 1 ceased, Cumulus MX was available as a beta. At that time, this article continued to describe web tags available in the final release of Cumulus 1 (builds 1099, 1100, 1101, 1099.1, and 1099.2). Because the output parameters were different for MX, all the MX web tag information was in [[BETA webtags|beta web tags]] article. That was fine in early beta versions of MX because they supported only a small subset of the web tags available for Cumulus 1.
In writing this update, I have drawn on my own experience of moving from Cumulus 1 to MX, and thus my knowledge of Cumulus is from over a decade of experience with this software and what it can do.
 
Before I swapped, I made a detailed study to check MX could do all I used to do with Cumulus 1 and much more. Before I add items to this article I play around with MX experimenting with what works and what does not work, but I have saved you the pain of where I went wrong, just telling you what is correct. I do need to add, that I don't have a separate testing environment, and therefore I am not willing to attempt anything that might muck up my collecting of weather information, plus currently I only have a second-hand (ex-NHS) PC and a simple smart phone, so my technology, as well as my ineptness because I belong to that generation who did not have desktop computers, nor mobile devices, until some time into my working life. This all places restrictions on what I can test out, and therefore on the coverage of these notes.
 
However, as MX development continued more and more web tags were available and maintaining two articles, one for each flavour of Cumulus was impossible. Therefore, MX users had to look at two pages, some of their web tags were in this article some were in that article. Confusingly, some web tags were in both articles, because the parameters that could be used with those tags were increased in MX, so the additional parameters were only shown in the beta article, an example was when the moon web tags had parameters added to control the output from build 3047, these were added to the Beta article.
'''If anyone else, can improve these notes, wants to split off more parts, or in any other way make the documentation better, then please do. I have already made improvement that were suggested by others.'''
 
When Mark Crossley brought MX out of Beta, all the web tags that were on that page were moved into this article, and it was made clear which flavours each web tag was available in (excluding Cumulus 2).
 
The developer of MX new releases normally shares a new version of MX first as beta by sending the distribution in an email to a number of Cumulus users. They respond by email, with the intension any issues can be ironed out before the distribution is made available as a public release. Given the number of weather station types supported and the complexity of options for using Cumulus, this does not always ensure all ways in which MX can be used are tested, especially as the Cumulus Users given the beta test zip might not use all the features that have been modified in a particular development.
If this page, and those other Wiki pages it links to (e.g. [[Cumulus MX FAQ]]), do not answer all your questions then see [https://cumulus.hosiene.co.uk/viewforum.php?f=40 the support forum for current Cumulus MX] as that will let you see what other people have asked about, any posts I have not yet incorporated into this page, and there you get the opportunity to post your own query.
 
Although such releases often add additional web tags, any additional web tags are currently being entered into this article and no new MX web tags had been added to beta article since that move of the earlier ones into this article.
= Installing and Running Cumulus MX =
 
== Case sensitivity ==
There is no automatic installer (this may change). Cumulus MX is supplied as a zipped package on a link from [[software|Software page]].
 
The tag_name in the general format above is case sensitive, so please type the tag name exactly as shown in the web tag columns in the tables below.
== Executables ==
 
The optional input parameters always use lower case, so please type them exactly as shown in the sections dealing with input parameters.
The MX package, at time of typing this, includes two executables:
 
The optional output parameters are case insensitive when used in Cumulus 1. But for Cumulus 2 and later, so this includes MX, the output parameters are case sensitive and also dependent on what other output formatters are being used if any, so please read the sections on output parameters and study the examples in the tables carefully.
=== CumulusMX.exe ===
 
==Inconsistency of web tag names==
Whilst effectively MX is run by a '''CumulusMX.exe''' or '''sudo mono CumulusMX.exe''' depending on device, you actually need to ensure all the other components are loaded, so you either have a package that runs it for you, or you click a shortcut that includes the necessary path setting.
 
Some tags are all lower-case, some are camel-case, and some start with a capital letter. Have a look yourself at just how much inconsistency is present in the names in the tables below. The great inconsistency in the naming, gives rise to a problem as it very easy to spell a tag_name incorrectly as you naturally expect there to be a standard pattern.
=== ExportMySQL.exe ===
 
You will find yourself frequently having to refer to this article, if you decide to make your own Cumulus templates (see section below for more information). This applies whether those templates are for [[Customised templates|web pages]], to implement [[Xml webtags|Extensible Mark-up Language files]], or [[Php webtags|PHP Hypertext Pre-processor scripts]].
This second exe file has been available since the original MX package as Steve Loft developed this in April 2015, but sadly few people even notice it exists, and if they do, it is unlikely they know how to use it. Hopefully, some people will read this section and find out!
 
When Steve Loft introduced the first web tags as part of developing software for his own use, he did not create a naming standard to ensure consistency in the future. As he introduced further web tags at different times, the names used might be consistent amongst the ones introduced that day, but there was still no naming convention to ensure consistency with tags introduced previously or to help name future tags.
Obviously it was updated when Mark Crossley added the Feels Like fields to log files.
 
===Inconsistency for today, yesterday, this month, this year groups===
Put simply, this executable will read log files and insert (insert ignore) rows into an existing database table. Since it only does inserts, despite the name of this function, it is not just for MySQL tables, the included SQL should work with whatever database table type you have.
 
It would be easier if all tags reporting parameters for today were consistent, let alone consistency in naming between tags for today and yesterday. The tags for this year and this month were introduced in same release, so there is some consistency in how they were named then, but no standard to ensure future tags for this month and this year would be named the same way.
The executable has a mandatory single parameter that tells it which log files to read, there are only 3 possible parameters ("dayfile", "monthly", or path to a file). It needs to know what locale (or culture settings) it is to use to work out what character separates each item in the log file list. It also needs to read your Cumulus.ini file, as it takes these "input parameters" from MySQL section in that:
*Host
*Port
*User
*Pass
*Database
*MonthlyTable
*DayfileTable
 
====Inconsistency Dailyin summaryuse logof file ="Y"===
 
*The character "Y" might be included in a web tag to denote '''yesterday''', or it might denote ''this year''
# Use the feature in the admin interface:
*Where the Y is indicating '''yesterday''', it is sometimes a ''prefix'', sometimes a ''suffix''!
#* Settings menu
#* MySQL settings page
#* In '''Dayfile.txt upload''' section, give your database table a name, or accept default ''Dayfile''.
#* Click '''Save''' to ensure this setting is updated
# Now scroll down to '''Create database table (save settings first)'''
#* Here click '''Create Dayfile'''
# Now you have a database table ready, you can use the executable to read all lines in your '''CumulusMX/data/dayfile.txt''' log file.
# Open a terminal display (if you are using Windows then, open a Command Window, a Windows Powershell window, or a Windows Terminal window)
# Run this executable in that terminal display (or command window) by using '''sudo mono ExportMySql.exe daily''' or <tt>ExportMySql.exe daily</tt> depending on device.
# In the terminal display (or command window) you will see '''Parameter = daily''' confirming what you entered and in the line below that a rapidly updating code that is the primary key displayed for each row it tries to insert into the table. If that primary key already exists in the table, it will still show the key, but no insert will take place.
#If you want MX to continue adding new rows to this database table, still in the admin interface, still in MySQL settings page:
#* Return to '''Dayfile.txt upload''' section, and select '''Enable'''.
 
====Inconsistency Standardin Loguse filesof ="T"===
 
*The newer web tags for '''today''' include a "T" as a suffix, the older ones do not.
# Use the feature in the admin interface:
**The lack of a "T" in some today tags causes some confusion with all-time record tags as they have a similar naming structure to these older today web tags.
#* Settings menu
**This is particularly confusing and is why you must look up today, and all-time, tags in the tables in this article.
#* MySQL settings page
*The time-stamp tags add a "T" to the corresponding web tag for the value, but in an inconsistent way:
#* In '''Monthly log file upload''' section, give your database table a name, or accept default ''Monthly''.
**the T is a prefix sometimes and
#* Click '''Save''' to ensure this setting is updated
**the T is a suffix sometimes
# Now scroll down to '''Create database table (save settings first)'''
**This is particularly confusing and is why you must look up time-stamp tags in the tables in this article.
#* Here click '''Create Monthly'''
#If you want MX to continue adding new rows to this database table, still in the admin interface, still in MySQL settings page:
#* In the same '''Monthly log file upload''' section, now select '''Enable'''.
# Now you have a database table ready, you can use the executable to read all lines in either one (if path to that file is in parameter), or every (if parameter is monthly) standard log file.
#*If the parameter is "monthly" it will look in folder '''data''' for every file it can find with a file name of datestring + "log.txt" where datestring is a 3 letter code (in your locale) for each month (1 to 12) followed by a 2 digit year (from "00" to "99") so that is how it finds every standard log file in the folder.
# Open a terminal display (if you are using Windows then, open a Command Window, a Windows Powershell window, or a Windows Terminal window)
# Run this executable in that terminal display (or command window) by using '''sudo mono ExportMySql.exe monthly''' or <tt>ExportMySql.exe monthly</tt> depending on device.
#* Alternatively, replace '''monthly''' parameter by a full path to a single standard log file, and it will process just that log file.
# In the terminal display (or command window) you will see '''Parameter = monthly''' confirming what you entered and in the line below that a rapidly updating code that is the primary key (omitting the first two digits of the year) displayed for each row it tries to insert into the table. If that primary key already exists in the table, it will still show the key, but no insert will take place. So you can run this again to pick up any additions to the latest log file since the original run. Also notice that if you use the parameter "monthly" the order in which it will process different standard log files is not predicable, they probably will not be in any particular order, but as one feature of SQL databases is that the row order is not able to be determined, it does not matter if rows are not added in chronological order.
#* It is worth noting that it is safe to run this procedure while MX is also running, because this procedure only updates log entries that exist as this procedure reads the logs, and MX only adds new entries to the log and at the same time uploads that new entry (if enabled) to the database table.
 
===Choosing script variable names derived from tag names===
Please be aware that the transfer to the database table adds two columns where bearings in the original log file given in degrees are output as compass directions, and these use up to 3 letters of how the compass directions are defined in the '''strings.ini''' file. Thus the number of columns in the database table will be at least 2 more than the number of fields in the log files. It is also important to stress that whilst the database table must contain one column defined for each field (plus the extra 2) being uploaded, you can add even more columns to your table if you want and populate those some other way. For example, I have added a Canadian Humidity Index (Humidex) column which is not in the standard logs, but is calculated by Cumulus, and can be calculated from columns that are uploaded from the standard log. Humidex is not uploaded by either ExportMySQL or the normal CumulusMX process, but neither objects to extra columns being there.
 
In the web tag to PHP variable scripts, I have posted, see [[Php_webtags#Minimised_Upload_size]], I have tried to introduce better consistency in the PHP variable names, so "T" is added as a suffix to all "today" variables for example. Some other script authors try to match the inconsistent web tag names, so their script variable names are also inconsistent.
When testing this, I had some log files produced by various old versions of Cumulus 1 in my MX data folder as well as the log files in has generated since I swapped to MX. Plus I had used a PHP script to add feels like to those log files produced before version 3.6.0 and to correct feels like for those log entries made by versions 3.6.0 to 3.6.9 inclusive because they used a different formula to the one being used from version 3.6.10. This php script is a web page with a HTML form and can be obtained from the forum in [https://cumulus.hosiene.co.uk/viewtopic.php?f=18&t=18096 Create Missing for MX]
 
== Optional Parameters ==
I notice that the database rows produced by those short log file lines produced by say version 1.9.0 had nulls entered for all subsequent columns, except '''Feels Like''' and this column was initialised at 0.0!
 
=== Input modification Parameters ===
For those log files produced by the final version 1.9.4, all columns are populated although feels like is set to 0.0.
 
Most web tags do not require any input parameters. An input parameter is used where the same web tag can represent a value for a number of different past time instants. Each of those past time instants is represented by a different value for the input parameter. So a combination of web tag name and input parameter lets Cumulus to pick the value you want to see.
== Completely new MX installation ==
 
There are currently only two types of tags where an input parameter is mandatory:
Create a new directory (recommended name CumulusMX) and unzip the contents of the download package into it. See notes below for extras required in various operating systems.
 
*The '''recent history tags''' where a separate value exists for potentially every [[#Recent_History|individual minute in last week]]. These tags need an input parameter specifying how many minutes ago is required. To save entering a very large number for minutes, an input parameter can combine days, hours, and minutes, ago using up to 3 input parameters as explained in linked section.
The package contains everything else you need to read from your weather station (if it is a supported model), to load up the user interface (for settings and some simple web pages to see on a device connected to your home network). You might want to read topics on the MX support forum to discover about other people's experiences.
*The [[#Monthly_All_Time_Records]] where a separate one exists for each particular month (of any year) need input parameter specifying which month. Again see the respective section for full details of input parameter (which is 1 for January to 12 for December, but 0 is also available with a special meaning).
== Running Cumulus MX ==
# Make sure your weather station (and any extra sensors) is connected to the device on which you have installed Cumulus MX, before you try to run Cumulus MX.
# Start '''Cumulus MX engine''' (command to do this varies between operating systems, so see sub-heading for your device below
# Start '''Admin Interface''', it runs in a browser, by default on port 8998, see [[#User_Interface|section]] below.
 
=== Output modification parameters ===
If you are running MX for the first time, without a configuration file (none is included in download package), see [[Cumulus.ini#Cumulus_MX|here]] for screen shots and instructions.
 
These are complex, they vary between Cumulus 1 and later flavours, and what output modifiers can be used varies between web tags.
=== .NET and Mono ===
 
Consequently, output modifiers will be discussed in a later section headed [[#Output_.27format.27_Parameter]].
The software currently (this is early 2020) called .NET was originally for all operating systems, but Microsoft then decided to restrict it to just Windows, mostly to encourage greater dominance by Microsoft software and hardware.
 
The options available include:
Mono was then born based on .NET to work with all operating systems, Mono subsequently changed independently from .NET (although Microsoft still has a leading role).
* changing date and/or time format,
* changing number of decimal places, and
* removing decimal commas.
 
== Cumulus Templates ==
More recently, Microsoft launched an alternative called .NET Core that took out of .NET the parts that were Windows specific, and it ceased work on further development of .NET beyond version 4.x.x.
 
=== Using web tags in templates for creating HTML pages ===
'''Perhaps confusingly, in November 2020, there will be change around of names, and the multi-operating system .NET Core product will take over the .NET name. I don't pretend to understand the technical details, but the impression I get is that the new .NET in November will be similar to Mono, so apps designed for that will still work, but apps using .NET to make code designed for windows will stop working'''
 
*You can create a template file that has a structure of HTML elements with Cumulus web tags to represent the information you want included.
*If you [[Customised_templates#What_to_select_on_the_.27Files.27_tab_of_the_Internet_Settings_screen_within_the_.27Configuration.27_menu|ask Cumulus to process]] that template file, it will create a HTML page from the template, and during that file creation replace the tag with the current value of the item the tag represents.
*You also need to tell Cumulus that the resulting HTML file is to be uploaded to the internet (or copied to a local web server).
 
=== RequirementsUsing forweb runningtags onin Windowsscripts ===
 
*You can also use the tags within script, this might be a PHP script, or JavaScript either embedded in HTML, or in external files, to transfer the values (or the result of calculations based on those values) to your web server for further processing.
To run MX on Windows, you need .Net version of at least 4.5.2 installed. This is only available for Vista SP2, Windows 7 SP1, Windows 8, Windows 8.1.
*As JavaScript can not understand a real number that has the integer and decimal parts separated by a comma, but your computer may be set to use that representation in standard tags, there are special versions of many tags to use in script - see [[#No_Commas|tags with commas removed]] section.
*Note that if a PHP or JavaScript file contains any Cumulus web tags then you must [[Customised_templates#What_to_select_on_the_.27Files.27_tab_of_the_Internet_Settings_screen_within_the_.27Configuration.27_menu|ask Cumulus to process]] the script file.
*JavaScript processing code can be embedded in a template that is already being processed into HTML. (This technique has been used in the standard 'monthlyrecordT.htm' template).
*Alternatively embed a bit of JavaScript assignment code in HTML, that is already been processed, to convert the tags to a collection of string variables and use those variable names in any external script called from the HTML file. (This technique has been used in the standard 'gaugesT.htm' template).
*To use the value from a tag as an integer in JavaScript assigning code you need to use a
<pre>integer_variable_name=parseInt(string_variable_name,10)</pre> type conversion
*To use a value from a tag as a floating point number in JavaScript you need to use <pre>parseFloat(string_variable_name)</pre> otherwise you will find any attempt to add something to it results in a concatenation because JavaScript uses "+" for two purposes and concatenation takes precedence over arithmetic adding!
*Alternatively, in most script languages, apply ' * 1', i.e. multiply by one, to implicitly convert the tag from string to base 10 number.
*Another alternative is to add zero when a web tag is being assigned to a script variable, this is frequently used in scripts where the web tag being used is not available in all versions of Cumulus, because Cumulus does not implement the concept of null values and often zero is used when a true value is not available because that sensor is not installed for example. Adding 0 means that if the web tag is not recognised, the script is still able to give a variable in its language some value and won't fail because that variable is undefined. If the web tag is available, adding zero does not prevent the true value of that web tag being assigned to the variable.
 
== Web Tag Differences Between Cumulus 1 and MX builds ==
For Windows 10 you need version 4.8 or later, this should already be installed by your windows update feature. The .Net download for version 4.8 should be here https://dotnet.microsoft.com/download/dotnet-framework/net48.
{{Version badge 1}}
This badge is used when the web tags listed in one of the tables are available in the final 1.9.4 release of Cumulus 1, but not in MX. When Cumulus 1 is processing web tags, it tends to ignore any it cannot understand, so look for gaps in your web pages to find errors.
 
[[File:Badge vMx.png]]
For those who downloaded the first MX Beta in January 2015, the code was only experimental and that version had to be run by a Windows Administrative User, but Steve Loft soon improved the code and now none of the code requires any elevated rights and it can be run by a normal user (or a user with administrative rights) without needing to be started by '''Run as administrator'''.
Cumulus MX provides many, but not all web tags that were available in Cumulus 1. MX adds many more web tags, mostly in support of new weather stations or new sensors. This badge is used against web tags listed in one of the tables that are only available in MX. See [[#GENERAL_TIP|tip]] at top of page for how to check which web tags are available in your build.
 
A combination of badges appears where certain aspects apply to Cumulus 1 or to MX. No information is given for Cumulus 2 as it is no longer available.
However, Cumulus MX initiates a web server, which is what runs the [[MX_Administrative_Interface|Admin Interface]]. To access that, all users need to be given elevated rights to the port on which the web server runs. By default this is port 8998, so that is used in the example below of the one-off command needed to give all users access to the port. You can use a '''-port=nnnn''' parameter when starting MX to make it use another port, if you use that then the command below needs revising accordingly.
 
When MX is processing web tags and finds one it cannot understand, a "*** web tag error - see MXdiags file ***" message will appear in the engine console, and the diagnostic file will include something like this, be aware a "token" parser is used to evaluate web tags:
To enter the command, first open a command window as administrator. One way to do this is to right click the windows symbol at the start of the windows task bar. The option to choose there is dependent on some settings which determine what appears when you right click:
<pre>Web tag error
*the normal default on Windows 10 is '''Windows PowerShell (admin)''',
Exception: i=8998 len=106297
*the normal default on earlier versions of Windows is '''Command Prompt (Administrator)'''
inputText.Length=106297
*an alternative is '''Windows Terminal'''
token=<#daylightlength format=H></pre>
Whichever of these you can use, the result is it opens a new window on your monitor with a prompt for typing. In that window type the command:
This particular error is that when you use a single output format character it does not have same meaning as when there are multiple characters, correct this particular web tag to:
<pre>
<pre><#daylightlength format=%H></pre>
netsh http add urlacl url=http://*:8998/ user=\users
</pre>
 
Please note that where this article makes reference to other pages in the Wiki, the information shown there might be specific to Cumulus 1, as there are differences between the user interface for Cumulus 1 and MX flavours of this software, and the Wiki was originally written before MX existed, so not all pages have been updated.
You only need to do that once. If you do not issue this command, you do need to start MX with '''Run as administrator''', otherwise you may have difficulty in using the Admin interface.
 
=Output 'format' Parameter=
Talking about command windows, if you want to check that the port is open for listening (i.e. able to access the admin interface) type <tt>netstat -an | findstr 8998</tt> into the command window.
 
The majority, but not all, of web tags either can use an output format parameter or, in a few cases, really do need an output format parameter.
The admin interface URL '''http://*:8998/''' needs to have that wildcard "*" replaced by a precise location if we are to access the admin interface. The missing part of the URL depends on how your local network is set up. If you are accessing the admin interface on the same device as that running MX (and you don't have another web server on that device) the "*" can be replaced by "localhost", i.e. '''http://localhost:8998/''' will be used to load the admin interface into your browser. In the more general case when you want to access the admin interface from anywhere on your local wired and wireless interface, then the "*" needs to be replaced by a string of 4 numbers representing what is called a IPv4 address (w.x.y.z) of the device you have installed MX on.
 
== Output Parameter Differences between Cumulus 1 and Cumulus MX (Cumulus 3) ==
Look at your hub or router (this should have come with instructions on how to access its settings in your browser) and on one screen it should show what devices are connected to your LAN and wifi. Look for the IPv4 address, for example 192.168.1.64, it has assigned to the device where MX is running. That is what should replace the "*". However, there is one more complication, either the Windows networking settings may change, or else your hub or router may reconfigure, both can happen at any time and both can assign a different IPv4 address to the device running MX.
 
There are a number of differences between Cumulus 1 (C1) and Cumulus MX (MX). These nearly all involve times and dates, so the next section deals with this.
To give your Computer a fixed address for the MX admin interface,
#first find the network card via Network and Sharing Centre (Control Panel),
#then click on Change Adapter Settings,
#then Right click on Ethernet or WiFi Adapter,
#next select Properties
# In the window that opens, right click on Internet Protocol Version 4 (TCP/IP 4),
#Next select properties
# Onn that pop up screen tell the computer to "use the following IP address"
#Fill out the form with
#* a subnet mask of 255.255.255.0 and
#*gateway address between 192.168.1.1 and 192.168.1.254 (depending on the address of your hub/router).
 
==== Setting up for either manual or automatic running ====
 
=== Output (format modifier) parameters for times and dates ===
 
Time/Date format codes are used in two places:
To run Cumulus MX, Windows needs to know
# As part of report names for NOAA style reports (see [[Cumulus.ini#Section:_NOAA]])
#which '''.exe''' you want to run
# As part of web-tags that report either times or dates or both a date and a time
#the path where all the required '''.dll''' files are located
From version 1.9.1 most web-tags that report any form of time or date will accept an optional 'format' parameter, e.g. (Cumulus 1 only): <#YearTempHT format=hh:nn>.
 
This allows you to override the default display format for that item, using the format specifiers in the table below.
Therefore it is best to always start MX using what Windows calls a '''shortcut''', because when creating the shortcut you can enter all the required information into the properties. If you want MX to automatically start whenever you log into your PC, then the place to store your shortcut is <tt>C:\Users\...\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\Run_CumulusMX</tt>. Don't forget to put your Microsoft username where I have put ...
 
Although, in theory, you can specify date formatting to times, and vice versa, this will not always yield a sensible result. It is best to look at the default format (in most, but not all, cases this reveals whether date and time information are both available):
With this you might want to right click on that shortcut, select properties, then you can set the starting position for the command window, the colours and font it will use, and even choose to start minimised, amongst many other selections.
*The time-stamps for today, and yesterday, only contain time information, so only time-based format instructions should be applied to them. You can use date format parameters on (for example) <#metdate>, and <#metdateyesterday> and that may give you your desired date information to augment the time-stamps.
*Almanac times such as sun-rise, moon-rise, are also only times, and time-based format instructions can generally be applied to them. However, be aware these are calculated as at midnight GMT and for some of your calendar days, the times may be reported (in default format) as '--' if for example the moon does not rise that day.
 
C1 can work with times in 14.24 format using a full stop ('.') to separate the figures, MX must have colon (':') between hour and minute numbers. But with both flavours you can choose whether 12-hour clock is used with am/pm (in lowercase or capitals) or the 24-hour clock is used. You can choose to include/exclude leading zero for hours. You can only report the hour if you don't care about the minutes, or only report the minutes if you don't need the hour. In most cases you can add seconds to the output, and either milliseconds or microseconds. This does not imply that Cumulus calculates everything every microsecond, in fact many are only calculated once a minute, but the flexibility is there for time outputs.
There are 3 ways on Windows to create a shortcut to run MX, as mentioned above you can't just click on the executable in file manager, because Windows needs to be told the path for loading all the related .dll files.
 
Some web tags contain dates, or both dates and times, and for these there is flexibility (apart from those with fixed format, these might have ISO, or another format indicator, in their tag name) as to how the date is output. Thus you can choose to include or exclude the year; you can represent month in letters or numbers, and you can vary the order in which elements of the date are shown.
 
The characters used to represent year, month, day, hour, minute, second, microsecond, do differ between C1 and MX. In Cumulus 1 we are able to use "m" or "M" for two different meanings (minutes or month) depending on context. Similarly, in MX the same character sometimes has two different meanings depending on context, but this applies to lots of characters and the context is whether the character is used on its own or with other characters. '''Sounds confusing?''' Well it is complicated.
#Create a shortcut on your desktop (and/or the taskbar) for the '''CumulusMX.exe''' executable <tt>cmd.exe /C start CumulusMX C:\CumulusMX\CumulusMX.exe -debug</tt>, the "-debug" is ''optional'', it starts the logging in debugging mode so the log created in MXDiags folder has more information. There are other optional parameters all listed later.
#*In that shortcut define the path where the executable is located as the path to start in.
#* '''Remember, if you have not done the <tt>''netsh http add urlacl url=http://*:8998/ user=\users''</tt> command mentioned above, you must run as administrator.'''
#* Add any of the parameters that can be used with the executable, as listed later, such as specifying a different port for the admin interface , or starting with debugging.
#*Choose whether to start as minimised or as a command window
#*You can also choose text colour (foreground) and background colour, you can choose where the window appears (so if you have two monitors you can choose which one it appears on), and how big that window is. There is a forum post by water01 about this.
#*Now you can click the shortcut to start the engine
#OR place the shortcut as defined above in the start up folder for the user account so MX automatically starts when you connect/log in (see a later section for how to find that start up folder).
# OR declare a task in the scheduler to start MX; in the '''Actions''' tab fill in fields as follows (the other tabs should be obvious):
#**'''Action''' <tt>Start a program</tt> from drop-down
#**'''Program/script''' <tt>cmd.exe</tt> (this is standard Windows environment to run something)
#**'''Add arguments''' <tt>/C start Start_MX \CumulusMX\CumulusMX.exe -debug -port=nnnn</tt> (the "/C" means this task will close once it has started the task, the "Start_MX" is how the task will be labelled as it is running, the next argument "\CumulusMX\CumulusMX.exe" actually starts the executable and it does not need a drive prefix as that is in next box.
#**Note in this example I have included next two optional parameters that can be used after the .exe call in that same box, here '''-debug''' (only include if you want full debugging logging) and '''-port=nnnn''' where nnnn is the port to be used for admin interface (only include if want to change from default 8998),
#** all optional parameters are listed later
#**'''Start in''' <tt>\CumulusMX</tt> (include a drive specifier if necessary)
 
==== Explanation ====
==== Each time you want to run Cumulus MX on Windows: ====
 
*Cumulus MX (when running on Windows) uses the '''.NET''' software.
#First '''start the engine''' in one of the 3 ways from last sub-section
*If Cumulus MX is running on Linux or Mac OS X, or any other device that uses UNIX derived operating system, then it uses '''Mono''' software for same purposes. (MONO is a operating system independent version of .NET, although they are developed independently, they have common origins). Please see the [[Cumulus MX]] article for more details of their differences and what will change in November 2020.
# Next '''start the admin interface''', it does not need to run all the time, but only when you need it (when you first use MX you will need it to access the settings where you tell MX what type of station you have and what units you want to use, and set various timing options), it normally runs on port 8998 (to vary that there is a '''-port''' parameter that is followed by required port and that port parameter has to be entered every time you start MX if you are not using the default port).
*The date and time format characters in Mono (and .NET) software framework are not exactly the same as the '''Delphi''' software framework ones that Cumulus 1 uses.
*For Cumulus MX there are standard format codes (single characters) and custom format codes (combinations of characters, or single characters prefixed by %)
**The standard characters for dates and times are defined at [https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings standard-date-and-time-format-strings]
**The custom characters for dates and times are defined at [https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings custom-date-and-time-format-strings]
*In Cumulus MX the same character can have 4 different meanings depending on its case (capital letter or lower-case letter) and depending on whether it is on its own or not
**The case differences come about because Delphi is case-insensitive, while .NET and MONO are case sensitive. Consequently, .NET (and MONO) can use upper and lower case for different items, but Delphi has to use different letters, ignoring case, for each item.
 
==== When it causes problems ====
Try '''start /min C:\Cumulus\CumulusMX.exe''' to run MX as a minimised package (although in Windows you can change the properties of the shortcut you use to start minimised).
 
This can cause problems when somebody moves from using Cumulus 1 (C1) to using MX. They need to revisit any templates or scripts where they use output modifiers to specify a date and/or time format. We have already explored a very simple impact of this for [[Webtags#The_format_used_for_naming|NOAA report naming]]. There we were only concerned about how to represent a month.
==== Stopping Cumulus MX on Windows pc ====
 
For web tags it is much more complicated, simply because it is not just month we may be representing, and we might require only one specifier (being careful whether we use a standard or custom modifier) or we might want to specify a combination of modifiers (and we might want to add a space character or other literals). It is difficult to summarise, but here are some potential issues:
The recommended way is to click into the command window in which MX is running, ''hold down Control key'' and press '''C'''. It is normal for there to be a short wait, then a message "Cumulus Terminating" and then after another short wait, it will say "Cumulus Stopped" and immediately after that the command window will close.
* the reserved characters are different in C1 and MX (affecting use of literals like "on" and "at" that appear in many English time-stamps)
* MX introduces the concept of escaping characters (a '''\''' placed before a character can be either a control sequence or an instruction to display the character)
* MX is inconsistent e.g. '''format=d''' gives a different result depending on the tag it is applied to (e.g. the script conditional ''''<#metdateyesterday format=d>' == '<#yesterday format=d)>'''' will never be equal as the LHS returns a full date and the right hand side returns day of month only)
* in MX space in some cases may need to be within the single quotes containing other literals (as in MX space can change the interpretation of a modifier character).
 
'''Confused even more now?''' I'm not surprised, but maybe some examples will help before we actually list the available modifiers.
Some people, click in the task bar and select close, or click the '''X''' button on top right of command window. Although these are not official advice, they do seem to work.
 
==== Examples ====
There are packages that can be programmed to send a control C to a running task, and to not continue until the task window has closed. Remember to also program in a subsequent delay in that package, to make sure the package waits for MX to close, or do a check that MX has released all the files it might need to update.
 
*Examples related to case selection
''You should not'' issue a '''TASKKILL''' instruction, as that will prevent MX correctly writing out to all the files it should update on exit. Consequently, it will not restart correctly and may actually lose settings and data.
*#[[File:badge v1.png]] In Delphi, "nn" means "minutes" for Cumulus 1, [[File:Badge vMx.png]]but "minutes" is "mm" for .NET or MONO in Cumulus MX.
*# The hour in 24-hour format with leading zero, in non case sensitive Delphi (Cumulus 1) 'HH' or 'hh' would be treated as same, but in .NET or MONO it must be "HH" (Cumulus MX).
*# The hour in 24-hour format without leading zero, in non case sensitive Delphi (Cumulus 1) 'H' or 'h' would be treated as same, but in .NET or MONO it must be "%H" (Cumulus MX).
*# For 12-hour specifiers, please see the table, as this is far more complicated.
*[[File:Badge vMx.png]]You might be put off by references within .NET and MONO (Cumulus MX) to single/standard characters and custom modifiers, the following 3 examples may add clarity:
*#For example, ''<#MonthTempHD format="d">'' is a single character format modifier, therefore the 'd' acts as a standard modifier, and causes for a date of 22 July 2014 for the highest temperature in the month to be returned in the standard short date format e.g. '22/07/2014' (exact contents for any one date vary by locale).
*#Similarly, ''<#MonthTempHD format="M">'' is a single character format modifier and therefore the 'M' acts as a standard modifier and causes the date for the highest temperature in the month to be returned in the standard day and month format e.g. '22 July' (exact contents for any one date vary by locale).
*#Whilst ''<#metdate format="d M">'' is not a single character format modifier and therefore both the 'd' and the 'M' are interpreted as custom modifiers and cause the current date to be returned as a digit(s) for the day and a digit(s) month (in a without leading zeroes format) e.g. '6 7' would be returned for 6 July.
*#Alternatively, ''<#MonthTempHD format="%d">'' is NOT a single character format modifier, therefore the 'd' acts as a custom modifier, and causes a date of 22 July 2014 for the highest temperature in the month to be returned as the day of the month only '22' in all locales.
*#Similarly, ''<#MonthTempHD format="%M">'' is NOT a single character format modifier and therefore the 'M' acts as a custom modifier and causes the same date for the highest temperature in the month to be returned as the month number '7'.
 
In both Cumulus 1 and MX if you want a space character within your output, the output specifiers must be enclosed in double quotes. If that space character is next to a non modifier (e.g. around word "at") then the single quote needing to surround the at should be widened to include the spaces in MX, but Cumulus 1 does not care if single quotes excluded spaces. However, with MX, single quotes enclose multiple characters, but there is an alternative way to deal with some single verbatim characters to cover next.
=== Requirements for running on Linux and OS X ===
 
So let us compare these two alternative ways that MONO and .NET escape any characters that are not being used as format specifiers.
You will need to install the '''Mono-complete''' runtime (the latest version of Mono should work with all functionality of latest MX in all locales). Mark Crossley says "There shouldn't be any outstanding issues with Mono, afaik they are all resolved - except for the Moon image rotation in the southern hemisphere which does not work with Mono 6.0 thru to the latest 6.8.0, only version 5.x works correctly atm for System Drawing."
* In [[File:badge v1.png]]Delphi you can put the 'verbatim' characters inside single quotes (Cumulus 1); this is often used to (in English) include words like ' on ' and ' at ' in the formatted output.
* For OS X, you can download this here - http://www.mono-project.com/download/.
*in [[File:Badge vMx.png]].NET or MONO you can still use single quotes (as mentioned above extended to include adjacent spaces),
* How you install on Linux depends on the flavour of Linux you are running. There are download links for Linux at the same URL, but it is often easier to use a package manager, which will download and install it automatically.
** but alternatively you can escape each verbatim character with a backslash as prefix (Cumulus MX).
**For example, in 'Raspbian' on the Raspberry Pi, you can install mono with these commands:
* You may need to use both single quotes and back slashes in some format specifiers, depending whether the characters you want to include can be interpreted as control characters (yes, backslash is also used to escape control characters, so backslash will NOT work for some characters such as those in "on" and "at" [\n will produce new line not the letter n, \t will produce a tab not the letter t]), consequently for some characters you must use the literal approach to include them in your format.
<pre>
 
sudo apt-get update
=== List of allowed modifiers for output format parameters ===
sudo apt-get install mono-complete
Note for Cumulus 1 - where lower (or upper, for easier comparison with MX) case shown, because Delphi is case insensitive, upper (or lower) case (in some cases, indicated by use of curved brackets) could be used instead (exceptions: a/p, ampm, am/pm, Am/Pm, AM/PM, A/P, AMPM etc display as input).
</pre> or
 
<pre>sudo apt update && sudo apt upgrade
[[File:Badge vMx.png]]Remember that most single character format specifiers have a different meaning to when the same letter appears in a multi-character format. The '''%''' shown in front of nearly every single character specifier in the table is not needed if that character is combined with other characters.
sudo apt install mono-complete</pre>
 
Make sure that you have the '''mono-complete''' package installed.
 
==== Forum reference ====
 
Steve Loft published a table showing comparison between output date modifiers for Cumulus 1 and MX at [https://cumulus.hosiene.co.uk/viewtopic.php?f=39&t=17888 Cumulus MX forum]. The table there was based on the table that was originally here for just Cumulus 1.
 
The subsequent comments in the forum suggested his layout got people confused. Most of that confusion came in two circumstances:
*When someone wanted to use one date or time modifier on its own
*When someone who had been using Cumulus 1 swapped to MX and wanted to replace a combination of output modifier characters
 
That all comes from the fact that when a MX modifier consists of a single character it can mean something different to when it appears with other characters. In Cumulus 1, "m" or "M" meant something different when it was combined with "H" or "h" (when it represented minutes), but in all other contexts it represented month. But for Cumulus 1, there is no other case where it matters what context a modifier is put in by the use of other modifiers, and no other modifier takes more than one meaning.
 
In MX it is much more complicated, to take a few examples "D", "H", "M" represent different items on their own to what they represent when combined with other characters. That other character can be as simple as a space or a "%" which modify the meaning of the character. So my modification of the table below is with the intention of demonstrating what characters mean when they are on their own and what they represent in the context of being with other characters. Looking at the table you can see "G" is used on its own because it represents a full date-time specifier. "D" is similarly used on its own represents the long date format. If we only want the day of month number we must use "%d" to avoid the meaning of short date format that "d" on its own represents. If we want the typical Cumulus date-stamp of day of month number and month "d M" and "M" will both work because "M" has a different meaning on its own and with another modifier.
 
==== My Revised Table of Time and Date Output Modifiers ====
 
In some rows of this table, square brackets [] indicate optional items, they are included just to make it clearer how items can be combined in a single output parameter.
{| class="wikitable" border="1"
|-
!style="width:150px" | {{Version badge 1}}Delphi Specifier for Cumulus 1.9.x
!style="width:150px" | [[File:Badge vMx.png]]Mono/.NET Specifier for Cumulus MX
!style="width:600px" | Displays
!style="width:600px" | Example
|-
|c
|G (as single character format)
|Displays the date using the format given by the Short Date format, followed by the time using the format given by the Long Time format. The time is not displayed in Cumulus 1 if the date-time value indicates midnight precisely.
|'22/03/2019 09:47:25' produced by {{Version badge 1}}<#time format=c>[[File:Badge vMx.png]]<#time format=G>
|-
|d
|%d
|Displays the day as a number without a leading zero (1-31). [[File:Badge vMx.png]]Note that Cumulus MX requires a ' ' (space), '%' or other modifier to be included, as 'd' on its own returns full 'short date').
|27 produced by {{Version badge 1}}<#metdate format="d">[[File:Badge vMx.png]]<#metdate format="%d">
|-
|dd
|dd
|Displays the day as a number with a leading zero (01-31).
|07 produced by <#metdate format="dd">
|-
|ddd
|ddd
|Displays the day as an abbreviation (Sun-Sat) using the strings appropriate to the Locale.
|'Wed' produced by <#metdate format="ddd"> (English locale)
|-
|dddd
|dddd
|Displays the day as a full name (Sunday-Saturday) using the strings appropriate to the Locale.
|'Friday' produced by <#metdate format="dddd"> (English locale)
|-
|ddddd
|d (as single character format)
|{{Version badge 1}}Cumulus 1.x.y: Displays the date using the format given by the Short Date format. [[File:Badge vMx.png]]This MX parameter (when on its own) displays inconsistent behaviour as its effect depends on the tag name with which it is used (see examples).
|e.g. '22/03/2019' (British Locale) produced by {{Version badge 1}}<#metdate format=dddd>
[[File:Badge vMx.png]]<#metdateyesterday format=d> ''but not'' <#yesterday=d> which would return just '22'
|-
|dddddd
|D (as single character format)
|Displays the date using the format given by the Long Date format. [[File:Badge vMx.png]]The MX parameter cannot be combined with any other parameters.
|e.g. '22 March 2020' (British Locale)
|-
|M (or ''m'')
|%M
|Displays the month as a number without a leading zero (1-12).
*{{Version badge 1}}Cumulus 1.x.y:If the 'M' or 'm' specifier immediately follows an h, hh, HH, or H specifier, the minute rather than the month is displayed.
*[[File:Badge vMx.png]]Cumulus MX: Note that including a ' ' (space) or '%' before the M makes it a custom modifier e.g. '7' is returned for July as any initial zero is suppressed. ('M' on its own returns both Month and Day according to local format e.g. 22 July).
|2
|-
|MM (or ''mm'')
|MM
|Displays the month as a number with a leading zero (01-12).
*{{Version badge 1}}Cumulus 1.x.y:If the 'm' or 'M' specifier immediately follows an h, H, HH, or hh specifier, the minute rather than the month is displayed.
|'03' produced by <#LastDataReadT format=MM>
|-
|MMM (or ''mmm'')
|MMM
|Displays the month as an abbreviation (Jan-Dec) using the strings appropriate to the Locale.produced by <#metdate format="MM">
|'Jun' produced by <#metdate format="MMM"> (English locale)
|-
|MMMM (or ''mmmm'')
|MMMM
|Displays the month as a full name (January-December) using the strings appropriate to the Locale.
|'June' produced by <#metdate format="MMMM"> (English locale)
|-
|yy
|yy
|Displays the year as a two-digit number (00-99).
|19 produced by <#LastDataReadT format=yy>
|-
|yyyy
|yyyy
|Displays the year as a four-digit number (0000-9999).
|2019 produced by <#LastDataReadT format=yyyy>
|-
|h [''AM/PM'']
|%h [''tt'']
|Displays the hour (12 hour clock) without a leading zero (1-12) [optionally in combination with AM/PM]. What "tt" produces depends on locale settings for your device, it might be capitals or it might be lower case (in Windows use Control Panel, not Settings app, to get to these regional additional settings).
{{Version badge 1}}For Cumulus 1 the formats for am/pm depend on the case in which you type the parameter as shown later in this table
 
[[File:Badge vMx.png]]Note that including a ' ' (space) or '%' before the "h" makes it a custom modifier, that is not needed if the " tt" follows, as multiple parameters are always custom modifiers
|-
|h:mm (or ''h:nn'') [''AM/PM'']
|h:mm [''tt'']
|Displays the hour (12 hour clock) without a leading zero (1-12) followed by 2 digit minutes [optionally in combination with AM/PM whose case varies as explained in previous entry].
{{Version badge 1}}For Cumulus 1, the minutes can be represented by 'mm' only when appearing in combination with 'h'
|'10:27 am' produced by {{Version badge 1}} <#LastDataReadT format="h:nn am/pm">[[File:Badge vMx.png]] <#LastDataReadT format="h:mm tt">
|-
|H (or ''H'')
|%H
|Displays the hour using 24 hour clock without a leading zero (0-23). [[File:Badge vMx.png]]Note that including a ' ' (space) or '%' before the "H" makes it a custom modifier, needed because H is on its own.
|7 produced by {{Version badge 1}}<#daylength format=H>
[[File:Badge vMx.png]]<#daylength format=%H>
|-
|H:mm (or ''H:nn'')
|H:mm
|Displays the hour using 24 hour clock without a leading zero (0-23) followed by 2 digit minutes. [[File:Badge vMx.png]]Note that %, of previous example, is not needed when H is not on its own.
|'7:27' produced by <#LastDataReadT format="H:mm">
|-
|HH (or ''hh'')
|HH
|Displays the hour using 24 hour clock with a leading zero (00-23).
|'06' or 19 produced by <#LastDataReadT format=HH>
|-
|hh (''am/pm'')
|hh [''tt'']
|Displays the hour (12 hour clock) with a leading zero (01-12) [optionally in combination with am/pm].
{{Version badge 1}}For Cumulus 1 the case output for the optional 'am/pm' depends on the case used for that parameter as shown later in this table
[[File:Badge vMx.png]] For MX, the optional 'tt' displays the contents of the device locale setting for AM string for midnight until any hour before noon, and the contents of the PM string for noon or any hour after noon before midnight
|'07 am' produced by {{Version badge 1}} <#LastDataReadT format="hh am/pm">[[File:Badge vMx.png]] <#LastDataReadT format="hh tt">
|-
|hh:mm (or ''hh:nn'' or 'HH:NN') [''am/pm'']
|hh:mm [''tt'']
|Displays the hour (12 hour clock) with a leading zero (01-12) followed by 2 digit minutes [optionally in combination with am/pm].
{{Version badge 1}}For Cumulus 1, the minutes can be represented by 'mm' only when in combination with 'h', in other contexts 'mm' is interpreted as month number, and the case output for am/pm depends on the case used for that parameter as shown later in this table. As Cumulus 1 is case insensitive there are variants with capital letters available.
[[File:Badge vMx.png]] For MX, the optional 'tt' displays the contents of the device locale setting for AM string for midnight until any hour before noon, and the contents of the PM string for noon or any hour after noon before midnight
|'8:27 am' produced by {{Version badge 1}} <#LastDataReadT format="h:nn am/pm">[[File:Badge vMx.png]] <#LastDataReadT format="h:mm tt">
|-
|n
|%m
|Displays the minute without a leading zero (0-59). [[File:Badge vMx.png]] As other examples show, the % is only needed when "m" is on its own.
|7 produced by {{Version badge 1}}<#daylength format=n>[[File:Badge vMx.png]]<#daylength format=m>
|-
|nn
|mm
|Displays the minute with a leading zero (00-59).
|'07' produced by {{Version badge 1}}<#daylength format=nn>[[File:Badge vMx.png]]<#daylength format=mm>
|-
|s
|%s
|Displays the second without a leading zero (0-59). [[File:Badge vMx.png]] As other examples show, the % is recommended when "s" is on its own, although I have not found any alternative meaning for "s" on its own.
| 9
|-
|ss
|ss
|Displays the second with a leading zero (00-59).
|'06' or 19 produced by <#LastDataReadT format=ss>
|-
|z
|FFF
|Displays the millisecond without a leading zero (Cumulus 1: displays 0-999, Cumulus MX: displays either nothing, or displays 1-999, so don't write any code that assumes the MX output is numeric).
 
Note that the system clock in non-current versions of Windows only has precision to 15 ms, so don't use this modifier if your Cumulus is running on an old version of Windows.
|
|-
|(not available)
|ff (or ''f'')
|Displays hundredths of a second (or tenths) with leading zero(s)
|
|-
|zzz
|fff
|Displays the millisecond with a leading zero (000-999). Note that the system clock in some versions of Windows only has precision to 15 ms, so requesting thousandths of a second may not return anything useful.
 
[[File:Badge vMx.png]]The 'fff' modifier in MX can actually be extended to 'ffffff' for output to a millionth of a second!
| 09:47:25.000' produced by {{Version badge 1}}<#time format=hh:nn:ss.zzz>[[File:Badge vMx.png]]<#time format=hh:mm:ss.fff>
|-
|(not available)
| zzz
|Displays the offset of any time from UTC in hours and minutes
| e.g.-07:00
|-
|(not available)
|%K
|Effectively another way of including time zone as per zzz example, but it can only be used for times not in UTC (if I understand correctly)
|
|-
|t
|%t
|Displays the time using the Short Time format. [[File:Badge vMx.png]]Remember that 't' combined with other specifiers (or preceded by space or '%') has a different meaning - see below.
| '09:47' produced by <#LastDataReadT format=t> (might not use colon in your locale) for both flavours of Cumulus
|-
|TT
|T (as single character format)
|Displays the time using the Long Time format. [[File:Badge vMx.png]] Note that this is a full time specifier and "T" is on its own as we are using a single character format.
|'09:47:56' (might not use colon in your locale) produced by {{Version badge 1}}<#LastDataReadT format=TT> [[File:Badge vMx.png]]<#LastDataReadT format=T>
|-
|am/pm or Am/Pm or AM/PM
|tt
|{{Version badge 1}}Uses the 12-hour clock for the preceding h or H specifier, and displays 'am' for any hour from midnight until just before noon, and 'pm' for any hour from noon onwards. The am/pm specifier for Cumulus 1 can use lower, upper, or mixed case, and the result is displayed accordingly.
 
[[File:Badge vMx.png]] For MX, 'tt' displays the contents of the device locale setting for AM string for midnight until any hour before noon, and the contents of the PM string for noon or any hour after noon before midnight, so whether it displays in capitals or lower case is determined by the locale settings, not the case of "tt".
| {Version badge 1}} 'am' produced by <#LastDataReadT format=am/pm>, 'AM' produced by <#LastDataReadT format=AM/PM>
|-
|h a/p
|h t
|Uses the 12-hour clock for the preceding h or H specifier, and displays 'a' for any hour from midnight until before noon, and 'p' for noon or any hour after noon.
{{Version badge 1} The a/p specifier can use lower, upper, or mixed case, and the result is displayed accordingly.
 
[[File:Badge vMx.png]]whether it displays the "a" or "p" in capitals or lower case is determined by the locale settings, not the case of "t".
| see previous example
|-
|ampm
|(see above for 12 hour formats)
|This displays the contents of the device locale setting for AM string for midnight until any hour before noon, and the contents of the PM string for noon or any hour after noon before midnight.
{{Version badge 1}Uses the 12-hour clock for the preceding h or H specifier
| see previous examples
|-
|/
|/
|Displays the date separator character given by the Date Separator. It might not display a slash.
| '/' for typical British locale
|-
|:
|:
|Displays the time separator character given by the Time Separator. With Cumulus 1, this might not display a colon.
 
[[File:Badge vMx.png]]Note that by default Cumulus MX expects a locale to use ":" for any time separator.
|':' for British locale
|-
|'xy'
|'xy' or ''\x\y''
|Characters enclosed in single quotation marks are displayed as such, and do not affect formatting.
 
[[File:Badge vMx.png]]In MX each character to be displayed as it was typed can be prefixed by a backslash. Also remember that any spaces in a MX modifier might need to be within single quotes as space is also used to change what a modifier represents. I told you MX modifiers were more complicated!
|Hyphens are added in this PHP language example '<#LastDataReadT format=yyyy>'.'-'.'<#LastDataReadT format=MM>'.'-'.'<#LastDataReadT format="dd">'
|}
 
==== Using HTML tags within format parameters (available in MX only) ====
 
'''Example using a class to change the look of part of the output'''
 
<pre><#TapptempH format="dd'&nbsp;'MMM'&nbsp;'yyyy'<span class=\'xx\'> at 'HH:mm'</span>'"></pre>
the output from this will look like ''04&nbsp;Dec&nbsp;2018<span class='xx'> at 10:12</span>''
 
'''Note where the quotes are, and where you need to use '\' escape characters'''.
 
'''Example using HTML tags'''
 
<pre><#RecentTS d=2 format="h:mm'&nbsp;'tt'<small>on' d/M/yyyy'</small>'"></pre>
This puts the date in a smaller font than the time
 
=== Output (format modifier) parameters for decimal places ===
 
 
Cumulus 1 allows use of <tt>dp=n</tt> modifier (where n represents desired number of decimal places for latitude and longitude e.g. <#latitude dp=5> gives "59.24250". This is also available in MX.
MX makes much more usage of these '''dp''' parameters. For example in the moon tags <#MoonAge> gives "11" but <#MoonAge dp=3> gives "11.234"
 
*<tt>dp=i</tt> is used for both Cumulus 1 and MX. The value '''i''' following the attribute '''dp''' is an integer, how many decimal places you want for the output you see. Only available for a limited range of web tags (latitude and longitude, plus in MX <#MoonPercent> and <#MoonPercentAbs>).
*<tt>tc=y</tt> is a new parameter only in MX, the attribute '''tc''' takes the value 'y' to remove decimal places by truncation instead of using <tt>dp=0</tt> which would round to nearest integer. e.g. <#MoonAge tc=y>. At present not available in any other web tags.
 
=== Output (format modifier) indicating remove commas ===
 
"rc=y" is a '''new parameter for MX''', the attribute '''rc''' takes the value 'y' to replace any commas defined by the locale with full stops to separate integer and decimal parts of the output value. It was initially only implemented on a few new web tags (#MoonPercent, #MoonPercentAbs, #MoonAge) for MX versions up to and including 3.5.3. From version 3.6.6 only can all web tags that can output real numbers can now use alternative syntax of <tt><#tag_name rc=y></tt> to replace all commas in the output by a full stop (don't worry, MX does not use a comma for separating off thousands, so it is the decimal comma that becomes a decimal full stop like character when this remove comma specifier is used.
 
 
Why would you want to remove decimal commas? Well because the JavaScript language cannot understand decimal commas, and MX has several scripts written in this language, equally some third party alternative web pages rely on ajax to update them (and Ajax uses JavaScript).
 
== Additional text in output format parameters ==
 
You should put anything that is additional, to the defined format modifier specification below, into single quotation marks to prevent it being interpreted as a date or time format modifier:
 
#For example, the word "on" contains the character "n", which for Cumulus versions 1.9.1 to 1.9.4 will be interpreted as a time format modifier unless you put it into single quotation marks. Example of valid Cumulus 1 syntax: <#TtempH format="'at' hh: mm 'on' dd / mm / yyyy">.
#You can include HTML tags (but they cannot have any attributes because both single and double quote characters have defined meanings) and special characters as quoted text within the 'format' parameter.<br> Example of valid syntax: <#TapptempH format="'at 'h:nn'&nbsp;'am/pm '&lt;small&gt;on' d/m/yyyy'&lt;/small&gt;'">.
 
{{Version badge 1}}'''Note for Cumulus 1 - if your format has any spaces in it''', you must enclose the whole format parameter value in double quotes, for example (Cumulus 1.9.x): <#YearTempHT format="hh nn">. Consequently, you cannot include double quote characters in any other position (see [[Php_webtags#Web_tag_Complications| here for work-around]]).
 
[[File:Badge vMx.png]]Note for MX - you can use single quotation marks round spaces and text (e.g. ' on '), but you can also use '\' as escape character (e.g. for 'on' use '''\o\n'''). However for 'at' the only alternative is '''\a't'''' because the character t has another meaning and escape followed by a "t" i.e. "\t" becomes a tab!
 
 
 
=The web tag application programming interface=
 
[[File:Badge vMx.png]] Available from version 3.7.0 (build 3089) released 28 July 2020. It was proposed in January 2015, see Steve Loft [https://cumulus.hosiene.co.uk/viewtopic.php?p=101496#p101496 plan to add a call where you supply a list of items (probably web tag names), and you get back the equivalent data].
 
== Where to use ==
 
This is meant for services either on the same computer as Cumulus or on your local network. It is not secure, and should not be available, nor requested, via any external network or the internet.
 
The [[MX Administrative Interface]] uses some application programming interface (api) calls to obtain the data each web page in that interface needs, and another api to return the results of any edit made. If you wanted your '''CumulusMX/interface/todayyest.html''' web page to include something else (e.g. snow falling/lying/depth) you would edit that HTML page to have the extra sub-table you want (you cannot extend the existing rainfall table as that is dynamically created by existing api) and you would edit the associated JavaScript file '''CumulusMX/interface/js/todayyest.js''' to add a new api call seeking snowdepth, snowfalling, snowlying tags for today (unfortunately there are no tags for yesterday's snow) and to place the returned values into your new sub-table (probably using jQuery to make it easy). In a similar way, you could add anything where today and yesterday tags are available such as UV Index.
 
In earlier versions of Cumulus if you wanted to make use of values processed by Cumulus, you wrote a script file referencing the web tags you wanted to use, and let Cumulus process that file at an interval set in the settings, then you had to write something to process the results at the relevant interval. Now if you are running other software on your device that runs MX (or a computer or other device linked directly on your personal network), you can request web tags values on demand via an application programming interface (api hereafter) and don't need to worry about any timing issues.
 
Obviously each api request creates a processing overhead on Cumulus so use this feature wisely (minimise the information you request and minimise the frequency of requesting it). You can use it for extra current information, but in that usage you might need to repeat the call. Consequently, maybe it is more likely that the api will be used to request information that does not keep changing, such as what units are being used for temperature, rainfall, and wind speed; or perhaps daily, monthly, or yearly, summary figures.
 
Each admin interface web page uses api techniques for all the information it needs. Some api calls are repeated with AJAX requesting updates for the weather information on a frequent basis, but each page has another api request that is issued just once for the version and build being used. To my mind, the design of '''CumulusMX/interface/todayyest.html''' is crazy. The HTML appears to have a table structure, but that table structure is overwritten by each repeating api. So every time AJAX repeats that api call it returns in json format the whole table definition as well as table cell contents, despite that much of that json (all that HTML defining table header, table rows, table cells, etc.; and the units for each value) does not change and it is only some values and times buried within the json in the api that actually might change (and of those half of them, the yesterday values and times only change once a day). In some code I wrote (but later abandoned) I made use of the api calls that support the '''CumulusMX/interface/todayyest.html''' web page to get the units I wanted on another interface page, but I only called it once as it returned a lot of other information (as just mentioned) that I did not need. I later found a better way, as in example below, which gives me just what I need and no more.
 
== "GET" approach ==
 
You may have used GET as an attribute when defining the action of a HTML form. Equally you might in a script language access the query-string part of a Universal Resource Locator to get parameters for what the script is to supply to the web page. Even if you don't understand the meaning of those technical terms, you probably have seen when using a browser (in the box where a URL is entered) that sometimes the URL seen there has a query-string. You will have seen a question mark (?) followed by one or [separated by ampersand (&)] more '''name=value''' parameters.
 
The GET approach to using the Cumulus general api works in this way indicating the start of a query-string with a question mark and using ampersands to separate names. The difference is that a tag name (or list of tag names) is used instead of a name=value parameter (or list of name=value parameters). However, when the Cumulus api returns the values they will be in attribute=value format. Therefore if (like example below) you are coding in JavaScript, what is returned is a JavaScript Object and you extract the values by specifying the Object name and the Attribute name. If that technical terminology confuses you, look at the example.
 
===Selecting values using GET===
 
Suppose you want to get the values for the following three web tags:
# <#RCtemp>
# <#RChum>
# <#RCdew>
Then the URL with query-string to use is '''http: //localhost:8998/api/tags/process.json?rc&temp&hum&dew'''
 
Obviously, if you have started MX with a port parameter like this:
<pre>sudo mono CumulusMX.exe -port 9999</pre>
then you change the 8998 port shown in the URL for the api to use the port you have selected e.g. '''http: //localhost:9999/api/tags/process.json?rc&temp&hum&dew'''
 
 
The first parameter is '''rc''' to indicate that the tags that follow are to use decimal points not decimal commas, which is how many script languages expect to see values.
Remember that in current version (and some earlier versions) of MX, the above three web tags are exactly same as:
# <#temp rc=y>
# <#hum rc=y>
# <#dew rc=y>
 
Since '''rc=y''' can be applied to several web tags that don't appear in [[Webtags#No_Commas]] table, this shows how the api can access values without commas for all those web tags that report in real numbers and allow that output modifier.
 
If you are using the api in a context where it does not matter if decimal commas or decimal points are in the api or for any tags that don't report in real numbers, simply omit the '''rc''' as first item, and just include tag names separated by ampersands.
 
=== JavaScript example ===
 
Some people might feel the admin interface could be improved on some of its pages by showing additional information. It is possible from MX 3.7.0 to obtain extra information.
 
I wanted to improve the log file editing pages, and that was partly by adding validation, and partly by changing the way the editing is done. For the standard log file editor I wanted to achieve even more, I added a script to calculate (and recalculate after any edit) the derived fields from the source fields. To make these calculations work for anyone, I needed to find out what units the Cumulus MX user is using. Before 3.7.0 release the snippet of script that obtained the units via various api calls was quite complex (I described above how the api returned lots of unwanted content), but with 3.7.0 my new api call was greatly simplified to what I show below. Please note my revised log file editing scripts did not make it into a public release, and it is only the units obtaining api that I am making available to public here.
 
Here is the code (with the api call written using jQuery):
<pre>/* Some new variables connected with new api call (MX 3.7.0) */
var tempLetter; // C or F
var rainUnit; // mm or in
var windUnit; // any units in style allowed by Cumulus
/* The one extra api request included to obtain the units used for temperature, rainfall, and wind speed */
$.get('./api/tags/process.json?tempunitnodeg&rainunit&windunit', "limit=1", callUnits);
function callUnits(unitsObject)
{
tempLetter = unitsObject.tempunitnodeg;
rainUnit = unitsObject.rainunit;
windUnit = unitsObject.windunit;
console.log("new api", tempLetter, rainUnit,windUnit);
}</pre>
A little bit of explanation might help:
*JavaScript variables generally need to be declared first, I have used 3 separate line each starting with '''var''', but you can list several variables on one line using a comma to separate them
*In my script it is important to define these variables outside the function as I will explain later
*The jQuery get request takes the api URL as first parameter and the function to deal with the returned result as third parameter
*The middle parameter is irrelevant in this context as only one object instance is returned, but if the qet was returning multiple results, "limit=1" would only return the first result
*The function takes as its sole parameter an Object (a JavaScript Object is a collection of properties), this is what is returned by the api, an object can be given any variable name
*In JavaScript if a variable is defined outside the function, then given a value inside the function, that value can be accessed by later code outside the function (in my case by code within the other functions for calculating each derived value)
*We are only interested in 3 of the '''property_name = property_value''' items in the Object.
*The JavaScript '''refinement''' syntax (starts with a dot) can be used to find the value for any parameter we name. We assign the variable already defined to the object and its refinement (that specifies the attribute we want).
*The console.log command simply outputs all the items in the list within the brackets into the browser console that in many browsers is displayed by selecting '''F12''' on the keyboard. I included this instead of the lengthy rest of my code that uses the units to do the various calculations correctly.
 
== "POST" approach ==
 
The word "Post" in a computer environment means that the Hypertext Transfer Protocol (HTTP) used by the internet is being asked to transfer information enclosed in the body of the request message. Put slightly less technically in this approach you produce a text file with the details of what tags you want and send it to the api server. I suppose it is a bit like sending an email, its header (subject, author, date sent) is easy to view, but you need to open it to see what text is in the body.
 
You may have used POST as an attribute when defining the action of a HTML form. In that context the form is sent as the contents of a message to whatever web page is going to process the contents of that form.
 
The post approach has a few advantages over get:
*The parameters are not shown in any query-string, so are not obvious to the person looking over your shoulder, nor do they appear in a history list of sites that the browser has visited.
*If you fill out a form online, the post approach will be used as the content needs to be kept secure.
**The get approach may be seen when you are navigating through a web site, and a selection is being remembered.
*The POST approach can handle very long requests and return a lot of information.
**In contrast, a URL with query-string is restricted in total length (the restriction is dependent on a number of other factors, but might be at something like 1000 characters in total), so GET comes with a restriction on how many parameters can be specified.
 
See https://cumulus.hosiene.co.uk/viewtopic.php?p=145050#p145050 for post example
 
=The Web Tags for Cumulus =
 
These are available in both Cumulus 1 and MX unless indicated by a version 1 or MX badge.
 
Here follow tables indicating what web tags/tokens can be used, tables group the web tags available by the basic purpose of the tags listed.
 
== System ==
 
Special tags returning information about the Windows device hosting Cumulus 1.
 
[[File:Badge vMx.png]]''If you are running MX, then most tags do not work.''
 
{| class="wikitable" border="1"
|-
!style="width:150px" |Web tag_name
!style="width:600px" |Function
|-
|<#OsVersion>
|OS version, e.g. "Windows 7 x64 build 7600"
|-
|<#OsLanguage>
|OS language, e.g. "English"
|-
|<#SystemUpTime>
|{{Version badge 1}}How long the system has been up, e.g. "8 hours 21 minutes" (not available on MX)
|-
|<#ProgramUpTime>
|How long Cumulus has been running, e.g. "7 hours 55 minutes"
|-
|<#CpuName>
|{{Version badge 1}}CPU type, e.g. "Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz" (not available on MX)
|-
|<#CpuCount>
|Number of processors, e.g. "4"
|-
|<#MemoryStatus>
|{{Version badge 1}}Free and total system RAM, e.g. "4619/8191 MB (free/total)" (not available on MX)
|-
|<#DisplayMode>
|{{Version badge 1}}Screen display mode, e.g. "1680x1050, 32 bit" (not available on MX)
|-
|<#AllocatedMemory>
|{{Version badge 1}}Amount of memory allocated to Cumulus, e.g. "18.76 MB" (not available on MX)
|-
|<#DiskSize>
|{{Version badge 1}}Size of disk on which Cumulus is running, e.g. "931.51 GB" (not available on MX)
|-
|<#DiskFree>
|{{Version badge 1}}Free space on disk on which Cumulus is running, e.g. "515.36 GB" (not available on MX)
|}
 
== Miscellaneous ==
 
All tags are available in all flavours, as far as I know, although their output might vary, and which input/output parameters they permit might vary between Cumulus 1 and MX.
 
{| class="wikitable" border="1"
|-
!style="width:150px" |Web tag_name
!style="width:900px" | Function
|-
|<#LatestError>
|Displays the last error from the Cumulus 1 error log. (The value is cleared when you click the error light in Cumulus 1).<br />
Note: This tag displays ''all'' errors, even if they do not cause the error light to flash in Cumulus 1. Although this tag and the next 3 are in MX, none of them are actually used (as at April 2020).
|-
|<#LatestErrorDate>
|The date of the latest error logged to the error log window, using the system short date format. Gives dashes when latest error is reset
|-
|<#LatestErrorTime>
|The time of the latest error logged to the error log window, using the system short time format. Gives dashes when latest error is reset
|-
|<#ErrorLight>
|1 if the 'error' light is flashing, 0 if not
|-
|<#version>
|The version of Cumulus in use e.g. '1.9.4' or '3.4.1'
|-
|<#build>
|The build of Cumulus in use e.g. '10992' for latest Cumulus 1 patch
 
(Cumulus MX is under development so new builds are released frequently)
|-
|<#NewBuildAvailable>
|'''Only available from release 3.7.0''' onwards, it is checked on start-up and once a day thereafter at a random time
*Returns a boolean value
**0 - MX running the latest build available
**1 - MX is running an earlier build that the latest public release
|-
|<#NewBuildNumber>
|'''Only available from release 3.7.0''' onwards, it is checked on start-up and once a day thereafter at a random time
 
Displays the latest public release build number - eg. b3089
|-
|<#realtimeinterval>
|The realtime update interval in seconds (integer)
|-
|<#interval>
|The web site update interval in minutes (integer)
|-
|<#rollovertime>
|The time that the logs rollover to the next day: 'Midnight', '9 am' or '10 am'
 
This is the end of the meteorological day, so if during Daylight Saving Time it is "10 am", then on the day DST ends it will return to "9 am" ensuring every meteorological day is exactly 24 hours long. If the time is "Midnight" or during DST it is "9 am", then days will be 23 or 25 hours long just on day clocks change, 24 hours otherwise.
|-
|<#update>
|The date and time of the last web site update
|-
|<#LastDataReadT>
|The date/time data was last read from the station
|-
|<#stationtype>
|The weather station [https://cumuluswiki.org/a/Cumulus.ini#Section:_Station model] description (you choose what text appears for this on 'Display' settings screen within Configuration menu - the field is at the bottom left of that screen).
|-
|<#latitude>
|The station [http://en.wikipedia.org/wiki/Latitude latitude] (as you entered during setup).
Supports an optional 'dp' parameter, if supplied, instead of the usual web-encoded text format with degrees/minutes/seconds, the result is in decimal degrees to the specified number of decimal places. E.g<br />
<#latitude> gives "N&nbsp;59& deg;&amp;nbsp;14&amp;#39;&amp;nbsp;33&amp;quot;" for N 59 14 33<br />
<#latitude dp=5> gives "59.24250"
 
If the "dp" parameter is supplied, then supplying "rc=y" in addition will cause any decimal comma to be converted to a decimal point.
|-
|<#longitude>
|The station [http://en.wikipedia.org/wiki/Longitude longitude] (as you entered during setup). Supports an optional 'dp' and 'rc' parameters as per the latitude tag.
|-
|<#altitude>
|The station [http://en.wikipedia.org/wiki/Altitude altitude] value (webtag outputs web encoded format containing figure, '&amp;nbsp;' and units) in either feet or metres just as you entered during setup (so it is more complex to extract number for script arithmetric); e.g. '123&amp;nbsp;m'
|-
|<#location>
|The station location (as you entered during setup)
|-
|<#longlocation>
|Longer description of the station location (as you entered during setup)
|-
|<#forum>
|URL of the forum (as you entered during setup)
For Cumulus 1, this defaults to a Sandaysoft URL that is no longer available, for MX this defaults to the current support forum hosted by "Freddie" web server site
|-
|<#webcam>
|URL of the webcam (as you entered during setup). Default is blank. Can be used to link to any other web page that you host (Cumulus does not verify that it is a web can, that is just a label, and the label can be changed on each standard web page individually)
|-
|<#graphperiod>
|The number of hours displayed by the graphs, as set using '''Configuration''' menu, ''Display'' settings screen 'Detailed Chart Period'
|-
|<#dailygraphperiod>
|The number of days displayed by the graphs, as set using '''Configuration''' menu, ''Display'' settings screen 'Daily Chart Period' (available from build 1098)
|-
|<#LatestNOAAMonthlyReport>
|Gives file name of latest auto-saved NOAA monthly report
|-
|<#LatestNOAAYearlyReport>
|Gives file name of latest auto-saved NOAA yearly report
|}
 
==Units==
 
Apply to Cumulus 1 and MX, no optional input nor output parameters.
{| class="wikitable" border="1"
|-
!style="width:150px" | Web tag_name
!style="width:600px" | Function
|-
|<#tempunit>
|Unit of temperature being used (Set in Cumulus as [http://en.wikipedia.org/wiki/Centigrade Celsius] or [http://en.wikipedia.org/wiki/Fahrenheit Fahrenheit]) values "&amp;deg;C" or "&amp;deg;F"
|-
|<#tempunitnodeg>
|The temperature units being used, without a degree symbol, i.e. "F" or "C"
|-
|<#pressunit>
|Unit of measure for pressure. Possible values: "mb", "hPa", "in"
|-
|<#rainunit>
|Unit of measure for rain fall. Possible values: "mm" or "inches"
|-
|<#windunit>
|Unit of measure for wind speed. Possible values: "m/s", "mph", "km/h", "kts"
|-
|<#windrununit>
|Unit of measure for wind run (distance). Possible values: "km", "miles", "km", "nm" (for wind speeds in m/s, mph, km/h, kts)
|-
|<#cloudbaseunit>
|The units used for cloudbase value. Possible values: "ft" or "m"
|}
 
==Date & Time==
Both Cumulus 1 and MX support all of these, most of these web tags can be used with output parameters.
{| class="wikitable" border="1"
|-
!style="width:150px" |Web tag_name
!style="width:600px" | Function
|-
|<#date>
|The current date
|-
|<#time>
|The current time and date. Example result: 18:30 on 30 December 2009. If you simply wish the time, use next tag (below)
|-
|<#timehhmmss>
|The current time. Example format: 18:30:27
|-
|<#timeUTC>
|The current UTC date/time rather than local date/time
|-
|<#minute>
|The current time, just the minutes. Example format: 07
|-
|<#hour>
|The current time, just the hour. Example format: 07
|-
|<#day>
| The current day as a 2-digit number. Example format: 07
|-
|<#dayname>
| The current day as a word. For example, Monday
|-
|<#shortdayname>
| The current day as a shortened word. Example format: Mon
|-
|<#month>
|The current month as a 2-digit number. Example format: 07
|-
|<#monthname>
|The current month as a word. Example format: July
|-
|<#shortmonthname>
|The current month as a shortened word. Example format: Jul
|-
|<#year>
|The current year as a 4-digit number. Example format: 2009
|-
|<#shortyear>
|The current year as a 2-digit number. Example format: 09
|-
|<#metdate>
|The current meteorological date. After rollover time on current calendar date, this date will be the same as the current date. If using a 9am/10am rollover, then between midnight and 9am/10am the <#metdate> will be the previous calendar day.
 
Can be used with relevant format parameters to indicate current meteorological day on todayT.htm template page, meteorological month on thismonthT.htm template page, or meteorological year on thisyearT.htm template page
|-
|<#metdateyesterday>
|The previous meteorological date. If using a 9am/10am rollover, then between midnight and 9am/10am the <#metdateyesterday> will be the calendar day before that returned by <#yesterday>, otherwise both return same.
 
Can be used with relevant format parameters to indicate correct day on yesterdayT.htm template page, and can be used to return latest day stored on [[dayfile.txt]] and NOAA report for latest month.
|-
|<#yesterday>
|Yesterdays date
|-
|<#rollovertime>
|The time that the logs rollover to the next day: 'Midnight', '9 am' or '10 am'
|-
|<#update>
|The date and time of the last web site update
|-
|<#timeJavaScript>
|{{Version badge 1}} Not available in Cumulus 1.
 
[[File:Badge vMx.png]]Available from version 3.5.2
 
The JavaScript '''Date''' object contains the number of miliseconds since 00:00:00.000 UTC on 1st January 1970, that date and time is known as the UNIX Epoch. In JavaScript, you can use <tt>Math.floor(new Date().getTime()/1000.0)</tt> This getTime method returns the time in milliseconds. The web tag returns an integer (currently with 13 digits) representing the number of milliseconds since the UNIX epoch when the web tag was processed. It can be used in a script where you wish to re-express other times output by Cumulus MX into UTC (Coordinated Universal Time). Mac OS X uses 00:00:00.000 UTC on 1st January 2001 as the starting time and date for its millisecond count, so that is considerably lower.
 
Note that UTC is calculated using 9192631770 times a particular transition time for Caesium 133 as a basis for 1 second. GMT (Greenwich Mean Time) is calculated on the basis that 1 second is 1/86400 of the time taken for a whole (day) rotation of the Earth. UT1 (or solar time) is calculated from various space measurements. Periodically, leap seconds are added to UTC to realign it with UT1, but these leap seconds are not added to the count of milliseconds represented by this web tag.
 
Do be aware that some devices will use a 32 bit signed integer to represent this number, and that will stop working on 19 January 2038, the year 2038 problem for computing world.
|-
|<#timeUnix>
|{{Version badge 1}} Not available in Cumulus 1.
 
[[File:Badge vMx.png]]Available from version 3.7.0
 
Unix tracks the number of seconds since the UNIX epoch. So this web tag can be used when you do not want the millisecond accuracy of the previous web tag. Like previous web tag this relates to UTC, so see details for that tag to find out more. This is equivalent in PHP 5 and PHP 7 to '''time();''' (in PHP 8, a parameter is mandatory for time function, so the call changes).
|-
|<#LastDataReadT>
|The date/time data was last read from the station. Default format for this tag is like this example '''18:30 on 30 December 2009''', but output parameters for both date and time can modify this to include seconds in 1.9.x builds and most MX builds such as per this example '<#LastDataReadT format="yyyy-MM-dd HH:mm:ss">'.
|-
|<#DaysSince30Dec1899>
|Day count (gives whole and fractional part) Example: 41250.6523310301
|-
|<#recordsbegandate>
|Date when records began (appears twice on "recordT.htm" provided in standard web page, and used to calculate next tag, but ignored for all other Cumulus processing). Any output parameters valid for a date can be used here, don't forget differences in modifiers for Cumulus 1 and MX. There is no time associated with this web tag. The default format is like 30 December 2009, please note although this web tag reports the value associated with [b]StartDate=dd/MM/yyyy[/b] (see [[Cumulus.ini#Section:_Station]]), the format there is short-date format and different to default format for this web tag.
|-
|<#DaysSinceRecordsBegan>
|Day count since Cumulus records started
|}
 
==Current Conditions==
 
The web tags/token shown here are mainly determined by which appear on "Now" page (index.htm).
The "sudo" prefix gives the command 'root' privileges, that allows administrative commands like update and install to run.
Rainfall this month and this year are included here for consistency with supplied web templates (indexT.htm, thismonthT.htm, and thisyearT.htm) and with the dashboard 'Now' part of the Cumulus MX user; although you might expect to find them listed in tables for this month and this year, those web pages do not show these derivatives.
Those listed here cover both measurements obtained from a weather station (like air temperature, wind speed and direction, humidity and barometric pressure); and all the derived values (like humidex, feels like, apparent temperature, wind chill and heat index).
==== To actually run MX ====
 
Note however, that the derived values calculated for Cumulus 1 and for MX may not agree, see derived value section within Recent History tags section for examples.
Open a terminal window, change to the Cumulus MX directory, and then type:
{| class="wikitable" border="1"
<pre>sudo mono CumulusMX.exe</pre>
|-
!style="width:150px" | Web tag_name
!style="width:600px" | Function
|-
|colspan="2" style="background:lightgray;"|Temperature
|-
|<#temp>
|The outside (air) temperature
|-
|<#intemp>
|The inside temperature
|-
|<#temptrend>
|The average rate of change in temperature over the last three hours. Trend = (temp_now - temp_3hrs_ago) / 3
|-
|<#temptrendtext>
|Temperature change over the last three hours - Rising/Falling/Steady (values can be set in strings.ini)
|-
|<#temptrendenglish>
|Temperature change over the last three hours - Rising/Falling/Steady (for use by [[Webtags_as_boolean_operators_in_HTML|HTML]], [[Editing_content_of_a_webpage_using_either_HTML_or_Script|javascript]] etc, values can't be changed)
|-
|<#TempChangeLastHour>
|The change in temperature over the last hour
|-
|<#heatindex>
|Current [[heat index]]. The referenced page in weather terminology section of this Wiki explains it.
|-
|<#humidex>
|Current [http://en.wikipedia.org/wiki/Humidex Humidex]
|-
|<#apptemp>
|The [[Apparent_temperature|apparent]] temperature. The referenced page in weather terminology section of this Wiki explains it. The formula used is that defined by BOM. Although at temperatures above 20°C (68°F) Feels like reports an "apparent temperature" it uses a different formula.
|-
|<#wchill>
|The current [[wind chill]] temperature. The referenced page in weather terminology section of this Wiki explains it. For temperatures below 10°C (50°F) Feels like reports the same value.
|-
|<#feelslike>
|{{Version badge 1}} Not available in Cumulus 1.
 
[[File:Badge vMx.png]]Not available in all MX versions. Please see sub-section below this table regarding availability by MX versions if you are using a MX version earlier than 3.6.10.
There are some optional parameters you might need to use, as they also apply to windows they are covered later.
 
The current [[Feels_Like|Feels Like]] temperature. The referenced page in weather terminology section of this Wiki explains it.
Next start the administrative interface, basically same as described for Windows above. More information on admin interface later.
|-
|<#IsFreezing>
|If outside temperature is at or below 0°C/32°F. 0=Above freezing, 1=Below freezing
|-
|<#chillhours>
|The number of [[Heat/cold_degree_days_and_Chill_hours#Chill_Hours_and.2For_Air_Frost|'chill hours']] so far this season (threshold temperature and start date are configurable).
|-
|colspan="2" style="background:lightgray;"|Humidity
|-
|<#hum>
|The outside [http://en.wikipedia.org/wiki/Humidity humidity]
|-
|<#inhum>
|The inside humidity
|-
|<#dew>
|The current dew point
|-
|<#wetbulb>
|Estimated [http://en.wikipedia.org/wiki/Wet_bulb wet bulb] temperature, can be seen if hover over 'Dewpoint' on Cumulus 1 main screen
|-
|colspan="2" style="background:lightgray;"|Rainfall
|-
|<#rfall>
|The total rainfall so far today
|-
|<#rrate>
|The current rainfall rate
|-
|<#rhour>
|The rainfall in the last hour
|-
|<#rmidnight>
|The total rainfall since midnight. Useful if you don't use midnight as your start of day
|-
|<#r24hour>
|Amount of rain in the last 24 hours
|-
|<#LastRainTipISO>
|Fixed ISO format output giving date and time of last rain gauge tip (e.g 2010-09-06 06:09) The format is a shown, and cannot be modified by locale or addition of parameters.
|-
|<#LastRainTip>
| (available from release 3.6.1) Date/time of last rain gauge tip (default format is as set in locale) '''PLEASE NOTE: this web tag WILL accept any date and time output format modifiers'''
|-
|<#MinutesSinceLastRainTip>
|The number of minutes since the last rain gauge tip, in whole numbers, rounded down
|-
|<#IsRaining>
|For [[Rain_measurement#Optical_Rain_Gauge| Hydreon RG-11 devices]], shows the current rain state. 0=No rain, 1=It's raining
|-
|<#rmonth>
|The total rainfall so far this month
|-
|<#ryear>
|Annual rainfall total for rainfall season year (i.e. starting month as set on Configuration menu, station screen, Annual rainfall frame)
|-
|<#ConsecutiveRainDays>
|The number of days up to (but not including) today where it has rained every day. The threshold amount of rain required to determine a rain day is configurable via the RainDayThreshold setting in cumulus.ini, the units for the threshold are the same as your rain units, meteorologists exclude dew (and other times when single tip of recorder).
|-
|<#ConsecutiveDryDays>
|The number of days up to (but not including) today since it last rained. The threshold amount of rain required to determine a rain day is configurable via the RainDayThreshold setting in cumulus.ini the units for the threshold are the same as your rain units
|-
|colspan="2" style="background:lightgray;"|Pressure
|-
|<#press>
|The [http://en.wikipedia.org/wiki/Sea_level_pressure sea level pressure]
|-
|<#presstrendval>
|The average rate of pressure change over the last three hours.
|-
|<#presstrend>
|The pressure trend in words - values can be set in the 'strings.ini' file
|-
|<#presstrendenglish>
| a singe word description for the pressure trend - Rising/Falling/Steady (for use by [[Webtags_as_boolean_operators_in_HTML|HTML]], [[Editing_content_of_a_webpage_using_either_HTML_or_Script|javascript]] etc, values can't be changed)
|-
|<#altimeterpressure>
|Altimeter pressure. Pressure corrected to sea level using the station's altitude only. Same as sea-level pressure for non-Davis stations.
|-
|colspan="2" style="background:lightgray;"|Wind
|-
|<#wlatest>
|Current wind speed reading from console. Corresponds to 'latest' on the Cumulus main screen.
|-
|<#bearing>
|Current wind bearing in degrees
|-
|<#currentwdir>
|Current wind bearing as a compass point - e.g. ESE
|-
|<#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). Corresponds to 'average' on the Cumulus main screen.
|-
|<#avgbearing>
|Average wind bearing in degrees over last 10 minutes. Range 1-360, 0=Calm
|-
|<#wdir>
|Average wind bearing over last 10 minutes as a [http://en.wikipedia.org/wiki/Compass compass] point - e.g. ESE
|-
|<#wgust>
|The highest wind reading in the last 10 minutes. Corresponds to 'gust' on the Cumulus main screen.
|-
|<#wdirdata>
|Comma separated list of recent wind bearing readings (every x seconds, up to 3600 entries). This is a circular buffer; to find the most recent value use nextwindindex. Reading interval x varies by station type.
|-
|<#wspddata>
|Comma separated list of recent individual (non-averaged) wind speed (correspond to 'latest' on the Cumulus main screen) readings (every x seconds, up to 3600 entries). This is a circular buffer; to find the most recent value use nextwindindex. Reading interval x varies by station type.
|-
|<#nextwindindex>
|The index of the entries in wdirdata and wspddata which Cumulus is going to use next - i.e. the latest entry used is one less than this; but don't forget to allow for the wrap around!
|-
|<#beaufort>
|The current wind speed on the [http://en.wikipedia.org/wiki/Beaufort_scale Beaufort scale] (e.g. F8)
|-
|<#beaufortnumber>
|The current wind speed on the Beaufort scale, without a leading "F", e.g. "6"
|-
|<#beaudesc>
|The current wind speed Beaufort description (e.g. "Gale")
|-
|<#BearingRangeFrom>
|The 'lowest' clockwise bearing in the last 10 minutes (or as configured using AvgBearingMinutes in cumulus.ini)
|-
|<#BearingRangeTo>
|The 'highest' clockwise bearing in the last 10 minutes (or as configured using AvgBearingMinutes in cumulus.ini)
|-
|<#BearingRangeFrom10>
|The 'lowest' clockwise bearing in the last 10 minutes (or as configured using AvgBearingMinutes in cumulus.ini), rounded down to nearest 10 degrees
|-
|<#BearingRangeTo10>
|The 'highest' clockwise bearing in the last 10 minutes (or as configured using AvgBearingMinutes in cumulus.ini), rounded down to nearest 10 degrees
|-
|<#WindRoseData>
|A comma-separated list of the wind 'totals' used to draw the wind rose (8 or 16 values)
|-
|<#WindRosePoints>
|The number of items in <#WindRoseData> (i.e. 8 or 16)
|-
|<#WindSampleCount>
|The number of wind samples making up the wind rose (etc) data (up to 3600)
|-
|colspan="2" style="background:lightgray;"|Miscellaneous
|-
|<#cloudbase>
|Calculated [http://en.wikipedia.org/wiki/Cloud_base cloud base]
|-
|<#cloudbasevalue>
|Current calculated cloud base without units
|-
|<#UV>
|Current [http://en.wikipedia.org/wiki/Uv_index UV index]. Requires your station to have a UV sensor.
|-
|<#SolarRad>
|Current [http://en.wikipedia.org/wiki/Solar_radiation solar radiation]. Requires your station to have a solar sensor.
|-
|-
|<#Light>
|Current Current light level in Lux. Requires your station to have a solar sensor. Only applies to Fine Offset stations.
|-
|[[Forecast_webtag|<#forecast>]]
|The current forecast
|-
|<#forecastenc>
|The same as <#forecast> but with all reserved HTML characters, and those above character code 159, encoded as HTML entities
|-
|<#forecastnumber>
|The number relating to the current forecast entry in the [[strings.ini]] file. If your station is not providing it's own forecast and Cumulus is not calculating one then 0 (zero) is returned. Note: two negative numbers can be returned by Cumulus: -1 (neg 1) = Exceptional Fine, -26 (neg 26) = Exceptional Bad
|-
|<#cumulusforecast>
|Always gives Cumulus (Zambretti) forecast, even if the <#forecast> tag provides a station forecast
|-
|<#cumulusforecastenc>
|The same as <#cumulusforecast> but with all reserved HTML characters, and those above character code 159, encoded as HTML entities
|-
|<#wsforecast>
|Always gives station forecast (if available)
|-
|<#wsforecastenc>
|The same as <#wsforecast> but with all reserved HTML characters, and those above character code 159, encoded as HTML entities
|-
|<#currcond>
|Represents the value entered on the screen within Cumulus for the Current Weather condition, or the value as held in the [[currentconditions.txt]] file. Any reserved HTML characters are encoded as HTML entities
|-
|<#currcondenc>
|The same as <#currcond> but also has all characters above (decimal base) code 159 encoded as HTML entities for example this would encode any use of symbol for degree.
|}
==== Feels Like ====
 
Feels like temperature was first made available, just for current conditions at MX version 3.5.4. In version 3.6.0. it was extended to add max/min for each day, each month, each year, and all time. In version 3.6.11 it was added to recent history.
==== Other issues ====
 
There are lots of topics in the MX sub-forum about a multitude of issues about commands to use to install and check mono, how to stop MX and differences between different devices (including Mac) and different Linux versions. At the moment, there seems to be some uncertainty, and consequently, I have not attempted to include/summarise all the material I have found.
 
The figures quoted for this derivative vary between versions:
'''APPEAL''' - Please could any readers who have experience of running MX in a Linux or Mac environment please consider writing advice into this article. I want it to be a comprehensive accurate article.
* The first formula was used from MX version 3.5.4 (25 Apr 2020) build 3075 until version 3.6.7 (4 June 2020) build 3083
* The second formula, which was coded incorrectly, and so gave strange results, applied in versions 3.6.8 to 3.6.9 (build 3084, 3085)
* The third, and hopefully final, formula applies from version 3.6.10 (build 3086).
 
A php script for adding feels like as calculated in version 3.6.10 to any standard log line created either without feels like, or with an older (now incorrect) calculation, can be downloaded from [https://cumulus.hosiene.co.uk/viewtopic.php?f=18&t=18096 Create Missing topic on support forum]. Obviously, this calculates from the small sub-set of current conditions that have been logged, and is not as accurate at deriving maximum and minimum as derivation made as each reading is processed by MX (so including all current conditions).
==== Notes by ExperiMentor (in Switzerland) ====
 
==Extra Sensors Davis (and a few others)==
These comprehensive notes describe how to install Cumulus MX on a Pi Zero, using a PC to do some of the work:
 
These web tags hold current values for additional sensors supported by Cumulus. Most of the tags in this section relate to Davis stations, but not exclusively.
'''Buy equipment'''
* Raspberry Pi Zero W
** A faster Pi is NOT needed for running Cumulus. Pi Zero W has WiFi and one USB port which is all that is needed for headless running.
** Using a faster Pi might speed parts of the installation process, but are overkill for actual ‘production’ running. A faster Pi will work fine though if you have one going spare and don't mind the extra power use.
** Case if desired
* Micro SD card eg 16 GB, decent quality. Adapter if needed to put Micro SD card in PC
* OTG cable (micro USB plug to standard USB socket) to connect a USB weather station to Raspberry Pi [you may have got one free with a mobile phone or tablet] if it's a USB weather station. Not needed if you have a WiFi or ethernet weather station. An Ethernet weather station will need connected to your router, not the Pi.
* Suitable Micro USB power supply (it does not need to be a high power 2.5A version for Pi Zero W with only the weather station attached; it will be powered on 24/7, so a low power consumption ‘switched mode’ type is preferred – ie one that does not become warm when plugged in with nothing attached. You may have a suitable one from a mobile phone.
'''
Download useful PC software and install on your PC'''
These instructions are for a Windows PC. Steps would be similar on a Mac, but programs and details would differ. Should also be possible with an Android tablet.
* SD Formatter (the Windows Format facility will NOT do)
** https://www.sdcard.org/downloads/formatter_4/index.html
* balenaEtcher (for unzipping and burning images to SD cards) [Previously named 'Etcher'] <tt>https://etcher.io/</tt>
* Win32DiskImager (for backup & restore of SD card images) <tt>https://sourceforge.net/projects/win32diskimager/</tt>
* PuTTY (an SSH client for Windows) <tt>https://www.putty.org/</tt>
* FileZilla (an FTP file transfer program for Windows) <tt>https://filezilla-project.org/download.php</tt>
 
Some tags are only available for certain builds, see general tip at top of page to check for the build you are using. In particular Cumulus 1 has fewer channels available.
'''Download Raspbian Pi Operating System'''
* Save it on your PC, from https://www.raspberrypi.org/downloads/raspbian/
* "RaspBIAN Buster Lite" is probably OK, but other than small file size it offers no advantage over installing the full version of RaspBIAN Buster. These instructions are being tested using "Raspbian Buster with desktop and recommended software", the largest of all, which could allow you to do other things more easily.
* Just click on “Download Zip” (torrent might be faster if you have the ability, but not worth installing just for this)
* Do not unzip it
* These instructions have been tested with kernel version 4.14, released 18 April 2018 and with kernel version 4.14, released 13 November 2018 [March 2019] and kernel version 4.19 released 10 July 2019
 
There are no web tags for past values from extra sensors, see the [[Extra_Sensor_Files]] page for information about log files from where you can extract those values.
'''Install Pi Operating System onto Micro SD card'''
 
{| class="wikitable" border="1"
''Format the SD card''
|-
* Put Micro SD card in PC (use adapter if needed)
!style="width:150px"|Web tag_name
** If re-using a previous Pi SD card, click ‘Cancel’ on the warning about needing to format the card
!style="width:600px"|The related description can be changed in 'strings.ini', but below are default descriptions that will be shown in viewer/editor
* Run SD Card Formatter (click Yes to ‘Allow to make changes to your device’).
|-
** Need to use this program rather than the Format tool in File Explorer, because Pi SD cards end up with a very small ‘Windows accessible’ partition and a large partition containing Linux. SD Card Formatter allows reclaim of the large partition.
|<#ExtraTemp1>
* Your SD card should automatically populate in the ‘Drive’ box. In case you have another SD card in your PC, ensure the correct card is selected!
|Extra temperature channel 1
* Click ‘Format’ and check and accept the Warning messages
|-
|<#ExtraTemp2>
|Extra temperature channel 2
|-
|<#ExtraTemp3>
|Extra temperature channel 3
|-
|colspan="2"|... and so on up to <#ExtraTemp10> = Extra temperature channel 10
|-
|<#ExtraDP1>
|Extra dew point channel 1
|-
|<#ExtraDP2>
|Extra dew point channel 2
|-
|<#ExtraDP3>
|Extra dew point channel 3
|-
|colspan="2"|... and so on up to <#ExtraDP10>
|-
|<#ExtraHum1>
|Extra humidity channel 1
|-
|<#ExtraHum2>
|Extra humidity channel 2
|-
|<#ExtraHum3>
|Extra humidity channel 3
|-
|colspan="2"|... and so on up to <#ExtraHum10>
|-
|<#SoilTemp1>
|Soil temperature 1
|-
|<#SoilTemp2>
|Soil temperature 2
|-
|colspan="2"|... and so on up to <#SoilTemp16>
|-
|<#SoilMoisture1>
|Soil moisture 1
|-
|<#SoilMoisture2>
|Soil moisture 2
|-
|colspan="2"|... and so on up to <#SoilMoisture16>
|-
|<#LeafTemp1>
|Leaf temperature 1
|-
|<#LeafTemp2>
|Leaf temperature 2
|-
|<#LeafWetness1>
|Leaf wetness 1
|-
|<#LeafWetness2>
|Leaf wetness 2
|}
 
==Extra Sensors Ecowitt==
'''Copy the Pi Raspbian Operating System onto the card'''
* Run '''balenaEtcher''' on your PC
* Click ‘Select Image’ and choose the ‘Raspbian Buster’ operating system zip file that was downloaded earlier
* SD card should be automatically populated. In case you have another SD card in your PC, ensure the correct card is selected!
* Click ‘Flash!’. The operating system will be copied to the card. This takes about 10 minutes, followed by another 8 minutes to ‘Verify’
* Cancel any messages about needing to Format the card - they are just indicating that Etcher has installed the partition that cannot be read by Windows
* On completion, the card is ‘ejected’ from the PC. Physically remove it and then straight away reinsert it so that the content can be viewed in File Explorer
* TWO drives will now be visible for the SD card. You will likely see a warning that one of the drives needs to be formatted before it can be used. ‘Cancel’ that warning and ignore that drive.
* View the other drive, which is named ‘boot’ in File Explorer
* On the View tab, ensure the ‘File Name extensions’ is ticked
* Right click and select ‘New’, ‘Text document’. Change its name to SSH (deleting the .txt extension; you need to make an empty file called SSH not SSH.txt). Click ‘Yes’ to ‘Are you sure you want to change the extension?’
* Right click and select ‘New’, ‘Text document’. Change its name to wpa_supplicant.conf (deleting the .txt extension; you need to make a file called wpa_supplicant.conf not wpa_supplicant.conf.txt). Click ‘Yes’ to ‘Are you sure you want to change the extension?’
* Right click on this new file and select ‘Open with Notepad’ or ‘Open with …’ then select Notepad. Enter the following content exactly as below (copy and paste) then edit your country code (if needed), WiFi network’s SSID and password: NOTE: Change GB as needed to be the code for your country. The quote marks should appear in the file, that is ssid="YourNetwork" not ssid=YourNetwork . Same for psk.
<pre>ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=GB
 
{{Version badge 1}} Not available in Cumulus 1.
network={
ssid="YourNetwork"
psk="YourNetworkPassword"
key_mgmt=WPA-PSK
}</pre>
 
[[File:Badge vMx.png]] Please see release announcements for when individual web tags become available.
* Not essential, but I like to keep copies of both those files for future use. They can be on the SD card with different names eg ‘SSH - Copy’ and ‘wpa_supplicant.conf - Copy’ as well as on your PC
* The function of these 2 files is to connect your Raspberry Pi to your network as soon as it boots, and allows you to connect to and control it from your PC by SSH using PuTTY. This avoids needing to connect a keyboard, mouse and monitor to the Raspberry Pi. It is particularly useful for Pi Zero W (or Pi Zero) which hasn’t got enough USB connections and no Ethernet (wired network) connection. This is called ‘Headless operation’.
* Right click on the ‘boot’ SD card in left pane of File Explorer and ‘Eject’ it safely.
 
This section applies only to those using Ecowitt GW1000 (Froggit DS1500) an interface unit that picks up various external sensors and sends the data via an application programming interface to MX which then generates the following web tags:
'''Setting up the Raspberry Pi'''
* With nothing plugged into the Raspberry Pi, take the Micro SD card from your PC and put it in the Pi.
* In a later step, you will need to find out the Raspberry Pi’s IP address by looking at your network router’s web interface. I can’t help you with doing that. If you don’t know how to, an alternative is to connect a keyboard, mouse and monitor to the Raspberry Pi at this stage
* Plug the power supply into the Raspberry Pi. It will boot up (note flashing red and/or green LEDs depending on model).
* On your PC, log into your network router’s web interface and identify the Pi’s IP address, which will be in the form xxx.xxx.xxx.xxx, for example 192.168.1.123
** NOTE: If you will be switching from a faster “build” Raspberry Pi to a “production” Raspberry Pi Zero W, the IP address will change, so you’ll need to repeat this step later
** While in your network router for the ‘production’ Pi you will be using, set up some port forwarding that will be needed later.
** Forward port 8998 to your Pi’s IP address for TCP protocol if you want to be able to access the Cumulus web interface from the external internet (this brings potential security risk though). [Forwarding port 8002 as well was previously needed].
* Start PuTTY on your PC. In the box for ‘Host Name or IP address’, enter the Pi’s IP address from above. In the adjacent ‘Port’ box, enter 22. Connection type should be SSH. Click ‘Open’.
* A window opens. The first time you do this you will probably see a long message asking to confirm it is OK to connect to a not-previously-known device. Click ‘Yes’.
* Login to the Pi. Username is pi [lower case] and password is raspberry [lower case]
* You will see a warning that SSH is enabled but the password has not been changed, which is a security risk. We will change the password in a moment
* Type
<pre>sudo raspi-config</pre>
 
{| class="wikitable" border="1"
* Note, to copy from here (usually need to do 1 line at a time), select it then CTRL-C. To paste into the PuTTY window, right click.
|-
* As needed, adjust the following settings:
!style="width:150px" |Web tag_name
** Change the password to something you will remember. Leaving it at raspberry is a serious security risk – exposes your whole network to hackers
!style="width:600px" |Function
** In Network Options,
|-
**#change the name of your pi to ‘Cumulus’ or something you prefer
|<#GW1000FirmwareVersion>
**# WiFi network and password have already been set by the wpa-supplicant.conf file added earlier
|{{Version badge 1}} Not available in Cumulus 1.
** In Boot Options, Desktop / CLI, select ‘Console Autologin’
** In Localisation Options,
**# change ‘Locale’ if you need something different to en_GB.UTF-8. [Changing this takes quite a while on a slow Pi]. [As of Sep/Oct 2019, there is some kind of incompatibility between RaspBIAN Buster, mono v6.0.0.314 and locales other that en_GB - so unless you NEED another locale, it would be better to leave it as en_GB. The alternative is to force load an older version of Mono, for example v5.18]
**# Change Timezone.
**# Change Keyboard Layout if needed
**# WiFi country has already been set by the wpa-supplicant.conf file added earlier
** In Interfacing options, SSH server has already been set to be enabled by the empty SSH file added earlier
** Select ‘Finish’. There is no need to reboot at this stage. But until you do, you will see messages "sudo: unable to resolve host raspberrypi", but these can be safely ignored (it's just because you renamed the Pi - will disappear after next reboot)
 
[[File:Badge vMx.png]]GW1000 firmware version string
In the steps below, you will need to press '''y''' to agree to proceed at various times
|}
 
If you have been building the Micro SD card on a fast Pi, now is the time to switch to the 'production' Pi, for which a slower Pi Zero W is more than adequate.
Shut down the Raspberry Pi safely.
<pre>sudo halt</pre>
 
{| class="wikitable" border="1"
'''Move the micro SD card to the Pi Zero W'''.
|-
Power on the Pi Zero W. Your SSH (PuTTY) session will close out and you'll need to reconnect after the Pi has rebooted. Use username pi and the new password you chose earlier.
!style="width:150px"|Web tag_name
!style="width:600px"|The related description can be changed in 'strings.ini', but below are default descriptions that will be shown in the viewer/editor
|-
|<#AirQuality1>
|{{Version badge 1}} Not available in Cumulus 1.
 
[[File:Badge vMx.png]] see release announcements for version availability
'''Add the ‘Mono’ package'''
* Simplification: Mono is a package which allows programs to be written cross-platform so that they will run on Linux (including Raspberry Pi), Windows and Mac OS, similar to the Windows ‘.NET Framework’.
* The previous anomaly with the USB library not working with later versions of mono, affecting Fine Offset stations and the later Oregon Scientific stations (WMR88/100/200 etc) has been fixed (''in CumulusMX build 3044 onwards'') and these and other stations should now be fine with later/current versions of mono. I am currently using a Fine Offset with mono v5.18
* Process is to install a security certificate, add the mono server to the list of software sources [sources.list] that the Pi searches, then install the mono-complete package:
<pre>sudo apt install apt-transport-https dirmngr gnupg ca-certificates
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/debian stable-raspbianbuster main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
sudo apt update
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install -y mono-complete
sudo apt autoremove</pre>
 
Air quality 1
At the time of writing (''18 Sep 2019''), this gets Mono v6.0.0.334, which works with Buster (RaspBIAN 10). However, there have been reports of incompatabilities which require use of an older version of Mono. These may have now been fixed, or alternatively may be related to use of locales other than en_GB.UTF-8 . Please see other threads in Support Forum for discussions.
|-
NOTE: ''29 Feb 2020'': added '''-y''' into the line '''sudo apt-get install -y mono-complete''' . This makes the install bypass the usual 'Continue Y/n?' prompt¨which was causing strange problems for some, e.g. worked if just pressed 'Enter' to accept default 'Y', but aborted installation if pressed 'Y Enter'. Bizarre.
|colspan="2"|... and so on up to <#AirQuality4>
'''
|-
Reboot your Raspberry Pi'''
|<#LeakSensor1>
This would be a reasonable time to reboot your Pi:
<pre>sudo reboot</pre>
 
|{{Version badge 1}} Not available in Cumulus 1.
Your SSH (PuTTY) session will close out and you'll need to reconnect after the Pi has rebooted. Use username pi and the new password you chose earlier.
'''
Install Cumulus MX on the Raspberry Pi'''
Download it [[Software|from here]] to your PC, unzip on your PC which makes a directory named CumulusMX. Remember where that directory is located then on PC run FileZilla
# In the ‘Host’ box, enter the Raspberry Pi’s IP address eg 192.168.1.123
# In Username, enter pi
# In Password enter your pi’s password
# In Port, enter 22
# Click ‘Quickconnect’. Raspberry Pi’s directory structure appears on the right and your PC’s directory structure is on the left.
# In the LEFT window, navigate to where you unzipped the download of Cumulus MX earlier. Ensure can see the folder name ‘CumulusMX’ in the lower left window
# In the RIGHT window, ensure that the folder /home/pi is shown (see top right window; contents in bottom right window include .cache, .config etc)
# Drag the folder ‘CumulusMX’ to an empty area in the lower right window (not onto one of the existing directories). Watch progress as this copies the whole CumulusMX folder and contents to directory ~/CumulusMX on the Pi
# Close FileZilla
 
[[File:Badge vMx.png]] see release announcements for version availability
'''On Raspberry Pi PuTTY window:'''
<pre>sudo halt</pre>
 
Leak sensor - 0 or 1
Plug your USB weather station into the Raspberry Pi – USB cable into the OTG connector (probably via an adaptor lead) if using Raspberry Pi Zero W.
|-
If you have an ethernet or WiFi linked weather station then you won't need to do this - I don't have one so I don't know exact details. Steve below says you need to enter the IP address during Cumulus setup, but then also adjust a disconnect period if you are also using Weatherlink software.
|colspan="2"|... and so on up to <#LeakSensor4>
|-
|<#LightningDistance>
 
|{{Version badge 1}} Not available in Cumulus 1.
'''Running Cumulus'''
On PC, run PuTTY again and log in to the Pi as before (note you can save the IP address between sessions)
<pre>cd ~/CumulusMX
sudo mono CumulusMX.exe</pre>
 
[[File:Badge vMx.png]] see release announcements for version availability
The next thing you will want to do is access Cumulus via its '''user interface''' from your PC, so that you can update the '''settings'''. Using the IP address for your Pi, in your internet browser, enter: 192.168.y.z:8998 (where y and z are numbers you will need to find from seeing how your router connects to your Pi. You’ll first see a dashboard page, then can access the Settings menu.
 
Distance to last strike (same units as wind run - miles/km/nm) (Returns 0.0 if you don't have a sensor, GW1000 api returns max value you can put in a byte - 0xFF which translates to 158.4 miles = 255 km if have sensor but no strike detected yet, so MX translates that to '----')
To make Cumulus run each time the Pi is rebooted (and force reboot in the early hours each day)
|-
On the Pi, type:
|<#LightningTime>
<pre>sudo crontab -e</pre>
 
|{{Version badge 1}} Not available in Cumulus 1.
On first run select the text editor you prefer (defaults to #1, nano, the easiest)
Then add the following lines at the end of the file:
<pre># Start Cumulus as background task 30s after reboot (delay to allow WiFi to startup)
@reboot (sleep 30;cd /home/pi/CumulusMX;sudo mono CumulusMX.exe) &
 
[[File:Badge vMx.png]] see release announcements for version availability
# Reboot each day at 0253
53 02 * * * sudo reboot</pre>
 
Date and Time of last strike (default without output parameters is locale's short time format e.g. 18:02 or 6:02 pm, without date, but tag accepts both date and time output parameters). Returns '----' if you don't have sensor or there has not been a strike since the sensor was installed. (GW1000 api returns FFFF FFFF seconds after midnight on 01 Jan 1970, which translates to 07/02/2106 06:28:15, so MX translates that to '----')
'''To stop the Pi and restart it without CumulusMX running'''
|-
(eg you need to do that if upgrading the CumulusMX version) type the following
|<#LightningStrikesToday>
<pre>sudo crontab -e</pre>
 
|{{Version badge 1}} Not available in Cumulus 1.
'''edit to put a # at the start of the line''' "@reboot..."
Ctrl-X to save the change to crontab and reboot using
<pre>sudo reboot</pre>
 
[[File:Badge vMx.png]] see release announcements for version availability
When your pi restarts, CumulusMX will no longer be running. You can then do your version upgrade or other task.
 
Number of strikes since midnight, default 0
To revert to normal auto-running of CumulusMX, go through the same again, but this time edit crontab to remove the # from the start of the line "@reboot...". Save changes and reboot - CumulusMX will be running.
|-
|<#UserTemp1>
 
|{{Version badge 1}} Not available in Cumulus 1.
Updating a version of CumulusMX is easily done as follows using this:
1. Stop CumulusMX running (it locks files while it is running)
2. Install the updated CumulusMX version into a new directory - I call mine CumulusMX3xyz (where xyz are the last 3 digits of the build number) so that I can easily see which build it is
3. copy the following from the old CumulusMX directory to the new CumulusMX3xyz directory:
 
[[File:Badge vMx.png]] see release announcements for version availability
- your CumulusMX/Cumulus.ini file
 
User Temperature 1
- your CumulusMX/data directory
support for the Ecowitt WH34 (other model types exist and are reported here as if WH34) soil and water temperature sensors
|-
|colspan="2"|... and so on up to <#UserTemp8> = User temperature 8
|}
 
- your CumulusMX/twitter.txt file (if you have personalised it)
 
Ecowitt stations are sold under other names depending on nation, e.g. Ambient in USA, Froggit in central Europe, so Ecowitt is used as a generic name in same way as Fine Offset is used elsewhere in this article.
- your CumulusMX/web directory (if you have personalised any web files)
 
==Recent History==
4. Change your startup instruction to use the version in the new directory eg cd /home/pi/CumulusMX3050;sudo mono CumulusMX.exe
 
There are a set of web tags for 'recent historical data', based on an array stored by Cumulus giving data values from 1 minute ago, up to 1 week ago, in 1 minute intervals. As Cumulus runs it will add the latest values to the array with full resolution, and shift existing values along so those older than 7 days fall off. Following the table giving the tags actually available, there is a section on how to derive a few more tags.
With that method you can easily revert back to the old version if something has gone wrong. If all is well, you can delete the old directory after a few days/weeks/months/if you need the space.
 
(Note that Cumulus uses current time read from the computer to determine which array element it stores each value in. Hence ''when clocks go back'' the value stored for winter time overwrites the value previously stored for same time during summer time for the relevant repeating hour. Hence even if you use 10am for your rollover time in summer, you will not have access to a whole hour worth of data when the clocks change as either the hour has been overwritten or ''when the clocks go forward'' it simply does not exist).
'''Updating mono version'''
*First, stop CumulusMX as above by editing crontab.
*Then remove the present version of mono:
<pre>sudo apt-get purge libmono* cli-common mono-runtime
sudo apt-get autoremove</pre>
 
[[#No_Commas]] versions of the array are available for use in script.
*Then install the new version
<pre>sudo apt-get install mono-complete</pre>
 
=== Input Parameters ===
*Finally re-enable auto running by editing crontab to remove the # and finally
<pre>sudo reboot</pre>
 
You specify which value you want from the array by using parameters on the web tags for number of days ago, hours ago, and minutes ago. The same d, h, and m, parameters are used by Cumulus 1 and MX.
Above Instructions: Last edited by ExperiMentor on Sun 01 Mar 2020 8:17 am,
 
All values supplied for parameters must be whole numbers.
=== Notes by Steve Loft ===
 
If you don't supply any parameters, the result is undefined for Cumulus 1, and an illegal web tag for MX.
''please note these notes ARE now obsolete, library routines have changed a lot since this was written in 2014''
 
<#RecentOutsideTemp m=1> will give the temperature one minute ago, <#RecentOutsideTemp h=1> will give the temperature one hour ago (as will <#RecentOutsideTemp m=60>).
'''Any volunteers to replace this section with up to date information?'''
 
<#RecentOutsideTemp d=1> will give the temperature one day ago. '''Please note:''' Some Cumulus users say that using <#RecentOutsideTemp d=1 m=1> is more reliable at getting the temperature at a similar time the day before, the extra minute apparently gives better results when you might not be using Cumulus all the time, or your weather station might have some drift on when it supplies readings. See which works best for you.
 
<#RecentOutsideTemp d=1 h=1 m=1> will give the temperature one day, one hour and one minute ago.
**If you have a Raspberry Pi 2, there is a later version of Mono available, which you may find works better that the one in the standard distribution, particularly if you use decimal commas. Mono 3.2.8 (which is the default in some Linux distributions) will not work if you use commas for decimals, as in some countries.
 
'''Please note that parameters specify time-stamped array element to retrieve based on counting back from current local time''' so the result for ''any period including when clocks change'' may not be quite what you anticipated.
**On Linux you will need library '''libudev.so.0''' which may not be installed by default. Installing '''package libudev0''' may resolve this. There may be issues if you are using a 64-bit version of Linux. I'm not sure what the resolution is at the moment, if this is the case.
 
You need to specify something like '''/dev/ttyUSB0''' for the connection for your weather station. This is set in the "station settings" and stored in the [[Cumulus.ini#station|ComportName attribute]] in Cumulus.ini configuration file.
 
=== During catch-up ===
In some builds of MX you have to run as "root", there are ways of giving "root" like permissions when running MX as another user, see forum for details until this section has been updated.
When Cumulus is re-started the array it sets up will be based on reading the logs, so the contents will initially have a resolution according to the logger interval you have set in Cumulus and/or your station. You'll get the nearest value if you ask for a time for which there is currently no exact match, and the first tag listed tells you that nearest time.
 
=== Variations between Builds/Versions ===
= Optional parameters to add to the instruction to run the MX engine =
Before build 1098, the recent history array did not initialise correctly from the station logger for the period since Cumulus was last run.
 
The input parameters are same for Cumulus 1 and Cumulus MX, they always use lower case d, h or m.
 
The list of tags available has not changed between last Cumulus 1 release and any MX release. Any new derivatives reported elsewhere have not resulted in equivalent new recent history tags.
== Parameter for changing Port ==
 
=== Table of Recent History web tags available ===
When Cumulus starts, it will display the URL of the user interface. It runs on port 8998 by default; if this is not suitable for some reason you can over-ride it using the '-port' parameter on the command line, e.g. to use port 9999 instead:
<pre>sudo mono CumulusMX.exe -port 9999</pre>
 
{| class="wikitable" border="1"
== Parameter for adding debugging ==
|-
!style="width:150px" | Web tag_name
!style="width:600px" | Function
!style="width:600px" | Parameters example
|-
|colspan="3" style="background:lightgray;"|Time-stamp tag
|-
|<#RecentTS>
|Gives the timestamp of the data that will be returned for any other recent history tag that uses same '''d, h, and m''' parameters
|<#RecentTS h=3 m=1 format="HH:nn"> for cumulus 1; <#RecentTS h=3 m=1 format="HH:mm"> for cumulus MX
|-
|colspan="3" style="background:lightgray;"|Temperature & Humidity tags
|-
|<#RecentOutsideTemp>
|Outside Temperature
| <#RecentOutsideTemp h=3 m=1>&nbsp;<#tempunit> will display the temperature at the start of the period for which <#temptrend> is calculated
|-
|<#RecentWindChill>
|Wind Chill (if temperature is below 10°C or 50 °F, then the new Feels Like now available in MX (next item) will report this same value).
| <#RecentWindChill d=48 m=1> reports the wind chill temperature 2 days ago
|-
|<#RecentFeelsLike>
|{{Version badge 1}} Not available in Cumulus 1.
 
[[File:Badge vMx.png]] Available from version 3.6.11 (b.3087) onwards.
MX has a default level of logging that stores in the [[MXDiags]] folder a log file that shows some of the interaction with the weather station and some of the output actions done as MX runs. A new log is started each time MX is restarted.
 
Feels Like Temperature
If there is a problem, then there is a great benefit in actually increasing the level of detail in these logs; and that is done either within the settings ('''options''' section of ''station settings'') in admin interface while MX is running, or by adding 1 or 2 parameters when you start MX. Obviously this log file continues to grow, the longer MX is left running, and if debugging is switched on the file will grow in size must faster. Consequently, the default is not to add the extra debugging information and the settings can be used to switch it off again if you do have it switched on. Whether you start it with a parameter or enable it within settings, stopping MX will end the extra debugging, and on restart it will default back to no debugging unless turned on again with parameter or setting.
|<#RecentFeelsLike h=12 m=1> reports the feel like temperature 12 hours ago
|-
|<#RecentHumidex>
|{{Version badge 1}} Not available in Cumulus 1.
 
[[File:Badge vMx.png]] Available from version 3.7.0 (build 3089) onwards.
You can also add '''CumulusMX.exe -debug''' (to have full debugging of actions by MX turned on as MX starts), and/or '''CumulusMX.exe -Logging=1''' (for the station to MX transfers to have increased debugging logging).
 
Canadian Humidity Index (humidex) Dimensionless - no units
<pre>sudo mono CumulusMX.exe -debug -Logging=1</pre>
|<#RecentHumidex h=3> reports humidex 3 hours ago
|-
|<#RecentDewPoint>
|Dew Point
| <#RecentDewPoint h=25> reports the dew point temperature just over a day ago
|-
|<#RecentHeatIndex>
|Heat Index
| <#RecentHeatIndex m=121> reports the heat index about 2 hours ago
|-
|<#RecentHumidity>
|Relative Humidity
| d=n (where n runs 0 to 6) days ago; h=n (where n is any number of hours ago); m=n (where n is any number of minutes ago)
|-
|colspan="3" style="background:lightgray;"|Wind
|-
|<#RecentWindSpeed>
|Wind Speed
| <#RecentWindSpeed m=10> will display the average wind speed 10 minutes ago
|-
|<#RecentWindGust>
|Wind Gust
 
(reports maximum gust from build 1088 of version 1.9.4)
Since this parameter is applied when you start MX, it applies while MX continues to run. Obviously, it must be applied every time you start MX if you want this increased level of logging to continue every time you restart MX.
| <#RecentWindGust d=1 m=1> will report the wind gust at approximately the same time yesterday
|-
|<#RecentWindLatest>
|Wind Latest. Note: Wind 'Speed', 'Gust' and 'Latest' have the usual Cumulus meanings
| d=n (where n runs 0 to 6) days ago; h=n (where n is any number of hours ago); m=n (where n is any number of minutes ago)
|-
|<#RecentWindDir>
|Wind Direction (instantaneous)
| <#RecentWindDir m=10> will tell you which direction the wind was blowing from 10 minutes ago
|-
|<#RecentWindAvgDir>
|Wind Direction (average)
|<#RecentWindAvgDir d=6> will say what the calculated average wind direction was at this time at the start of the week
|-
|colspan="3" style="background:lightgray;"|Pressure
|-
|<#RecentPressure>
|Sea-level Pressure
| <#RecentPressure h=3 m=1> gives the sea level pressure when <#presstrendval> started tracking the pressure
|-
|colspan="3" style="background:lightgray;"|Rainfall
|-
|<#RecentRainToday>
|Daily rain total from last roll-over to specified time
| d=n (where n runs 0 to 6) days ago; h=n (where n is any number of hours ago); m=n (where n is any number of minutes ago)
|-
|colspan="3" style="background:lightgray;"|Solar & UV
|-
|<#RecentSolarRad>
|Solar Radiation
| d=n (where n runs 0 to 6) days ago; h=n (where n is any number of hours ago); m=n (where n is any number of minutes ago)
|-
|<#RecentUV>
|UV Index
| d=n (where n runs 0 to 6) days ago; h=n (where n is any number of hours ago); m=n (where n is any number of minutes ago)
|}
 
=== Other weather derivatives ===
== Parameter for changing Locale ==
 
Although Humidex, 'Apparent Temperature', 'Feels Like temperature' and others listed in Current Conditions section, are not available at all versions, they can be calculated in a script from recent 'outside temperature', 'wind speed', and 'relative humidity' values (using the same time selection for all). There are other derivatives that can be calculated similarly from a set of simultaneous values. Note that Cumulus 1 and MX do not always use identical formula, and although MX added Feels Like it has changed the formula a few times.
On Linux and (in particular) OS X, Cumulus MX may not be given the correct locale to use, and you may get the default US locale even if that is not your locale. It will output the local it is using when it starts; if it is not correct, close it down and start it again, this time specifying your locale on the command line, using the -lang parameter . For example, in the UK, on a non-Windows device type:
<pre>
sudo mono CumulusMX.exe -lang en-GB
</pre>
Other local examples: '''CumulusMX.exe Current culture: English (United States)''', '''CumulusMX.exe -lang de-DE''', '''CumulusMX.exe -lang el-GR''' (this is one of the locales that reads numbers with '''integer,decimal''' format), '''CumulusMX.exe -lang nl-NL'''.
 
The relevant formulae using JavaScript, adjust for other languages, for some of these are shown below:
If you are not sure what value you need to supply for the -lang parameter, there is a list here - http://msdn.microsoft.com/en-gb/library/ee825488%28v=cs.20%29.aspx. You need to supply the code in the first column ("Language Culture Name") in that list.
 
==== Canadian Humidity Index ====
Note that this does not affect the language used by Cumulus MX (although it may in the future), it affects the decimal separator and the list separator.
 
If you are in USA and use Fahrenheit instead of Celsius, you will need to omit the 5/9 term, but as the index is dimensionless no other conversion is needed. This example is for 3 hours ago, change the input parameters to suit your need.
Note that you ''may'' need to supply your administrator password after typing the 'sudo ...' command line. The system will prompt you for this if it is needed.
 
Cumulus 1:
 
H = <#RecentOutsideTemp h=3> + 5/9 * (6.1094 * Math.exp(5417.753 *(1/273.16 - 1/ (273.16 + <#RecentDewPoint h=3> )))-10);
= Library software =
 
Cumulus MX:
For most Cumulus users, this whole section can be skipped, but I have included it for those few users who have a technical slant and might want to understand more.
 
svp = 6.112 * Math.exp((17.62 * <#RecentOutsideTemp h=3) / (243.12 + parseFloat(<#RecentOutsideTemp h=3)));
Cumulus MX uses '''library''' software (i.e. software written by others and made available by the provider and often also by other content delivery nodes or 'cdn') for a lot of the standard functionality. The library software for the admin interface and the separate library software for the standard web pages are both mostly included in the distribution zip, although some is used via a link to a cdn.
H = (5/9 * (<#RecentHumidity h=3> /100 * svp - 10)) + <#RecentOutsideTemp h=3;
 
==== Apparent Temperature and Feels Like ====
Many of the libraries included by MX are very obsolete. However, Mark Crossley, the current developer, said the following on 30 Sept 2019:
"Chasing the latest versions of all the packages for the sake of it is a thankless task, and requires considerable effort to regression test each update. I am only updating packages when required to fix issues or for platform compatibility."
 
Note this apparent temperature formula uses Celsius for temperature and '''metres per second''' for wind speed. You will need to do the appropriate conversions from the quoted recent history tags if you use different units. The Australian Apparent temperature formula is same for Cumulus 1 and MX:
Just to mention the other side of this balance. It is difficult to code an addition to MX that works with these obsolete versions of libraries. All documentation provided by providers of the libraries relates to current versions of the packages (and what is documented to work now often will not work with obsolete versions). The documentation for the packages that are no longer supported is only available in archive sites if available at all.
 
var actualVaporPress = <#RecentHumidity h=3>/100) * 6.105 * Math.exp(17.27 * <#RecentOutsideTemp h=3>) / (237.7 + parseFloat(<#RecentOutsideTemp h=3>))));
==Library Software for the MX engine==
var appTempDegC = parseFloat(<#RecentOutsideTemp h=3) + (0.33 * actualVaporPress) - (0.7 * <#RecentWindSpeed h=3>) - 4;
 
Feels Like was implemented as a recent history web tag at version 3.6.11 (see [[#Feels_Like|Feels Like section below Current condition web tags]]) for the gradual introduction of feels like elsewhere. For earlier MX versions, and if you are using Cumulus 1, you can calculate it:
The distribution zip contains various '''.dll''' files and these are the libraries used by MX itself.
 
The formulas below use Celsius for temperature and '''km per hour''' for wind speed. Again, you will need to do the appropriate conversions from the quoted recent history tags if you use different units.
===Devart===
 
Calculation from recent history tags is much more complicated because there are 3 different calculations: Feels Like reports exactly same as wind chill for temperatures '''below''' 10°C or 50°F so the WC here should equal <#RecentWindChill h=3>:
The two files used are both related to the database functionality of MX.
<pre>if(<#RecentWindSpeed h=3> < 4.828) WC = <#RecentOutsideTemp h=3>;
else{
wind_pow = Math.pow(<#RecentWindSpeed h=3>, 0.16);
WC = (13.12 + 0.1625 * <#RecentOutsideTemp h=3>) - (11.37 * wind_pow) + (0.3965 * <#RecentOutsideTemp h=3> * wind_pow);// Brackets used to ensure "+" is interpreted as addition not concatenation
} </pre>
 
For temperatures '''above''' 20°C or 68°F Feels Like uses a different way to calculate apparent temperature that it uses at these higher temperatures (this formula only used for 3.6.10 onwards):
===FluentFTP===
<pre>var actualVaporPress = <#RecentHumidity h=3>/100) * 6.112* Math.exp((17.62 * <#RecentOutsideTemp h=3>)/(243.12 + <#RecentOutsideTemp h=3>)) / 10.0; // Not same as at build 3084
/* uses kilometres per hour for wind speed */
/* What Cumulus MX will use to calculate apparent temperature for feels like is changed very slightly */
if(<#RecentWindSpeed h=3> > 72) <#RecentWindSpeed h=3> =72;
AT= (1.04 * <#RecentOutsideTemp h=3>) + (2 * actualVaporPress) - (0.1805553 * <#RecentWindSpeed h=3>) - 2.7;</pre>
 
For in-between temperatures it uses a more complicated merge of the two formulas for AT and WC as defined above:
As the name suggests, this is used by MX for controlling the file transfer functionality. This component was first introduced at version 3.0.0 build 3045, and it has been updated at some subsequent MX releases, see the announcements for details.
<pre>app_temp_mult = (<#RecentOutsideTemp h=3> - 10) / 10;
wind_chill_mult = 1 - app_temp_mult;
 
FL= AT * app_temp_mult + WC * wind_chill_mult;</pre>
===Linq===
 
==Today==
Language INtegrated Query is used to work with sequences of items and pick the ones that are needed, putting them into output format required. MX uses two files in connection with preparing output for Twitter. There is a third Linq file for other processing.
 
Many of these web tags are used on the supplied '''todayT.htm''' template, and the supplied '''todayyest.html''' page within the MX admin interface.
===MQTT===
 
For web tags that report values that refer to a particular time of day, there is a corresponding web tag that can give the time of day, shown in same row of table below.
When MX added capability to talk to other devices using the MQTT protocol, it added this component for that optional functionality.
 
Please note none of the time web tags can be modified by output parameters to give a date, but they can be changed from the default time format that is 'H:mm' (24 hour clock notation without leading zero for hour) for Cumulus 1 and MX. If you are using output modifiers to change how the time is reported, be careful to use ones that work for the flavour of Cumulus you are using (H and h are same for Cumulus 1, but not for MX; nn and mm are same for Cumulus 1, but not for MX).
===Newtonsoft===
{| class="wikitable" border="1"
|-
!style="width:150px" | Web tag_name
!style="width:650px" | Function
!style="width:150px" | Time tag_name
|-
|colspan="3" style="background:lightgray;"|Temperature & Humidity
|-
|<#tempTH>
|Today's highest temperature
|<#TtempTH>
|-
|<#tempTL>
|Today's lowest temperature
|<#TtempTL>
|-
|<#avgtemp>
|The [[Average_temperature|average]] temperature so far today (calculated from all temperature readings processed by Cumulus)
|n/a
|-
|<#temprange>
|The temperature range (<#tempTH> - <#tempTL>) so far today (Cumulus calculates all these tags using Celsius values, but outputs them in your chosen units)
|n/a
|-
|<#apptempTH>
|Today's high apparent temperature
|<#TapptempTH>
|-
|<#apptempTL>
|Today's low apparent temperature
|<#TapptempTL>
|-
|<#feelslikeTH>
|[[File:Badge vMx.png]] Available from version 3.6.10 (NOT AVAILABLE IN CUMULUS 1)
 
Today's high feels like temperature
This component is used for processing JSON strings. It is a very popular choice for developers, and used therefore very widely. However, '''SystemText''' has superseded it, so MX is using an obsolete method.
 
Please see sub-section below current conditions if you are using an earlier 3.6.x version of MX.
===Renci SSH===
|<#TfeelslikeTH>
|-
|<#feelslikeTL>
|[[File:Badge vMx.png]] Available from version 3.6.10 (NOT AVAILABLE IN CUMULUS 1)
 
Today's low feels like temperature
This component is server connection software, it is what processes the host name, password, and so on.
|<#TfeelslikeTL>
|-
|<#humidexTH>
|[[File:Badge vMx.png]] Available from version 3.7.0 (NOT AVAILABLE IN CUMULUS 1)
 
Today's high Canadian Humidity Index
===SQLite3===
 
Please see sub-section below current conditions if you are using Cumulus 1 or an earlier version of MX.
This is used for all interactions with the [[Weather Diary|weather diary]].
|<#ThumidexTH>
|-
|<#heatindexTH>
|Today's high heat index
|<#TheatindexTH>
|-
|<#wchillTL>
|Today's greatest wind chill (i.e. lowest temperature, highest wind speed)
|<#TwchillTL>
|-
|<#dewpointTH>
|Today's highest dew point
|<#TdewpointTH>
|-
|<#dewpointTL>
|Today's lowest dew point
|<#TdewpointTL>
|-
|<#humTH>
|Today's highest humidity
|<#ThumTH>
|-
|<#humTL>
|Today's lowest humidity
|<#ThumTL>
|-
|colspan="3" style="background:lightgray;"|Precipitation
|-
|<#rrateTM>
|Today's maximum rain rate
|<#TrrateTM>
|-
|<#hourlyrainTH>
|Today's highest hourly rain
|<#ThourlyrainTH>
|-
|<#RG11RainToday>
|If you have an RG-11 rain sensor configured in "Tipping Bucket" mode, this gives today's rain total so far according to the sensor
| n/a
|-
|<#snowdepth>
|Meteorologists report snow depth in cm, so this is default unit for Cumulus. If there is an entry in the Weather Diary for Today's date, and current time is between the '''SnowDepthHour''' time (in [[Cumulus.ini#Section:_Station]], default is 9 a.m. for Cumulus 1, and midnight for MX) and subsequent midnight, returns the value set there for depth. Returns 0 otherwise. If time before '''SnowDepthHour''', looks at previous day's date in Weather Diary and reports any non-zero value there, otherwise reports zero.
 
{{Version badge 1}} Input and output is always as integer. Available from very early builds, weather diary input amended from version 1.8.6 14th April 2009 to allow units to be specified on diary edit screen. If you choose to enter as whole millimetres, you can use JavaScript (or another script language) on your web page to divide the web tag by 10 and get centimetres to 1 decimal place on output.
===HTTP===
 
[[File:Badge vMx.png]] Input is to 2 decimal places. Available from version 3.1.1 - build 3054 when weather diary editor was added to MX. MX allows output in centimetres with decimal places without any script. You can't change the units shown in admin interface, but your value can be input as inches to 2 decimal places if you ignore "cm" that is displayed in that interface.
These files handle the optional HTTP functionality.
| n/a
|-
|<#snowlying>
|{{Version badge 1}}Although this tag is not available in Cumulus 1, your web page can use a script to check if <#snowdepth> is non zero, as that means snow is lying
 
[[File:Badge vMx.png]] Available from version 3.1.1 - build 3054. If there is an entry in [[Weather Diary]] for Today's date, and (if '''SnowDepthHour''' time (in [[Cumulus.ini#Section:_Station]] is defined) current time is between the Snow update time (in [[Cumulus.ini]]) and midnight, then this web tag returns zero if snow lying check box not ticked or one if checkbox is ticked. If no Weather Diary entry found, this web tag returns Null.
===Unosquare===
| n/a
|-
|<#snowfalling>
|{{Version badge 1}} Not available in Cumulus 1. There is no web page workaround, unless you write a script that reads [[Weather Diary]] and makes relevant information available on your web server.
 
[[File:Badge vMx.png]] Available from version 3.1.1 - build 3054. If there is an entry in [[Weather Diary]] for Today's date, and (in [[Cumulus.ini#Section:_Station]] is defined) current time is between the Snow update time (in [[Cumulus.ini]]) and midnight, then this web tag returns zero if snow falling check box not ticked or one if checkbox is ticked. If no Weather Diary entry found, this web tag returns Null.
The EmbedIO file is open-source software that handles the web-sockets functionality of MX. The Swan file is open-source software that handles JSON formatting and threading of tasks in MX.
| n/a
|-
|colspan="3" style="background:lightgray;"|Pressure
|-
|<#pressTH>
|Today's highest pressure reading
|<#TpressTH>
|-
|<#pressTL>
|Today's lowest pressure reading
|<#TpressTL>
|-
|colspan="3" style="background:lightgray;"|Wind
|-
|<#windTM>
|Today's maximum (average) wind speed
|<#TwindTM>
|-
|<#wgustTM>
|Today's maximum wind gust
|<#TwgustTM>
|-
|<#bearingTM>
|The wind bearing at the time of today's high gust (<#wgustTM>) in degrees
|<#TwgustTM>
|-
|<#Tbeaufort>
|Today's highest wind speed, expressed in the Beaufort scale
|<#TwindTM>
|-
|<#Tbeaufortnumber>
|Today's high wind speed on the Beaufort scale, without a leading "F", e.g. "6"
|<#TwindTM>
|-
|<#windrun>
|The total wind run so far today
|N/A
|-
|<#domwindbearing>
|Today's dominant wind direction in degrees
|n/a
|-
|<#domwinddir>
|Today's dominant wind direction as compass point
|n/a
|-
|<#Tbeaudesc>
|Beaufort 'description' for today's high wind speed
|n/a
|-
|colspan="3" style="background:lightgray;"|Miscellaneous
|-
|<#ET>
|Today's [http://en.wikipedia.org/wiki/Evapotranspiration evapotranspiration]. Applies only to Davis stations, equipped with a solar sensor.
"The ET value provided to Cumulus by the console and/or DLL is buggy and unreliable. It often shows a negative value. See [[FAQ#It.27s_January_1st_and_my_.27rain_since_midnight.27_and.2For_.27last_24_hours_rain.27_and.2For_Evapotranspiration_are_wrong.2Fnegative|this FAQ]]."
|N/A
|-
|<#heatdegdays>
|Today's [[Heat/cold_degree_days_and_Chill_hours|heating degree days]]
|n/a
|-
|<#cooldegdays>
|Today's [[Heat/cold_degree_days_and_Chill_hours|cooling degree days]]
|n/a
|-
|<#solarTH>
|Today's high solar radiation value (Solar sensor needed)
|<#TsolarTH>
|-
|<#UVTH>
|Today's high UV Index (UV sensor needed)
|<#TUVTH>
|-
|<#SunshineHours>
|Today's hours of sunshine so far. Added in Cumulus 2, then to 1.9.1 build 957, also in MX. From version 3.7.0 takes a parameter "dp=n" so the number of decimal places required can be specified
|n/a
|}
 
==Yesterday==
== Library software for admin interface ==
 
Note that the Y indicating yesterday is sometimes a prefix, sometimes a suffix (with H for High, L for Low), web tags are not named consistently!
As the following sections reveal, MX uses external libraries rather than writing its own code whenever possible.
*However, that does not mean MX is good at meeting development standards.
*MX only implements small parts of the functionality of most libraries, the minimum to make a feature work, not all the features available to make it work well
*MX does not use the latest versions of libraries
*MX does not attempt to obey guidance for good user interaction, and although validation is being added, many parts of MX do depend on user understanding what is valid
*MX does not make provision for screen readers and other accessibility aids.
 
Many of these web tags are used on the supplied '''yesterdayT.htm''' template, and the supplied '''todayyest.html''' page within the MX admin interface.
===Alpaca===
 
For web tags that refer to a particular time of day, there is a corresponding web tag that can give the time of day. Please note none of the time web tags can be modified by output parameters to give a date, but they can be changed from the default time format that is 'h:mm'.
#Alpaca software is effectively a programming language extension to help people design forms like those MX uses for all its settings, and as a Cumulus user you really don't need to worry about it.
{| class="wikitable" border="1"
#It is used for most settings screens. See http://www.alpacajs.org/ for more information. The latest version there is 1.5.27 released on 14 May 2019.
|-
# MX uses Alpaca Release 1.1.3 from https://github.com/gitana/alpaca which was first released on 15 May 2014. Although some individual components have been updated on that github URL, and elsewhere, MX has not incorporated these.
!style="width:150px" | Web tag_name
!style="width:550px" | Function
!style="width:150px" | Time
|-
|colspan="3" style="background:lightgray;"|Temperature & Humidity
|-
|<#tempYH>
|Yesterday's highest temperature
|<#TtempYH>
|-
|<#tempYL>
|Yesterday's lowest temperature
|<#TtempYL>
|-
|<#avgtempY>
|Yesterday's average temperature
|n/a
|-
|<#temprangeY>
|The temperature range (max - min) yesterday
|n/a
|-
|<#apptempYH>
|Yesterday's high apparent temperature
|<#TapptempYH>
|-
|<#apptempYL>
|Yesterday's low apparent temperature
|<#TapptempYL>
|-
|<#feelslikeYH>
|[[File:Badge vMx.png]] Available from version 3.6.10 (NOT AVAILABLE IN CUMULUS 1)
 
Yesterday's high feels like temperature
===Bootstrap===
|<#TfeelslikeYH>
|-
|<#feelslikeYL>
|[[File:Badge vMx.png]] Available from version 3.6.10 (NOT AVAILABLE IN CUMULUS 1)
 
Yesterday's low feels like temperature
#Also known by some as ''Twitter Bootstrap'' which gives a clue as to its developer and to its origins as an internal tool for those building Twitter, that company still keep making updates as it is now the most popular styling library of all those available widely.
|<#TfeelslikeYL>
*The simplest way to think about this package is as a standard set of styling promoting easy responsive (means adapts to screen dimensions) web site design.
|-
*To give just a few examples, it defines a standard way to represent buttons, form components, lists, navigation, and breadcrumbs.
|<#humidexYH
*MX uses Bootstrap version 3.3.7, which is very restricted in what it offers
|[[File:Badge vMx.png]] Available from version 3.7.0 (NOT AVAILABLE IN CUMULUS 1)
**Bootstrap version 5 is available (http://getbootstrap.com), so MX is using an obsolete library
** Bootstrap version 4.5.0 (Bootstrap 4 released as alpha in August 2015, beta in August 2017, and with fully working releases frequently from January 2018) was very widely praised for its improved functionality, and ability to work with latest jQuery and multiple modern devices/browsers.
*MX does not implement key features of Bootstrap like colouring text according to what it represents (primary, secondary, information, warning etc.)
 
Yesterday's low Canadian Humidity Index
===dataTables===
|<#ThumidexYH>
|-
|<#heatindexYH>
|Yesterday's high heat index
|<#TheatindexYH>
|-
|<#wchillYL>
|Yesterday's greatest wind chill (i.e. lowest temperature)
|<#TwchillYL>
|-
|<#dewpointYL>
|Yesterday's lowest dew point
|<#TdewpointYL>
|-
|<#dewpointYH>
|Yesterday's highest dew point
|<#TdewpointYH>
|-
|<#humYH>
|High humidity yesterday
|<#ThumYH>
|-
|<#humYL>
|Low humidity yesterday
|<#ThumYL>
|-
|colspan="3" style="background:lightgray;"|Rainfall
|-
|<#rfallY>
|The total rainfall for yesterday according to the connected weather station
|n/a
|-
|<#RG11RainYest>
|The total rainfall for yesterday according to an RG-11 rain sensor configured in "Tipping Bucket" mode
|n/a
|-
|<#rrateYM>
|Yesterday's maximum rain rate
|<#TrrateYM>
|-
|<#hourlyrainYH>
|Yesterday's highest hourly rain
|<#ThourlyrainYH>
|-
|colspan="3" style="background:lightgray;"|Pressure
|-
|<#pressYH>
|Yesterday's highest pressure reading
|<#TpressYH>
|-
|<#pressYL>
|Yesterday's lowest pressure reading
|<#TpressYL>
|-
|colspan="3" style="background:lightgray;"|Wind
|-
|<#windYM>
|Yesterday's maximum (average) wind speed
|<#TwindYM>
|-
|<#wgustYM>
|Yesterday's maximum wind gust
|<#TwgustYM>
|-
|<#bearingYM>
|The wind bearing at the time of yesterday's high gust
|<#TwgustYM>
|-
|<#Ybeaufort>
|Yesterday's highest wind speed, expressed in the Beaufort scale
|<#TwindYM>
|-
|<#Ybeaufortnumber>
|Yesterday's high wind speed on the Beaufort scale, without a leading "F", e.g. "6"
|<#TwindYM>
|-
|<#Ybeaudesc>
|Beaufort 'description' for yesterday's high wind speed
|n/a
|-
|<#domwindbearingY>
|Yesterday's dominant wind direction in degrees
|n/a
|-
|<#domwinddirY>
|Yesterday's dominant wind direction as compass point
|n/a
|-
|<#windrunY>
|The total wind run for yesterday
|n/a
|-
|colspan="3" style="background:lightgray;"|Miscellaneous
|-
|<#heatdegdaysY>
|Yesterday's [[Heat/cold_degree_days_and_Chill_hours|heating degree days]]
|n/a
|-
|<#cooldegdaysY>
|Yesterday's [[Heat/cold_degree_days_and_Chill_hours|cooling degree days]]
|n/a
|-
|<#SunshineHoursY>
|Yesterday's hours of sunshine so far. Added in Cumulus 2, then to 1.9.1 build 957, also in MX. From version 3.7.0 takes a parameter "dp=n" so the number of decimal places required can be specified
|n/a
|-
|<#solarYH>
|Yesterday's high solar radiation value (Solar sensor needed)
|<#TsolarYH>
|-
|<#UVYH>
|Yesterday's high UV Index (UV sensor needed)
|<#TUVYH>
|}
 
==Monthly==
#When MX sends out multiple lines of a log file to view or edit, the application programming interface (api) that transfers the information from the MX engine sends it in dataTables format for display on the web page in the admin interface.
#Thus dataTables does all the work of providing the ability to present the data in a HTML table, the functionality to move between multiple pages needed (as MX sends only up to 10 lines of a log file at a time to the admin interface).
#The free version of dataTables used by MX lacks the most useful functionality that needs a subscription licence. For example, its editing functionality requires a subscription.
 
This table shows the web tags used on the '''thismonthT.htm''' web page,and the '''records.html''' page (accessed by penultimate tab) in the admin interface.
===altEditor===
 
Because the rainfall this month does not appear on '''thismonthT.htm''' web page, it is shown in [[#Current_Conditions|indexT.htm]] table earlier in this article which is for the web page where it does appear.
*This is an editing tool that can read what is in dataTables, create what it calls a modal (a pop-up dialog) where rows can be added, edited, or deleted individually.
** MX when it added editing of log files at version 3.4.5 - Build 3069 (Friday 13 March 2020) adopted this software as it was free (although Mark Crossley said in his release notice: '''"The main thrust of this release is to add some log file editing capability to Cumulus MX. It works on all three log file types, but it is fairly basic at present. You can edit or delete lines in the files. The editing has to be done via pop-up dialog.'''
**'''I only found two libraries that support JQuery dataTables editing, one is very comprehensive - but costs $$$ - the other is free. The free version does not currently support in-line editing of the table which is a shame.'''
** '''If any web guru out there can come up with a better solution please post about it on the forum, or send a pull request."''') ''(By the way, it is possible to provide in-line editing and make it work with the existing api interface, but making it compatible with the obsolete software used by MX is hard).''
*The single line of fields that is result of an edit or deletion done on the modal is sent back via another api to the server (the MX engine in our case) and that then regenerates the dataTables in the state after whatever action was done, sending back again up to 10 lines for the same page as before.
*As it happens there is another JQuery dataTables editing tool, but it has not been maintained since 2012. It is found at https://github.com/NicolasCARPi/jquery_jeditable, but the documentation is now only available in an archive at https://web.archive.org/web/20200615000000*/https://appelsiini.net/projects/jeditable. It is designed for editing table cells, so it does not involve any pop-up dialog.
 
The web tags in the date column output dates in the format "dd MMMM" (for once this is same for Cumulus 1 and Cumulus MX). Should you require a different output format, this can be changed using the [[#Time.2FDate_.27format.27_Parameter|format parameters]] described above. For web tags that represent daily values, there are (obviously) no corresponding time web tags, but for high and low spot values the default 'h:mm' format of the time output can be changed using output parameters. Do make sure that you get the web tag names right and the output form at parameters right.
===datepicker===
 
As another example of inconsistency in how web tags added in different versions are coded, there are two web tags (highest minimum/lowest maximum temperatures) where a standard web tag is not provided by Cumulus (1 or MX) for the associated time-stamp. Consequently, for these 2 (and their corresponding tags in the this year group), there are mandatory output parameters required as shown in the table. Obviously Cumulus 1 lets you use "NN", "nn", "MM", or "mm" for the minutes, but minutes can only be represented in one way in Cumulus MX.
#Although modern browsers generally will generate a calendar type interface when they meet an entry field defined as a date, this date picker software ensures all MX users see exactly the same interface for date selection needed for both the standard log and the extra sensors log which are monthly log files (a new one is created each month). It is used for picking which standard (monthly) log or extra (monthly) log is to be viewed by selecting a month and year only.
#It is also used for selecting individual days in the weather diary editor.
 
{| class="wikitable" border="1"
===editable grid===
|-
!style="width:150px"|Web tag_name
!style="width:300px"|Function
!style="width:150px"|Time
!style="width:150px"|Date
|-
|colspan="4" style="background:lightgray;"|Temperature & Humidity
|-
|<#MonthTempH>
|This months high temperature
|<#MonthTempHT>
|<#MonthTempHD>
|-
|<#MonthTempL>
|This months low temperature
|<#MonthTempLT>
|<#MonthTempLD>
|-
|<#MonthMinTempH>
|This months highest daily minimum temperature
|[[File:badge v1.png]]<#MonthMinTempHD format=hh:nn> or <#MonthMinTempHD format=HH:mm> for Cumulus 1,
[[File:Badge vMx.png]] <#MonthMinTempHD format=HH:mm> for Cumulus MX
|<#MonthMinTempHD>
|-
|<#MonthMaxTempL>
|This months lowest daily maximum temperature
|[[File:badge v1.png]]<#MonthMaxTempLD format=HH:mm> or <#MonthMaxTempLD format=hh:nn> for Cumulus 1,
[[File:Badge vMx.png]]<#MonthMaxTempLD format=HH:mm> for Cumulus MX
|<#MonthMaxTempLD>
|-
|<#MonthHighDailyTempRange>
|High Daily Temp Range
|n/a
|<#MonthHighDailyTempRangeD>
|-
|<#MonthLowDailyTempRange>
|Low Daily Temp Range
|n/a
|<#MonthLowDailyTempRangeD>
|-
|<#MonthHeatIndexH>
|This months high USA heat index
|<#MonthHeatIndexHT>
|<#MonthHeatIndexHD>
|-
|<#MonthWChillL>
|This months greatest wind chill (i.e. lowest temperature)
|<#MonthWChillLT>
|<#MonthWChillLD>
|-
|<#MonthAppTempH>
|This month's high apparent temperature
|<#MonthAppTempHT>
|<#MonthAppTempHD>
|-
|<#MonthAppTempL>
|This month's low apparent temperature
|<#MonthAppTempLT>
|<#MonthAppTempLD>
|-
|<#MonthFeelsLikeH>
|This month's highest feels like temperature (available from [[File:Badge vMx.png]] 3.6.0) (NOT AVAILABLE IN CUMULUS 1)
|<#MonthFeelsLikeHT>
|<#MonthFeelsLikeHD>
|-
|<#MonthFeelsLikeL>
|This months lowest feels like temperature (available from [[File:Badge vMx.png]] 3.6.0) (NOT AVAILABLE IN CUMULUS 1)
|<#MonthFeelsLikeLT>
|<#MonthFeelsLikeLD>
|-
|<#MonthHumidexH>
|[[File:Badge vMx.png]] (Available from version 3.7.0) (NOT AVAILABLE IN CUMULUS 1)
 
This month's highest Canadian Humidity Index
*As the name perhaps suggests MX only uses this for the extra web files screens where you can make selections within a grid like interface.
|<#MonthHumidexHT>
*I suspect it could enhance some other functionality in the future.
|<#MonthHumidexHD>
|-
|<#MonthDewPointH>
|This month's high dew point
|<#MonthDewPointHT>
|<#MonthDewPointHD>
|-
|<#MonthDewPointL>
|This month's low dew point
|<#MonthDewPointLT>
|<#MonthDewPointLD>
|-
|<#MonthHumH>
|This month's highest humidity
|<#MonthHumHT>
|<#MonthHumHD>
|-
|<#MonthHumL>
|This month's lowest humidity
|<#MonthHumLT>
|<#MonthHumLD>
|-
|colspan="4" style="background:lightgray;"|Pressure
|-
|<#MonthPressH>
|This month's highest pressure
|<#MonthPressHT>
|<#MonthPressHD>
|-
|<#MonthPressL>
|This month's lowest pressure
|<#MonthPressLT>
|<#MonthPressLD>
|-
|colspan="4" style="background:lightgray;"|Wind
|-
|<#MonthGustH>
|This month's highest wind gust
|<#MonthGustHT>
|<#MonthGustHD>
|-
|<#MonthWindH>
|This month's highest wind speed
|<#MonthWindHT>
|<#MonthWindHD>
|-
|<#MonthWindRunH>
|This month's high Daily Wind Run
|n/a
|<#MonthWindRunHD>
|-
|colspan="4" style="background:lightgray;"|Rainfall
|-
|<#MonthRainRateH>
|This month's highest rainfall rate
|<#MonthRainRateHT>
|<#MonthRainRateHD>
|-
|<#MonthHourlyRainH>
|This month's highest hourly rain
|<#MonthHourlyRainHT>
|<#MonthHourlyRainHD>
|-
|<#MonthDailyRainH>
|This month's greatest daily rain
|n/a
|<#MonthDailyRainHD>
|-
|<#MonthLongestDryPeriod>
|Longest dry period ending this month (days)
|n/a
|<#MonthLongestDryPeriodD>
|-
|<#MonthLongestWetPeriod>
|Longest period of rain every day, ending this month (days)
|n/a
|<#MonthLongestWetPeriodD>
|}
 
===handlebars=Yearly==
This table shows the web tags used on the "thisyearT.htm" web page, and the '''records.html''' page (accessed by final tab) in the admin interface.
 
Because the rainfall this year does not appear on '''thisyearT.htm''' web page, it is shown in [[#Current_Conditions|indexT.htm]] table earlier in this article which is for the web page where it does appear.
#Put simply this is a simple HTML generator based on templates.
#I have not found any file in the admin interface actually using this, but I am scared to delete it just in case it stops something working.
 
The web tags in the date column output dates in the format "dd MMMM" (for once this is same for Cumulus 1 and Cumulus MX). Should you require a different output format, this can be changed using the [[#Time.2FDate_.27format.27_Parameter|format parameters]] described above. For web tags that represent daily values, there are (obviously) no corresponding time web tags, but for high and low spot values the default 'h:mm' format of the time output can be changed using output parameters. Do make sure that you get the web tag names right and the output form at parameters right.
===x-editable===
 
As another example of inconsistency in how web tags added in different versions are coded, there are two web tags (highest minimum/lowest maximum temperatures) where a standard web tag is not provided by Cumulus (1 or MX) for the associated time-stamp. Consequently, for these 2 (and their corresponding tags in the this month group), there are mandatory output parameters required as shown in the table. Obviously Cumulus 1 lets you use "NN", "nn", "MM", or "mm" for the minutes, but minutes can only be represented in one way in Cumulus MX.
*Put simply, this allows in-place editing of web pages using bootstrap.
*In MX it is used for the record editing screens where you adjust the extreme values.
 
Remember that the Year-to-date runs from roll-over time on 1 January for all web tags listed here. Although, some web tags represent seasonal derivatives, i.e. where you define the month from which they start counting, this does not apply to any listed in this group.
===jQuery===
 
#The admin interface uses version 1.9.1 of this JavaScript based library.
#* At the time of typing this, the current jQuery is version 3.5.1.
# Of all the old versions of jQuery to choose, MX has picked the only version that the developers withdrew due to an error when they released it.
# Version 1.9.1, has a serious error in its code, because the developers accidentally combined code from two significantly different versions when they created the release file.
#*This reveals itself in two ways:
#*# The error handling does not work.
#*# It tries to load another script that does not match.
# Consequently, the developers quickly removed it, but it remained available from Contents Delivery Nodes, which is where MX has found it.
# Not surprisingly, the authors of jQuery strongly advise all 1.9.1 users to move to a later version.
#* Unfortunately, there are interdependencies between all the library code used by MX, so you cannot simply update this component (see next library item).
 
{| class="wikitable" border="1"
===Jquery Template===
|-
!style="width:150px"|Web tag_name
!style="width:300px"|Function
!style="width:350px"|Time
!style="width:150px"|Date
|-
|colspan="4" style="background:lightgray;"|Temperature & Humidity
|-
|<#YearTempH>
|This year's highest temperature
|<#YearTempHT>
|<#YearTempHD>
|-
|<#YearTempL>
|This year's lowest temperature
|<#YearTempLT>
|<#YearTempLD>
|-
|<#YearHighDailyTempRange>
|This year's highest Daily Temp Range
|n/a
|<#YearHighDailyTempRangeD>
|-
|<#YearLowDailyTempRange>
|This year's lowest Daily Temp Range
|n/a
|<#YearLowDailyTempRangeD>
|-
|<#YearHeatIndexH>
|This year's highest USA heat index
|<#YearHeatIndexHT>
|<#YearHeatIndexHD>
|-
|<#YearWChillL>
|This year's greatest wind chill (i.e. lowest temperature)
|<#YearWChillLT>
|<#YearWChillLD>
|-
|<#YearAppTempH>
|This year's highest apparent temperature
|<#YearAppTempHT>
|<#YearAppTempHD>
|-
|<#YearAppTempL>
|This year's lowest apparent temperature
|<#YearAppTempLT>
|<#YearAppTempLD>
|-
|<#YearFeelsLikeH>
|[[File:Badge vMx.png]]This year's highest feels like temperature (available from 3.6.0) (NOT AVAILABLE IN CUMULUS 1)
|<#YearFeelsLikeHT>
|<#YearFeelsLikeHD>
|-
|<#YearFeelsLikeL>
|[[File:Badge vMx.png]]This year's lowest feels like temperature (available from 3.6.0) (NOT AVAILABLE IN CUMULUS 1)
|<#YearFeelsLikeLT>
|<#YearFeelsLikeLD>
|-
|<#YearHumidexH>
|[[File:Badge vMx.png]] (Available from version 3.7.0) (NOT AVAILABLE IN CUMULUS 1)
 
This year's highest Canadian Humidity Index
* This is also obsolete, and therefore will only work with old versions of jQuery (1.4.2 to 1.11.0).
|<#YearHumidexHT>
*It was originally available from jQuery downloads, but they now offer '''jsRender.js''' for this functionality.
|<#YearHumidexHD>
* It basically is used to bind the contents of objects (like array elements) into particular locations within HTML.
|-
|<#YearDewPointH>
|This year's highest dew point
|<#YearDewPointHT>
|<#YearDewPointHD>
|-
|<#YearDewPointL>
|This year's lowest dew point
|<#YearDewPointLT>
|<#YearDewPointLD>
|-
|<#YearMinTempH>
|This year's highest daily minimum temperature
|Flavour specific mandatory output parameters:
* <#YearMinTempHD format=HH:nn> ''for Cumulus 1'',
* <#YearMinTempHD format=HH:mm> ''for Cumulus MX''
|<#YearMinTempHD>
|-
|<#YearMaxTempL>
|This year's lowest daily maximum temperature
|Flavour specific mandatory output parameters:
* <#YearMaxTempHD format=HH:nn> ''for Cumulus 1'',
* <#YearMaxTempHD format=HH:mm> ''for Cumulus MX''
 
|<#YearMaxTempLD>
===SteelSeries===
|-
|<#YearHumH>
|This year's high humidity
|<#YearHumHT>
|<#YearHumHD>
|-
|<#YearHumL>
|This year's low humidity
|<#YearHumLT>
|<#YearHumLD>
|-
|colspan="4" style="background:lightgray;"|Pressure
|-
|<#YearPressH>
|This year's high pressure
|<#YearPressHT>
|<#YearPressHD>
|-
|<#YearPressL>
|This year's low pressure
|<#YearPressLT>
|<#YearPressLD>
|-
|colspan="4" style="background:lightgray;"|Wind
|-
|<#YearGustH>
|This year's high wind gust
|<#YearGustHT>
|<#YearGustHD>
|-
|<#YearWindH>
|This year's high wind speed
|<#YearWindHT>
|<#YearWindHD>
|-
|<#YearWindRunH>
This year's highest Daily Wind Run
|n/a
|<#YearWindRunHD>
|-
|colspan="4" style="background:lightgray;"|Rainfall
|-
|<#YearRainRateH>
|This year's highest rainfall rate
|<#YearRainRateHT>
|<#YearRainRateHD>
|-
|<#YearHourlyRainH>
|This year's highest hourly rain
|<#YearHourlyRainHT>
|<#YearHourlyRainHD>
|-
|<#YearDailyRainH>
|This year's high daily rain
|n/a
|<#YearDailyRainHD>
|-
|<#YearMonthlyRainH>
|This year's high monthly rain
|n/a
|<#YearMonthlyRainHD>
|-
|<#YearLongestDryPeriod>
|Longest period without rain ending this year (days)
|n/a
|<#YearLongestDryPeriodD>
|-
|<#YearLongestWetPeriod>
|Longest period of rain every day ending this year (days)
|n/a
|<#YearLongestWetPeriodD>
|}
 
==All Time==
MX uses a modified version of the [[SteelSeries Gauges|steel series]] library made available by Mark Crossley for all the gauges (see dashboard and gauges pages of the admin interface) in MX.
 
The web tags in the date/time column have the default format as seen on "records.htm" in the standard web pages.
===Highstocks===
 
These are also available in the admin interface on "records.html" where they appear in the first tab, although the format used there is different and not able to be edited (any time is shown after the date).
The odd one out is '''Highstocks''' (that includes HighCharts)
*This is loaded from a Contents Distribution Node (CDN), but it is still pinned to obsolete versions of the basic script and its themes.
*This means that the Charts page in the admin interface will only work when there is an internet connection working to permit download of this software
*If you need to view your admin interface where an internet connection is not available:
Then you need to edit the interface file...
 
*The default format for an extreme month is to show the month name in full i.e. format 'MMMM' followed by the year in full.
'''<CMX_Folder>/Interface/charts.html''' ''Change lines 20,21 from''
*For an extreme day it shows the day of the month and the month name in full i.e. format "dd MMMM" (same for Cumulus 1 and Cumulus MX), prefixed with the word 'on' again ending with the year.
<pre><script src="https://code.highcharts.com/stock/8.0/h ... "></script>
*For the highest/lowest within a day in the year it shows both time and date adding the word "at" before the time, and the word 'on' before the date (i.e. on the standard web page the time comes first, not as seen in admin interface).
<script src="https://code.highcharts.com/themes/grid.js"></script></pre>
''to''
<pre><script src="webfiles/lib/highstock/js/highstock.js"></script>
<script src="webfiles/lib/highstock/js/themes/grid.js"></script></pre>
 
You can change the default output on either the standard web template, or in your own file, by using the [[#Time.2FDate_.27format.27_Parameter|formats features described above, but this can involve complicated use of single and double quotes and there are differences between Cumulus 1 and Cumulus MX. Please see examples section above for advice.
== Library software for your web server ==
 
Note that unlike the this month and this year web tags, the time and the date are both included in the default format of the standard time-stamp web tags for the 'highest minimum' and 'lowest maximum' temperatures, yet another inconsistency!
The '''webfiles/lib''' folder includes a number of software library items that are needed for the standard web pages included in the MX distribution.
 
{| class="wikitable" border="1"
This is fine if your web site is purely for the provided standard web pages, but if on your web server you also have web pages from third parties, or you have written your own web pages, then you may get conflict because all the library items used by MX are obsolete versions, and in one case MX uses a version of library software withdrawn by its originators due to compile error (so only available form some CDN who provide obsolete versions as its originators insist it must not be used)!
|-
!style="width:150px" | Web tag_name
!style="width:400px" | Function
!style="width:150px" | Date/Time
|-
|colspan="3" style="background:lightgray;"|Temperature & Humidity
|-
|<#tempH>
|All time high temperature
|<#TtempH>
|-
|<#tempL>
|All time low temperature
|<#TtempL>
|-
|<#mintempH>
|All time high minimum temperature
|<#TmintempH>
|-
|<#maxtempL>
|All time low maximum temperature
|<#TmaxtempL>
|-
|<#LowDailyTempRange>
|All time low daily temperature range
|<#TLowDailyTempRange>
|-
|<#HighDailyTempRange>
|All time high daily temperature range
|<#THighDailyTempRange>
|-
|<#apptempH>
|All time high apparent temperature
|<#TapptempH>
|-
|<#apptempL>
|All time low apparent temperature
|<#TapptempL>
|-
|<#feelslikeH>
|[[File:Badge vMx.png]]All time high feels like temperature (available from 3.6.0)
|<#TfeelslikeH>
|-
|<#feelslikeL>
|[[File:Badge vMx.png]]All time low feels like temperature (available from 3.6.0)
|<#TfeelslikeL>
|-
|<#humidexH>
|[[File:Badge vMx.png]]All time high Canadian Humidity Index (available from 3.7.0)
|<#ThumidexH>
|-
|<#heatindexH>
|All time high USA heat index
|<#TheatindexH>
|-
|<#dewpointH>
|All time high dew point
|<#TdewpointH>
|-
|<#dewpointL>
|All time low dew point
|<#TdewpointL>
|-
|<#humH>
|All time high humidity
|<#ThumH>
|-
|<#humL>
|All time low humidity
|<#ThumL>
|-
|<#wchillH>
|All time greatest wind chill (i.e. lowest temperature, but highest wind speed)
|<#TwchillH>
|-
|colspan="3" style="background:lightgray;"|Rainfall
|-
|<#rrateM>
|All time high rain rate
|<#TrrateM>
|-
|<#rfallH>
|All time high daily rain
|<#TrfallH>
|-
|<#rfallhH>
|All time high hourly rain
|<#TrfallhH>
|-
|<#rfallmH>
|All time high monthly rain
|<#TrfallmH>
|-
|<#LongestDryPeriod>
|All time longest dry period (days)
|<#TLongestDryPeriod>
|-
|<#LongestWetPeriod>
|All time longest wet period (days)
|<#TLongestWetPeriod>
|-
|colspan="3" style="background:lightgray;"|Pressure
|-
|<#pressH>
|All time high pressure
|<#TpressH>
|-
|<#pressL>
|All time low pressure
|<#TpressL>
|-
|colspan="3" style="background:lightgray;"|Wind
|-
|<#gustM>
|All time high wind gust
|<#TgustM>
|-
|<#wspeedH>
|All time high average wind speed
|<#TwspeedH>
|-
|<#windrunH>
|All time high daily wind run
|<#TwindrunH>
|}
 
==Monthly All Time Records==
#'''Highstock'''
#*At the moment, as hinted in previous section, there is an old version of Highstocks included in the '''webfiles/lib''' folder.
#* However, that is not used, instead (like admin interface) an old version is loaded from a CDN.
#*Be careful if you also load the current version for use on web pages not produced by MX, that the browser does not try to reuse your latest version and not recognise that MX wants an older version.
#'''jQuery'''
#*Be aware that MX distribution is not consistent as different web pages use different obsolete versions of jQuery.
#*#'''gauges.htm''' includes <tt><script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script></tt> to load version 1.8.2 from the Google Content Delivery Node
#*#*You will find at the end of this web template, if you bother to read it, some instructions about how you can change that CDN load, but the instruction is neither grammatically correct, nor understandable for me.
#*#'''trends.htm''' includes <tt><script src="lib/jquery/jquery-latest.min.js"></script></tt> to load version 1.9.1 of jQuery loaded from this badly named file, there is nothing ''latest'' about it.
#*#*Ironically, the old version of jQuery that has been selected by MX to be included in the '''webfiles/lib''' folder is the '''only old version that jQuery themselves withdrew, and warn you not to use''' because the error handling content is from a different jQuery version to the correct handling content making the two parts of the code incompatible. In other words, this version only works if everything is set up correctly and no error handling is invoked.
#'''Steel Series''' this is treated as library software, as it is copies of that separate product by Mark Crossley.
#* Most of the files are exactly as that was in revision 0.14.13 made 30 January 2015.
#* '''gauges.js''' has one tweak for MX, it defaults to not having chart rollovers (for Cumulus 1, this file had default to showing the images of graphs that were uploaded by Cumulus 1).
 
There are a set of tags for monthly all-time highs and lows, in other words the highest and lowest values for a particular month of the year. To supply both optional input, and optional output parameters, separate them with spaces, e.g. <#ByMonthTempHT mon=7 format=hh:nn>. In that example, the highest ever temperature in July is returned in the value after processing by Cumulus.
= The provided web pages =
 
Each Monthly All Time Records web tag has an optional input parameter "mon=N" where N is the index of the month of the year that you want the value for (January=1 and so on). The corresponding date/time web tags are formatted like the all time records directly above this section. You can customise the date and time formats using the output 'format' parameter on the web tag.
Setting up a web site is covered in [[Website_setup|this wiki page]] and the pages linked from there. I won't repeat that, but will try to explain below the MX context of the various files involved. MX will produce web pages locally even if you don't have a remote web site to display them on. You can view the web pages created in the web folder using a browser.
 
If you don't supply an input parameter (or supply an invalid value like zero) the current month will be used. This is useful if you want to write a template that will always supply values for the current month and don't want to use a script to enter the correct input parameter by processing with that script before Cumulus processes the template.
Cumulus MX provides a set of web templates, images, and json files, in '''\CumulusMX\web'''. The first of these are called templates (and have a 'T' at the end of the file name before the extension) because they include both text and web tags. MX will '''process''' these templates as it creates a web page (file name without a "T" in same web folder), during that processing, any text in the template is copied into new file without change, any web tags found in the template are parsed and the correct value is placed in that position in the output file. If you have a web server, then MX can process these files and upload them for you (by default using File Transfer Process) providing you specify the host, port, protocol, directory, username, and password, for the upload process to use. If you don't understand any of these terms, then this is not the place for explaining them, but generally if your web space is supplied by a provider, they will be able to tell you most of these settings, and you will choose the directory name. If you have set up a web server yourself, then you should know the required settings.
 
The web templates included are based on designs by Beth Loft used for Cumulus 1. Remember, Steve Loft (who wrote the original Cumulus software) said "''They exist because they're our web pages, and they're really only included with Cumulus as examples of how the web tags work. It never occurred to me that most people would simply use the supplied examples instead of creating their own pages!''"
 
{| class="wikitable" border="1"
The templates are written in fairly simple Hyper-Text Mark-up Language, designed to help people see how to write their own web templates. Here is a list of web templates provided:
|-
*indexT .htm
!style="width:150px"|Web tag_name
*todayT.htm
!style="width:400px"|Function
*yesterdayT.htm
!style="width:150px"|Date/Time
*thismonth.htm
|-
*thisyear.htm
|colspan="3" style="background:lightgray;"|Temperature & Humidity
*recordT.htm
|-
*monthlyrecordt.htm
|<#ByMonthTempH>
*gaugesT.htm
|High Temperature
*trendsT.htm
|<#ByMonthTempHT>
|-
|<#ByMonthTempL>
|Low Temperature
|<#ByMonthTempLT>
|-
|<#ByMonthHeatIndexH>
|High Heat Index
|<#ByMonthHeatIndexHT>
|-
|<#ByMonthWChillL>
|Greatest wind chill (i.e. lowest temperature and highest wind speed)
|<#ByMonthWChillLT>
|-
|<#ByMonthAppTempH>
|High Apparent Temperature
|<#ByMonthAppTempHT>
|-
|<#ByMonthAppTempL>
|Low Apparent Temperature
|<#ByMonthAppTempLT>
|-
|<#ByMonthFeelsLikeH>
|[[File:Badge vMx.png]]High Feels Like Temperature (available from 3.6.10)
|<#ByMonthFeelsLikeTempHT>
|-
|<#ByMonthFeelsLikeTempL>
|[[File:Badge vMx.png]]Low Feels Like Temperature (available from 3.6.10)
|<#ByMonthFeelsLikeTempLT>
|-
|<#ByMonthHumidexH>
|[[File:Badge vMx.png]]High Canadian Humidity Index (Humidex) - available from version 3.7.0
|<#ByMonthHumidexHT>
|-
|<#ByMonthHumidexL>
|[[File:Badge vMx.png]]Low Canadian Humidity Index (Humidex) - available from version 3.7.0
|<#ByMonthHumidexLT>
|-
|<#ByMonthDewPointH>
|High Dew Point
|<#ByMonthDewPointHT>
|-
|<#ByMonthDewPointL>
|Low Dew Point
|<#ByMonthDewPointLT>
|-
|<#ByMonthMinTempH>
|Highest Daily Minimum Temperature
|<#ByMonthMinTempHT>
|-
|<#ByMonthMaxTempL>
|Lowest Daily Maximum Temperature
|<#ByMonthMaxTempLT>
|-
|<#ByMonthHighDailyTempRange>
|High Daily Temp Range
|<#ByMonthHighDailyTempRangeT>
|-
|<#ByMonthLowDailyTempRange>
|Low Daily Temp Range
|<#ByMonthLowDailyTempRangeT>
|-
|<#ByMonthHumH>
|High Humidity
|<#ByMonthHumHT>
|-
|<#ByMonthHumL>
|Low Humidity
|<#ByMonthHumLT>
|-
|colspan="4" style="background:lightgray;"|Pressure
|-
|<#ByMonthPressH>
|High Pressure
|<#ByMonthPressHT>
|-
|<#ByMonthPressL>
|Low Pressure
|<#ByMonthPressLT>
|-
|colspan="4" style="background:lightgray;"|Wind
|-
|<#ByMonthGustH>
|High Wind Gust
|<#ByMonthGustHT>
|-
|<#ByMonthWindH>
|High Wind Speed
|<#ByMonthWindHT>
|-
|<#ByMonthWindRunH>
|High Daily Wind Run
|<#ByMonthWindRunHT>
|-
|colspan="4" style="background:lightgray;"|Rainfall
|-
|<#ByMonthRainRateH>
|High Rain Rate
|<#ByMonthRainRateHT>
|-
|<#ByMonthMonthlyRainH>
|High Monthly Rainfall
|<#ByMonthMonthlyRainHT>
|-
|<#ByMonthHourlyRainH>
|High Hourly Rain
|<#ByMonthHourlyRainHT>
|-
|<#ByMonthDailyRainH>
|High Daily Rain
|<#ByMonthDailyRainHT>
|-
|<#ByMonthLongestDryPeriod>
|Longest Dry Period
|<#ByMonthLongestDryPeriodT>
|-
|<#ByMonthLongestWetPeriod>
|Longest Wet Period
|<#ByMonthLongestWetPeriodT>
|}
 
==Day/Night/Sun/Moon==
All these templates (except gaugesT.htm and trendsT.htm) include a table for showing values and styling that gives a graded background colour. The tables include a navigation row with links to the other pages in the set. '''That navigation line fixes the width of the table''', and you will realise it was designed in the days when all monitors were a standard shape. Therefore the standard web pages as provided cannot adapt to the range of devices we use for viewing web pages nowadays. There are a selection of alternative web page sets available [[:Category:User_Contributions#web_template_complete_set_replacements|on the User_Contributions page]], and some of these are responsive and adapt to the width of the device they are being viewed on.
These are updated each hour to refer to current time-zone
{| class="wikitable" border="1"
|-
!style="width:150px" | Web tag_name
!style="width:900px" | Function
|-
|<#sunrise>
|Last sunrise time at the station - This sunrise time is calculated by a third party library each midnight UTC, and each hour Cumulus converts it to local time to ensure shown correctly before and after any clock change.
|-
|<#sunset>
|Next sunset time at the station - The sunset/sunrise times are calculated each midnight UTC, and each hour Cumulus converts them to local time to ensure it shows them correctly before and after any clock change.
|-
|<#daylength>
|Length of day in hours and minutes (sunrise to sunset) - The third party library that Cumulus uses each midnight UTC, may take last sunrise from previous day and next sunset from next day, so the calculation may be off by a minute or so compared to true figure for current day.
|-
|<#IsSunUp>
|A flag to indicate if the Sun is above the horizon or not, based on the sunrise and sunset times.
 
Possible values are 0 or 1, where 1 is when the Sun is above the horizon for the station location.
The gaugesT.htm is a template similar to [[SteelSeries Gauges]] although the latter is designed to work with a range of software and the former is specific to MX. '''As supplied in MX if you mouse over the provided gauges appearing on your web site you will see a box with figures, not a graph as is seen with the general steel series gauges''', but there are some other differences such as how the figures are supplied for the displays. The remaining template '''trendsT.htm''', creates a structure that can display graphs. The data for all the graphs that can be displayed is contained in the various '''json''' files in '''\CumulusMX\web''', these files are also processed by Cumulus so latest values are added, and then uploaded so the web page produced by this template can use them.
|-
|<#dawn>
|Start of last Civil Twilight at the station as at last midnight UTC
|-
|<#dusk>
|End of next Civil Twilight at the station as at last midnight UTC
|-
|<#daylightlength>
|Length of daylight in hours and minutes (dawn to dusk)
|-
|<#isdaylight>
|A flag to indicate if the location for the station is in civil daylight or not, based on the dawn and dusk times.
 
Possible values are 0 or 1, where 1 notes that it is currently within the hours of daylight.
The image that is provided in '''\CumulusMX\web''' is ''MoonBaseImage.png'', MX can be set to use that to generate (on MX start-up and on the hour) "moon.png" which it then can FTP to your web (also on the hour).
 
|-
|<#tomorrowdaylength>
|A string giving an approximate predicted difference between the length of daylight (dawn to dusk) yesterday and length of daylight tomorrow.
 
This web tag is unreliable, and its use is not recommended. Its use is therefore not supported (i.e. you use it at your own risk).
== To set up your web server for the first time ==
|-
|<#moonphase>
|Current [[Lunar phase|phase of the moon]] in words, eg "New Moon" etc. The names used can be altered in [[Strings.ini#Moon_Phases|strings.ini]].
|-
|<#MoonAge>
|Current '''approximate''' age of the Moon in days (0-29.53)
 
MX b3047 adds the 'dp' and 'rc' parameters Supports an optional 'dp' parameter, if supplied the result is returned to the specified number of decimal places. E.g <#MoonAge> gives "11" <#MoonAge dp=3> gives "11.234"
When you first want to use Cumulus web pages on your web server, you need a number of static (unchanging) files to be put onto your web server. The web pages that MX uploads for you reference that static files and will not look right without them. The files that only have to be uploaded once are found in '''\CumulusMX\webfiles''' and its sub-folders. You don't create a folder called webfiles on your web server, but you put the files and sub-folders into position relative to where MX will upload the htm files.
If the "dp" parameter is supplied, then also supplying "rc=y" in addition will cause any decimal comma to be converted to a decimal point.
|-
|<#moonrise>
|Current moonrise time at the station (if moon rises on current calendar day)
|-
|<#moonset>
|Current moonset time at the station (if moon sets on current calendar day)
|-
|<#MoonPercent>
|Current percentage of moon visible (negative value indicates 'waning')
 
MX b3047 adds the 'dp' and 'rc' parameters as <#MoonAge> above
To do this, you will must invoke a FTP process outside of Cumulus, MX does not include any functionality to do this one-off upload for you. The filezilla client is a popular choice as it has probably the most friendly graphical user interface, although other software to do this is also available. You may prefer a tool that lets you do the uploads from a command line without requiring working with a graphical interface.
|-
|<#MoonPercentAbs>
|Current percentage of moon visible (always positive)
 
MX b3047 adds the 'dp' and 'rc' parameters as <#MoonAge> above
#The static files to be uploaded include the standard styling file '''\CumulusMX\webfiles\weatherstyle.css''' which you place in the directory specified for the uploads.
|-
#Next you have three sub-folders, each of those sub-folders need to be replicated '''within''' the directory specified for the uploads.
|<#SunshineHours>
#*For example '''\CumulusMX\webfiles\images\picture.jpg''' will be stored in a "images" sub-directory of the upload directory and is used as the background image for web pages.
|Hours of sunshine so far today (Solar sensor needed)
#**There is nothing to stop you creating your own "picture.jpg" (instead of uploading the supplied one) and then Cumulus web pages will use that for the background image on each page.
|-
#*Similarly '''\CumulusMX\webfiles\js\cumuluscharts.js''' needs to be stored in a "js" sub-directory of your upload directory (this is the script that allows you to change the chart shown on the trends page and uses the appropriate json file to populate it with data).
|<#YSunshineHours>
# The "lib" sub-folder contains further levels of sub-folders all to be replicated on your web site.
|Total hours of sunshine yesterday (Solar sensor needed)
# The '''trends.htm''' web page also loads some library software from an internet Content Delivery Network (cdn) to invoke the JavaScript based Highstocks library.
|-
|<#CurrentSolarMax>
|[[FAQ#What_is_this_.22Solar_Max.22_value_which_Cumulus_is_displaying.3F | Current theoretical maximum solar radiation]]
|-
|<#IsSunny>
|Returns 1 if the sun is shining, otherwise 0 (Solar sensor needed)
|}
 
==Alarms==
== Operating a web site with uploads from MX engine ==
 
[[File:badge v1.png]]There are a set of tags available in Cumulus 1 for various alarm states. In Cumulus 1, the main page will change the colour of the relevant element when an alarm condition is entered or left. You can add sounds, and enable disable each alarm parameter on the Main Cumulus screen, Edit menu.
=== The standard web pages ===
 
[[File:Badge vMx.png]]Alarms are also available in later MX versions. In MX, the alarm conditions are shown on the bottom of the Dashboard page of the user interface. You can add sounds, and enable/disable each alarm parameter on the Alarms screen within Settings menu.
*If you want to operate the 'standard' web site, then just the same as with Cumulus 1, you will need to upload the ''contents'' of the '''webfiles''' folder from the zip file (don't upload the containing '''webfiles''' folder itself).
**Note that the MX web files are not the same as the ones for Cumulus 1, so make sure you upload the MX files if moving from Cumulus 1 to MX.
**The standard gauges are now the SteelSeries gauges. The default versions do not display a graph when you hover over a gauge as happened when you added the stand-alone Steel Series gauges to Cumulus 1.
**The trends web page in Cumulus 1 relied on that software generating graphs as images. In MX, the software generates files with time and value pairs, these are stored in json format, the trends page then uses a library package (Highstocks) to draw graphs from those data pairs.
 
For both flavours, there are web tags for each alarm condition, they give a value of '1' if the alarm condition is enabled and is still currently met; otherwise '0'.
=== Alternative ways to obtain web pages ===
{| class="wikitable" border="1"
|-
!style="width:150px" |Web tag_name
!style="width:600px" |Function
|-
|<#LowTempAlarm>
|Low temperature alarm
|-
|<#HighTempAlarm>
|High temperature alarm
|-
|<#TempChangeUpAlarm>
|Temperature increase alarm
|-
|<#TempChangeDownAlarm>
|Temperature decrease alarm
|-
|<#LowPressAlarm>
|Low pressure alarm
|-
|<#HighPressAlarm>
|High pressure alarm
|-
|<#PressChangeUpAlarm>
|Pressure increase alarm
|-
|<#PressChangeDownAlarm>
|Pressure decrease alarm
|-
|<#HighRainTodayAlarm>
|High rain today alarm
|-
|<#HighRainRateAlarm>
|High rainfall rate alarm
|-
|<#HighWindGustAlarm>
|High wind gust alarm
|-
|<#HighWindSpeedAlarm>
|High wind speed alarm
|-
|<#DataStopped>
|1 if the station has apparently stopped sending data to Cumulus, otherwise 0
|-
|<#DataSpikeAlarm>
|[[File:Badge vMx.png]] Available from version 3.7.0
Alarm raised if a data spike is detected, or a data limit exceeded
|}
 
== Extreme Records ==
You can choose to use some of the alternative web pages available from third parties and described [[:Category:User Contributions|on User Contributions page]].
 
There are a set of tags for the Cumulus record states. They give a value of '1' if the record has been exceeded; otherwise '0'. For daily records (e.g. temperature range), the record cannot be set until the end of the day when rollover starts. The tag is cleared in Cumulus 1 once the record has been viewed (via main screen or web tag).
=== Using your own web pages ===
 
=== Differences depending on Cumulus versions ===
*Of course you can use your own web pages, instead of the standard ones. Assuming they need to include figures that are available as web tags, there are three alternative ways to implement this:
*#MX can process template files with a HTML structure and those web tags in the structure where values are required just as it does with the standard templates, and MX can upload the resulting web pages at either the real-time interval, the standard interval, or after end of day. All of this is covered on the [[Customised_templates|Customised templates]] page in this Wiki.
*#MX can process a file with a string of web tags mirroring the realtime.txt option in MX, and upload the resulting file so your web pages can use JavaScript for a one-off insert of the values or an Ajax routine to update the web page at a fixed interval.
*# Alternatively, you can use template scripts processed locally by MX that don't create web pages, but are uploaded by MX at either the real-time interval, the standard interval, or after end of day. These scripts simply initialise script variables with values obtained from web tags. You then independently have a set of web pages resident only on your web server (they don't exist where you run MX) using a combination of HTML and script content that bring in the script(s) with the variables by the appropriate syntax. All of this is covered on the [[Php_webtags|PHP web tags]] page in this wiki. As it suggests there, you might therefore have several files processed by Cumulus MX at these different intervals, converting the web tags into script variables, and then use AJAX (JavaScript that may use json format to bring in the variables) or PHP (using <tt>'require_once 'filename';</tt> syntax) to put those variables into a web page.
 
[[File:Badge v1.png]] Cumulus 1.9.x supports all the web tags listed in table below, with the exception of those relating to "humidex" and "feels like".
You may find [[PHP|this wiki page]] useful for understanding more about the different script languages.
 
[[File:Badge v1.png]] For Cumulus 1 the tags are cleared in one of two ways:
= MX End of Day Process =
#Generation of a web page where the web tag is set, clears the record for that web tag.
#Viewing of an extreme screen tab clears all records listed on that tab.
 
[[File:Badge vMx.png]] For versions up to 3.5.0 Cumulus MX works in a different way both in terms of how tags are set (see various topics in support forum) and how they are cleared (essentially the end of rollover clears records, so daily records are only shown for the few microseconds while rollover is being processed). From version 3.7.0, Cumulus MX offers all the web tags listed in table below, at earlier versions it offers a subset of those listed.
I have added this section, because this process has given me some headaches.
== My version ==
 
[[File:Badge vMx.png]] For MX these web tags will be set from the time of the record until a timeout value is met (by default each record remains set for 24 hours).
If you write custom SQL, or have a template being processed at end of day, then what I find strange is that web tags related to system date report the new date, but other web tags report weather derivatives from the old day. Put another way, all the date related tags change at start of rollover, but all the weather related web tags change at end of rollover.
 
'''You can change the default MX timeout''':
However, it is not quite as simple as that, the month and year are reset before the extra web files are processed (so they cannot use monthly web tags at end of month, nor yearly web tags at end of year). The complication is that in the extra web files you can use '''<currentlogfile>''' (and from build 3087 '''<currentextralogfile>''') and these pick up the old month/year. Now you see why I found it hard to digest, and why I wanted to write it here to make it easier for others.
*Add a <tt>RecordSetTimeoutHrs=NN</tt> entry to [[Cumulus.ini#Section:_Station|[Station] section in Cumulus.ini]]
*'''NN''' can be set to any reasonable integer representing hours (for the default set the number '''NN''' to '24').
 
=== Table of web tags available for extreme records ===
If you use Custom SQL and therefore have to quote web tags, the SQL should use monthly and yearly web tags related to previous day, but all the weather tags it uses must be those for current conditions or today. Yes it is confusing.
 
{| class="wikitable" border="1"
As part of the so called "end of day" process, MX (just like Cumulus 1) creates a start of day back up in the daily sub-folder. So on first day of a new month (and new year sometimes), the backed standard log files (and extra sensor log files from build 3087) are for the month that has just started, there is no back-up of the old month.
|-
!style="width:150px" |Web tag_name
!style="width:600px" |Function
|-
|<#recordsbegandate>
|The date that Cumulus began tracking all time records (does not prevent earlier record dates being set manually)
|-
|<#newrecord>
|Indicates when any tracked extreme is changed.
*{{Version badge 1}}In Cumulus 1.x.x:
** 1 if 'new record' light is flashing,
**0 if not
*[[File:Badge vMx.png]]In Cumulus MX: 1 from when new record is set until
** either all records have cleared
**or until next rollover is completed,
*0 otherwise
|-
|<#TempRecordSet>
|1 if any temperature-based extreme has been updated, 0 if not
|-
|<#HighTempRecordSet>
|1 if the all-time highest temperature extreme has been updated, 0 if not
|-
|<#LowTempRecordSet>
|1 if the all-time lowest temperature extreme has been updated, 0 if not
|-
|<#HighTempRangeRecordSet>
|1 if the all-time high daily temperature range extreme has been updated, 0 if not
|-
|<#LowTempRangeRecordSet>
|1 if the all-time low daily temperature range extreme has been updated, 0 if not
|-
|<#HighAppTempRecordSet>
|1 if the all-time high apparent temperature extreme has been updated, 0 if not
|-
|<#LowAppTempRecordSet>
|1 if the all-time low apparent temperature extreme has been updated, 0 if not
|-
|<#HighHeatIndexRecordSet>
|1 if the all-time high USA heat index extreme has been updated, 0 if not
|-
|<#HighHumidexRecordSet>
|[[File:Badge vMx.png]]1 if the all-time high Canadian Humidity index extreme has been updated, 0 if not (from version 3.7.0)
|-
|<#LowWindChillRecordSet>
|1 if the all-time greatest wind chill extreme has been updated, 0 if not
|-
|<#HighFeelsLikeRecordSet>
|[[File:Badge vMx.png]]1 if the all-time high feels like temperature extreme has been updated, 0 if not (from version 3.6.0)
|-
|<#LowFeelsLikeRecordSet>
|[[File:Badge vMx.png]]1 if the all-time low feels like temperature extreme has been updated, 0 if not (from version 3.6.0)
|-
|<#HighDewPointRecordSet>
|1 if the all-time high dew point extreme has been updated, 0 if not
|-
|<#LowDewPointRecordSet>
|1 if the all-time low dew point extreme has been updated, 0 if not
|-
|<#HighMinTempRecordSet>
|1 if the all-time high minimum temperature extreme has been updated, 0 if not
|-
|<#LowMaxTempRecordSet>
|1 if the all-time low maximum temperature extreme has been updated, 0 if not
|-
|<#HighWindGustRecordSet>
|1 if the all-time high wind gust extreme has been updated, 0 if not
|-
|<#HighWindSpeedRecordSet>
|1 if the all-time high wind speed extreme has been updated, 0 if not
|-
|<#RainRecordSet>
|1 if any rainfall based extreme has been updated, 0 if not
|-
|<#HighRainRateRecordSet>
|1 if the all-time high rain rate extreme has been updated, 0 if not
|-
|<#HighHourlyRainRecordSet>
|1 if the all-time high hourly rain extreme has been updated, 0 if not
|-
|<#HighDailyRainRecordSet>
|1 if the all-time high daily rain extreme has been updated, 0 if not
|-
|<#HighMonthlyRainRecordSet>
|1 if the all-time high monthly rain extreme has been updated, 0 if not
|-
|<#LongestDryPeriodRecordSet>
|1 if the all-time longest dry period extreme has been updated, 0 if not
|-
|<#LongestWetPeriodRecordSet>
|1 if the all-time longest wet period extreme has been updated, 0 if not
|-
|<#HumidityRecordSet>
|1 if either the highest or lowest humidity extreme has been updated, 0 if not
|-
|<#HighHumidityRecordSet>
|1 if the all-time high humidity light extreme has been updated, 0 if not
|-
|<#LowHumidityRecordSet>
|1 if the all-time low humidity extreme has been updated, 0 if not
|-
|<#PressureRecordSet>
|1 if either the highest or lowest pressure extreme has been updated, 0 if not
|-
|<#HighPressureRecordSet>
|1 if the all-time high pressure extreme has been updated, 0 if not
|-
|<#LowPressureRecordSet>
|1 if the all-time low pressure extreme has been updated, 0 if not
|-
|<#WindRecordSet>
|1 if any wind speed based extreme has been updated, 0 if not
|-
|<#HighWindrunRecordSet>
|1 if the all-time high wind run extreme has been updated, 0 if not
|}
 
==Special tags==
== The official version ==
 
===OS WMR Series===
Mark Crossley says the MX day reset does this (at version 3.5.x)...
<tt>
Reset midnight rain
Entering Day Reset (message about current day of month, at this stage web tag <#metdate> changes to new date)
Day Reset (message about date ending, time shown as 00:00:00 because time not defined, not because it is midnight, it might be 9am or 10am)
Run EOD custom SQL
Save dayfile entry (uses what is still in today.ini that includes old date, i.e. what is now in web tag <#metdateyesterday>)
Write monthly & yearly file entries
Write any new daily extreme records
if day of month = 1 then: copy month.ini to saved file, reset monthly figures
if day of month = 1 and month = 1 then: copy year.ini to saved file, reset yearly figures
Copy todays high/lows to yesterdays
Reset todays high/lows to current
Write today.ini & yesterday.ini
Create NOAA reports
Execute user daily external program
Process Extra EOD files
</tt>
But independent of above EOD thread that occurs on the rollover hour, the '''normal interval''' and '''hourly processes''' thread is seeking to run at same time, whether that happens at same time depends on processing capability and whether it can process multiple threads.
 
There are a set of tags for the WMR928, WR100/200 extra sensors:
What actually happens in above list depends on your settings, and if your FTP interval is synchronised with the logging interval.
 
{| class="wikitable" border="1"
= SPECIAL CONSIDERATIONS - Text by Steve Loft =
|-
== Restrictions in MX for decimal separators ==
!style="width:150px" |Web tag_name
On the subject of decimal and list separators, there are a couple of issues which users of decimal commas may encounter.
!style="width:600px" |Function
#The first is that there may be an issue with some of the user interface not working correctly. Please report these issues and I will fix them. There may be aspects of the displays that I cannot change (because the package used does not support decimal commas) but it should be possible to at least get it working.
|-
#The second issue with decimal separators only affects the Raspberry Pi (as far as I am aware). There is apparently an issue with a version (3.2.8) of the Mono package on Raspbian 'hard float' where it cannot parse values using decimal commas. If this does turn out to be an issue, there are a number of possible workarounds until the Raspbian package gets updated. One workaround is to use the 'soft float' version of Debian instead. Obviously, this will have performance issues, but is probably the easiest. The second workaround is to build Mono from the latest sources, see http://www.mono-project.com/docs/compiling-mono/linux/. I am told that this fixes the problem. Another possible workaround would be to find an already fixed binary package, but I don't know if one currently exists.
|n/a
|Now incorporated into the Extra Sensors section above
|}
 
===Davis===
''PLEASE NOTE: The issues that Steve describes seem to have gone away with currently available versions of Mono; update your Mono if you are using an old version and encounter problems.'' Like any software, Mono might have bugs at a particular version, and sometimes you might need to swap to an older version if the current version has an outstanding issue.
 
'''Please be aware that the tags available are not the same in all versions.
== If you want to use your Cumulus 1 data with MX ==
[[File:Badge vMx.png]]At present this table has not yet been updated for latest MX version.'''
If you use decimal commas in your Cumulus 1 data, you will need to edit the .ini files to change the decimal commas into periods/full stops, because '''Cumulus MX always expects periods/full stops in .ini files''' ''regardless of the locale in use''. The other data files will be OK - assuming you are using the same decimal and list separators in MX as you used in Cumulus 1 (i.e. the same locale). If you try to switch to a different locale, then your data log files will of course no longer be in the correct format, so you would need to edit all of your files. You can select the locale for MX to use as a switch parameter when it starts up, see earlier on this page.
 
All (see note for THSWindex) of the following web tags for the Davis PWS are available from Cumulus 1.9.2. Most of the following web tags are available in Cumulus MX 3.0.0 beta from build 3019, Storm tags from 3021.
== A note to Davis owners ==
I am experimenting with the use of the LOOP2 packet. The current code uses this for two purposes. First, it uses the 'peak 10-minute gust' value, to avoid the problem where a gust might be missed (although hopefully this will not be such an issue with Cumulus MX as it does not use the Davis DLL), and secondly it uses the 'absolute pressure' value to make calculation of 'altimeter pressure' easier and more accurate. This is mainly used if you upload to CWOP.
 
'''Both flavours update the values of the reception tags every 15 minutes.''' In Cumulus 1 this applies from 1.9.3, in 1.9.2 they were read, and updated, every minute, in earlier versions not available.
The LOOP2 packet is supported on the VP2 with firmware version 1.90 or later, and on the Vue. If you have a Vantage Pro (i.e. the original 'VP1'), or a VP2 with pre-1.90 firmware, or if you are using Virtual VP, none of these support the LOOP2 packet. In these cases, you should edit cumulus.ini and add a line to the [Station] section:
 
{| class="wikitable" border="1"
UseDavisLoop2=0
|-
!style="width:150px" |Web tag_name
!style="width:120px" |Applicability
!style="width:600px" |Function
|-
|<#DavisTotalPacketsReceived>
|1.9.2 onwards and MX
|Total number of data packets received.
|-
|<#DavisTotalPacketsMissed>
|1.9.2 onwards and MX
|Number of missed data packets. From version 3.6.0 build 3076, optionally add "tx=n" parameter, where n=1-8 and equals the desired transmitter id.
|-
|<#DavisMaxInARow>
|1.9.2 onwards and MX
|Longest streak of consecutive packets received. From version 3.6.0 build 3076, optionally add "tx=n" parameter, where n=1-8 and equals the desired transmitter id.
|-
|<#DavisNumCRCerrors>
|1.9.2 onwards and MX
|Number of packets received with CRC errors. From version 3.6.0 build 3076, optionally add "tx=n" parameter, where n=1-8 and equals the desired transmitter id.
|-
|<#DavisNumberOfResynchs>
|1.9.2 onwards and MX
|Number of times the console resynchronised with the transmitter
|-
|<#DavisFirmwareVersion>
|1.9.2 onwards and MX
|The console firmware version
|-
|<#THWindex>
|1.9.x
|A derived temperature using Temperature/Humidity/Wind values read from Davis DLL in Cumulus 1.9.x.
*The THW Index uses humidity and temperature (like Heat Index), but includes the cooling effects of wind (like wind chill).
*Available from 1.9.2 Build 1009 (Aug 2011).
|-
|<#THSWindex>
|(1.9.x and) MX
|A heat stress indicator using Temperature/Humidity/Solar/Wind values.
*The THSW Index uses humidity and temperature (like the Heat Index), but also includes the heating effects of sunshine, and the cooling effects of wind.
*Therefore requires Davis station with solar sensor.
[http://digitalcommons.unl.edu/cgi/viewcontent.cgi?article=1223&context=animalscinbcr Approx calculation]: Decrease heat index by 1 unit for each 1 mph increase in wind speed, and for each, either 3 Langley increase in solar radiation, or 10% increase in cloud cover.
 
'''IMPORTANT NOTES:'''
With this setting, Cumulus will revert to calculating the 10-minute gust value itself from the individual wind speed readings, but it will not currently attempt to calculate altimeter pressure correctly, it will simply use the sea-level pressure instead. This is likely to be an issue if you are at high altitude and you upload to CWOP using Cumulus MX.
#Although this tag is available in Cumulus 1.9.x, there is an issue somewhere in the Davis code that prevents Cumulus 1 obtaining the value (so tag always displays zero).
#Search the forum for several discussions about "THSW".
#Cumulus MX reads "LOOP2" packets, and the correct value for this tag can be read there and displayed on 'Now' template.
|-
|<#battery>
|1.x.x and MX
|The console battery condition in volts. eg "4.82v"
|-
|<#txbattery>
<#txbattery channel=1>
|1.8.9 onwards and MX
|The transmitter battery condition, by default it returns the status of all transmitters. (This was displayed from version 1.9.4 to 1.8.9 on the main screen).
'''Cumulus 1.9.3 onwards Only:''' The optional 'channel' parameter returns the status for a particular transmitter, up to channel=8. The channel result is just the string "ok" or "LOW" for a low battery
|-
|<#StormRain>
|1.x.x and MX
|The console 'storm rain' current amount (build 1090 onwards for Cumulus 1; 3021 onwards for MX)
|-
|<#StormRainStart>
|1.x.x and MX
|The console reported '''date''' of the start of the 'storm' (the console does not report start time, but it appears a minimum of 2 tips within 3 hours will trigger a storm start, so using <#LastRainTipISO> in a script might help), but standard Cumulus [[Webtags#Time.2FDate_.27format.27_Parameter| date/time formatting]] can be applied to that date.
|}
 
===Davis WLL ===
Also for Davis stations, I have assumed that people using millimetres in Cumulus have a metric rain gauge (0.2 mm per tip), and those using inches have a 0.01" rain gauge. This can be over-ridden by adding a line to the [Station] section of Cumulus.ini:
 
New from version 3.6.0. Not available for earlier MX, not available for Cumulus 1.
VPrainGaugeType=0
 
{| class="wikitable" border="1"
or
|-
!style="width:150px" |Web tag_name
!style="width:600px" |Function
|-
|<#DavisReceptionPercent tx=1>
|WLL transmitter reception percentage (replace 1 by any other transmitter number up to 8)
|-
|<#DavisTxRssi tx=0>
|WLL RSSI of the WiFi connection
|-
|<#DavisTxRssi tx=1>
|WLL RSSI of Transmitter #1 (replace 1 by any other transmitter number up to 8)
|}
 
=== Davis AirLink ===
VPrainGaugeType=1
New from version 3.9.0. Not available for earlier MX, not available for Cumulus 1.
 
Note, that you can configure an Indoor or Outdoor (or both) AirLink, most people will use an outdoor. There are a similar set of tags for each device.
Where 0 is a 0.2mm gauge and 1 is a 0.01" gauge. Note that changing this after MX has already read some data may cause your rainfall reading for today etc to change considerably, so you will need to correct that.
 
{| class="wikitable" border="1"
= Web Tags and related features =
|-
!style="width:150px" |Web tag_name
!style="width:600px" |Function
|-
|colspan="2" style="background:lightgray;"|Particulate Matter
|-
|<#AirLinkPm1[InǀOut]>
|Current PM 1.0 count
|-
|<#AirLinkPm2p5[InǀOut]>
|Current PM 2.5 count
|-
|<#AirLinkPm2p5_1hr[InǀOut]>
|Last hour average PM 2.5 count
|-
|<#AirLinkPm2p5_3hr[InǀOut]>
|Last 3 hours average PM 2.5 count
|-
|<#AirLinkPm2p5_24hr[InǀOut]>
|Last 24 hours average PM 2.5 count
|-
|<#AirLinkPm2p5_Nowcast[InǀOut]>
|The 24 hour "nowcast" weighted average PM 2.5 count
|-
|<#AirLinkPm10[InǀOut]>
|Current PM 10 count
|-
|<#AirLinkPm10_1hr[InǀOut]>
|Last hour average PM 10 count
|-
|<#AirLinkPm10_3hr[InǀOut]>
|Last 3 hours average PM 10 count
|-
|<#AirLinkPm10_24hr[InǀOut]>
|Last 24 hours average PM 10 count
|-
|<#AirLinkPm10_Nowcast[InǀOut]>
|The 24 hour "nowcast" weighted average PM 10 count
|-
|colspan="2" style="background:lightgray;"|AQI Values
|-
|<#AirLinkAqiPm2p5[InǀOut]>
|Current PM 2.5 AQI value - allows use of the "dp=n" and "tc=y" parameters
|-
|<#AirLinkAqiPm2p5_1hr[InǀOut]>
|Last hour average PM 2.5 AQI value - allows use of the "dp=n" and "tc=y" parameters
|-
|<#AirLinkAqiPm2p5_3hr[InǀOut]>
|Last 3 hour average PM 2.5 AQI value - allows use of the "dp=n" and "tc=y" parameters
|-
|<#AirLinkAqiPm2p5_24hr[InǀOut]>
|Last 24 hour average PM 2.5 AQI value - allows use of the "dp=n" and "tc=y" parameters
|-
|<#AirLinkAqiPm2p5_Nowcast[InǀOut]>
|Last 24 hour "nowcast" weighted average PM 2.5 AQI value - allows use of the "dp=n" and "tc=y" parameters
|-
|<#AirLinkAqiPm210[InǀOut]>
|Current PM 10 AQI value - allows use of the "dp=n" and "tc=y" parameters
|-
|<#AirLinkAqiPm10_1hr[InǀOut]>
|Last hour average PM 10 AQI value - allows use of the "dp=n" and "tc=y" parameters
|-
|<#AirLinkAqiPm10_3hr[InǀOut]>
|Last 3 hour average PM 10 AQI value - allows use of the "dp=n" and "tc=y" parameters
|-
|<#AirLinkAqiPm10_24hr[InǀOut]>
|Last 24 hour average PM 10 AQI value - allows use of the "dp=n" and "tc=y" parameters
|-
|<#AirLinkAqiPm10_Nowcast[InǀOut]>
|Last 24 hour "nowcast" weighted average PM 10 AQI value - allows use of the "dp=n" and "tc=y" parameters
|-
|colspan="2" style="background:lightgray;"|Stats Values
|-
|<#AirLinkPct_1hr[InǀOut]>
|Percentage of possible values that were included in the 1 hour averages
|-
|<#AirLinkPct_3hr[InǀOut]>
|Percentage of possible values that were included in the 3 hour averages
|-
|<#AirLinkPct_24hr[InǀOut]>
|Percentage of possible values that were included in the 24 hour averages
|-
|<#AirLinkPct_1hr[InǀOut]>
|Percentage of possible values that were included in the 24 hour weighted averages
|-
|colspan="2" style="background:lightgray;"|Sensor Info
|-
|<#AirLinkFirmwareVersion[InǀOut]>
|Shows the AirLink firmware version as a date string.
NOTE: This web tag requires a WeatherLink Pro subscription to work
|-
|<#AirLinkTemp[InǀOut]>
|The sensors internal temperatue value
|-
|<#AirLinkHum[InǀOut]>
|The sensors internal humidity value
|-
|<#AirLinkWifiRssi[InǀOut]>
|The sensors WiFi signal strength in dB - anything below -90 is considered very poor.
NOTE: This web tag requires a WeatherLink Pro subscription to work
|}
 
Almost all of the [[Webtags|web tags for all Cumulus flavours on this Wiki page]] that you could use in Cumulus 1 are also supported in Cumulus MX.
 
===Fine Offset===
Each new build of the beta MX has increased the range of web tags it supports. Since MX has come out of beta, new versions have not only implemented the remaining tags from Cumulus 1, they have also added new tags not previously available. For full details see the [[Webtags#Differences_between_Cumulus_1_and_Cumulus_MX_.28Cumulus_3.29:|web tags]] article, but a quick précis follows in next few sections.
The following tags are specific to the Fine Offset series of PWS
 
{| class="wikitable" border="1"
|-
!style="width:150px" | Web tag_name
!style="width:600px" | Function
|-
|<#Light>
|Current Lux value "Fine Offset only"
|-
|<#SensorContactLost>
|1 if the station has lost contact with its remote sensors "Fine Offset only"
0 if contact has been established
|}
 
=== AllNo builds of MXCommas ===
The ''''format' parameter''' on the date/time output modifier for web tags is unfortunately different, because many of the characters used are different. See [[Webtags#List_of_allowed_modifiers|the modifiers list]] page of this Wiki.
 
Note that Cumulus does not use thousand separators, so the only places a comma can be used are as a field separator or as a decimal separator. Obviously it cannot be used for both. This section is for those locales where a comma is used instead of a full stop to separate the integer and decimal parts of a number. Some computer languages like JavaScript will not accept a comma being used for this purpose, and Cumulus uses JavaScript for various tasks, as do various third party web pages. From '''version 1.9.3''' build 1045, Cumulus 1 (and MX) has provided some current conditions web tags, some today web tags, and some recent history web tags in an alternative format where (regardless of locale) the number is always output in a format that uses a decimal point. They all correspond to the same tag with 'RC' removed.
Note that this difference in date/time modifiers also affects how you specify the '''NOAA report''' file names. For example in Cumulus 1 you can specify a 2 digit month number by either 'mm' or 'MM', but MX (later versions) has to change the former to the latter as MX uses 'mm' for minutes. The same applies to using 'mmm' or 'MMM' for 3 letter month abbreviation in Cumulus 1, only the latter works in MX, so MX (later versions) will adjust that. If you are using an older MX version, you should upgrade to latest as you are missing a lot of functionality, but while you use that old version, ensure that your file names for NOAA reports do use the correct modifiers for MX.
 
'''CURRENT CONDITIONS: '''
== Beta builds of MX ==
The following web tags were not available or worked differently:
*The individual 'record set' tags such as <#TempRecordSet> etc did not work (because the interface then had no indicators for new records and no way to reset them).
*The <#newrecord> tag does work, but works differently, it turns itself off automatically after 24 hours.
*Some of the 'system status' web tags do not work: <#CpuName>, <#MemoryStatus>, <#DisplayMode>, <#DiskSize> and <#DiskFree>
*The <#txbattery> web tag has no content currently. Using it with a 'channel' parameter causes a 'token error'.
*The snow tags were not available as there was no '''Weather Diary'''
 
<#RCtemp>, <#RCdew>, <#RCheatindex>, <#RChum>, <#RCinhum>, <#RCintemp>, <#RCpress>, <#RCrfall>, <#RCrrate>, <#RCwchill>, <#RCwgust>, <#RCwspeed>, <#RCwlatest>
== Current builds of MX ==
The web tags you have depend on which build you are using:
 
'''TODAY'''
From beta version 3.0.0 - Build 3046 of 2 Jan 2019
* added <#snowdepth> tag processing
* added '''diary.db''' file
 
<#RCpressTH>, <#RCpressTL>, <#RCrrateTM>, <#RCtempTH>, <#RCtempTL>, <#RCwgustTM>, <#RCdewpointTH>, <#RCdewpointTL>, <#RCwchillTL>, <#RCheatindexTH>, <#RCapptempTH>, <#RCapptempTL>
From beta version 3.0.0 - build 3047
 
* Web token parser updated to cope with html tag characters "<>" in the format string e.g. <#TapptempH format="dd'&nbsp;'MMM'&nbsp;'yyyy'<span class=\'xx\'> at 'HH:mm'</span>'">
'''RECENT HISTORY'''
*All record Value tags should now return '---' and Date tags '----' until they are first set.
 
*<#MoonAge>, <#MoonPercent>, <#MoonPercentAbs> - all given new 'dp' and 'rc' parameters.
<#RCRecentOutsideTemp>, <#RCRecentWindSpeed>, <#RCRecentWindGust>, <#RCRecentWindLatest>, <#RCRecentWindChill>, <#RCRecentDewPoint>, <#RCRecentHeatIndex>, <#RCRecentPressure>, <#RCRecentRainToday>, <#RCRecentUV>
 
Although 'Apparent Temperature' is not included as a tag, it can be [[FAQ#What_formula_does_Cumulus_use_for_Apparent_Temperature.3F | calculated]] in a script from the RC tags for 'outside temperature', 'wind speed', and 'relative humidity' values. In php language this is <tt>$RCapptempCALC = round(<#temp> + (0.33 * (<#hum> / 100 * 6.105 * exp (17.27 * <#temp> / (237.7 + <#temp>) ))) - (0.7 * $wspeed) - 4.0, 2);</tt>.
 
There are other derivatives that can be calculated similarly from a set of simultaneous values, as described below the recent history section.
 
From '''version 3.5.4''' build 3075, all web tags (except indoor temperature <#intemp> where rc parameter not available until version 3.6.8 build 3084), that produce decimal number output now support the "'''rc=y'''" option. e.g. <tt><#tempYH rc=y></tt> will report yesterday's highest temperature using a full stop to separate decimal part where the locale would normally use a comma.
From version 3.1.1 - build 3054
*Adds new web tags <#snowlying>, <#snowfalling>, both provide 1|0 responses
 
=Example of '''List Web Tags''' output for MX=
From version 3.2.0 - build 3056 of 19 November 2019:
* Enables alarms as per Cumulus 1
**New Alarm page under Settings
**Alarms are shown visually on the dashboard
**Due to browser restrictions, alarm sounds on the browser page may require you to click a button on the first alarm in order to hear it.
***You can add the MX admin site to your browsers list of sites allowed to play sound automatically. Your browser should "learn" that you want to allow sounds to play automatically.
*** Alarm sound files should be placed in the /interface/sounds folder, they must be a browser compatible format (mp3 are good). The alarm settings for the sound file should be just the filename without any path
*Lots of new web tags not available in Cumulus 1, see release announcement for details
 
This is from an earlier version than the latest, it appears here simply to show how the web tag option can list tags (although these are separated by comma rather than the new line separator Cumulus uses).
From Version 3.2.2 - build 3058
*Implements the missing <#txbattery> web tag
 
AirQuality1, AirQuality2, AirQuality3, AirQuality4, AirQualityAvg1, AirQualityAvg2, AirQualityAvg3, AirQualityAvg4, AllocatedMemory, altimeterpressure, altitude, apptemp, apptempH, apptempL, apptempTH, apptempTL, apptempYH, apptempYL, avgbearing, avgtemp, avgtempY, battery, bearing, BearingRangeFrom, BearingRangeFrom10, BearingRangeTo, BearingRangeTo10, bearingTM, bearingYM, beaudesc, beaufort, beaufortnumber, build, ByMonthAppTempH, ByMonthAppTempHT, ByMonthAppTempL, ByMonthAppTempLT, ByMonthDailyRainH, ByMonthDailyRainHT, ByMonthDewPointH, ByMonthDewPointHT, ByMonthDewPointL, ByMonthDewPointLT, ByMonthGustH, ByMonthGustHT, ByMonthHeatIndexH, ByMonthHeatIndexHT, ByMonthHighDailyTempRange, ByMonthHighDailyTempRangeT, ByMonthHourlyRainH, ByMonthHourlyRainHT, ByMonthHumH, ByMonthHumHT, ByMonthHumL, ByMonthHumLT, ByMonthLongestDryPeriod, ByMonthLongestDryPeriodT, ByMonthLongestWetPeriod, ByMonthLongestWetPeriodT, ByMonthLowDailyTempRange, ByMonthLowDailyTempRangeT, ByMonthMaxTempL, ByMonthMaxTempLT, ByMonthMinTempH, ByMonthMinTempHT, ByMonthMonthlyRainH, ByMonthMonthlyRainHT, ByMonthPressH, ByMonthPressHT, ByMonthPressL, ByMonthPressLT, ByMonthRainRateH, ByMonthRainRateHT, ByMonthTempH, ByMonthTempHT, ByMonthTempL, ByMonthTempLT, ByMonthWChillL, ByMonthWChillLT, ByMonthWindH, ByMonthWindHT, ByMonthWindRunH, ByMonthWindRunHT, chillhours, cloudbase, cloudbaseunit, cloudbasevalue, ConsecutiveDryDays, ConsecutiveRainDays, cooldegdays, cooldegdaysY, CpuCount, CpuName, cumulusforecast, cumulusforecastenc, currcond, currcondenc, CurrentSolarMax, currentwdir, dailygraphperiod, DataStopped, date, DavisFirmwareVersion, DavisMaxInARow, DavisNumberOfResynchs, DavisNumCRCerrors, DavisTotalPacketsMissed, DavisTotalPacketsReceived, dawn, day, daylength, daylightlength, dayname, DaysSince30Dec1899, DaysSinceRecordsBegan, dew, dewpointH, dewpointL, dewpointTH, dewpointTL, dewpointYH, dewpointYL, DiskFree, DiskSize, DisplayMode, domwindbearing, domwindbearingY, domwinddir, domwinddirY, dusk, ErrorLight, ET, ExtraDP1, ExtraDP10, ExtraDP2, ExtraDP3, ExtraDP4, ExtraDP5, ExtraDP6, ExtraDP7, ExtraDP8, ExtraDP9, ExtraHum1, ExtraHum10, ExtraHum2, ExtraHum3, ExtraHum4, ExtraHum5, ExtraHum6, ExtraHum7, ExtraHum8, ExtraHum9, ExtraTemp1, ExtraTemp10, ExtraTemp2, ExtraTemp3, ExtraTemp4, ExtraTemp5, ExtraTemp6, ExtraTemp7, ExtraTemp8, ExtraTemp9, forecast, forecastenc, forecastnumber, forum, graphperiod, gustM, GW1000FirmwareVersion, heatdegdays, heatdegdaysY, heatindex, heatindexH, heatindexTH, heatindexYH, HighAppTempRecordSet, HighDailyRainRecordSet, HighDailyTempRange, HighDewPointRecordSet, HighHeatIndexRecordSet, HighHourlyRainRecordSet, HighHumidityRecordSet, HighMinTempRecordSet, HighMonthlyRainRecordSet, HighPressAlarm, HighPressureRecordSet, HighRainRateAlarm, HighRainRateRecordSet, HighRainTodayAlarm, HighTempAlarm, HighTempRangeRecordSet, HighTempRecordSet, HighWindGustAlarm, HighWindGustRecordSet, HighWindrunRecordSet, HighWindSpeedAlarm, HighWindSpeedRecordSet, hour, hourlyrainTH, hourlyrainYH, hum, humH, humidex, HumidityRecordSet, humL, humTH, humTL, humYH, humYL, inhum, intemp, interval, isdaylight, IsFreezing, IsRaining, IsSunny, IsSunUp, LastDataReadT, LastRainTipISO, LatestError, LatestErrorDate, LatestErrorTime, LatestNOAAMonthlyReport, LatestNOAAYearlyReport, latitude, LeafTemp1, LeafTemp2, LeafTemp3, LeafTemp4, LeafWetness1, LeafWetness2, LeafWetness3, LeafWetness4, LeakSensor1, LeakSensor2, LeakSensor3, LeakSensor4, Light, LightningDistance, LightningStrikesToday, LightningTime, location, LongestDryPeriod, LongestDryPeriodRecordSet, LongestWetPeriod, LongestWetPeriodRecordSet, longitude, longlocation, LowAppTempRecordSet, LowDailyTempRange, LowDewPointRecordSet, LowHumidityRecordSet, LowMaxTempRecordSet, LowPressAlarm, LowPressureRecordSet, LowTempAlarm, LowTempRangeRecordSet, LowTempRecordSet, LowWindChillRecordSet, maxtempL, MemoryStatus, metdate, metdateyesterday, mintempH, minute, MinutesSinceLastRainTip, month, MonthAppTempH, MonthAppTempHD, MonthAppTempHT, MonthAppTempL, MonthAppTempLD, MonthAppTempLT, MonthDailyRainH, MonthDailyRainHD, MonthDewPointH, MonthDewPointHD, MonthDewPointHT, MonthDewPointL, MonthDewPointLD, MonthDewPointLT, MonthGustH, MonthGustHD, MonthGustHT, MonthHeatIndexH, MonthHeatIndexHD, MonthHeatIndexHT, MonthHighDailyTempRange, MonthHighDailyTempRangeD, MonthHourlyRainH, MonthHourlyRainHD, MonthHourlyRainHT, MonthHumH, MonthHumHD, MonthHumHT, MonthHumL, MonthHumLD, MonthHumLT, MonthLongestDryPeriod, MonthLongestDryPeriodD, MonthLongestWetPeriod, MonthLongestWetPeriodD, MonthLowDailyTempRange, MonthLowDailyTempRangeD, MonthMaxTempL, MonthMaxTempLD, MonthMinTempH, MonthMinTempHD, monthname, MonthPressH, MonthPressHD, MonthPressHT, MonthPressL, MonthPressLD, MonthPressLT, MonthRainRateH, MonthRainRateHD, MonthRainRateHT, MonthTempH, MonthTempHD, MonthTempHT, MonthTempL, MonthTempLD, MonthTempLT, MonthWChillL, MonthWChillLD, MonthWChillLT, MonthWindH, MonthWindHD, MonthWindHT, MonthWindRunH, MonthWindRunHD, MoonAge, MoonPercent, MoonPercentAbs, moonphase, moonrise, moonset, newrecord, nextwindindex, OsLanguage, OsVersion, press, PressChangeDownAlarm, PressChangeUpAlarm, pressH, pressL, pressTH, pressTL, presstrend, presstrendenglish, presstrendval, pressunit, PressureRecordSet, pressYH, pressYL, ProgramUpTime, r24hour, RainRecordSet, rainunit, RcapptempTH, RcapptempTL, Rcdew, RcdewpointTH, RcdewpointTL, Rcheatindex, RcheatindexTH, Rchum, Rcinhum, Rcintemp, Rcpress, RcpressTH, RcpressTL, RCRecentDewPoint, RCRecentHeatIndex, RCRecentOutsideTemp, RCRecentPressure, RCRecentRainToday, RCRecentUV, RCRecentWindChill, RCRecentWindGust, RCRecentWindLatest, RCRecentWindSpeed, Rcrfall, Rcrrate, RcrrateTM, Rctemp, RctempTH, RctempTL, Rcwchill, RcwchillTL, Rcwgust, RcwgustTM, Rcwlatest, Rcwspeed, realtimeinterval, RecentDewPoint, RecentHeatIndex, RecentHumidity, RecentOutsideTemp, RecentPressure, RecentRainToday, RecentSolarRad, RecentTS, RecentUV, RecentWindAvgDir, RecentWindChill, RecentWindDir, RecentWindGust, RecentWindLatest, RecentWindSpeed, recordsbegandate, rfall, rfallH, rfallhH, rfallmH, rfallY, RG11RainToday, RG11RainYest, rhour, rmidnight, rmonth, rollovertime, rrate, rrateM, rrateTM, rrateYM, ryear, SensorContactLost, shortdayname, shortmonthname, shortyear, snowdepth, snowfalling, snowlying, SoilMoisture1, SoilMoisture10, SoilMoisture11, SoilMoisture12, SoilMoisture13, SoilMoisture14, SoilMoisture15, SoilMoisture16, SoilMoisture2, SoilMoisture3, SoilMoisture4, SoilMoisture5, SoilMoisture6, SoilMoisture7, SoilMoisture8, SoilMoisture9, SoilTemp1, SoilTemp10, SoilTemp11, SoilTemp12, SoilTemp13, SoilTemp14, SoilTemp15, SoilTemp16, SoilTemp2, SoilTemp3, SoilTemp4, SoilTemp5, SoilTemp6, SoilTemp7, SoilTemp8, SoilTemp9, SolarRad, solarTH, solarYH, stationtype, StormRain, StormRainStart, sunrise, sunset, SunshineHours, SystemUpTime, TapptempH, TapptempL, TapptempTH, TapptempTL, TapptempYH, TapptempYL, Tbeaudesc, Tbeaufort, Tbeaufortnumber, TdewpointH, TdewpointL, TdewpointTH, TdewpointTL, TdewpointYH, TdewpointYL, temp, TempChangeDownAlarm, TempChangeLastHour, TempChangeUpAlarm, tempH, tempL, temprange, temprangeY, TempRecordSet, tempTH, tempTL, temptrend, temptrendenglish, temptrendtext, tempunit, tempunitnodeg, tempYH, tempYL, TgustM, TheatindexH, TheatindexTH, TheatindexYH, ThighDailyTempRange, ThourlyrainTH, ThourlyrainYH, THSWindex, ThumH, ThumL, ThumTH, ThumTL, ThumYH, ThumYL, THWindex, time, timehhmmss, timeUTC, TlongestDryPeriod, TlongestWetPeriod, TlowDailyTempRange, TmaxtempL, TmintempH, tomorrowdaylength, TpressH, TpressL, TpressTH, TpressTL, TpressYH, TpressYL, TrfallH, TrfallhH, TrfallmH, TrrateM, TrrateTM, TrrateYM, TsolarTH, TsolarYH, TtempH, TtempL, TtempTH, TtempTL, TtempYH, TtempYL, TUVTH, TUVYH, TwchillH, TwchillTL, TwchillYL, TwgustTM, TwgustYM, TwindrunH, TwindTM, TwindYM, TwspeedH, txbattery, update, UV, UVTH, UVYH, version, wchill, wchillH, wchillTL, wchillYL, wdir, wdirdata, webcam, wetbulb, wgust, wgustTM, wgustYM, WindRecordSet, WindRoseData, WindRosePoints, windrun, windrunH, windrununit, windrunY, WindSampleCount, windTM, windunit, windYM, wlatest, wsforecast, wsforecastenc, wspddata, wspeed, wspeedH, Ybeaudesc, Ybeaufort, Ybeaufortnumber, year, YearAppTempH, YearAppTempHD, YearAppTempHT, YearAppTempL, YearAppTempLD, YearAppTempLT, YearDailyRainH, YearDailyRainHD, YearDewPointH, YearDewPointHD, YearDewPointHT, YearDewPointL, YearDewPointLD, YearDewPointLT, YearGustH, YearGustHD, YearGustHT, YearHeatIndexH, YearHeatIndexHD, YearHeatIndexHT, YearHighDailyTempRange, YearHighDailyTempRangeD, YearHourlyRainH, YearHourlyRainHD, YearHourlyRainHT, YearHumH, YearHumHD, YearHumHT, YearHumL, YearHumLD, YearHumLT, YearLongestDryPeriod, YearLongestDryPeriodD, YearLongestWetPeriod, YearLongestWetPeriodD, YearLowDailyTempRange, YearLowDailyTempRangeD, YearMaxTempL, YearMaxTempLD, YearMinTempH, YearMinTempHD, YearMonthlyRainH, YearMonthlyRainHD, YearPressH, YearPressHD, YearPressHT, YearPressL, YearPressLD, YearPressLT, YearRainRateH, YearRainRateHD, YearRainRateHT, YearTempH, YearTempHD, YearTempHT, YearTempL, YearTempLD, YearTempLT, YearWChillL, YearWChillLD, YearWChillLT, YearWindH, YearWindHD, YearWindHT, YearWindRunH, YearWindRunHD, yesterday, YSunshineHours
From version 3.5.1 - build 3072 of 10 April 2020
*Implements the tags that indicate when records are broken
* You configure whether if a record is set it turns off after 24 hours or a different period.
5,838

edits

Navigation menu