For a list of known issues in the current version, see Known Issues.
v1.5.0 (released 2023-07-28) (Changes compared to v1.4.21)
ImportNodes
and ExportNodes
that can be used to import or export nodes from/to an XML file, which is the same mechanism as using the “Export nodes as XML” and “Import nodes from XML” context-menu entries in the Codabix Web Config. /System
node, they will implicitely have read+write access to all nodes, as they can call the plugin's method nodes! /System
node if they shouldn't have read+write access to all nodes..xls
). NodeId
route parameter in the URL./api/rest/Nodes/{id}/execute
(provided that the user has read+write access to the method node).ExecuteNodeCommands
(provided that the user has read+write access to the method node).codabix.Blob
instance, instead of as Base64 string (e.g. with codabix.NodeValue.value
).codabix.Blob
that can be used to access Blob values.readAllBytesAsync
and writeAllBytesAsync
in the io.file
namespace that allow to access binary files using an ArrayBuffer
(e.g. to write them into a Blob node).options
parameter to method net.httpClient.sendAsync
which allows e.g. to specify that SSL/TLS errors should be ignored for testing purposes.v1.5.1 (released 2023-08-23)
Table per Node
.authentication: "mandatory"
or authentication: "optional"
in the options
parameter to fail with an internal server error.v1.5.3 (released 2023-09-04)
Purge
and some of the nodes to be deleted were system-generated (so the user didn't have the right to delete the node).v1.5.6 (released 2023-09-14)
Purge
and some of the nodes to be deleted were system-generated (so the user didn't have the right to delete the node). Additionally, when updating nodes, all properties (not only special ones) are checked for the user having the necessary rights, and ignoring the property otherwise, so that in such a case the import no longer fails.timeInterval
parameter is specified (like in the Dashboards app).v1.5.10 (released 2023-10-17)
DateTime
node is now displayed in ISO 8601 format with fractional seconds.Use History Value Streaming
(enabled by default) has been added, which specifies that history values should be streamed to the client when doing a HistoryRead. This means instead of having to read all values from the database at once and buffer them in the server before they can be sent to the client, they are now sent to the client (in chunks) as they are read from the database, which can significantly reduce memory usage in the server and allows faster response times. MaxHistoryConfigurationPoints
setting in the OPC UA Server is set to 1
, so that a session can have no more than one open history continuation point.v1.5.11 (released 2023-11-03)
[Audit]
entries to be logged to the CodabixLog.txt
file whenever a user makes changes in the Codabix node tree.v1.5.12 (released 2023-11-09)
Max History Streaming Continuation Points
has been added, which allows to define the max number of history continuation points when setting Use History Value Streaming
is enabled. This setting is used to limit the number of back-end database connections that an OPC UA session can “lock” by having open history continuation points. The default value is 2
.maxValueAge
, historyResolution
, maxHistoryValues
, and maxHistoryAge
can now be accessed.v1.5.13 (released 2023-11-16)
v1.5.14 (released 2023-11-20)
v1.5.15 (released 2023-12-06)
Please note: This release includes some minor breaking changes due to security improvements.
Normal
(in the project's Access Security settings) no longer includes write access to the log
subfolder of the project directory, but instead only allows read access. This is to ensure that the Codabix Admin user (or other users) can't overwrite the audit trail log (when enabled) that is intended to trace all node tree changes done by users. log
subfolder in a Script, you will have to add a separate Access Security entry in the project settings that allows write access for the file.codabix backup
command, specifying the --include-security-keys
option no longer automatically includes the project settings password key (used e.g. to encrypt the back-end database login password). To also include that key, the new option --include-project-settings-password-key
must additionally be specified. Debug
entry in the runtime log (CodabixLog.txt
), to allow tracing the steps especially for Active Directory authentication.CodabixLog.txt
log file, C0 and C1 control characters (except for HT, LF, CR) are now replaced, to ensure terminals cannot be manipulated with escape sequences when printing the log file.v1.5.16 (released 2023-12-15)
v1.5.17 (released 2024-01-12)
OUT
nodes.v1.5.18 (released 2024-02-02)
Path
property.Auto Reconnect
(enabled by default) has been added that allows to specifiy whether to automatically reconnect after the connection was closed or couldn't be established.null
value (instead of a string) into the transmit buffer.v1.5.19 (released 2024-02-07)
io.storagemodel
namespace that contains types for accessing FTP servers.v1.5.20 (released 2024-03-05)
Variant
and Variant-Array
, where the former allows to write any primitive (non-array) value except for CodabixObject
, and the latter allows to write an array where each element can be any of the supported primitive (non-array) types except for CodabixObject
, including null values.ColumnsSet
nodes to the new Variant-Array
value type, so that it's possible to read columns where one of the rows has a NULL
value.UserGroups
entries returned by the /api/rest/Users/authenticate
endpoint now contain the group's name via the name
property.FtpStorage
constructor (added in v1.5.19) not to check whether outbound connections are allowed in the Access Security settings of the Codabix Project Settings.v1.5.21 (released 2024-03-21)
ColumnsSet
folder whose Value Type has been set to Variant-Array
(introduced in v1.5.20) will now keep using that type, instead of being changed back to the original Value Type that doesn't allow to read NULL
values.receiveTimestamp
is now included that returns the receive timestamp of the value.receiveTimestamp
is now included that returns the receive timestamp of the value. Codabix.Web.SignalR
NuGet package in a .NET application, this change will require at least version 1.0.0-preview9-240322 in order to be able to read history values.v1.5.22 (released 2024-04-12)
CreateNode
endpoint to return a node ID format that is not parsable when passing it back to the interface.globalIdentifier
and token
have been added when reading a node.CreateNode
endpoint to return a node ID format that is not parsable when passing it back to the interface.globalIdentifier
and token
have been added when reading a node.v1.5.23 (released 2024-04-15)
UserName
and UserID
in the Data
folder of Change
events, which contain the user_name
and user_id
values.v1.4.0 (released 2022-07-28) (Changes compared to v1.3.12)
/dashboards/
was updated to version 1.1.0 which contains improvements.MaxHistoryValues
and MaxHistoryAge
that can be used to limit the number/age of history values for a node. ClientID
. If not specified, a new ID is generated for each session.Upload
method transfers a file from the machine to Codabix, while the Download
method transfers a file from Codabix to the machine.Operator Panel
to be used for S7-300 and S7-400 even if Programmer Device
was selected.Nodes
folder. When the folder is not empty while the channel is started, that folder's child nodes are then directly exposed in the OPC UA Server's Objects
folder, instead of providing a Codabix
folder that contains the Codabix root nodes.runtime.convert
which contains methods to convert a Base64 string (that is returned e.g. returned when accessing a Blob value) to an ArrayBuffer
, and vice versa.v1.4.1 (released 2022-08-18)
NodePath
, that contains the absolute node path of the read nodeNodePath
, that contains the absolute node path of the read nodev1.4.2 (released 2022-09-14)
v1.4.3 (released 2022-10-12)
v1.4.4 (released 2022-11-04)
/
, which was also used in previous versions.True
and False
values) to nodes (e.g. device variables) at a specified interval.v1.4.5 (released 2022-11-09)
admin
as username (as e.g. in the Codabix Dashboards application).admin
as username (as e.g. in the Codabix Dashboards application).v1.4.6 (released 2022-12-14)
Server Diagnostics Enabled
(in the Diagnostics
folder) that allows to enable Server Diagnostics, so that e.g. the currently active Sessions are displayed in the OPC UA Server
object.v1.4.7 (released 2023-01-16)
v1.4.8 (released 2023-02-07)
/System/Environment
folder contains new subfolders Backend
and History
which monitor the status of the back-end and history database. &displayMode=kiosk
)&showTitle=false
)v1.4.9 (released 2023-02-27)
v1.4.10 (released 2023-03-16)
GETINFO
response files.GETINFO
response files and session response files produced by certain machines.udev
rules file.v1.4.12 (released 2023-04-05)
Min Session Number
setting is now honored.v1.4.13 (released 2023-04-19)
IsReadOnly="True"
in the XML file used to import nodes, by using a script to set the isReadOnly
property to true
, or by using the REST/SignalR Interface), in which case a user cannot change any property of the node (except for IsReadOnly
), cannot (un-)link it, and cannot write values to it.NO_MORE_SPACE_IN_FG
), history values whose CreationTimestamp
is less than the minimum CreationTimestamp
plus 24 hours are now automatically deleted, to ensure new history values can be inserted again.File
to another type.DeleteRows
has been added which can be used to execute a DELETE FROM …
SQL statement for the table. You can specify the corresponding WHERE
clause in the DeleteSqlExpression
table setting.v1.4.15 (released 2023-05-16)
SelectClause
of an EventFilter
(for an event subscription) to be added.v1.4.16 (released 2023-05-17)
Check Connection
which allows to check whether a TCP connection to the PLC can be established, and display the state in the Channel Status (like for other device plugins). v1.4.17 (released 2023-06-14)
logger
functions) after which the string is truncated to 5000 chars.v1.4.20 (released 2023-07-06)
EventType
node for alarms from Int32
to String
, to handle machines that incorrectly write a text instead of a number for the alarm_number
field.GETINFO
requests can now use the response mode May Linger
.Read Holding Register
function (03) instead of the Read Coil
function (01), as not all Modbus devices support the latter.True
, disables the optimization when browsing the server, which would skip nodes that represent an array element.v1.4.21 (released 2023-07-13)
v1.4.22 (released 2023-08-23)
Table per Node
.v1.3.0 (released 2021-12-16) (Changes compared to v1.2.6)
Allow outbound connections
has been added to the Codabix Access Security Settings, which can be disabled to disallow outbound socket and serial port connections. forceUpdate
flag when creating a subscription.DOWNLOAD
and UPLOAD
commands.v1.3.1 (released 2021-12-20)
ForceUpdate
is set to False
in the NodeValueSubscriptionParameters
, so that a value from the ValueChanged
event is only sent to the client if the value has actually changed (if IsValueChanged
is True
), in order to reduce network traffic.v1.3.2 (released 2022-01-12)
schema
to the <DbConnection>
element, which can be used to specify the table schema (e.g. for MSSQL, when it is not dbo
).PerformRead
is set to true
, or when using a batch read) to fail.NoAccess
.net.httpClient.connectWebSocketAsync()
which caused no timeout to be applied, which could cause a hang in specific circumstances (e.g. when the network connection was interrupted or the server never sends a response). v1.3.3 (released 2022-01-13)
v1.3.4 (released 2022-01-31)
Locales
to the application settings which can be used to specify the supported locales.AutoAcceptUntrustedCertificates
is true
(the default), other certificate errors (e.g. expired certificates) are ignored as well, as the connection is already no longer secure.BadNodeIdUnknown
to indicate that the monitored item is no longer working, instead of erroneously displaying a stale value with Good
status.v1.3.5 (released 2022-02-10)
v1.3.6 (released 2022-03-09)
v1.3.7 (released 2022-04-20)
v1.3.8 (released 2022-04-25)
v1.3.9 (released 2022-05-04)
v1.3.10 (released 2022-05-20)
get
to the inputArguments
and outputArguments
arrays of NodeCommandContext
, so that it is possible to retrieve a node argument by name.v1.3.12 (released 2022-06-20)
Use Break Detection
which, when enabled, regularly sends GETINFO
commands to the machine to detect whether the machine lost active reports/events, and restart them in that case.v1.2.0 (released 2021-09-29) (Changes compared to v1.1.6)
NO_COLOR
environment variable has been added to the Codabix Shell application, in order to disable virtual terminal sequences (“ANSI color”) when that variable is present.Command Response Mode
is set to MayLinger
.Alarms + Events
folder.i=24
), built-in structured datatypes like LocalizedText
, DataValue
, Range
are now fully serialized as JSON.i=24
) in the path (JSON format) of their OUT argument nodes so that built-in structured datatypes like LocalizedText
, DataValue
, Range
are serialized as JSON.Columns
, there is now a folder ColumnsSet
that will also contain column nodes after browsing the database/table, but with array types. This allows you to read a whole result set (multiple rows) from the table, where then the array for each node contains the values for this column from each row that was read.CHAR(36)
column from being read as string when using a MySQL or MariaDB database.Read
method on file nodes.Access-Control-Allow-Credentials
is no longer sent for security reasons because it isn't necessary for this application. For browser-based SignalR clients, you can specify "withCredentials": false
in the object used by withUrl()
.net.ping.sendAsync
that allows you to send an ICMP echo request.net.registerHttpRoute()
now has an additional options
parameter that can be used to enable/force user authentication. If enabled, the client can acquire a token from the REST Interface v2 and then send it as Authorization: Bearer <token>
header. Information about the authenticated user can then be retrieved from the net.HttpContext.user
property.expectContinue
to net.httpClient.HttpRequestMessage
to allow to specify that an Expect: 100-continue
header is to be sent, in order to wait for a response from the server before sending the request body.timer.delayAsync
has been improved for low values.v1.2.1 (released 2021-10-14)
v1.2.2 (released 2021-10-18)
net.RawWebSocket.receiveAsync
which could lead to returning immediately without receiving a message, or to swallowing an empty message.v1.2.3 (released 2021-10-28)
ConditionId
node is now automatically created when browsing a event whose type is derived from ConditionType
.v1.2.4 (released 2021-11-26)
v1.2.6 (released 2021-12-01)
APPEND
mode to ensure the report data is not overwritten.v1.2.7 (released 2021-12-16)
forceUpdate
flag when creating a subscription.v1.1.0 (released 2021-05-07) (Changes compared to v1.0.10)
/dashboards/
.CoDaBix.*.Settings.xml
to Codabix.*.Settings.xml
. When you upgrade from a previous Codabix version, Codabix automatically tries to rename the files, but you should check if you used the previous file names in other applications.Precision
property of a node has been replaced with the Format
property that can contain a .NET format string for numeric and DateTime
/TimeSpan
value types. Precision
values are automatically converted to corresponding Format
values.ReceiveBuffer
node for connection events: A Null
value with status Good
once when the connection is established, and a Null
Value with status Bad
once the connection is closed.ReceiveBuffer
and TransmitBuffer
node continue to use UTF-8).ReadValueMode
that controls how the REPORT
for reading values is generated.OperationTimeout
that specifies how long to wait for read/write operations to complete before aborting them.SELECT
command to read column nodes, by specifying a LIMIT 1
clause (for MySQL/PostgreSQL/SQLite) or TOP (1)
(for MSSQL) as only the first returned row will actually be used./api/rest
. It provides a RESTful API to access and manage a Codabix instance.v1.1.1 (released 2021-06-02)
NO_BACKSLASH_ESCAPES
so that backslashes within string literals are not treated as escape character, which makes the behavior consistent with other DBs like PostgreSQL, SQLite, MSSQL. ReadSqlExpression
or WriteSqlExpression
and need specify a string literal from custom data.ArrayDimensions
attribute is now correctly specified for variable nodes representing an array value.v1.1.2 (released 2021-06-11)
v1.1.3 (released 2021-07-26)
v1.1.4 (released 2021-08-23)
v1.1.5 (released 2021-09-20)
v1.1.6 (released 2021-09-29)
v1.1.7 (released 2021-10-14)
v1.1.8 (released 2021-11-30)
v1.0.0 (released 2020-12-11)
CoDaBix-Shell[.exe]
to codabix[.exe]
CoDaBix.exe
to codabix-ui.exe
codabix --help
to get a list of possible commands and arguments. --projectDirectory:<path>
to --project-directory=<path>
.--remoteHttp
has been removed from the Codabix Shell application. Instead of using this argument, you can now configure remote HTTP bindings (including https
) via the project settings.Windows HTTP Server API
(formerly HTTP.sys
) is now only supported on Windows 10 Version 1607/Windows Server 2016, or higher. On older Windows versions, you can use Embedded (Kestrel)
instead.Windows HTTP Server API
(which is only supported on Windows), instead of silently switching to Kestrel, Codabix now refuses to start. You can change the mode by editing the Project Settings in the Codabix Shell application.SUDO_*
environment variables, to ensure files created by the service will get the correct owner.https
binding in the project settings, a self-signed SSL certificate is automatically generated for testing purposes.X-Frame-Options
HTTP header sent by the web server has been replaced with a Content-Security-Policy
header containing a frame-ancestors
directive, only allowing pages of the same origin to embed content in a frame. project.cbxproj
settings file and adding string entries to the ContentSecurityPolicyFrameAncestorSources
array.Action
and StartMode
have been unified into a single IsActive
node. This ensures that after restarting Codabix, a module or channel will start if and only if it was started when Codabix was shut down.Good
is now returned as result of the write operaton, rather than the status of the written value. This is because the value to be written can have a status Bad
, but writing that value into the node actually succeeded, and the returned status should indicate whether the write succeeded.S7 TCP-IP Device
to S7 Device
. If you use the node path /System/Devices/S7 TCP-IP Device
e.g. in a script, you will need to update it to /System/Devices/S7 Device
.The specified CPU could not be found
, you may need to adjust the rack/slot settings to the correct values.LInt
(Int64
), LWord
(UInt64
), and LReal
(Double
)..fgg
).BOOL
types), along with a new path syntax that allows to specify the bit range.GETID
command) to automatically create available parametersREPORT
command that records a single sample) SET
command)CoDaBix.CsvFileServer.Settings.xml
to CoDaBix.CsvExchangePlugin.Settings.xml
. When you upgrade from a previous Codabix version, Codabix automatically tries to rename the file, but you should check if you used the previous file name in other applications.ColumnIndex
attribute for a <Binding>
element when the column index is the same as the element index.LocalSystem
) than the user who installed the service. In order for Windows Authentication to work, you will need to switch the user account under which the service runs in the Services application.OPC-UA Server Interface
to OPC UA Server Interface
. If you use the node path /System/Interfaces/OPC-UA Server Interface
e.g. in a script, you will need to update it to /System/Interfaces/OPC UA Server Interface
.TransportProtocol
that allows you to use HTTPS instead of OPC UA TCP (opc.tcp
) as transport protocol.OPC-UA Client Device
to OPC UA Client Device
. If you use the node path /System/Devices/OPC-UA Client Device
e.g. in a script, you will need to update it to /System/Devices/OPC UA Client Device
.Variant
data type are now created as String
nodes in Codabix, rather than Null
, to allow to read values."ct"
property (category) of node values has been removed.doNotCreateSubscription
of codabix.Node.addValueChangedEventListener
has been inverted and renamed to createSubscription
. If you were previously specifying true
for this parameter to not create a subscription, you should change the argument to false
.fields
) was added to the constructor of codabix.Type
after typeCode
.codabix.Node.path
and codabix.NodeStructure.path
was changed from string | null
to NodePathType
(equal to NodeValueType
) because it's now possible to use any type as path type, not only string types.codabix.Node.registerCommand
that allows you to register a node command (callback) for nodes of type Method
, including support for arguments passed to the method when calling it. net.httpClient.connectWebSocketAsync
for connecting to WebSocket servers.codabix.TypeMember
and codabix.TypeField
.codabix.Type.getFields
that returns codabix.TypeField
instances if the Type
has type code Object
.codabix.Object
that represents structured data and can be stored in nodes with an object value type.codabix.NodeReader.readValuesAsync
has been changed from Promise<(NodeValue | null)[] | null | undefined>
to Promise<void>
, because the returned values are actually not used since version 0.18. Existing scripts using the previous return type will still work after updating to this version.net.registerHttpRoute
without causing the script to be stopped.Object.setPrototypeOf
is now supported.Promise
-based methods has been improved.v1.0.1 (released 2020-12-14)
e.isValueChanged
in a ValueChanged
event listener in a script, it would return true
even if the value was equal to the previous value.v1.0.2 (released 2020-12-17)
Bad
status when the channel is currently stopped.v1.0.3 (released 2021-01-13)
PropertyChanged
and ChildrenChanged
events are now raised correctly when (un-)linking a node.v1.0.4 (released 2021-02-05)
v1.0.5 (released 2021-02-10)
v1.0.6 (released 2021-03-02)
v1.0.7 (released 2021-03-10)
v1.0.8 (released 2021-03-12)
v1.0.9 (released 2021-04-09)
io.file.readAllTextAsync()
which incorrectly returned a UTF-8 BOM at the beginning of the file as a U+FEFF character as part of the string.v1.0.10 (released 2021-05-07)
DTL
data type (variable type DateTimeLong
) that can be used in Codabix with a variable using the DateTime
value type.Char[10]
with a String
variable, where only a single character would be read.codabix.writeNodeValueAsync()
) were on the stack, which could cause a crash due to a stack overflow in certain cases.0.23.0 (released 2020-06-25)
dashboard
, log
, plugins
, userdata
, webfiles
codabixdb.db
, codabixdb.db-*
, codabixhistorydb.db
, codabixhistorydb.db-*
, project.cbxproj
, project.cbxkeys
0.23.1 (released 2020-07-30)
--namedInstance:<name>
command line argument to specify an instance name.LocalizedText
Array type.0.23.2 (released 2020-09-09)
0.23.3 (released 2020-10-19)
0.23.4 (released 2020-10-30)
0.23.5 (released 2020-11-13)
0.23.7 (released 2021-02-10)
Browse
method node of each channel now has two additional IN
argument nodes that can be used to control the browsing behavior.0.22.0 (released 2020-04-27)
S7DevicePlugin
folder of the project directory can still be used to automatically synchronize channels, with the following changes:CoDaBix.S7DevicePlugin.Settings.xml
) for all channels, each channel now uses its own file with the file name format CoDaBix.S7DevicePlugin.<ChannelName>.Settings.xml
. When upgrading from an ealier CoDaBix version, the previously used file will automatically be split into separate files per channel.ChangeType
attribute has been removed. In order to delete a variable, you can just remove it in the S7 XML Configuration File; except when starting the S7 Plugin (i.e. when starting CoDaBix), where variables missing in the S7 XML Configuration File are added to the file.CoDaBix.S7DevicePlugin.Settings.xml
file in the currently set CoDaBix project directory, you can now manually open and save S7 XML Configuration Files from arbitrary locations.PATCH
as HTTP method for method net.httpClient.sendAsync
.0.22.3 (released 2020-05-25)
0.22.4 (released 2020-06-25)
0.22.5 (released 2020-07-29)
0.21.0 (released 2019-12-18)
Environment
in the System
path which contains nodes providing information about the CoDaBix environment, including the CoDaBix version, project directory/name, and the current system time.Hostname
as database file path).0.21.2 (released 2020-01-15)
LogNodeManagerTrace
has been added to log the time spend in the node manager for operations like updating node values.0.21.5 (released 2020-05-25)
0.20.0 (released 2019-07-22)
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.Server Configuration
setting folder that allows to specify the minimum and maximum session timeout.Diagnostics
setting folder that allows to enable and configure diagnostic logging for various events related to Sessions, Read/Write, Subscriptions, and MonitoredItems.unit
, precision
, scalingFactor
, scalingOffset
, maxValueAge
.net.httpClient.sendAsync()
that allows you to send HTTP requests to external servers.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)
0.20.2 (released 2019-08-19)
Medium
or High
to be saved with Go Live.0.20.4 (released 2019-09-16)
Bad
value is now written to the node, and the client tries repeatedly to recreate the subscription.0.20.5 (released 2019-09-25)
0.20.6 (released 2019-10-16)
LocalizedText
by using a new JSON path format when browsing the server.0.20.7 (released 2019-10-21)
0.20.8 (released 2019-10-24)
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)
0.20.12 (released 2019-11-19)
Edge
or ValueChange
trigger to not work when using mode SystemToFile
.0.20.13 (released 2020-01-15)
0.19.0 (released 2019-05-29)
plugins
, log
, userdata
, webfiles
, dashboard
.sudo
isn't available.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.opc.com://<hostname>(:<port>)/<progId>/<classId>
.${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.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.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.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.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.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. <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).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.codabix.executeNodeCommandsAsync()
.time
datatype is now mapped to the CoDaBix TimeSpan
value type.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)
\
).0.18.6 (released 2019-02-08)
/dashboard/
. It can also be displayed within the Web Configuration GUI.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.codabix.security.decryptPassword()
.OpcUaTraceLog.txt
which can help you to diagnose OPC UA connectivity issues.codabix.NodeReader
for a node.Variables
folder if the node or one of its children contained a virtual link.SubscriptionType
to OpcSubscription
now correctly use an OPC-based subscription instead of polling.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). 0
is set which means monitored items use a single subscription.Enumeration
DataType are now created in CoDaBix as Int32
nodes.HA Configuration
are now created as datapoint nodes instead of as folder nodes.S5 Time
are now correctly read when they have the value 0
.Good
status after stopping the channel, even when the read actually failed.password
attribute.edge
or valueChange
trigger or for an AfterSyncAction
could not be found; instead a warning is logged.Password
attribute.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.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).value
property of a codabix.NodeValue
containing a TimeSpan
now returns the milliseconds as number
, instead of a formatted string
value.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.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.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.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
.historyResolution
has been added to types codabix.Node
and codabix.NodeStructure
. Additionally, properties historyOptions
and historyInterval
have been added to codabix.Node
.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.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.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.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)
0.18.8 (released 2019-02-14)
0.18.9 (released 2019-03-04)
0.18.10 (released 2019-03-11)
0.18.11 (released 2019-03-18)
0.18.13 (released 2019-04-15)
BadWriteNotSupported
status code according to the OPC UA specification.0.18.14 (released 2019-04-25)
0.18.15 (released 2019-05-29)
0.17.0 (released 2018-07-27)
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.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).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).Good
status.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.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.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.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.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).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).codabix.Node.virtualLinkDestination
has been added that allows you to get the virtual link destination of a Node.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.timer.scheduleCallback()
has been replaced by the method codabix.scheduleCallback()
because it is actually a CoDaBix-specific function and not a regular timer function.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).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)
0.17.2 (released 2018-08-13)
0.17.5 (released 2018-09-03)
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
.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)
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)
0.16.0 (released 2018-04-13)
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.CodabixBlob
is now mapped to the OPC UA data type ByteString
.AutoAcceptUntrustedCertificates
setting to be ignored.ValueRank
attribute.ByteString
is now mapped to the type CodabixBlob
.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.SystemToFile
.ColumnIndex
attribute was ignored when synchronizing a CSV file to CoDaBix.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.Guid
has been added which allows to generate a new GUID string.io.util.encodeXml()
has been moved to xml.encode()
. Existing scripts using the previous method will still work after updating to this version.0.16.2 (released 2018-05-14)
ValueChange
event from that device, e.g. in a Script using timer.schedule()
.ReceiveBuffer
or the TransmitBuffer
node to Blob
on start-up if they previously have been set to String
by the user.codabix.subscribeNodes()
and codabix.unsubscribeNodes()
with which you can explicitely create a subscription for one or more nodes, and specify the subscription interval.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)
0.16.4 (released 2018-06-20)
0
as port when using Microsoft SQL Server, in which case it will try to connect to the default SQL Server instance.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 (released 2018-01-18)
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). http://<hostname>/
to view the custom web page.userdata
where you can store custom files. This folder is guaranteed to not be used differently in future CoDaBix® versions.codabix.security.encryptPassword()
has been improved.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.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.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.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.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. net.RawWebSocket
interface when running CoDaBix® Compact on Windows 8 / Windows Server 2012 or higher.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.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.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 (released 2017-07-13)
codabix.security.encryptPassword()
that are stored e.g. in Scripts.log
folder instead of logfiles
.CustomerName
attribute no longer needs to be specified in the XML configuration file.NodeChangeCompleted
event to the codabix
namespace which is raised when a series of multiple ValueChanged
, PropertyChanged
or ChildrenChanged
events of Nodes has completed.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.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.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)
0.14.2 (released 2017-09-06)
Basic256Sha256
security policy algorithm.Basic256Sha256
security policy algorithm.codabix.NodeValueConverter
to allow to return undefined
additionally to null
.0.14.3 (released 2017-09-28)
0.14.4 (released 2017-10-09)
0.14.12 (released 2017-11-24)
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).0.14.13 (released 2017-12-20)
OperationTimeout
value is now correctly applied for connect attempts.ns=2;s=ABC
which is also used by other OPC UA tools.ValueRank
attribute for Datapoint Nodes is now correctly specified for array types.0.12.0 (released 2017-05-09)
Char
.async
functions on method calls returning a Promise
object, where the returned object is not await
ed 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)
valueChange
has been added which will fire when a Node's value has changed.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.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)
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 (released 2017-02-27)
0.11.1 (released 2017-04-12)
commandTimeout
to the <DbConnection>
element in the XML configuration file.codabix.Node.getNodePath()
has been implemented to retrieve the absolute Node path of a Node.codabix.readNodeHistoryValues()
has been implemented to retrieve history values of a Node.0.10.0 RC1 (released 2016-12-21)
Action
Node.Date
, DateTime
, Time
, TimeOfDay
and S5Time
datatypes has been added.<CodabixDataDir>
) has been renamed from "DataBaseExchangePlugin"
to "DatabasePlugin"
."CoDaBix.DataBaseExchangePlugin.Settings.xml"
to "CoDaBix.DatabasePlugin.Settings.xml"
.timer.setImmediate()
has been replaced with the method timer.scheduleCallback()
which is more efficient.timer.sleepAsync()
has been renamed to timer.delayAsync()
.NodeValue
class now supports Date
instances to work with the CoDaBix® DateTime
type.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.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)
io.file
and io.directory
namespacesconnectTimeout
and maxPoolSize
to the <DbConnection>
element in the XML configuration file.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)
catch
or finally
clauses.0.10.4 (released 2017-02-09)
0.9.0
0.9.2
0.9.3
0.9.4 (released 2016-09-07)
<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"
.<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"
.0.9.5 (released 2016-09-08)
0.9.6 (released 2016-09-13)
0.9.7 (released 2016-09-14)
0.9.8 (released 2016-09-20)
0.9.10 (released 2016-10-05)
0.9.11 (released 2016-10-17)
0.9.12 (released 2016-10-18)
0.9.13 (released 2016-10-21)
0.9.15 (released 2016-11-03)
browse
function of the REST/JSON Interface Plugin now supports the ttl
parameter for doing a synchronous read.