- Digital Inputs
- Analog I/O
- Expandable I/O
- Modbus RS-485
- Contact Sensors
- Liquid Level Sensors
- Ultrasonic Level Sensors
- Pressure Level Sensors
- Float Level Sensors
- Non-Guided Radar Sensor
- Temp/Humidity Sensors
Utilities & Sample Code
Sunrise-Sunset Lua Script (.zip)
Calculates the approximate times of the sunrise and sunset, based on the latitude and longitude entered into the script.
X-600M Current Firmware (v. 1.16.01)Show/Hide Firmware Revision Notes
- Feb, 15, 2023
- Fixes a recently intorduced issue with deleting components from the dashboard.
- Feb, 02, 2023
- Updated jQuery to V3.6.0.
- Added support for X-417 and other newly revised products (Webswitch, Webrelay-10 Plus, etc.).
- Fixed an issue with multiple 1-wire thermocouple sensors and ModBus. Increased time between measurements.
- Fixed an issue intoduced in V1.12.09 that prevents ModBus writes to register values.
- Add additional restrictions on PHP.
- Prevent upload of files other than HTML and images.
- Fixed SQL injection vulnerabilities that could be exploited by authenticated users.
- Fixed an issue in the file type detection routines for custom webpages.
- Fixed an issue with remote registers not functioning on an X-420.
- Added a routine that removed any non-reoccurring calendar events that are more than a year old.
- Fixed an issue toggling of Webswitch AC outlets.
- Fixed a 'Processing' popup that had issues correlated to a Google Chrome update.
- Fixed a bug that prevented authentication between two X-600M units.
- Fixed an issue which caused excessive memory usage due to querying a large number of offline network devices.
- Feb, 27, 2020
- Added support for the X-401.
- Date and Time setup page now displays a message to check your calendar events when changing the time zone.
- Non-admin users are now allowed to use the downloadFile.php for files located on the usb storage.
- Added the ability to specifiy decimal digits for gauges.
- Added the ability to change the MTU on both ethernet and wifi connections.
- Added additional diagnostic capabilities for troubleshooting.
- Updated NTP protocol to support V3 messaging.
- Fixed issue where user could enter a invalid web server port number.
- Enabled the quick add I/O dialog for most X-4XX devices.
- Fixed issue where unknown CBW devices were displayed when scanning for new devices.
- Added support for the X-422 Davis Sensor Suite
- Fixed issue with one wire sensor timeout when there are more than 24 one wire sensors present.
- Fixed issue where one wire bus was not being rescanned properly after an error.
- Fixed issue with one wire sensor timeout when there are more than 24 one wire sensors present.
- Fixed issue where one wire bus was not being rescanned properly after an error.
- Fixed an issue with detection of the X-210 (WebRelay Wireless).
- Fixed issue where the wireless ip filters were being applied to the ethernet interface.
- Fixed issue where removing users could cause some tables to not be populated properly thus causing strange behavior with user permissions.
- Fixed the CSV formatting on the FTP log by replacing the space character with a comma.
- Fixed a few occurrences where the displayed time was not reflecting the current DST settings.
- Fixed an race condition with device rescan which would cause the web page to refresh to an empty list.
- Force a scan of devices when pressing scan or rescan rather then using cached data.
- Fixed issue where units were not being displayed with the X-TC1W-K one wire senor.
- Fixed issue where NTP errors were not being displayed properly.
- Fixed issue where only 5 of the 6 extvar are available when manually added.
- Fixed issue where all users could not be selected under e-mail options under devices.
- Fixed issue where the X-600 was unable to read a X-400 series device response with a very large number of I/O.
- Added support for the X-21s expansion module.
- Added missing analog modes for the X-22S expansion module.
- Added support for the X-400, X-404, X-405, X-406, X-408, X-410, X-418, and X-420.
- Fixed and issue where HTML entities were being placed in lua scripts when loaded from the database.
- Fixed and issue where the current session data was being cleared when logging in. This was causing redirection to the default index instead of the desired web page during login.
- Fixed an issue where mapped modbus holding registers were being written to a value of 2 regardless of the value passed in the write.
- Added support for Temp/Humidity Probe 1-Wire sensor and 1-Wire Display sensor.
- Improved 1-Wire communication
- Added basic support for X-21s, X-22s, X-410, X-418, and X-420. New analog input features are not supported on any of them yet (only 0-5V range for now.) Also, the new binary/secure version of communication with the X-400 series is also not supported.
- Added Lua functions: enterCritical(), exitCritical() and ioUpdatePending()
- Fixed bug where registers could not be pulsed from a LUA script
- Fixed bug where a register in expression mode did not reflect the associated I/O value if that value was NAN or offline (0001074).
- Updated Ethernet driver to fix some reports of the Ethernet port becoming unresponsive.
- Added time.toSeconds(timeTable) LUA function - return the seconds representation of the time table (clamped at +/- 16777216)
- Changed registers so that they are stored in a shared memory between the istos monitor and the ioManager so that if the ioManager crashes and restarts, the registers won't lose their values.
- Fixed issue with modbus becoming unusable after dropping the network connection mutliple times without the modbus connection being closed first.
- Fixed bug with writing Modbus registers using little endian. Added support for XW-110P and XW-112
- When uploading settings files, the expansion modules lists are now placed in order by model number.
- When uploading settings files, the search for expansion modules on the expansion bus is faster.
- When uploading settings files, the expansion module configuration process has been improved. Previously configured modules are highlighted, and an identify button has been added to blink the power led of the expansion modules in order to find them.
- Improved External USB Flash drive Eject function. Previously it was hard to Eject an USB Flash drive if there existed a LUA script that was reading/wrting files on the USB Flash drive as the scripts would cause the drive to be busy.
- Added ability to view files and directories found on the internal ram drive and and external USB flash drive through the web server using the following (http://ipAddr/ram/ and http://ipAddr/usb/)
- Modified the directory view of the usb flash drive so that files larger than 16 megabytes use downloadFile.php as the download link.
- Fixed bug where files larger than 16MB could not be downloaded from the USB and internal RAM drives.
- Fixed bug introduced in version 1.12.01 where wifi would not work. Changes to ip filtering required the wifi adapter drivers to be recompiled and they were not.
- Fixed bug where unplugging the second ethernet port would cause the 1st to become unresponsive.
- Fixed downloadFile.php so that it does not timeout after 30 seconds of processing so that larger files can be downloaded.
- Fixed issue with 1-Wire sensor drivers where a race condition would cause some processes to stop. As a result, web pages became unresponsive and the dashboards would stop updating the I/O states. This problem seemed to only occur with long wire runs and noisy environments.
- Fixed issue where analog conditional events did not always work as expected when a duration greater than 0 was also configured. The problem was the LUA expressions being generated did not define the state of the event for all scenerios when a duration was involved. Now, the expressions for analog conditional events include an "else event.eventX = 0" statement.
- Added support for deleting files created through the LUA file api and custom web pages.
- Added I/O types "Pulse Rate" and "High Time" for X-320 devices.
- Added option to select background color of graphs. Options are black and white. Useful if printing the graphs.
- Increased the maximum number of bytes that can be sent using the tcpSend and httpRequest functions in LUA scripts to 1450.
- Fixed bug that appeared in version 1.12 where conditional events with analog I/O involved would trigger repeatedly, causing the associated actions to also run repeatedly.
- Fixed bug where logging out of the setup pages would not correctly display a custom login web page if present.
- Fixed bug where weekly and monthly events would not be evaluated correctly initially if the end time occured on or after 11:00 P.M and the current time during a commit settings was inside the start and end time window.
- Fixed bug where setting the end time of an event to 11:59:59 p.m. would also set the start time to 11:59:59 p.m., and then you couldn't change the start and end times without maually typing in the new times. (Drop down menus did not work.)
- Fixed bug where really large syslog log files could not be deleted.
- Fixed bug where attempting to send multiple http requests from different LUA scripts simultaneously would cause the LUA scripts to crash and restart.
- Fixed bug where a missing/broken 1-Wire sensor on the XW-110's would either report large negative numbers on the X-600M, or would continue to show last good reading forever.
- Fixed bug where the pulse time on action configuration page could not be set to a value which included a decimal. This bug also appeared on the conditional events configuration page when configuring an analog type conditional event.
- Fixed the httpRequest function in lua scripts to timeout not only when attempting to connect to a remote server, but also during the sending and receiving phases.
- Fixed bug where the X-600M could not send unencrypted emails.
- Fixed bug where the the stats.vin() function in LUA would not return the decimal portion of the reading.
- Fixed bug in ip filter that would cause responses from outgoing requests to be dropped if they did not come from servers whose ip addresses were inside the range of allowable ip addresses. This would stop emails from going out, among other things. Now, if the X-600M initiates the connection, responses will be allowed back in return.
- Fixed bug introduced in version 1.10 where the I/O values selected in the dropdown fields on the Condtional Events and Actions edit screens would always display the first I/O in the list and not the I/O previously configured.
- Fixed bug introduces in version 1.10 where masking events used by the X-600M internally would appear on the Actions edit screens.
- Fixed bug where actions were being repeated once per second when the conitional event that those actions were dependent on were analog type events.
- Added linear and radial gauges to the dashboard.
- Added the X-600M Date/Time to the dashboards.
- Added ability to choose any color in dashboard editor for status backgrounds, not just four colors.
- Added 3 new LUA functions to facilitate sending emails that indicate the last user to have accessed an I/O along with the time of that access.
- Changed the button labeled "Close" to "Cancel" on the setup pages used for Adding an I/O, Device, Etc.
- Added option to connect to non-secured wireless networks.
- Added ability to enter SSID manually for wireless networks that are hidden.
- Added ability to view the next time the Calendar events are scheduled to occur under Control/Logic ? Calendar Events (List View).
- Added the current time from the X-600M to the calendar event configuration pages.
- Increased the number of simultaneous Modbus connections to the X-600M from 2 to 5.
- Added support for X-340 SmartStorm irrigation controller.
- Added the following I/O types: Barometric Pressure, Dew Point, Heat Index, Irrigation Valve, Rain Last Hour, Solar Radiation, Total Rain, Wind Chill, Wind Direction, Wind Speed, Wind Gust Direction, Wind Gust Speed.
- Added X-320M and SmartStorm application specific dashboard widgets.
- Added status information to the wireless interface on the network overview page. Now the wireless mode, ssid and bssid are displayed when there is an active connection.
- Added IP address filtering.
- Added a new register type - timer. When a register is type timer, it will decrement itself every second until it reaches 0.
- Changed the calendar view so that by default only the events belonging to event group 1 are displayed. Previously all the event groups were visible by default.
- Improved the load time for the calendar events in the setup pages.
- Added support for the new X-18s Expansion module with 10 relays.
- Added the ability to specify the end time for an calendar event down to the second instead of the minute.
- Increased the email queue to 20 emails.
- Fixed bug with device scanning that would cause the X-600M to report the progress as being done when in fact it was still scanning the wireless interface. It now reports the correct progress during the scanning of both interfaces.
- Fixed issue where once 20 items were added to a log, a cryptic error message would appear instead of an explanation saying the limit of 20 items was reached.
- Fixed bug where if adding calendar events and using the default names, after adding event 10, the automatically generated names for the reset of the calendar events would be calEvent2 even though this name is already taken.
- Fixed bug bug where Modbus access to the X-600M would stop responding for a few minutes if the network interface (wired or wireless) went down for more than about 20 seconds.
- Fixed a bug introduced in version 1.09 that stopped register pulse functionality to stop working.
- Fixed issue where Float type registers could be used as the source for boolean controls on the dashboards.
- Fixed bug where if a logged in user's session expired, they would be redirected to a non-existent page.
- Fixed issue where staying logged into an X-600M through a router using Network Address Translation would fail if access to other devices behind the router occurred from the same web browser and those devices used cookies to track their access.
- Fixed bug where if a I/O were logged and that I/O did not have an explicit number of decimal places defined in the settings, then it would show 5 decimal places in the log file. This would happen even if the I/O was a digital type like a relay that did not have a decimal places option.
- Fixed bug where changes in the timezone through the Date/Time setup page would not always be reflected in new entries in the system log.
- Fixed bug where the I/O readings in the state.xml page were sometimes shifted. (Relay1 read the value of relay2, etc.) This only effected state.xml/json and not the other xml/json files.
- Fixed bug where if the first 1-Wire sensor in the I/O list was not a temperature sensor, then none of the 1-Wire temperature sensors would work.
- Fixed bug with auto name creation for calendar and conditional events that was evident when creating a large number of events. Now the auto generated names are based on the id assigned to the events.
- Fixed race condition that could cause a pulse action dependent on a calendar event to not pulse a relay.
- Fixed issue where pulse actions dependent on calendar events would pulse whenever the settings were committed.
- Fixed bug where Monthly and Annual events that begin during the daylight savings window would run an hour off after daylight savings ended.
- Fixed bug where the External Storage information on the System Overview sometimes indicated that no external storage was present even though it was.
- Added the ability to enter a description for log files.
- Added support for plugins
- Added ability to customize the units for the following I/O types: Analog Outputs, External Variables, Counters, Frequency Inputs, Indoor Temperature, Outdoor Temperature. (Previously this was only possible for analog inputs, 1-wire sensors, and registers.)
- Added slope and offset support for Frequency Inputs and Counters.
- Added support for USB serial port adapters to LUA scripts. (Requires adapters using FTDI chips)
- Moved the graph legend from inside the graph to below the graph.
- Added log description to top of log files.
- Graphs now show I/O descriptions instead of I/O names in the legends.
- Added tooltips to graphed data points.
- Added support for 250 users.
- Added option to I/O to allow logging of their status changes in the system log, as well as what user or event caused the change.
- Fixed bug where if an Ethernet type device were to go down for longer than about 76 minutes, the X-600M would stop attempting to communicate with the device indefinitely even if the device were to come back up.
- Fixed issue where you could not set analog outputs to 2V through the dashboard.
- Fixed bug where you could not access a CBW device configured to use 100Mbps Full Duplex through the second Ethernet port.
- Fixed issue where you could not change the HTTP port number and the IP address in the same settings commission.
- Fixed bug where sometimes the wireless network would not connect on power up if the Ethernet port was unplugged.
- Fixed issue where the max email length of 512 bytes was reduced when sending the state of I/O.
- Fixed bug where the time on the System > Overview page was off by an hour when daylight savings was disabled and the current date/time fell within the daylight savings window.
- Fixed bug where graphs would not appear in the dashboard if no data had been logged yet.
- Fixed bug where the X-600M could not send emails without a username and password.
- Fixed bug where using remote services with a large number of devices would eventually cause an inability for users to login to the X-600M after running for multiple days.
- Fixed where a 1-Wire temperature reading that required more than 5 characters was cut off. (For example 101.00 would read 01.00, cutting off the first digit.)
- Fixed where negative values read from remote Ethernet devices were showing up as positive values.
- Fixed problem where the event scheduler would execute weekly, monthly, and yearly types of events out of order when settings were submitted or the power was cycled, which in turn would cause the wrong actions to triggered (relays would be on when they should be off, etc.)
- Improved the performance of the sliders on the dashboards. Before, dashboards would only send an update of the slider value when the slider stopped moving. Now periodic updates are sent as long as the slider is moving.
- Fixed where events could not be disabled while viewing them on the week and day views.
- Fixed where viewing the event calendar in week and day view from a computer using a different timezone than that of the X-600M would cause events to be missing from the view. (Saturday events would be missing from the week view. All events would be missing from the day view.)
- Updated the WebRelay-10 Plus support for eight 1-Wire sensors.
- Fixed where periodic NTP updates were not happening when enabled.
- Fixed where the tenth relay on the WebRelay-10 would not function from the X-600M.
- Fixed where switching from the first dashboard to another dashboard would not start auto refresh for that dashboard.
- Fixed where switching from DHCP to a static IP address would not disable DHCP unless the unit was power cycled. This would cause the unit to request an IP address once the DHCP lease time expired, even though a static ip address was in use.
- Added a cancel button to the popup that indicates that settings were updated previously and not committed (Before you either had to commit settings or abandon settings. Now you can cancel and go back to the setup pages).
- Added ability to monitor and control external variables from remote devices.
- Fixed bug where DNS addresses used were not the same as those in the setup pages when a wireless usb adapter was plugged in.
- Fixed problem where sometimes it would be necessary to abandon settings twice instead of once.
- Fixed issue where the X-600M would think that settings still needed to be committed even after selecting commit or abandon settings.
- Fixed bug where an event that depends on an analog type of I/O and has a duration time greater than 0 would be reevaluated periodically based on the duration time. This would cause any actions dependent on said event to be reevaluated multiple times.
- Fixed bug where the Reset button on the dashboard did not reset counters on Ethernet devices.
- Added support for WebRelay-Quad X-WR-4R3 (3 Amp Relay Version)
- Alphabetized device list for adding new devices manually
- I/O range for the Analog Module (X-DAQ-8A5-I) is now 0 - 7 instead of 1 - 8
- Fixed issues with web page redirection when logging in with dashboard and I/O password protection enabled
- Fixed issue where ethernet link not always detected correctly by some switches
- Fixed relay pulsing issue that could cause relays to remain on if the X-600 were to lose power during the pulse. (Only an issue if keep alive option for the relay was set to disabled)
- Fixed issue where importing settings would not always bring up the expansion module mapping tables
- Fixed issue where dashboards would periodically request log file 0 even though no graphs appeared on the dashboard
- Slope and offset could not be changed on analog I/O types. (Bug appeared in version 1.02)
- Certain combinations of widgets added to a dashboard could cause the I/O for the dashboard to read XX.
- Added support for X-300 in thermostat mode
- Added application specific component to dashboard for X-300 in thermostat mode
- Added support for embedding custom web pages and external web pages in the dashboards
- Choose File button on backup/restore page appears in wrong spot under Chrome
- X-300 in thermostat mode not detected during device scans
- Improved performance of graphs in dashboards
- Improved performance of log file downloads
- Boolean registers showing 6 decimal places in log files instead of none
- Latch relay off action would turn relay on, not off
- Graphs do not appear when security is disabled and the user is not logged in as admin
- Manually setting the time would increment the hour by 1
- Humidity sensors on remote devices would read 0°F
- Periodic loss of I/O readings due to resource intensive Lua script
- Unable to login with Internet Explorer 9 and up.
Version 1.0 - Initial Release
Where to Buy
Click "Buy Online" to view part numbers and pricing. X-600M is available inthe USA and internationally, and can be purchased either from us or an Authorized Distributor.