Skip to content

Releases: cumulusmx/CumulusMX

BETA Version 4.7.0 - Build 4132

01 Dec 15:29

Choose a tag to compare

Pre-release

Beta 4132 Fixes

  • Fix for JSON serialisation affecting:
    • HTTP Files
    • MySQL Settings
    • Purple Air
    • BlueSky
  • Fix exception when Ecowitt camera URL fetch hits the rate limit

Notes

  • First build using Visual Studio 2026, and transitioning to .NET 10.0
  • The initial log conversion may take some time depending on the host computer. It is recommended to perform the initial run in a console so you can see the progress and any errors

IMPORTANT: This release requires .NET 10.0 to run, and WILL alter your log file structures

New

  • The path for the MXdiags files can now be specified in the CumulusMX.runtimeconfig.json file
  • The paths for the data, backup, and reports folders can now be defined in Program Settings
  • Custom Rollover MySQL commands now have the option to control being run during catch-up or not
  • Adds LASER depth to the Dashboard Recent Charts, Recent Select-a-Chart, and Select-a-Period
  • Adds LASER depth to the default web site Trends and Select-a-graph charts
  • New .NET 10 versions of ExportToMySQL and CreateMissing (v3) compatible with MX v4.7 log file formats
  • There is a new script /MXutils/windows/CreateFirewallRules.ps1 for creating the required Windows firewall rules
  • Add an exponential backoff to failed Email sends (up to 5.6 hours)
  • New web tag <#snowunit>
  • Adds a new Data Logs editor for the Recent Data from the SQLite database

Changed

  • Monthly log files have changed format, the first two values of each record are different to resolve DST transition ambiguities
    • Old format records start: Date,Time,
    • New format records start: Date_Time,Unix_Timestamp,
    • All the data fields retain the same offsets as before
    • The log files will automatically be converted on the first run of v4.7.0
    • The original files will be backed up to /backup/ConvertBackup
    • The Date_Time field is now purely for human readability, Cumulus MX now uses the Unix Timestamp internally
  • The main monthly log files now log the final values for Rainfall Today and ET Today in the first record of the following day
  • The dashboard has been converted from using Highcharts to ChartJS, and will now work fully offline
  • The default web site has been fully converted from Highcharts to ChartJS, removing the dependency on obtaining a Highcharts licence
  • Removes the dependency on ServiceStack.Text for JSON handling, now using the built-in System.Text.Json
  • Swaps SQLitePCLRaw.bundle_green for newer SQLitePCLRaw.bundle_e_sqlite3
  • Debug and data logging are now fully independent
  • Internal change to the date/time storage in the recent data SQLite database (cumulusmx.db)
    • DateTimes are now stored as Unix timestamps to resolve DST transition ambiguities
  • Debug Beta builds no longer save the debug & data logging enabled state into the Cumulus.ini file
  • FTP/FTPS/SFTP connection management changed to avoid Operating System DNS caching in .NET 10
  • The CO₂ Graph data file will now contain null values for missing entries like the other files
  • The realtime FTP watchdog file has been renamed from "_cumulusmx_watchdog.txt" to "cumulusmx_watchdog.txt"
  • The dashboard now allows user defined pages to be hosted under the /interface/custom folder

Fixed

  • Ecowitt HTTP API station using a fixed 5 minute interval for Degree Days during catch-up rather than the log file interval
  • Interval uploads now have a locking mechanism like realtime uploads. This should prevent 1-minute intervals accumulating a backlog of failing uploads if the destination server is unavailable
  • Changed the handling of Ecowitt SD card log files during catch-up to avoid duplicates over the DST period being dropped
  • Prevent multiple copies of the FTP watchdog being started by Internet Settings
  • Fix double entry of AirLink Outdoor in Extra Sensor settings
  • Sun rise/set dawn/dusk calculations for DST changeover days - note locations near the arctic circle may still show the times in the wrong DST state
  • Fix to websitedataT.json correcting the 'snowDepth' and 'snow24h' entries to 'snowdepth' and 'snow24hr' and adding 'snowunit'
  • The EOD graph data files FTP(S) and SFTP uploads were being flagged as complete whether or not they were successful (PHP was OK)
  • Correct wind speed array loading from recent data on start-up to use uncalibrated values
  • Correct Windguru to use calibrated wind speeds
  • Some fixes and updates to the Query Day File page
  • Add retry to daily file backups when a file is in use
  • Fix Ecowitt Cloud API Laser conversions of measurements in cm and feet to user units
  • Fix Davis WLL station getting in a day reset loop when no historic API details and last run was prior to last rollover
  • Fix exception when Ecowitt camera URL fetch hits the rate limit

BETA Version 4.7.0 - Build 4131

27 Nov 15:34

Choose a tag to compare

Pre-release

Beta 4131 Fixes

  • Davis WLL broadcast decode error when wind speed is null on a transmitter
  • Fix Davis WLL station getting in a day reset loop when no historic API details and last run was prior to last rollover
  • Fix FTPS certificate validation failures
  • Adds a new Data Logs editor for the Recent Data from the SQLite database

Notes

  • First build using Visual Studio 2026, and transitioning to .NET 10.0
  • The initial log conversion may take some time depending on the host computer. It is recommended to perform the initial run in a console so you can see the progress and any errors

IMPORTANT: This release requires .NET 10.0 to run, and WILL alter your log file structures

New

  • The path for the MXdiags files can now be specified in the CumulusMX.runtimeconfig.json file
  • The paths for the data, backup, and reports folders can now be defined in Program Settings
  • Custom Rollover MySQL commands now have the option to control being run during catch-up or not
  • Adds LASER depth to the Dashboard Recent Charts, Recent Select-a-Chart, and Select-a-Period
  • Adds LASER depth to the default web site Trends and Select-a-graph charts
  • New .NET 10 versions of ExportToMySQL and CreateMissing (v3) compatible with MX v4.7 log file formats
  • There is a new script /MXutils/windows/CreateFirewallRules.ps1 for creating the required Windows firewall rules
  • Add an exponential backoff to failed Email sends (up to 5.6 hours)
  • New web tag <#snowunit>
  • Adds a new Data Logs editor for the Recent Data from the SQLite database

Changed

  • Monthly log files have changed format, the first two values of each record are different to resolve DST transition ambiguities
    • Old format records start: Date,Time,
    • New format records start: Date_Time,Unix_Timestamp,
    • All the data fields retain the same offsets as before
    • The log files will automatically be converted on the first run of v4.7.0
    • The original files will be backed up to /backup/ConvertBackup
    • The Date_Time field is now purely for human readability, Cumulus MX now uses the Unix Timestamp internally
  • The main monthly log files now log the final values for Rainfall Today and ET Today in the first record of the following day
  • The dashboard has been converted from using Highcharts to ChartJS, and will now work fully offline
  • The default web site has been fully converted from Highcharts to ChartJS, removing the dependency on obtaining a Highcharts licence
  • Removes the dependency on ServiceStack.Text for JSON handling, now using the built-in System.Text.Json
  • Swaps SQLitePCLRaw.bundle_green for newer SQLitePCLRaw.bundle_e_sqlite3
  • Debug and data logging are now fully independent
  • Internal change to the date/time storage in the recent data SQLite database (cumulusmx.db)
    • DateTimes are now stored as Unix timestamps to resolve DST transition ambiguities
  • Debug Beta builds no longer save the debug & data logging enabled state into the Cumulus.ini file
  • FTP/FTPS/SFTP connection management changed to avoid Operating System DNS caching in .NET 10
  • The CO₂ Graph data file will now contain null values for missing entries like the other files
  • The realtime FTP watchdog file has been renamed from "_cumulusmx_watchdog.txt" to "cumulusmx_watchdog.txt"
  • The dashboard now allows user defined pages to be hosted under the /interface/custom folder

Fixed

  • Ecowitt HTTP API station using a fixed 5 minute interval for Degree Days during catch-up rather than the log file interval
  • Interval uploads now have a locking mechanism like realtime uploads. This should prevent 1-minute intervals accumulating a backlog of failing uploads if the destination server is unavailable
  • Changed the handling of Ecowitt SD card log files during catch-up to avoid duplicates over the DST period being dropped
  • Prevent multiple copies of the FTP watchdog being started by Internet Settings
  • Fix double entry of AirLink Outdoor in Extra Sensor settings
  • Sun rise/set dawn/dusk calculations for DST changeover days - note locations near the arctic circle may still show the times in the wrong DST state
  • Fix to websitedataT.json correcting the 'snowDepth' and 'snow24h' entries to 'snowdepth' and 'snow24hr' and adding 'snowunit'
  • The EOD graph data files FTP(S) and SFTP uploads were being flagged as complete whether or not they were successful (PHP was OK)
  • Correct wind speed array loading from recent data on start-up to use uncalibrated values
  • Correct Windguru to use calibrated wind speeds
  • Some fixes and updates to the Query Day File page
  • Add retry to daily file backups when a file is in use
  • Fix Ecowitt Cloud API Laser conversions of measurements in cm and feet to user units
  • Fix Davis WLL station getting in a day reset loop when no historic API details and last run was prior to last rollover

BETA Version 4.7.0 - Build 4130

23 Nov 15:55

Choose a tag to compare

Pre-release

Public beta test version

IMPORTANT: This release requires .NET 10 to run, and WILL alter your log file structures

New

  • The path for the MXdiags files can now be specified in the CumulusMX.runtimeconfig.json file
  • The paths for the data, backup, and reports folders can now be defined in Program Settings
  • Custom Rollover MySQL commands now have the option to control being run during catch-up or not
  • Adds LASER depth to the Dashboard Recent Charts, Recent Select-a-Chart, and Select-a-Period
  • Adds LASER depth to the default web site Trends and Select-a-graph charts
  • New .NET 10 versions of ExportToMySQL and CreateMissing (v3) compatible with MX v4.7 log file formats
  • There is a new script /MXutils/windows/CreateFirewallRules.ps1 for creating the required Windows firewall rules
  • Add an exponential backoff to failed Email sends (up to 5.6 hours)
  • New web tag <#snowunit>

Changed

  • Monthly log files have changed format, the first two values of each record are different to resolve DST transition ambiguities
    • Old format records start: Date,Time,
    • New format records start: Date_Time,Unix_Timestamp,
    • All the data fields retain the same offsets as before
    • The log files will automatically be converted on the first run of v4.7.0
    • The original files will be backed up to /backup/ConvertBackup
    • The Date_Time field is now purely for human readability, Cumulus MX now uses the Unix Timestamp internally
  • The main monthly log files now log the final values for Rainfall Today and ET Today in the first record of the following day
  • The dashboard has been converted from using Highcharts to ChartJS, and will now work fully offline
  • The default web site has been fully converted from Highcharts to ChartJS, removing the dependency on obtaining a Highcharts licence
  • Removes the dependency on ServiceStack.Text for JSON handling, now using the built-in System.Text.Json
  • Swaps SQLitePCLRaw.bundle_green for newer SQLitePCLRaw.bundle_e_sqlite3
  • Debug and data logging are now fully independent
  • Internal change to the date/time storage in the recent data SQLite database (cumulusmx.db)
    • DateTimes are now stored as Unix timestamps to resolve DST transition ambiguities
  • Debug Beta builds no longer save the debug & data logging enabled state into the Cumulus.ini file
  • FTP/FTPS/SFTP connection management changed to avoid Operating System DNS caching in .NET 10
  • The CO₂ Graph data file will now contain null values for missing entries like the other files
  • The realtime FTP watchdog file has been renamed from "_cumulusmx_watchdog.txt" to "cumulusmx_watchdog.txt"
  • The dashboard now allows user defined pages to be hosted under the /interface/custom folder

Fixed

  • Ecowitt HTTP API station using a fixed 5 minute interval for Degree Days during catch-up rather than the log file interval
  • Interval uploads now have a locking mechanism like realtime uploads. This should prevent 1-minute intervals accumulating a backlog of failing uploads if the destination server is unavailable
  • Changed the handling of Ecowitt SD card log files during catch-up to avoid duplicates over the DST period being dropped
  • Prevent multiple copies of the FTP watchdog being started by Internet Settings
  • Fix double entry of AirLink Outdoor in Extra Sensor settings
  • Sun rise/set dawn/dusk calculations for DST changeover days - note locations near the arctic circle may still show the times in the wrong DST state
  • Fix to websitedataT.json correcting the 'snowDepth' and 'snow24h' entries to 'snowdepth' and 'snow24hr' and adding 'snowunit'
  • The EOD graph data files FTP(S) and SFTP uploads were being flagged as complete whether or not they were successful (PHP was OK)
  • Correct wind speed array loading from recent data on start-up to use uncalibrated values
  • Correct Windguru to use calibrated wind speeds
  • Some fixes and updates to the Query Day File page
  • Add retry to daily file backups when a file is in use

Version 4.6.4 - Build 4128

30 Sep 12:55

Choose a tag to compare

  • Crash caused by EcowittMacAddress=null in Cumulus.ini
  • Add additional error handling for dates date/times with the min val 0001-01-01
  • Enable Ecowitt SD card file content reading retries when zero length files are returned

Version 4.6.3 - Build 4127

27 Sep 15:56

Choose a tag to compare

New

  • Adds support for Third Party WOW-BE reboot uploads

Changed

  • If you have more than one Ecowitt web camera, the web tags <#EcowittCameraUrl> and <#EcowittVideoUrl> now accept a parameter of mac=1A:2B:3C:4D:5E:6F (eg. <#EcowittCameraUrl mac=3C:8A:1F:B3:2B:A2>) to return the matching camera from your account.

    If omitted the parameter defaults to the first (or only camera) found on your account
  • HTTP Files now accepts the URL values <ecowittcameraurl1> to <ecowittcameraurl8> in addition to the original <ecowittcameraurl> which downloads the first camera image. <ecowittcameraurl> and <ecowittcameraurl1> are equivalent

Fixed

  • MQTT connection failures with "Invalid protocol"
  • Fix the "navigator" not working correctly on the wind direction charts in the dashboard and default web site
  • Ecowitt SD card catch-up re-coded to improve reliability on some systems
  • MySQL settings not allowing you to create/update the tables on initial setup
  • Tweaks to the Dashboard and default web site
  • Fix forum URL being reset to default on Cumulus restarts. The fix requires you to resave the config once after installing this update
  • The station TimeZone being reset to default on Cumulus restarts
  • MySQL connection issues if you only upload the dayfile once a day and no other uploads
  • Issue where Cumulus.ini says it needs to be rewritten at each start-up
  • Missing navigation images at the bottom on the Extra Web Files settings page

Version 4.6.2 - Build 4122

14 Sep 14:00

Choose a tag to compare

New

  • You can now clear alarms by clicking on them in the main dashboard screen

Fixed

  • Fix Startup MySQL catch-up not working in v4.6.0 and v4.6.1

Package Updates

  • Microsoft.Win32.SystemEvents
  • NLog
  • NLog.Extensions.Logging
  • System.CodeDom
  • System.IO.Ports
  • System.ServiceProcess.ServiceController

Version 4.6.1 - Build 4121

05 Sep 16:37

Choose a tag to compare

Fixed

  • Davis cloud station not decoding current data

Version 4.6.0 - Build 4120

05 Sep 13:42

Choose a tag to compare

New

  • Adds support the Ecowitt WH45/46 CO₂ sensor values on the HTTP API
  • Adds support for the Ecowitt WN20 battery status monitoring
  • Adds RSSI value (if available) to the Ecowitt sensor list logging
  • A new Alarm for Cumulus MX general errors, triggered every time something is written to the Recent Errors log, and cleared when the log is cleared
  • Adds Soil Moisture upload to Met Office WOW for stations that report the moisture level as a percentage
  • Snow values added to the websitedataT.json file
  • Cumulus MX now handles Windows shutdown/restart and console window closure gracefully
  • EARLY DAYS support for Cumulus MX general localisation of the Dashboard interface. The implementation details may change depending on feedback or tuning etc.
    • AI2 is excluded for now
    • The HTML and scripts strings are in /locales/dashboard/
      • There is one strings file per language
    • The settings strings are in /locales/dashboard/json/{language}
      • There is a folder per language, and a language strings files for each settings file
    • Change the display language in Program Settings > Culture Overrides > Display Language. Only those languages with translation files will be selectable
  • New option to force the am/pm time designators to lower case. See Program Settings > Culture Overrides > AM/PM Format
  • The MySQL settings now has an advanced section where you can force the SSL mode and the TLS versions to use for connections
  • Month web tags <#MonthTempAvg>, <#MonthRainfall>, <#MonthDryDays>, <#MonthWetDays> will now accept a relative month parameter r=-N or relmon=-N as an alternative to a specific year and month
    Where: 0 = current month, -1 = last month etc.
  • Year web tags <#YearTempAvg> and <#AnnualRainfall> will now accept a relative year parameter r=-N or relyear=-N as an alternative to a specific year
  • Add lightning data input to JSON Data Station

Changed

  • All dashboard and default web site graph data files now use true UTC time stamps
    • Previously they were "pseudo-UTC" to force the graphs to display the station times rather the viewers time zone

    • Highcharts version used by the dashboard and default web site updated to v12.3.0 to support this

    • The charts will now render correctly at DST changes

    • IMPORTANT: You must upload the latest versions of the default web site pages and scripts files to support this change

    • IMPORTANT: If you have your own versions of Highcharts scripts, then the relevant change is from:

       {
       	time: {
       		useUTC: true
       	}
       }

      To (substituting your stations time zone):

       {
       	time: {
       		timezone: 'Europe/London'
       	}
       }
    • You must also use a version of Highcharts later than v11.2.0 - Cumulus MX now uses v12.3.0

  • There is a new option in Station Settings > General Settings > Location to manually change the time zone used in the charts
  • Added Davis Cloud API UUID option to the Configuration Wizard
  • Add a retry to downloading Ecowitt SD card files on error or if returned file is empty
  • The FTP log files have changed naming convention (to work better with the new version of NLog)
    • The latest file (if more than one), will be one with the highest value for NN for today: ftp-<logtype>_YYYY-MM-DD_NN.log
    • You will need to manually delete any old log files that use the old naming convention of:
      ftp-realtime-N.log or ftp-interval-N.log
  • CreateMissing updated to v2.1.0 to fix the daily rainfall calculation on rain counter reset at rollover, and add support for evapotranspiration calculation
  • Improvements in the Cumulus MX shutdown process - it should now be much faster
  • The JSON and Tempest stations now use the same Sea Level Pressure calculation as all other stations
  • All logging to log files is now asynchronous. This means a change to log file naming scheme for the main MX diagnostics
    • The latest log file will always have filename: MxDiags.log
    • Archiving:
      • Archived files will have the date/time appended: MxDiags-YYMMDD-HHMMSS.log eg. MxDiags-250726-115412.log
      • Archiving occurs when log files have exceeded 12MB in size
      • Archiving also occurs when you start Cumulus MX, the existing MxDiags.log will be renamed to a timestamped filename
      • The timestamp on archived files is the time of the last entry in the file, not the first
    • The maximum log file size has been decreased to 12MB, but the number of archives retained increased to 20
    • You may notice the logged event times only increment every 16ms, this is an efficiency thing!
  • Logging of JSON responses from the Ecowitt Local HTTP API now compacts the output by removing line feeds and tabs from the text
  • Improvements to the dashboard Select-a-Period graphing
    • This now uses the meteorological day you have defined, and the pm2.5/ pm10 values are now pulled from the log files rather than the time restricted recent data
  • Adds a default User-Agent header to all HTTP requests of "CumulusMX/4.6.0.4107" - or whatever the current version/build is
  • The dashboard charts now honour the time format setting in Program Settings > Culture Over-rides
    • The new default for the charts is to display in the web browsers TZ settings format
  • The system uptime is now obtained differently; this allows the removal of the System.Diagnostics.PerformanceCounter package
  • The Dashboard screen now fully reflects your time presentation choices in Cumulus
  • The MySQL updates now use a single persistent connection rather than reconnecting for each upload
  • A minor change to an error message format in upload.php
  • Ecowitt SD card catch-up data now has the timestamp for each interval rounded to the SD card logging interval (Ecowitt do not create the log entries according to clock time)

Fixed

  • Bug in Ecowitt.API ApplyHistoricData: AQI = Nullable object must have a value
  • AirLink log files being one comma short if only an indoor AirLink is in use
  • Unlike the other log files, the monthly log file name generator did not have the check to remove "dots" from the yyyyMM date part of the filename
  • Ecowitt HTTP API station not triggering the firmware alarm when new firmware available
  • Handling of cached MySQL statements that are in error because of bad syntax or reference errors
  • An error in the Ecowitt SD card log file handling that removed the corresponding Allsensors log file from the processing list if the primary file did not contain any dates in the required range
  • Ecowitt historic catch-up from SD card was not setting the DataDateTime variable
  • Ecowitt Cloud station decoding of CO₂ 24-hour PM values
  • Ecowitt Cloud station 24-hour CO₂ PM values are now "kludged" from the 24-hour AQI values supplied by Ecowitt
  • JSON Data Station not saving the MQTT server name

Version 4.5.2 - Build 4105

21 Jun 11:24

Choose a tag to compare

New

  • Editing rainfall values in the dayfile now automatically updates the yesterday, week, month, year totals without restarting Cumulus MX

Changed

  • FTP watchdog now creates its temp file using the path specified in the Internet Settings

Fixed

  • Fix Davis AirLink badly formed URL when requesting health data for standalone sensors
  • Fix Davis VP2 Extra T/H handling
  • Fix and improvements to Ecowitt SD card file handling with timestamps
  • Error starting v4.5.1 on Windows systems below version 10 - "Unable to find an entry point named 'PowerRegisterSuspendResumeNotification' in DLL 'Powrprof.dll'!"
  • Fix Wunderground upload error - TimeSpan overflowed because the duration is too long