Version History

This document lists the changes in each released version of CoDaBix.
For a list of known issues in the current version, see Known Issues.

PREVIEW

Please note: These versions are preview versions for 0.21.0 and the features listed here might still change before the final 0.21.0 version.

0.20.60-PREVIEW (released 2019-11-11)

  • Added the Allen-Bradley Device Plugin (version 1.0.0) that allows you to connect to Allen-Bradley PLCs (like ControlLogix, CompactLogix, Micro800, MicroLogix, PLC-5, SLC 500).

0.20.61-PREVIEW (released 2019-11-19)

  • Added new command line arguments to the CoDaBix Shell application to initialize the project directory, access the project settings, and to reset the admin password.

0.20

0.20.0 (released 2019-07-22)

  • [Linux] The I²C Device Plugin has been removed from the Linux distribution as it is only intended to be used on a Raspberry Pi.
  • [Linux/Raspberry Pi] Improved file locking behavior.
  • A new value type Password Blob has been introduced (similar to the “Password” type) that can be used to store blobs that are encrypted with the project's password key.
  • In order to improve start-up performance, the last written history values for each node are no longer read on start-up. This means that when the node's History Options are set to Yes; only on Value Change, the first captured history value for that node after start-up will always be written into the database.
  • Increased the maximum array length for node values to 100,000.
  • Fixed a bug (introduced in 0.19.0) which could cause a S7 Device Channel to show an incorrect status after restarting it.
  • Fixed a bug (introduced in 0.18.6) that could lead to a scaling/conversion being applied incorrectly for a node where no node writer was registered.
  • Fixed a bug which could cause CoDaBix to crash when reading an array device variable that contained more than the allowed maximum number of array elements.
  • Update the Dashboard to version 0.0.28:
    • Fixed a bug which could cause the page to not load nodes correctly.
  • Added the Omron Device Plugin (version 1.0.0) that allows you to connect to Omron PLCs.
  • Added the XML Exchange Plugin (version 1.0.0) that allows you to exchange data with XML files.
  • Updated the OPC UA Server Interface Plugin to version 1.0.17:
    • Added a new Server Configuration setting folder that allows to specify the minimum and maximum session timeout.
    • Added a new Diagnostics setting folder that allows to enable and configure diagnostic logging for various events related to Sessions, Read/Write, Subscriptions, and MonitoredItems.
    • When creating a new application certificate, it will now be encrypted with the project's password key.
  • Updated the OPC UA Client Device Plugin to version 1.0.18:
    • When creating/specifying a new application certificate or login certificate, it will now be encrypted with the project's password key.
  • Updated the REST Interface:
    • Additional node properties are supported: unit, precision, scalingFactor, scalingOffset, maxValueAge.
  • Script API:
    • Added the method net.httpClient.sendAsync() that allows you to send HTTP requests to external servers.
    • Added methods createAsync(), deleteAsync(), moveAsync() to the io.directory namespace, and methods getDirectoryName() and getFileName() to the io.path namespace.

0.20.1 (released 2019-07-24)

  • Updated the OPC UA Server Interface Plugin to version 1.0.18:
    • Fixed a bug (introduced in CoDaBix 0.20.0) that caused the removal of monitored items to not being handled correctly.
  • Updated the OPC UA Client Device Plugin to version 1.0.19:
    • Fixed a bug (introduced in CoDaBix 0.19.0) that caused custom data types to not correctly being recognized when browsing the OPC UA server.

0.20.2 (released 2019-08-19)

  • Script Interface Plugin:
    • Fixed a bug (introduced in CoDaBix 0.20.0) that prohibits scripts with strictness levels Medium or High to be saved with Go Live.

0.20.4 (released 2019-09-16)

  • [Linux/Raspberry Pi] Updated .NET Core to 2.1.13 for security and stability fixes.
  • Updated the RFC-1006 Device Plugin to version 1.0.3:
    • Fixed a bug that could lead to a crash when stopping a channel.
  • Updated the OPC UA Client Device Plugin to version 1.0.20:
    • Fixed a bug which could cause a subscribed node value to not be updated when the connection to the server broke and the client could not create a new connection to the server, or e.g. when the NodeID doesn't exist on the server. In these cases, a Bad value is now written to the node, and the client tries repeatedly to recreate the subscription.
    • Fixed a bug (introduced in CoDaBix 0.20.1) which could cause foundation data types to not correctly being recognized when browsing the OPC UA server.

0.20.5 (released 2019-09-25)

  • Updated the CSV Exchange Plugin to version 1.1.1:
    • Improved the trigger handling to start a synchronous read directly in the trigger's event handler, rather than after finishing the last synchronous read.
      This makes the collected value set more deterministic, especially when the edge trigger value is also collected, and ensures trigger queue entries cannot pile up when a trigger fires in shorter intervals than the time synchronous reads need to complete. This also aligns the behavior with the Database Plugin.

0.20.6 (released 2019-10-16)

  • [Linux/Raspberry Pi] Fixed a bug (introduced in 0.20.1) that could sometimes prevent the OPC UA Client Device Plugin and the OPC UA Server Interface Plugin from working.
  • Updated the OPC UA Client Device Plugin to version 1.0.21:
    • Added support for reading and writing values of type LocalizedText by using a new JSON path format when browsing the server.

0.20.7 (released 2019-10-21)

  • Improved performance when multiple read jobs are created for a device variable at the same time.
  • Updated the S7 Device Plugin to version 1.0.12:
    • Fixed a bug that could cause variables to have an incorrect value when reading multiple variables with the same address at the same time.

0.20.8 (released 2019-10-24)

  • Updated the S7 Device Plugin to version 1.0.13:
    • Added a new setting DateTimeInterpretation that can be used to swich the interpretation of DateTime values from the PLC between UTC and local time.

0.20.9 (released 2019-11-11)

  • Updated the S7 Device Plugin to version 1.0.14:
    • Fixed a bug that could prevent to import some STEP7 projects.

0.20.12 (released 2019-11-19)

  • Updated the CSV Exchange Plugin to version 1.1.2:
    • Fixed a bug that could cause SCP connections to not read any more data after some time.
    • Fixed a bug that could cause an Edge or ValueChange trigger to not work when using mode SystemToFile.

0.19

0.19.0 (released 2019-05-29)

  • The product name has been simplified: CoDaBix® Compact is now called CoDaBix.
  • Introduced CoDaBix Project Management, which means that project-specific settings (like Back-end database credentials, Log level, HTTP Port etc.) are now stored in the Project Directory (formerly Data Directory) using file project.cbxproj, instead of storing them in a user-global folder.
    This makes it more easy to switch between different projects, as the settings will be kept per project.
    • A new setting Project Name has been added that allows to specify a name for your project. This name is then displayed in the CoDaBix application's title bar and is used for the default backup file name.
    • In the CoDaBix File Access Security (FAS), the default permissions for level “Normal” have been changed to no longer include a r/w permission for the whole project directory, but to include r/w permissions for specific subfolders like plugins, log, userdata, webfiles, dashboard.
    • The user experience when CoDaBix detects that the currently installed service uses a different project directory has been improved.
    • When upgrading from a previous CoDaBix version, the CoDaBix settings used so far will be migrated to project settings in the currently selected project directory.
    • [Windows] When restoring a backup in the CoDaBix application, you can now change the project directory (and the settings) before doing the restore.
  • [Windows] Improved the CoDaBix MSI Installer so that it offers to create a backup when updating to a newer CoDaBix version.
  • [Linux/Raspberry Pi] Improved the CoDaBix Setup to also work with Linux distributions where sudo isn't available.
  • Revised the History Timer behavior that was introduced in 0.18:
    • When enabling the History Options of a node, but not specifying a History Interval, then history values will be captured when writing a value to the node (like in previous versions), instead of being handled by the History Timer with an interval of 500 ms. But when a History Interval is specified, history values will be captured by the History Timer in that interval.
    • In the History Options combobox of the CoDaBix Web Configuration, the items “on Interval” and “on ValueChange” have been renamed to “Yes” and “Yes (only on Value Change)” for better clarity.
  • When writing a value to a device variable and that value is written back to the node by the device (after successfully writing the value to the device), the correct status code and timestamp is now used, instead of using those from the provided value.
  • Improved handling of DateTime values in the CoDaBix Web Configuration, so that you can enter a value in the same format that is used to display the values.
  • When selecting a menu item in the CoDaBix Web Configuration, you now open it in a separate window. Additionally, a new menu entry has been added to open the CoDaBix Online Documentation.
  • Updated the OPC UA Client Device Plugin to version 1.0.17:
    • [Windows] You can now connect to an OPC Classic server using the URL format opc.com://<hostname>(:<port>)/<progId>/<classId>.
  • Updated the OPC UA Server Interface Plugin to version 1.0.16:
    • Requests from OPC UA Clients that would add or remove nodes (which will not be handled by CoDaBix) are now correctly denied.
  • Updated the CSV Exchange Plugin to version 1.1.0:
    • It is now possible to generate a filename from a node value, using the syntax ${Path/to/Node} (Node Query Expression) within the Path attribute of the <File> element. When using SyncMode SystemToFile, the specified nodes will be included in the synchronous read of the column nodes, and then evaluated when writing the file. When using SyncMode FileToSystem, the specified nodes will be evaluated once when starting the channel.
    • When using SyncMode FileToSystem, you can specify a filter like XY*.csv in the Path attribute of the <File> element, so that the plugin will monitor and process all files in the directory matching that filter.
    • When using SyncMode FileToSystem, you can specify a <Binding> element with SystemValueType="CreationTimestamp" to indicate that the column contains a timestamp, which should be used as CreationTimestamp for the CoDaBix values of this line.
    • When using SyncMode FileToSystem, a new SyncAction MoveFile is available that can be specified in the BeforeSyncAction or AfterSyncAction attribute together with a BeforeSyncMoveFileTo or AfterSyncMoveFileTo attribute, which allows you to move or rename a file before or after it is synchronized to CoDaBix. The specified file path can also include a Node Query Expression which is evaluated before moving the file.
    • When using SyncMode SystemToFile and using a trigger of type Edge, you can have the ChangeBackValue be written to a different node than the one used by the trigger, by specifying the ChangeBackNode attribute with the node path.
    • Added a new attribute HasHeader to the <File> element that allows to to specify if a CSV file has a header. This means that for the SyncMode FileToSystem, the first line of the CSV file will be ignored, and when using SyncMode SystemToFile, a header line will be output if the file is empty.
      Additionally, for each <Binding> element, you can specify the HeaderName attribute to with the header value to be written to the CSV file (which can also include a Node Query Expression that will be included in the synchronous read of the column nodes).
    • It is now possible to specify the format for DateTime and TimeSpan values (for both SyncModes FileToSystem and SystemToFile) by specifying the ValueType attribute on the <Binding> element containing the type (e.g. DateTime) and then specifying the ValueFormat attribut with the desired format string.
    • Fixed a bug which could lead to a CSV file being imported twice when it was saved once.
  • Updated the SQL Exchange Plugin to version 1.1.0:
    • Stored Procedures and Functions for Oracle databases can now be handled as method nodes, so that they can be executed e.g. with a Script using codabix.executeNodeCommandsAsync().
    • Added setting DateTime Interpretation that allows you to switch between interpreting date/time values as UTC time or local time per database.
    • When browsing a MSSQL or MySQL server, the time datatype is now mapped to the CoDaBix TimeSpan value type.
  • Updated the H1 Device Plugin to version 1.0.1:
    • Fixed a bug that could prevent the plugin from starting when multiple network adapters with the same name were available.
  • Updated the Extension XML Plugin to version 1.0.1:
    • You can now export and import node values.
  • Script API:
    • Added method runtime.date.format() that can be used to format a Date object using a .NET DateTime format string (can be a standard or custom format string).
    • Method codabix.executeNodeCommands() has been replaced by the method codabix.executeNodeCommandsAsync() that returns a Promise which will be resolved when the execution of the node commands is finished.

0.19.1 (released 2019-07-22)

  • [Windows] Updated ASP.NET Core components to 2.1.12 for security fixes (CVE-2019-1075).
  • [Windows] Fixed a bug that could cause the CoDaBix Service to fail to start when the set project directory ended with a backslash (\).
  • [Linux/Raspberry Pi] Updated .NET Core to 2.1.12 for stability fixes.
  • Fixed a bug that prevented the private key of SSL certificates used for Kestrel from being encrypted with the project's password key.

0.18

0.18.6 (released 2019-02-08)

  • [Windows] Separate .MSI installers for x64 (64-bit) and x86 (32-bit) are now available.
  • [Windows] Performance of the embedded web browser has been improved by switching to a Chromium-based browser.
  • [Windows] CoDaBix now officially supports running on a Windows Server Core installation that has the Server Core App Compatibility FOD installed.
  • [Windows] Updated ASP.NET Core components to 2.1.7 for security fixes.
  • [Raspberry Pi] Breaking Change: CoDaBix now requires Raspbian 9 (Stretch) or higher.
  • [Raspberry Pi] Updated .NET Core to 2.1.7 for stability and security fixes.
  • Added support for Microsoft SQL Server 2012 or higher to be used as back-end database.
  • The CoDaBix Dashboard is now embedded in CoDaBix Compact and will be served by the web server for path /dashboard/. It can also be displayed within the Web Configuration GUI.
  • Implemented a History Timer that captures the current value of a node into a history value at the specified History Interval (for nodes where History Options are enabled), thus replacing the previous behavior of immediately capturing a history value whenever a value is written to the node. If the History Options are set to on Value Change, a captured history value is inserted into the database only if it is different than the previously written history value for that node. The new behavior therefore makes capturing history values more deterministic.
  • A new node property History Resolution has been added which, if specified, causes numeric history values to be rounded to that resolution when being captured.
  • History values displayed in the Web Configuration GUI are now sorted by insertion order (instead of Creation Timestamp) to have a better overview of the values, and additionally the Receive Timestamp is now displayed.
  • A new menu entry Password Security has been added to the Web Configuration GUI that allows you to encrypt passwords using the back-end database password key. This allows you to store the encrypted password e.g. in Plugin XML configuration files, or in Script code where it can be decrypted with codabix.security.decryptPassword().
  • You can now reset the password key (that is used to encrypt passwords) in the CoDaBix® Settings.
  • When setting the log level to Debug, the OPC UA Trace Log is written to the log file OpcUaTraceLog.txt which can help you to diagnose OPC UA connectivity issues.
  • Performance of inserting history values has been improved.
  • Increased the maximum size for a Script to 1,000,000 characters.
  • Increased the maximum size of a string/blob value to 1,000,000 characters/bytes.
  • Improved handling when applying scaling or value converters to a node.
  • Implemented the limitation of the maximum number of channels or clients specified by the license for plugins.
  • Improved license handling in regards to the machine code.
  • Fixed a bug (introduced in 0.17.0) that could cause CoDaBix to hang when you use a Script that registers a codabix.NodeReader for a node.
  • Fixed a bug that prevented to delete a node within a Variables folder if the node or one of its children contained a virtual link.
  • [Windows] Added the H1 Device Plugin (version 1.0.0) that allows you to connect to PLC devices using the SINEC H1 protocol.
    Note: This plugin requires WinPcap 4.1.3 or higher to be installed.
  • Added the Socket Device Plugin (version 1.0.0) that allows you to connect to a TCP server.
  • Added the Modbus Device Plugin (version 1.0.0) that allows you to connect to Modbus TCP servers.
  • Added the Extension XML Plugin (version 1.0.0) that allows you to export and import node structures in the Web Configuration GUI using the context menu as XML files.
  • Updated the OPC UA Client Device Plugin to version 1.0.15:
    • Channels that have set SubscriptionType to OpcSubscription now correctly use an OPC-based subscription instead of polling.
    • Instead of browsing the whole server, you can now also browse individual folder nodes.
    • Added a new setting MaxMonitoredItemsPerSubscription that allows you to split monitored items across multiple subscriptions (e.g. when connecting to a Siemens PLC OPC UA server that only allows 1000 elements per subscription).
      By default, the value 0 is set which means monitored items use a single subscription.
    • Improved performance of adding or removing CoDaBix node subscriptions.
    • When reading more than 1000 nodes at once from the server, these are split into chunks of each up to 1000 nodes to ensure they are read correctly if the server limits the maximum number of request elements.
    • When browsing a server, variable nodes with an Enumeration DataType are now created in CoDaBix as Int32 nodes.
    • When browsing a server, variable nodes that contain a single child HA Configuration are now created as datapoint nodes instead of as folder nodes.
  • [Windows] Updated the Melsec QJ Device Plugin to version 1.0.1:
    • Fixed a bug which lead to more bytes being read than necessary when reading boolean values.
  • Updated the S7 Device Plugin to version 1.0.10:
    • Variables of type S5 Time are now correctly read when they have the value 0.
    • Fixed a bug that could cause some variables being missed or not correctly laid out when importing a STEP7 project.
  • Updated the SQL Exchange Plugin to version 1.0.5:
    • Fixed a bug that could lead to outstanding synchronous reads reporting a value with a Good status after stopping the channel, even when the read actually failed.
    • Improved support for Microsoft SQL Server so that values from unsigned data types can now be written.
    • Improved support for Oracle.
  • Updated the Database Plugin to version 1.0.11:
    • You can now specify an encrypted password instead of a plaintext password in the password attribute.
    • Support for Microsoft SQL Server was improved so that values from unsigned data types can now be written.
    • The plugin no longer fails to start if one of the nodes specified for an edge or valueChange trigger or for an AfterSyncAction could not be found; instead a warning is logged.
  • Updated the CSV Exchange Plugin to version 1.0.5:
    • You can now specify an encrypted password instead of a plaintext password in the Password attribute.
  • [Raspberry Pi] Updated the UniPi Device Plugin to version 1.0.1:
  • Updated the REST Interface:
    • When retrieving history values for a node and specifying all of from, to and count parameters and to is smaller than from, then the oldest values (limited by count) will be returned instead of the newest values.
    • The browse command now shows child nodes that are only indirectly accessible for the current user (when the user does't have access to the child node itself but to one of its successors).
  • Script API:
    • Breaking Change: The value property of a codabix.NodeValue containing a TimeSpan now returns the milliseconds as number, instead of a formatted string value.
    • Breaking Change: When calling codabix.readNodeHistoryValuesAsync() and specifying all of startTime, endTime and maxCount parameters and endTime is smaller than startTime, then the oldest values (limited by maxCount) will be returned instead of the newest values.
    • Breaking Change: When the Promise object returned by an implementation of the codabix.NodeReader.readValuesAsync() method resolves to an array of codabix.NodeValue, these values are ignored for the result of the synchronous read operation, and instead the values of the nodes (at the time the Promise is resolved) are used. This is because otherwise the returned values would not be post-processed (scaled or converted) and thus might be incorrect.
    • Callbacks registered with codabix.Node.registerValueConverter() or codabix.nodeconfiguration.registerNodeContextMenuAction() can now throw an exception (or reject the returned Promise) without causing the Script to be aborted due to an unhandled exception.
    • An optional parameter throwIfNotFound has been added to methods codabix.findNode() and codabix.Node.findNode() that allows to have the methods throwing an exception if the node could not be found, instead of returning null.
    • Property historyResolution has been added to types codabix.Node and codabix.NodeStructure. Additionally, properties historyOptions and historyInterval have been added to codabix.Node.
    • The property isValueChanged has been added to the listener argument for the node's ValueChanged event which specifies if the new value is actually different than the old value.
    • Static method codabix.NodeValue.equals() has been added to allow to determine if two node values can be considered to be equal, by checking their value and status.
    • Property receiveTimestamp has ben added to the node value instances returned by codabix.readNodeHistoryValuesAsync() that allows you to get the time when the history value was captured in CoDaBix.
    • Enum value IntervalElapsed on codabix.NodeHistoryOptions has been renamed to Subscription. Existing scripts using the previous name will still work after updating to this version.

0.18.7 (released 2019-02-11)

  • Fixed a bug that could cause channel settings to be lost when upgrading from an earlier CoDaBix version.

0.18.8 (released 2019-02-14)

  • [Raspberry Pi] Updated .NET Core to 2.1.8 for security and stability fixes.

0.18.9 (released 2019-03-04)

  • Fixed a bug which could cause unnecessary history values to be generated for status nodes of plugins that were not loaded.
  • Updated the S7 Device Plugin to version 1.0.11:
    • Fixed a bug (introduced in CoDaBix® 0.18.7) that caused the plugin to not adopt changes (renaming a channel/variable or changing the variable's address) after editing the XML configuration file.
    • [Raspberry Pi] Fixed a bug that sometimes prevented to read floating-point variables (Single/Double).

0.18.10 (released 2019-03-11)

  • Improved subcription handling, so that when a device channel with active subscriptions is stopped, a “Bad” status is now written into the subscribed variables, which makes the behavior consistent with doing a synchronous read where also such a “Bad” status is written to the variable.
  • When duplicating a node, its value is now also duplicated.
  • Updated the OPC UA Client Device Plugin to version 1.0.16:
    • Fixed a bug (introduced in CoDaBix® 0.18.9) that could cause CoDaBix to crash in special circumstances.
  • Updated the OPC UA Server Interface Plugin to version 1.0.13:
    • Fixed a bug that could cause subscriptions from OPC UA clients to not be removed from CoDaBix when the channel is stopped or restarted.

0.18.11 (released 2019-03-18)

  • CoDaBix® Compact for Linux (x64) is now available for Debian 9 or higher, Ubuntu 16.04 or higher, Fedora 29 or higher, OpenSUSE Leap 15.0 or higher.

0.18.13 (released 2019-04-15)

  • [Linux/Raspberry Pi] Updated .NET Core to 2.1.10 for stability fixes.
  • Fixed a bug (introduced in CoDaBix® 0.18.6 (Raspberry Pi), 0.18.10 (Windows) and 0.18.11 (Linux)) that caused an error when upgrading a back-end database that was last used with CoDaBix® 0.14.0 or earlier.
  • Updated the OPC UA Server Interface Plugin to version 1.0.15:
    • Write requests specifying an IndexRange (which is not supported in CoDaBix) are now correctly rejected with a BadWriteNotSupported status code according to the OPC UA specification.
    • Fixed a bug (introduced in CoDaBix® 0.18.10) that could cause the CoDaBix process to not exit after shutting down the CoDaBix® Engine, if you tried to start a channel with a port that was already in use.

0.18.14 (released 2019-04-25)

  • Fixed a bug (introduced in CoDaBix® 0.18.10) that could lead to an outstanding synchronous read reporting an incorrect value when the channel was stopped after the read was started but before the read was finished.
  • Fixed a minor memory leak that could occur when repeatedly creating and deleting device variables.

0.18.15 (released 2019-05-29)

  • [Linux/Raspberry Pi] Updated .NET Core to 2.1.11 for security and stability fixes.

0.17

0.17.0 (released 2018-07-27)

  • CoDaBix® Compact for Raspberry Pi is now available for Raspbian 8.7 or 9, running on a Raspberry Pi 2 or 3.
  • [Windows] Breaking Change: CoDaBix® Compact now requires the .NET Framework 4.7.2 or higher. Please refer to Installing CoDaBix® Compact for more information.
  • [Windows] Kestrel can now be used as alternative web server implementation instead of the Windows-based HTTP.sys. On Windows 7 SP1 and Windows Server 2008 R2 SP1, Kestrel is automatically used to ensure WebSocket connections also work on these operating systems.
  • [Raspberry Pi] Added the UniPi Device Plugin (version 1.0.0) which can be used to access UniPi Neuron devices.
  • [Raspberry Pi] Added the I²C Device Plugin (version 1.0.0) which can be used to access devices using the I²C interface.
  • [Raspberry Pi] Added Service Management to the CoDaBix Shell, so that you can install CoDaBix Compact as a service (like on Windows) that is automatically started when the machine boots.
  • Using MySQL 8.0 as back-end database is now supported.
  • Improved performance when doing a lot of Node changes (e.g. creating a lot of nodes). When using SQLite as back-end database, this also guards against the error “attempt to write a readonly database” that can sometimes occur under heavy load.
  • The handling of writing values to device variables was improved, so that it is possible for the caller to determine if the write succeeded. For example, when you write a value to a variable in the Web Configuration GUI, and the device is not available, a corresponding error dialog will appear.
    Additionally, values written to a device variable are now stored in the variable if they were successfully written.
  • Nodes with a datatype other than “Null” can now get NULL values even if the status is not Bad. For example, this allows to accurately represent null values in table columns for the SQL Exchange Plugin.
  • You can now select to include log files when creating a Backup.
  • Added a new CoDaBix setting Update DB Mode that can be used to restrict the number of times data is written into the back-end database, which can be useful for embedded devices like Raspberry Pi (where this option is enabled by default).
  • Fixed an issue when using node subscriptions, which could lead to not updating the node value even though the value in the device has changed.
  • Fixed an issue that caused node subscription parameters like Interval to be not correctly applied when creating multiple subscriptions for the same nodes. To fix this issue, the Script API for codabix.NodeReader had to be changed (see below).
  • Fixed a bug in the parsing and displaying of DateTime values, which were previously displayed in UTC time instead of local time.
  • In the CoDaBix® File Access Security (FAS), the default permissions for level “Normal” have been changed to not include read-only access to the install directory anymore (which normally isn't needed).
  • Updated the SQL Exchange Plugin to version 1.0.3:
    • NULL values that are successfully read from the database are now represented using a Good status.
  • Updated the OPC UA Server Interface Plugin to version 1.0.10:
    • Start-up time and memory footprint have been reduced.
    • Processing of node values has been improved.
    • When writing a CoDaBix node value failed (e.g. because the device is not available), the OPC UA client will now receive a 'Bad' status indicating the error.
    • The Name of a CoDaBix node is now used as BrowseName for the corresponding OPC UA node, and the DisplayName of a CoDaBix node is now used as DisplayName for the corresponding OPC UA node.
    • Fixed a bug which caused existing subscriptions from OPC UA clients to stop working when changing the History Options of one of the subscribed nodes.
  • Updated the OPC UA Client Device Plugin to version 1.0.12:
    • When browsing an Siemens OPC UA server that creates child nodes for each array element, these array element nodes are no longer created in CoDaBix because the parent node contains already the array value.
    • The number of maximum browsed nodes is now configurable.
    • The BrowseName of an OPC UA node is now used as Name for the corresponding CoDaBix node, and the DisplayName of an OPC UA node is now used as DisplayName for the corresponding CoDaBix node.
  • Updated the RFC-1006 Device Plugin to version 1.0.2:
    • You can now specify the TCP port that the connection should use.
  • Script API:
    • Breaking Change: The parameters of methods codabix.NodeReader.subscriptionCreated() and codabix.NodeReader.subscriptionModified() have been changed to provide the interval and forceUpdate parameters for each codabix.Node instead of single parameters for all nodes. This was done to to fix the problem (as mentioned above) where sometimes subscription parameters were not correctly applied when creating multiple subscriptions for the same node.
    • Method codabix.NodeReader.readValuesAsync() has been changed to allow to return an array of codabix.NodeValue, so that a NodeReader can directly indicate the recently read values. If returning null (or undefined), CoDaBix will use the current node values as a result of the synchronous read.
    • Method codabix.readNodeHistoryValues() has been replaced by the method codabix.readNodeHistoryValuesAsync() in order to not block CoDaBix while reading history values (which might take some time).
    • Methods codabix.writeNodeValueAsync() and codabix.writeNodeValuesAsync() have been changed to return a codabix.NodeValueStatus (or an array of it), which indicates if writing the values was successful (if the nodes are device variables).
    • Property codabix.Node.virtualLinkDestination has been added that allows you to get the virtual link destination of a Node.
    • The namespace codabix.nodeconfiguration has been added with methods that allow to register a context menu action for a node which can generate a file download result.
    • Method timer.scheduleCallback() has been replaced by the method codabix.scheduleCallback() because it is actually a CoDaBix-specific function and not a regular timer function.
    • Method timer.yield() has been added that allows you to asynchronously interrupt execution by returning a Promise object which will be fulfilled after the current script execution is finished (and the current NodeLock is released).
    • Scripts can now register a shutdown handler with runtime.onShutdown which will be called when the script is about to stop normally (e.g. because the engine is shutting down or the user has stopped the script).

0.17.1 (released 2018-08-10)

  • [Raspberry Pi] The deployment now consists of a self-extracting setup.
  • [Raspberry Pi] Fixed a bug that caused wrong access rights of the installation directory.
  • [Raspberry Pi] Fixed a bug in the OPC UA Server Interface Plugin that caused an error on restart of a cannel with a connected client.
  • OPC UA Client Device Plugin A channel can now be started in simulation mode. In this way the channel can be run without a server in order to implement a simulation.

0.17.2 (released 2018-08-13)

  • OPC UA Client Device Plugin Fixed a bug in simulation mode: If a node does not have a value a default value is used.

0.17.5 (released 2018-09-03)

  • Updated the OPC UA Client Device Plugin to version 1.0.13:
    • When browsing an OPC UA server that doesn't provide the Description attribute for nodes (e.g. a S7-1500 OPC UA Server), you can now provide the description values by placing the exported NodeSet XML file into <CodabixDataDir>\OpcUaClientDevicePlugin\<ChannelName>\NodeSet.xml.
  • Updated the OPC UA Server Interface Plugin to version 1.0.11:
    • Additional server settings (e.g. transport settings) can now be configured.
  • Script API:
    • Node/Value tuple objects passed to codabix.writeNodeValuesAsync() can now additionally contain a source property with a value which is later provided in the ValueChanged event of a codabix.Node, e.g. to identify the case when a NodeWriter passes a value back to the node after it has been successfully written to a device.

0.17.7 (released 2018-09-26)

  • [Raspberry Pi] When running as service, the service will change to the identity of the user that originally set up the service after binding the web ports, in order to avoid problems with file permissions.
  • Using MariaDB 10.3 or higher as back-end database is now officially supported.
  • The performance of inserting a lot of data into a MySQL or MariaDB back-end database (e.g. when restoring a backup or when history values are inserted) has been considerably improved.
  • When scanning a directory specified by a Directory Node fails, the child nodes are not deleted (as this is treated as a temporary error) and a warning is logged to the Runtime Log.
  • Updated the OPC UA Server Interface Plugin to version 1.0.12:
    • Fixed a bug that could cause CoDaBix to hang when a lot of client requests from OPC UA clients occur at the same time.
  • Updated the SQL Exchange Plugin to version 1.0.4:
    • Fixed a bug that prevented to browse a table immediately after creating the table.
  • Updated the REST Interface:
    • For get and browse requests, the node's unit is now now output using the unit property, and the history options are correctly output using the hi property.

0.17.8 (released 2018-10-23)

  • Fixed a bug that could cause requests from OPC UA clients (using the OPC UA Server Interface) to fail and cause CoDaBix to log error messages in the Runtime Log in certain circumstances.

0.16

0.16.0 (released 2018-04-13)

  • User groups can now set to be read-only, which means that users in this group only have read access to the nodes specified in this group, but cannot write values or change the nodes. This setting is checked in the REST Interface and in the OPC UA Server Interface.
  • When serving static files from the webfiles folder, the embedded web server now also serves GZIP-compressed files ending with .gz in their compressed form when requesting the file name without .gz, which allows you to reduce network traffic.
  • Added the Melsec QJ Device Plugin (version 1.0.0) that allows you to connect to Mitsubishi PLC devices of the Melsec-Q and Melsec-A series.
  • Added the AKLAN Device Plugin (version 1.0.0) that allows you to transmit data to AKLAN services.
    Note that this plugin requires additional components, which need to be installed manually.
  • The Demo Data (Continuous) plugin is no longer installed by default when running the CoDaBix® Compact Setup.
  • Updated the OPC UA Server Interface Plugin to version 1.0.9:
    • Improved access performance (e.g. when a client browses the server) when a lot of nodes have been created.
    • The server now checks if a user has read-only access when writing node values.
    • A new setting “Hostname Mode” has been added to the channel settings that allows to select if the server's endpoint host name should be “localhost”, the current computer name or a custom name.
    • The type CodabixBlob is now mapped to the OPC UA data type ByteString.
    • Fixed a bug (introduced in version 1.0.8) that caused the AutoAcceptUntrustedCertificates setting to be ignored.
    • Fixed a bug that caused the server to incorrectly report scalar types as array types in the ValueRank attribute.
  • Updated the OPC UA Client Device Plugin to version 1.0.10:
    • The OPC UA data type ByteString is now mapped to the type CodabixBlob.
  • Updated the S7 Device Plugin to version 1.0.9:
    • Added the option IsSimulation to the channel settings that allows to run a S7 Channel in simulation mode, so that it does not actually communicate with a physical PLC device.
    • Improved performance when doing a lot of synchronous reads for the same variable.
    • Fixed a bug that caused wrong decoding of umlauts when importing a STEP7 project.
    • Fixed a bug that could cause missing blocks, types, values and objects when importing a STEP7 project.
  • Updated the CSV Exchange Plugin to version 1.0.4:
    • An interval trigger has been added that can be used in SyncMode SystemToFile.
    • Fixed a bug which meant the ColumnIndex attribute was ignored when synchronizing a CSV file to CoDaBix.
  • Script API:
    • The method close() in io.Closeable has been replaced with the async method closeAsync(), because closing a resource might be a blocking operation. Existing scripts that call the close() method will still work after updating to this version (as long as they don't call the method while an async operation is still in progress), and will log a warning.
    • The global object Guid has been added which allows to generate a new GUID string.
    • The method io.util.encodeXml() has been moved to xml.encode(). Existing scripts using the previous method will still work after updating to this version.
    • Increased the Script timeout from 1500 ms to 5000 ms.

0.16.2 (released 2018-05-14)

  • Fixed a bug in the handling of writing values to a Device Variable, which could cause the value to write to be ignored when the write was recursively executed from a handler scheduled within a ValueChange event from that device, e.g. in a Script using timer.schedule().
  • Fixed a bug in the Diff Script Editor that prevented to save the script.
  • Improved handling regarding time measurement in device worker threads, to ensure subscribed variables are read in a timely manner even when a lot of synchronous read requests are handled.
  • Plugin licenses can now be managed even when CoDaBix® Compact is running as a service, or when the CoDaBix® Engine is not running.
  • Updated the OPC UA Client Device Plugin to version 1.0.11:
    • When browsing an OPC UA server, the Description attribute of an OPC UA node is now read and stored in the created CoDaBix node.
  • Updated the RFC-1006 Device Plugin to version 1.0.1:
    • Fixed a bug that would reset the type of the ReceiveBuffer or the TransmitBuffer node to Blob on start-up if they previously have been set to String by the user.
  • Script API:
    • Added methods codabix.subscribeNodes() and codabix.unsubscribeNodes() with which you can explicitely create a subscription for one or more nodes, and specify the subscription interval.
    • Added methods codabix.Node.registerReader() and codabix.Node.unregisterReader() with which you can register a NodeReader which will be called when a synchronous read for the given nodes is requested or a subscription is created.

0.16.3 (released 2018-05-24)

  • Fixed a bug (introduced in 0.16.2) which could sometimes lead to the first write of a Device Variable being ignored.
  • Updated the SQL Exchange Plugin to version 1.0.1:
    • Added support for ODBC database connections, where the Channel's Database Name setting is used as ODBC data source name (DSN).

0.16.4 (released 2018-06-20)

  • Fixed an issue which caused HTTPS bindings to not work when specifying a host name.
  • Updated the SQL Exchange Plugin to version 1.0.2:
    • You can now specify 0 as port when using Microsoft SQL Server, in which case it will try to connect to the default SQL Server instance.
  • Updated the Database Plugin to version 1.0.10:
    • You can now specify 0 as port when using Microsoft SQL Server, in which case it will try to connect to the default SQL Server instance.

0.15

0.15.0 (released 2018-01-18)

  • Breaking Change: CoDaBix® Compact now requires the .NET Framework 4.6.1 or higher. Please refer to Installing CoDaBix® Compact for more information.
  • The embedded web server now allows to serve static files from the data directory's webfiles folder. This allows you in combination with the new Script HTTP Handler feature (see below) to develop Web Apps served by the CoDaBix® web server (e.g for visualization).
    Additionally, in the CoDaBix® Settings you can now specify a custom HTTP redirect URL for the root path, so that users just need to type e.g. http://<hostname>/ to view the custom web page.
  • The data directory now contains a new folder userdata where you can store custom files. This folder is guaranteed to not be used differently in future CoDaBix® versions.
  • The security of encrypted passwords that are stored in Datapoint Nodes of type “Password” or are generated using the Script API codabix.security.encryptPassword() has been improved.
  • CoDaBix® File Access Security (FAS) now prevents write access to the SQLite back-end database files (except for setting “Full Access”) since they are considered to be system files.
  • The properties HistoryOptions and HistoryInterval for a linked Node are now retrieved from the link destination since they are closely related to the history values of the Datapoint Node.
  • Log rotation has been improved so that the CoDaBix® runtime log file, the Database Plugin log file and log files from the Entity Model are no longer rotated each day, but after they got a size of more than 5 MiB, in which case they are automatically compressed into a ZIP file to reduce the space they occupy.
    Additionally, by default log files older than 30 days are automatically deleted.
  • CoDaBix® Compact can now be run on Windows systems that have enabled the policy “System cryptography: Use FIPS compliant algorithms for encryption, hashing, and signing”.
  • License handling has been improved in regards to the machine code.
  • Updated the CSV Exchange Plugin to version 1.0.2:
    • Breaking Change: The plugin's folder name has been renamed from B. CSV-Server to CsvExchangePlugin to match the documentation. When you upgrade from a previous CoDaBix® Compact version, CoDaBix automatically tries to rename the folder, but you should check if you used the previous folder name in other applications.
    • Breaking Change: When using the SyncMode SystemToFile, CSV rows are no longer implicitely generated when one of the node's value changes. Instead, you can now define triggers (like in the Database Plugin) to specify when values should be written into the CSV file. Furthermore, the CSV Exchange Plugin now does a synchronous read when one of the trigger fires, just like the Database Plugin.
    • When using the SystemToFile mode, you can now specify to use a system value instead of a node value for a <Binding>, e.g. to write the current time into the CSV file.
  • Script API:
    • You can now register HTTP Handlers by calling net.registerHttpRoute(). This allows you to specify async functions that are called when a client makes a HTTP request to CoDaBix®. For example, you can dynamically generate HTML pages like it can be done with PHP or ASP.NET.
      This feature also allows you to handle server-side WebSocket connections using the net.RawWebSocket interface when running CoDaBix® Compact on Windows 8 / Windows Server 2012 or higher.
    • Added overloads to the timer.scheduleCallback() method that accept a callback with parameters, and accept additional arguments that are passed to the callback. E.g. for an event listener, this allows to store the callback and then reusing it by passing the event parameters to it, rather than creating a closure on each event listener invocation which is relatively expensive.
    • Added a parameter to the methods copyFileAsync(), writeAllTextAsync() and openFileWriterAsync() of the io.file namespace that allows you to specify to throw an exception if the file already exists, instead of overwriting it.
    • Increased the Script timeout from 1000 ms to 1500 ms.
    • Breaking Change: The property fileLength of class io.FileReader has been replaced with the async method getFileLengthAsync since determining the current file length is an I/O operation that might be blocking.

0.14

0.14.0 (released 2017-07-13)

  • In the CoDaBix® File Access Security (FAS) settings, you can now specify access credentials for each path. This allows you to access files e.g. in a script to which the current user wouldn't have access (internally, this uses impersonation). Additionally, if the path is an UNC path, you can add it as network resource. This is useful when running CoDaBix® as a service, which doesn't have access to mapped Windows Network Drives (with corresponding access credentials) of the current user.
  • For Device Plugins, Interface Plugins and Exchange Plugins, the most important settings are now directly displayed when adding or editing the channel in the Configuration Web GUI.
    Additionally, a Control Panel is shown for when opening a channel that shows a live overview of the channel's state.
  • The Scaling Factor and Scaling Offset properties of datapoint Nodes are now used to scale values that are read from (or written to) a device.
    Because these properties were not used previously (but you were able to enter arbitrary values), these properties are cleared when updating to this version to ensure previous values don't cause problems.
  • When creating a Backup, you can now specify to not export passwords for security reasons. This applies to the MySQL back-end database password and passwords stored in Nodes of type Password (e.g. for OPC UA Client Device and SQL Exchange), as well as to passwords encrypted with the Script API codabix.security.encryptPassword() that are stored e.g. in Scripts.
  • The CoDaBix® runtime log is now created in the log folder instead of logfiles.
  • When a plugin fails to start, it is attempted to restart after 30 seconds to ensure temporary error conditions do not prevent the plugin from working after the error is fixed.
  • History values can now be cleared in the CoDaBix® settings dialog.
  • Updated the REST Interface:
    • Authentication via username and password has been implemented.
    • History values can now be retrieved for a specific time range.
  • Updated the CSV Exchange Plugin to version 1.0.1:
    • Support for file transfer over a SSH Server (using SCP or SFTP) has been added.
    • The CustomerName attribute no longer needs to be specified in the XML configuration file.
  • Updated the S7 Device Plugin to version 1.0.7:
    • Fixed a bug that prevented from reading strings with a maximum length of more than 221 characters.
  • Updated the OPC UA Server Interface Plugin to version 1.0.6:
    • Refactored the policy settings so that multiple policies can be enabled for the same endpoint (channel).
    • The auto-generated application instance certificate now uses the computer name instead of “localhost” as domain name.
    • Fixed a bug which caused a new application instance certificate to be generated at every start of CoDaBix®.
  • Updated the OPC UA Client Device Plugin to version 1.0.7:
    • Added a setting that allows to specify whether a regular OPC UA subscription or polling should be used for CoDaBix® subscriptions on OPC UA Client variables.
    • Fixed a bug which caused a new application instance certificate to be generated at every start of CoDaBix® (and prevented the certificate to be stored as a blob in the corresponding CoDaBix® Node).
  • Added the SQL Exchange Plugin (version 1.0.0) that allows you to bidirectionally exchange data with a MySQL, MSSQL or Oracle database.
  • Script API:
    • Added the NodeChangeCompleted event to the codabix namespace which is raised when a series of multiple ValueChanged, PropertyChanged or ChildrenChanged events of Nodes has completed.
    • Added method codabix.Node.registerValueConverter() that allows to register a callback which is called when a value is read from (or written to) a device, so that the value can be adjusted.
    • A parameter to the logger.log() method has been added that accepts a log level (the default is Info). Additionally, the methods logDebug(), logInfo(), logWarning() and logError() have been added to the logger namespace.
    • Added the codabix.security namespace that contains methods to encrypt and decrypt passwords that are to be stored in a password Node.

0.14.1 (released 2017-07-27)

  • Improved the log handling for the Configuration Web GUI: Runtime log error entries are no more displayed immediately; instead, a button shows the number of new log entries. By clicking the button, a (live) dialog with the last log entries will open.
  • The maximum length of the Node's path property has been increased from 200 to 2000 characters to support e.g. longer file paths.

0.14.2 (released 2017-09-06)

  • When creating a Backup, you can now specify to not include history values if you don't need them in order to reduce the backup size.
  • Updated the OPC UA Client Device Plugin to version 1.0.8:
    • Fixed a memory leak that could occur when a Server is not available while the Client tries to connect.
    • Improved browsing behavior to get more accurate type information for a browsed data variable Node instead of simply using a “Null” datatype.
    • Added support for the Basic256Sha256 security policy algorithm.
  • Updated the OPC UA Server Interface Plugin to version 1.0.7:
    • Fixed a memory leak that could occur when Clients often connect and disconnect.
    • Added support for the Basic256Sha256 security policy algorithm.
  • Script API:
    • Improved the declaration of codabix.NodeValueConverter to allow to return undefined additionally to null.

0.14.3 (released 2017-09-28)

  • Fixed a bug which could cause the CSV Exchange Plugin to hang when using file transfer over SCP.
  • Minor bug fixes and improvements.

0.14.4 (released 2017-10-09)

  • Fixed a bug which could cause the CSV Exchange Plugin to not recognize changes to files accessed over SMB (Windows Shares) after a network problem occured.

0.14.12 (released 2017-11-24)

  • Log rotation has been improved so that the CoDaBix® runtime log file and the Database Plugin log file are no longer rotated each day, but after they got a size of more than 5 MiB, in which case they are automatically compressed into a ZIP file to reduce the space they occupy.
    Additionally, by default log files older than 30 days are automatically deleted.
  • Updated the Database Plugin to version 1.0.9:
    • Added the instantChangeBackValue attribute to the Trigger element (fortype="edge"), which allows you to specify a value that is immediately written to the node after the trigger has fired, as opposed to the changeBackValue value that is written after the record set has been collected (i.e. the synchronous read of the values has finished).
    • Improved performance by writing rows in a single transaction when a lot of rows are buffered.

0.14.13 (released 2017-12-20)

  • CoDaBix® Compact can now be run on Windows systems that have enabled the policy “System cryptography: Use FIPS compliant algorithms for encryption, hashing, and signing”.
  • Improved log rotation (including the creation of a ZIP file) is now also applied to log files from the Entity Model.
  • Updated the OPC UA Client Device Plugin to version 1.0.9:
    • The performance of browsing an OPC UA Server has been improved.
    • Fixed a bug which prevented variables added under a pre-existing folder from working until CoDaBix® was restarted.
    • The specified OperationTimeout value is now correctly applied for connect attempts.
    • NodeIds can now be specified in a format like ns=2;s=ABC which is also used by other OPC UA tools.
  • Updated the OPC UA Server Interface Plugin to version 1.0.8:
    • The ValueRank attribute for Datapoint Nodes is now correctly specified for array types.

0.12

0.12.0 (released 2017-05-09)

  • The CoDaBix® settings dialog now allows you to specify the log level that determines how detailed logfiles are written.
  • Log rotation has been implemented so that now also the report logfiles will rotate after a day.
  • When using SQLite as a back-end database, history values are now written into a separate database (codabixhistorydb.db) to improve performance.
  • For security reasons, when installing CoDaBix® as a service on new CoDaBix® installations, a remote HTTP binding using the local HTTP port is no longer included by default.
    If you want to allow remote machines on the network to access your CoDaBix® instance, you will need to enable the option “Use the Local Port as remote HTTP Binding” in the “Service HTTP(S) Bindings” options, or manually add HTTP/HTTPS bindings.
  • Fixed a memory leak which occured when running CoDaBix® as a service, which could lead to a crash after some time.
  • Fixed a bug which prevented to restore a backup containing datapoint Nodes of the type DateTime.
  • Fixed a bug which prevented to restore a backup on Windows Server systems that have been installed using the Server Core option (i.e. without Desktop Experience).
  • Updated the S7 Device Plugin to version 1.0.6:
    • Fixed a bug which led to too many bytes being read or written on a variable of type Char.
  • Updated the Database Plugin to version 1.0.7:
    • Fixed a memory leak that could occur when triggers fire faster than datasets can be written to the database, which could lead to a crash.
  • Script API:
    • The Script Editor now shows an error in async functions on method calls returning a Promise object, where the returned object is not awaited or used otherwise. If discarding the Promise is intentional, you can use the void operator to silence the error, e.g. void codabix.writeNodeValueAsync().

0.12.1 (released 2017-05-11)

  • Improved startup time when running CoDaBix® Compact as a service.
  • Fixed a bug which sometimes prevented to duplicate a Node in the Configuration Web GUI.
  • Updated the Database Plugin to version 1.0.8:
    • A new trigger type valueChange has been added which will fire when a Node's value has changed.
    • Added the property attribute to the <Node> element that allows you to specify what Node property should be written into the database. Rather than the Node value, you can also write the Node value's timestamp, the Node's unit etc.
    • Log a better error message when a specified Node could not be found.
  • Updated the OPC UA Client Device Plugin to version 1.0.5:
    • When browsing an OPC UA Server, OPC Nodes with a datatype of Integer and UInteger are now created as CoDaBix® Nodes of type Int64 and UInt64 instead of Null, so that values for such Nodes can be read. Note that because Integer and UInteger are abstract data types in the OPC UA, it could happen that a write operation will fail, in which case you will need to select other, smaller datatypes like Int32 for the Node.

0.12.2 (released 2017-05-16)

  • When a single plugin can not be started, an error message is written into the runtime log and then CoDaBix® continues to start.
  • Added a shortcut in the CoDaBix® Compact program group that allows to clear history values in the current back-end database.
  • Updated the OPC UA Client Device Plugin to version 1.0.6:
    • By default, only 10 concurrent channels (connections) are allowed. The number can be increased by applying a license.
  • Script API:
    • Fixed a memory leak which could occur when scripts are often restarted. In order to fix the leak, the codabix.Node.children property had to be changed to return a non-live array, i.e. everytime the property is accessed a new array is returned.

0.11

0.11.0 (released 2017-02-27)

  • Revised the Configuration Web GUI:
    • A context menu has been added.
    • Folder Nodes are loaded in the tree only after they are expanded.
    • Variable Nodes are now also displayed in the tree, instead of only in the table.
    • When displaying history values for a Node which has numeric values, a line chart of the history values is shown.
  • Fixed a bug which prevented duplicating Nodes.
  • Fixed a bug which prevented creating a new user.
  • Updated the S7 Device Plugin to version 1.0.4:
    • Removed the indirection through “Variables” folder Nodes when creating a variable of type “Object”.
    • Fixed a bug which prevented to use the S5 String data type.
  • Updated the OPC UA Client Device Plugin to version 1.0.3:
    • Removed the indirection through “Variables” folder Nodes when creating a subfolder.
  • Updated the Database Plugin to version 1.0.5:
    • Changed the trigger handling to start a synchronous read directly in the trigger's event handler, rather than a short time later. This makes the collected DataSet values more deterministic, especially when the edge trigger value is also collected.

0.11.1 (released 2017-04-12)

  • A Backup-And-Restore functionality has been implemented which allows you to back-up the current back-end database, the data directory and the CoDaBix® settings into a single, compressed file, and later restore the data. This does even work if you are using a different back-end database type (MySQL/SQLite) when restoring.
  • In the CoDaBix® settings dialog, you can now save and load the settings.
  • You can now execute commands of method Nodes in the Configuration Web GUI.
  • Added an additional editor strictness level “Medium” for scripts where the Script Editor does not show errors on unused local variables and unused parameters.
  • When installing CoDaBix® Compact as a service, the startup type is now set to “Automatic (Delayed Start)” to ensure the CoDaBix® service can start even if the computer's hard drive is busy or the MySQL database is not yet available.
  • Fixed a bug which prevented FAS (File Access Security) from correctly handling “Deny” entries.
  • Improved the performance when reading history values filtered by a timestamp from the embedded (SQLite) back-end database.
  • Updated the OPC UA Client Device Plugin to version 1.0.4:
    • The implementation has been rewritten to use a dedicated thread per channel, to avoid delays in CoDaBix® and to improve the general stability of the plugin.
    • A browse functionality has been implemented. By executing the Browse command, the OPC UA Server is scanned and new variable Nodes are automatically created in the channel.
    • Fixed a bug that could lead to a hang on startup in rare circumstances.
    • Fixed a bug with handling subscriptions.
  • Updated the OPC UA Server Interface Plugin to version 1.0.5:
    • Added support for method Nodes which can be called by OPC UA Clients.
  • Updated the S7 Device Plugin to version 1.0.5:
    • Added the new setting “SolveSiemensPduBug” that solves a problem with some S7 devices which send incorrect responses, resulting in an error like “specified data area does not exist”.
  • Updated the Database Plugin to version 1.0.6:
    • Added the attribute commandTimeout to the <DbConnection> element in the XML configuration file.
  • Minor bug fixes and stability improvements.
  • Script API:
    • The method codabix.Node.getNodePath() has been implemented to retrieve the absolute Node path of a Node.
    • The method codabix.readNodeHistoryValues() has been implemented to retrieve history values of a Node.

0.10

0.10.0 RC1 (released 2016-12-21)

  • Revised the CoDaBix® type system:
    • For Node values and the Node's path, Enum types can be defined and validation expressions can be specified.
    • Added the DateTime and TimeSpan types.
    • The type “Byte-Array” has been aligned with type “Blob”:
      • The maximum length of a Byte-Array has been increased from 1000 bytes to 500000 bytes.
      • Byte-Arrays are serialized more efficently.
  • Revised the CoDaBix® Entity Model:
    • Devices and channels can now be stopped and (re-)started using their Action Node.
    • When creating a new channel Node, its subtree is automatically created and shown.
  • It is now possible to specify diverse HTTP and HTTPS bindings for the embedded web server when running CoDaBix® as a service. This allows you to connect to CoDaBix® from remote machines over an encrypted TLS connection.
  • Implemented plugin specific licensing. For each plugin you can manage its license.
  • Implemented user access level per Node, so that a plugin can define which Nodes the user is allowed to modify.
  • Added the RFC-1006 Device Plugin (version 1.0.0) that allows you to connect to Clients or Servers using the RFC 1006 protocol.
  • Updated the S7 Device Plugin to version 1.0.2:
    • Support for the Date, DateTime, Time, TimeOfDay and S5Time datatypes has been added.
    • When reading a variable failed, a more detailed status text (instead of only “Good” or “Bad”) is logged and displayed in the Configuration Web GUI.
  • Updated the OPC UA Server Interface Plugin to version 1.0.4:
    • The default port for new installations has been changed to 4840.
  • Breaking Change: Renamed the Database Exchange Plugin to Database Plugin (version 1.0.3):
    • The plugin's directory in the data directory (<CodabixDataDir>) has been renamed from "DataBaseExchangePlugin" to "DatabasePlugin".
    • The plugin's configuration file has been renamed from "CoDaBix.DataBaseExchangePlugin.Settings.xml" to "CoDaBix.DatabasePlugin.Settings.xml".
  • Scripts will now also automatically restart when an uncaught exception occurs in the initialization phase, not only when it occurs in the callback phase.
  • Script API Breaking Changes:
    • The method timer.setImmediate() has been replaced with the method timer.scheduleCallback() which is more efficient.
    • The method timer.sleepAsync() has been renamed to timer.delayAsync().
    • The NodeValue class now supports Date instances to work with the CoDaBix® DateTime type.
    • The type property of the class codabix.Node doesn't contain value types like Int32 any more. Instead, they are now available using the valueType.typeCode property. The valueType.isArray property specifies if the type is an array type.
    • The type codabix.NodeValueStatus (as used e.g. in codabix.NodeValue.status) has been changed to an interface with a statusCode and a statusText property.

0.10.1 (released 2017-01-27)

  • Breaking Change: Implemented File Access Security (FAS) to restrict file access within CoDaBix, configurable in the CoDaBix® Settings.
    This feature prevents a user that has the CoDaBix® admin password and has local or network access to the Configuration Web GUI from accessing arbitrary files on the system (especially when running as a service). By default, the data directory is permitted for read/write access, and the Install Directory is permitted for read access.
    This setting applies to:
    • File Nodes (accessed via HTTP Access URL or by an OPC UA Client) and directory Nodes
    • Scripts using the io.file and io.directory namespaces
    • CSV file paths that are specified in the CSV Exchange Plugin's XML configuration file
  • Performance improvements and bug fixes.
  • Updated the S7 Device Plugin to version 1.0.3:
    • Configurator: Support to copy channels and variables
    • Channels: Added support for descriptions
    • Variables: Added support for descriptions
  • Added a new “Method” type for Nodes where plugins can register commands to run on such a Node.
  • Updated the Database Plugin to version 1.0.4:
    • Added the attributes connectTimeout and maxPoolSize to the <DbConnection> element in the XML configuration file.
  • Script API:
    • Implemented the io.file, io.directory and io.path namespaces to enable scripts to access files, e. g. to read or write a text file.

0.10.2 (released 2017-02-07)

  • The reliability of CoDaBix® Compact has been improved.
  • Fixed a bug which prevented to read array values or history values.
  • Fixed a bug which reset the “HistoryOptions” of a Node after a restart of CoDaBix® Compact.
  • Fixed a bug which prevented the script timeout from being applied to script code in catch or finally clauses.
  • Fixed a bug which prevented to create variables for the OPC UA Client Device Plugin.

0.10.4 (released 2017-02-09)

  • Updated the OPC UA Client Device Plugin to version 1.0.2:
    • Fixed a bug which prevented reading or writing variable Nodes which have been created in a folder Node.
    • Improved conversion of arrays of wrapped OPC UA values so that they can be written into CoDaBix® Nodes having an array type.
    • When reading multiple Nodes and one of them cannot be read, the other Nodes are now still read.

0.9

0.9.0

  • The internal database structure has changed, so that every Node will get a GUID to identify it.
  • Plugins can automatically restart themselves if their settings file has changed.
  • You can now write a value directly to a Node in the Configuration Web GUI.
  • Added the Database Exchange Plugin which allows you to write Node values to external MySQL/MSSQL databases.
  • S7 variables don't have a GUID as their name. Instead, they will get their correct name.
  • The S7 Device Plugin can now read and write arrays (e.g. an Int32 array).
  • The S7 Device Plugin doesn't automatically create subscriptions anymore. Instead, it waits for an external source to create a subscription (like a OPC UA Client connected through the OPC UA Server Plugin) or to do a synchronous read until variables will be read from the PLC.

0.9.2

  • Added the CoDaBix.AutoSubscribe plugin which automatically subscribes to Nodes which have their “Has History Values” set to “Yes”. This allows you to have S7 variables be automatically read without having to create a subscription by e.g. using an OPC UA Client.
  • The CoDaBix® Compact setup now allows you to exactly select which plugins shall be installed with CoDaBix® Compact.
  • The Configuration Web GUI now shows the status of the actual value for Nodes.
  • Fixed a bug when using the Int16-Array datatype.

0.9.3

  • Fixed a bug which prevented writing UInt64 values to a Node.
  • Fixed a bug which occured when using MySQL as back-end database.

0.9.4 (released 2016-09-07)

  • Completely revised the Configuration Web GUI appearance for a better look & feel. For example, it is now possible to do a synchronous read on S7 variables directly in the Configuration GUI.
  • The S7 Device Plugin now automatically checks the connection to the PLC device at a regular interval, so that the channel status contains the current connection status to the device.
  • The S7 Device Plugin now supports reading PLC objects.
  • The directory name of the S7 Device Plugin in the data directory (<CodabixDataDir>) has been renamed from "S7DeviceServer" to "S7DevicePlugin" and the configuration file has been renamed from "CoDaBix.S7DeviceServer.Settings.xml" to "CoDaBix.S7DevicePlugin.Settings.xml".
  • The directory name of the DataBase Exchange Plugin in the data directory (<CodabixDataDir>) has been renamed from "DataBase" to "DataBaseExchangePlugin" and the configuration file has been renamed from "CoDaBix.DataBase.Settings.xml" to "CoDaBix.DataBaseExchangePlugin.Settings.xml".
  • The DataBase Exchange Plugin now supports using an edge trigger.

0.9.5 (released 2016-09-08)

  • Fixed some minor bugs in the Configuration Web GUI .
  • Updated the DataBase Exchange Plugin to version 1.0.1:
    • Added “AfterSyncActions” which allow to write a value to a Node after the record set has been collected.

0.9.6 (released 2016-09-13)

  • Updated the S7 Device Plugin to version 1.0.1:
    • Added a S5 String datatype which doesn't have a 2-byte length prefix.

0.9.7 (released 2016-09-14)

  • Fixed a bug which prevented saving a Script Plugin.

0.9.8 (released 2016-09-20)

  • Added new “Directory” and “File” types for Nodes which represent a physical file on the host computer. This allows you to read that files using an OPC UA Client (as soon as the feature is implemented in the OPC UA Server Interface Plugin) or download it using the HTTP Access URL.
  • The plugin manager now automatically creates a backup of the plugin configuration if a plugin can start successfully. If a plugin fails to start, its previously backed-up configuration is used instead, if present.
  • Updated the Database Exchange Plugin to version 1.0.2:
    • Fixed a bug which lead to record sets being written twice if the same trigger was used in multiple data sets.

0.9.10 (released 2016-10-05)

  • Revised the Script Plugin API to be more sophisticated and more stable for future releases.
  • Added the OPC UA Client Device Plugin that allows you to connect to other OPC UA Servers and map their variables to CoDaBix®.
  • Updated the OPC UA Server Interface Plugin to version 1.0.2:
    • Supports accessing historic values of CoDaBix® Nodes through HDA (Historical Data Access)
    • Supports transferring Files that are represented by CoDaBix® file Nodes
  • The surface of the Configuration Web GUI has been reworked.

0.9.11 (released 2016-10-17)

  • Updated the OPC UA Server Interface Plugin to version 1.0.3:
    • The configuration scheme has been improved to match other plugins. The configuration is now located under the system Node “Interfaces”.
    • It is now possible to configure the application instance certificate, and to use “SignAndEncrypt” mode for an encrypted transport.
    • Fixed some bugs related to user authentication and refreshing Nodes.
  • Updated the OPC UA Client Device Plugin to version 1.0.1:
    • When reading multiple Nodes at once and one Node cannot be read, it will now get a value with a “Bad” status but the other values will be correctly read.
  • System-wide errors are now displayed immediately in the Configuration Web GUI (additionally to CodabixDebugLog.txt), so you don't have to close and open the log file manually.

0.9.12 (released 2016-10-18)

  • Fixed a problem with the Configuration Web GUI which occured when the system was configured to use a proxy Server.

0.9.13 (released 2016-10-21)

  • Fixed a bug which prevented the OPC UA Server Interface Plugin and the OPC UA Client Device Plugin from starting and which prevented installing CoDaBix® Compact as a service, if the CoDaBix® Compact process previously was terminated abnormally.

0.9.15 (released 2016-11-03)

  • The reliability of CoDaBix® Compact has been improved.
  • It is now possible to directly download files represented by file Nodes in the Configuration Web GUI by using the “Write a new value” button.
  • The browse function of the REST/JSON Interface Plugin now supports the ttl parameter for doing a synchronous read.