ANNEX I - Manual ThingWorx Kepware Edge

Download as pdf or txt
Download as pdf or txt
You are on page 1of 169

© 2020 PTC Inc. All Rights Reserved.

ThingWorx Kepware Edge 2

Table of Contents
Table of Contents 2

Introduction 13

ThingWorx Kepware Edge System Requirements 13

API Architecture 14

Installing ThingWorx Kepware Edge 14

Application Data 15

ThingWorx Kepware Edge Licensing 15

Command Line Interface — edge_admin 17

Components and Concepts 17

What is a Channel? 18

What is a Device? 18

What is a Tag? 19
Tag Properties — General 19

System Tags 21

Property Tags 29

Statistics Tags 30
Dynamic Tags 32
Tag Properties — Scaling 33

What is a Tag Group? 34


Tag Group Properties 34

What is the Alias Map? 35


Alias Properties 35

What is the Event Log? 35

Properly Name a Channel, Device, Tag, and Tag Group 35

Getting Started 36

Managing ThingWorx Kepware Edge Services 38

Documentation Endpoint 38

Configuration API Service — Endpoints 39

Enabling Interfaces 40

Interfaces and Connectivity 41

OPC UA Interface 41

ThingWorx Native Interface 42

IoT Gatew ay — M QTT 42

Configuring the IoT Gatew ay 43

www. ptc.com
3 Th in gWorx Kep ware Ed ge

Configuring Self-Signed Certificates for MQTT Agent 45

Configuration API — Project Example 46

Configuration API Allen-Bradley ControlLogix Example 47

Configuration API Modbus Ethernet Example 49

Configuration API Siemens TCP/IP Ethernet Example 50

Configuration API ThingWorx Connection 52

Configuration API Service 53


Security 53
Documentation 53

Configuration API Service — Invoking Services 53

Project Properties (via API Commands) 58

Project Properties — ThingWorx 61

Project Properties — OPC UA 63

Channel Properties — Configuration API 65

Configuration API Service — Creating a Channel 66

Configuration API Service — Updating a Channel 66

Configuration API Service — Removing Channel 67

Device Properties — Configuration API 67

Configuration API Service — Creating a Device 69

Configuration API Service — Updating a Device 69

Configuration API Service — Removing a Device 70

Configuration API Service — Creating a Tag 71

Configuration API Service — Updating a Tag 71

Configuration API Service — Removing a Tag 73

Configuration API Service — Creating a Tag Group 73

Configuration API Service — Updating a Tag Group 74

Configuration API Service — Removing a Tag Group 75

Configuration API Service — User Management 75

Configuration API Service — Creating a User 80

Configuration API Service — Creating a User Group 80

Configuration API Service — Updating a User 80

Configuration API Service — Updating a User Group 81

Configuration API Service — Configuring User Group Project Permissions 82

OPC UA Endpoint 82

Configuration API Service — Creating a UA Endpoint 85

Configuration API Service — Updating a UA Endpoint 86

www. ptc.com
ThingWorx Kepware Edge 4

Configuration API Service — Removing a UA Endpoint 86

Configuration API Service — Data 86

Configuration API Service — Content Retrieval 90

Configuration API Service — Concurrent Clients 95

Using UaExpert 96

Event Log M essages 99

Configuration API Service — Response Codes 99

Configuration API Service — Logging 99


The Config API SSL certificate contains a bad signature. 100
The Config API is unable to load the SSL certificate. 100
Unable to start the Config API Service. Possible problem binding to port. 100
The Config API SSL certificate has expired. 100
The Config API SSL certificate is self-signed. 101
The configured version of TLS for the Configuration API is no longer considered secure. It is
recommended that only TLS 1.2 or higher is used. 101
Configuration API started without SSL on port <port number>. 101
Configuration API started with SSL on port <port number>. 101
The <name> device driver was not found or could not be loaded. 101
Unable to load the '<name>' driver because more than one copy exists ('<name>' and
'<name>'). Remove the conflicting driver and restart the application. 101
Invalid project file. 102
Failed to open modem line '<line>' [TAPI error = <code>]. 102
Unable to add channel due to driver-level failure. 102
Unable to add device due to driver-level failure. 102
Version mismatch. 102
Invalid XML document: 103
Unable to load project <name>: 103
Unable to backup project file to '<path>' [<reason>]. The save operation has been aborted.
Verify the destination file is not locked and has read/write access. To continue to save this pro-
ject without a backup, deselect the backup option under Tools | Options | General and re-save
the project. 103
<feature name> was not found or could not be loaded. 104
Unable to save project file <name>: 104
Device discovery has exceeded <count> maximum allowed devices. Limit the discovery range
and try again. 104
<feature name> is required to load this project. 104
The current language does not support loading XML projects. To load XML projects, change the
product language selection to English in Server Administration. 104
Unable to load the project due to a missing object. | Object = '<object>'. 104
Invalid Model encountered while trying to load the project. | Device = '<device>'. 105

www. ptc.com
5 Th in gWorx Kep ware Ed ge

Cannot add device. A duplicate device may already exist in this channel. 105
Auto-generated tag '<tag>' already exists and will not be overwritten. 105
Unable to generate a tag database for device '<device>'. The device is not responding. 105
Unable to generate a tag database for device '<device>': 106
Auto generation produced too many overwrites, stopped posting error messages. 106
Failed to add tag '<tag>' because the address is too long. The maximum address length is <num-
ber>. 106
Line '<line>' is already in use. 106
Hardware error on line '<line>'. 106
No comm handle provided on connect for line '<line>'. 107
Unable to dial on line '<line>'. 107
Unable to use network adapter '<adapter>' on channel '<name>'. Using default network adapter.107
Rejecting attempt to change model type on a referenced device '<channel device>'. 108
TAPI line initialization failed: <code>. 108
Validation error on '<tag>': <error>. 108
Unable to load driver DLL '<name>'. 108
Validation error on '<tag>': Invalid scaling parameters. 108
Unable to apply modem configuration on line '<line>'. 109
Device '<device>' has been automatically demoted. 109
<Source>: Invalid Ethernet encapsulation IP '<address>'. 109
The '<product>' driver does not currently support XML persistence. Save using the default file
format. 110
Unable to load plug-in DLL '<name>'. 110
The time zone set for '<device>' is '<zone>'. This is not a valid time zone for the system. Default-
ing the time zone to '<zone>'. 110
Unable to load driver DLL '<name>'. Reason: 110
Unable to load plug-in DLL '<name>'. Reason: 111
Channel requires at least one number in its phonebook for automatic dialing. | Channel = '<chan-
nel>'. 111
Channel requires Auto-Dial enabled and at least one number in its phonebook to use a shared
modem connection. | Channel = '<channel>'. 111
The specified network adapter is invalid on channel '%1' | Adapter = '%2'. 112
No tags were created by the tag generation request. See the event log for more information. 112
The tag import filename is invalid, file paths are not allowed. 112
TAPI configuration has changed, reinitializing... 112
<Product> device driver loaded successfully. 112
Starting <name> device driver. 112
Stopping <name> device driver. 113
Dialing '<number>' on line '<modem>'. 113
Line '<modem>' disconnected. 113

www. ptc.com
ThingWorx Kepware Edge 6

Dialing on line '<modem>' canceled by user. 113


Line '<modem>' connected at <rate> baud. 113
Remote line is busy on '<modem>'. 113
Remote line is not answering on '<modem>'. 113
No dial tone on '<modem>'. 113
The phone number is invalid (<number>). 113
Dialing aborted on '<modem>'. 113
Line dropped at remote site on '<modem>'. 113
Incoming call detected on line '<modem>'. 114
Modem line opened: '<modem>'. 114
Modem line closed: '<modem>'. 114
<Product> device driver unloaded from memory. 114
Line '<modem>' connected. 114
Simulation mode is enabled on device '<device>'. 114
Simulation mode is disabled on device '<device>'. 114
Attempting to automatically generate tags for device '<device>'. 114
Completed automatic tag generation for device '<device>'. 114
Initiating disconnect on modem line '<modem>'. 114
A client application has enabled auto-demotion on device '<device>'. 115
Data collection is enabled on device '<device>'. 115
Data collection is disabled on device '<device>'. 115
Object type '<name>' not allowed in project. 115
Created backup of project '<name>' to '<path>'. 115
Device '<device>' has been auto-promoted to determine if communications can be re-estab-
lished. 115
Failed to load library: <name>. 115
Failed to read build manifest resource: <name>. 115
The project file was created with a more recent version of this software. 116
A client application has disabled auto-demotion on device '<device>'. 116
Phone number priority has changed. | Phone Number Name = '<name>', Updated Priority = '<pri-
ority>'. 116
Tag generation results for device '<device>'. | Tags created = <count>. 116
Tag generation results for device '<device>'. | Tags created = <count>, Tags overwritten =
<count>. 116
Tag generation results for device '<device>'. | Tags created = <count>, Tags not overwritten =
<count>. 116
Access to object denied. | User = '<account>', Object = '<object path>', Permission = 116
User moved from user group. | User = '<name>', Old group = '<name>', New group = '<name>'. 116
User group has been created. | Group = '<name>'. 116
User added to user group. | User = '<name>', Group = '<name>'. 117

www. ptc.com
7 Th in gWorx Kep ware Ed ge

User group has been renamed. | Old name = '<name>', New name = '<name>'. 117
Permissions definition has changed on user group. | Group = '<name>'. 117
User has been renamed. | Old name = '<name>', New name = '<name>'. 117
User has been disabled. | User = '<name>'. 117
User group has been disabled. | Group = '<name>'. 117
User has been enabled. | User = '<name>'. 117
User group has been enabled. | Group = '<name>'. 117
Password for user has been changed. | User = '<name>'. 117
The endpoint '<url>' has been added to the UA Server. 117
The endpoint '<url>' has been removed from the UA Server. 118
The endpoint '<url>' has been disabled. 118
The endpoint '<url>' has been enabled. 118
User information replaced by import. | File imported = '<absolute file path>'. 118
User has been deleted. | User = '<name>'. 118
Group has been deleted. | Group = '<name>'. 118
Account '<name>' does not have permission to run this application. Contact the system admin-
istrator. 118
Changing runtime operating mode. 118
Runtime operating mode change completed. 118
Shutting down to perform an installation. 118
OPC ProgID has been added to the ProgID Redirect list. | ProgID = '<ID>'. 119
OPC ProgID has been removed from the ProgID Redirect list. | ProgID = '<ID>'. 119
The invalid ProgID entry has been deleted from the ProgID Redirect list. | ProgID = '<ID>'. 119
Password for administrator was reset by the current user. | Administrator name = '<name>',
Current user = '<name>'. 119
User moved from user group. | User = '<name>', Old group = '<name>', New group '<name>'. 119
User group has been created. | Group = '<name>'. 119
User added to user group. | User = '<name>', Group = '<name>'. 119
User information replaced by import. | File imported = '<absolute file path>'. 119
User group has been renamed. | Old name = '<name>', New name = '<name>'. 119
Permissions definition has changed on user group. | Group = '<name>'. 120
User has been renamed. | Old name = '<name>', New name = '<name>'. 120
User has been disabled. | User = '<name>'. 120
User group has been disabled. | Group = '<name>'. 120
User has been enabled. | User = '<name>'. 120
User group has been enabled. | Group = '<name>'. 120
Failed to reset password for administrator. | Administrator name = '<name>'. 120
Password reset for administrator failed. Current user is not a Windows administrator. | Admin-
istrator name = '<name>', Current user = '<name>'. 120

www. ptc.com
ThingWorx Kepware Edge 8

Password for user has been changed. | User = '<name>'. 120


Attempt to add item '<name>' failed. 120
No device driver DLLs were loaded. 121
Invalid project file: '<name>'. 121
Could not open project file: '<name>'. 121
Rejecting request to replace the project because it's the same as the one in use: '<name>'. 121
Filename must not overwrite an existing file: '<name>'. 121
Filename must not be empty. 121
Filename is expected to be of the form subdir/name.{json, <binary ext>, <secure binary ext>} 121
Filename contains one or more invalid characters. 121
Saving project files with Project File Encryption enabled as .OPF file type is not supported. Sup-
ported file types are .SOPF and .JSON. 121
Saving project files with Project File Encryption disabled as .SOPF file type is not supported. Sup-
ported file types are .OPF and .JSON. 121
Account '<name>' does not have permission to run this application. Contact the system admin-
istrator. 122
A password is required for saving encrypted project files (.<secure binary extension>). 122
Saving .<binary extension> and .JSON project files with a password is not supported. To save
encrypted project files, use .<secure binary extension>. 122
A password is required for saving/loading encrypted project files (.<secure binary extension>). 122
Saving/loading .<binary extension> and .JSON project files with a password is not supported. To
save encrypted project files, use .<secure binary extension>. 122
File is expected to be located in the 'user_data' subdirectory of the installation directory and of
the form name.{json, <binary ext>, <secure binary ext>} 122
Addition of object to '<name>' failed: <reason>. 122
Move object '<name>' failed: <reason>. 122
Update of object '<name>' failed: <reason>. 123
Delete object '<name>' failed: <reason>. 123
Unable to load startup project '<name>': <reason>. 123
Failed to update startup project '<name>': <reason>. 123
Runtime project replaced with startup project defined. Runtime project will be restored from
'<name>' at next restart. 123
Ignoring user-defined startup project because a configuration session is active. 123
Write request rejected on read-only item reference '<name>'. 123
Unable to write to item '<name>'. 123
Write request failed on item '<name>'. The write data type '<type>' cannot be converted to the
tag data type '<type>'. 123
Write request failed on item '<name>'. Error scaling the write data. 123
Write request rejected on item reference '<name>' since the device it belongs to is disabled. 124
<Name> successfully configured to run as a system service. 124
<Name> successfully removed from the service control manager database. 124

www. ptc.com
9 Th in gWorx Kep ware Ed ge

Runtime re-initialization started. 124


Runtime re-initialization completed. 124
Updated startup project '<name>'. 124
Runtime service started. 124
Runtime process started. 124
Runtime performing exit processing. 124
Runtime shutdown complete. 124
Shutting down to perform an installation. 125
Runtime project replaced from '<name>'. 125
Missing application data directory. 125
Runtime project saved as '<name>'. 125
Runtime project replaced. 125
Configuration session started by <name> (<name>). 125
Configuration session assigned to <name> has ended. 125
Configuration session assigned to <name> promoted to write access. 125
Configuration session assigned to <name> demoted to read only. 125
Permissions change applied on configuration session assigned to <name>. 125
Failed to start Script Engine server. Socket error occurred binding to local port. | Error = <error>,
Details = '<information>'. 126
An unhandled exception was thrown from the script. | Function = '<function>', error = '<error>'. 126
Script Engine service stopping. 126
Script Engine service starting. 126
Profile log message. | Message = '<log message>'. 126
Connection to ThingWorx failed. | Platform = <host:port resource>, error = <reason>. 126
Error adding item. | Item name = '<item name>'. 127
Failed to trigger the autobind complete event on the platform. 127
Connection to ThingWorx failed for an unknown reason. | Platform = <host:port resource>, error
= <error>. 127
One or more value change updates lost due to insufficient space in the connection buffer. | Num-
ber of lost updates = <count>. 128
Item failed to publish; multidimensional arrays are not supported. | Item name = '%s'. 128
Store and Forward datastore unable to store data due to full disk. 128
Store and Forward datastore size limit reached. 128
Connection to ThingWorx was closed. | Platform = <host:port resource>. 129
Failed to autobind property. | Name = '<property name>'. 129
Failed to restart Thing. | Name = '<thing name>'. 129
Write to property failed. | Property name = '<name>', reason = <reason>. 129
ThingWorx request to add item failed. The item was already added. | Item name = '<name>'. 130
ThingWorx request to remove item failed. The item doesn't exist. | Item name = '<name>'. 130

www. ptc.com
ThingWorx Kepware Edge 10

The server is configured to send an update for every scan, but the push type of one or more
properties are set to push on value change only. | Count = <count>. 130
The push type of one or more properties are set to never push an update to the platform. |
Count = <count>. 131
ThingWorx request to remove an item failed. The item is bound and the force flag is false. | Item
name = '<name>'. 131
Write to property failed. | Thing name = '<name>', property name = '<name>', reason =
<reason>. 131
Error pushing property updates to thing. | Thing name = '<name>'. 131
Unable to connect or attach to Store and Forward datastore. Using in-memory store. | In-
memory store size (updates) = <count>. 132
Store and Forward datastore reset due to file IO error or datastore corruption. 132
Unable to apply settings change initiated by the Platform. Permission Denied. | User = '<user
name>'. 132
Configuration Transfer to ThingWorx Platform failed. 133
Configuration Transfer to ThingWorx Platform failed. | Reason = '<reason>' 133
Failed to delete stored updates in the Store and Forward datastore. 133
Configuration Transfer from ThingWorx Platform failed. 133
Configuration Transfer from ThingWorx Platform failed. | Reason = '<reason>' 133
Check that your Application Key is properly formatted and valid. 134
Connected to ThingWorx. | Platform = <host:port resource>, Thing name = '<name>'. 134
Reinitializing ThingWorx connection due to a project settings change initiated from the platform. 134
Dropping pending autobinds due to interface shutdown or reinitialize. | Count = <count>. 134
Serviced one or more autobind requests. | Count = <count>. 135
Reinitializing ThingWorx connection due to a project settings change initiated from the Con-
figuration API. 135
Resumed pushing property updates to thing: the error condition was resolved. | Thing name =
'<name>'. 135
Configuration transfer from ThingWorx initiated. 135
Configuration transfer from ThingWorx aborted. 135
Initialized Store and Forward datastore. | Datastore location: '<location>'. 135
Successfully deleted stored data from the Store and Forward datastore. 135
Store and Forward mode changed. | Forward Mode = '<mode>'. 136
Initialized Store and Forward datastore. | Forward Mode = '<mode>' | Datastore location = '<loc-
ation>'. 136
Missing server instance certificate '<cert location>'. Please use the OPC UA Configuration Man-
ager to reissue the certificate. 136
Failed to import server instance cert: '<cert location>'. Please use the OPC UA Configuration
Manager to reissue the certificate. 136
The UA server certificate is expired. Please use the OPC UA Configuration Manager to reissue
the certificate. 136

www. ptc.com
11 Th in gWorx Kep ware Ed ge

A socket error occurred listening for client connections. | Endpoint URL = '<endpoint URL>', Error
= <error code>, Details = '<description>'. 137
The UA Server failed to register with the UA Discovery Server. | Endpoint URL: '<endpoint url>'. 137
Unable to start the UA server due to certificate load failure. 137
Failed to load the UA Server endpoint configuration. 138
The UA Server failed to unregister from the UA Discovery Server. | Endpoint URL: '<endpoint
url>'. 138
The UA Server failed to initialize an endpoint configuration. | Endpoint Name: '<name>'. 138
The UA Server successfully registered with the UA Discovery Server. | Endpoint URL: '<endpoint
url>'. 139
The UA Server successfully unregistered from the UA Discovery Server. | Endpoint URL: '<end-
point url>'. 139
Sample Profile Library event log message. Reason: <reason>. 139
Com port is in use by another application. | Port = '<port>'. 139
Unable to configure com port with specified parameters. | Port = COM<number>, OS error =
<error>. 139
Driver failed to initialize. 140
Unable to create serial I/O thread. 140
Com port does not exist. | Port = '<port>'. 140
Error opening com port. | Port = '<port>', OS error = <error>. 140
Connection failed. Unable to bind to adapter. | Adapter = '<name>'. 140
Winsock shut down failed. | OS error = <error>. 141
Winsock initialization failed. | OS error = <error>. 141
Winsock V1.1 or higher must be installed to use this driver. 141
Socket error occurred binding to local port. | Error = <error>, Details = '<information>'. 141
Device is not responding. 141
Device is not responding. | ID = '<device>'. 142
Serial communications error on channel. | Error mask = <mask>. 142
Invalid array size detected writing to tag <device name>.<address>. 143
Unable to write to address on device. | Address = '<address>'. 143
Items on this page may not be changed while the driver is processing tags. 143
Specified address is not valid on device. | Invalid address = '<address>'. 143
Address '<address>' is not valid on device '<name>'. 144
This property may not be changed while the driver is processing tags. 144
Unable to write to address '<address>' on device '<name>'. 144
Socket error occurred connecting. | Error = <error>, Details = '<information>'. 144
Socket error occurred receiving data. | Error = <error>, Details = '<information>'. 145
Socket error occurred sending data. | Error = <error>, Details = '<information>'. 145
Socket error occurred checking for readability. | Error = <error>, Details = '<information>'. 145
Socket error occurred checking for writability. | Error = <error>, Details = '<information>'. 145

www. ptc.com
ThingWorx Kepware Edge 12

%s | 146
<Name> Device Driver '<name>' 146
Could not load item state data. Reason: <reason>. 146
Could not save item state data. Reason: <reason>. 146
Feature '<name>' is not licensed and cannot be used. 147
Failed to load the license interface, possibly due to a missing third-party dependency. Run in
Time Limited mode only. 147
Time Limited mode has expired. 147
Maximum device count exceeded for the lite version '<number>' license. Edit project and restart
the server. 148
Maximum runtime tag count exceeded for the lite version '<number>' license. Edit client project
and restart the server. 148
Type <numeric type ID> limit of <maximum count> exceeded on feature '<name>'. 149
<Object type name> limit of <maximum count> exceeded on feature '<name>'. 149
The FlexNet Licensing Service must be enabled to process licenses. Failure to enable the service
results in Time Limited mode. 149
The <name> feature license has been removed. The server will enter Time Limited mode unless
the license is restored before the grace period expires. 150
License for feature <name> cannot be accessed [error=<code>] and must be reactivated. 150
Feature <name> is time limited and will expire at <date/time>. 150
Feature <name> is time limited and will expire at <date/time>. 150
Object count limit has been exceeded on feature <name>. Time limited usage will expire at
<date/time>. 151
Feature count limit exceeded on <name>. Time limited usage will expire at <date/time>. 151
Time limited usage period on feature <name> has expired. 151
Maximum driver count exceeded for the lite version '<name>' driver license. Edit project and
restart the server. 151
Cannot add item. Requested count of <number> would exceed license limit of <maximum
count>. 151
The version of component <name> (<version>) is required to match that of component <name>
(<version>). 152
Maximum channel count exceeded for the lite version '<name>' driver license. Edit project and
restart the server. 152
%s is now licensed. 152

Index 154

www. ptc.com
13 Th in gWorx Kep ware Ed ge

Int roduct ion


Version 1.671

ThingWorx Kepware Edge is a connectivity server that enables users to connect diverse automation devices
and sensors to a wide variety of digital solutions. It offers the stability, performance, and security that is
essential for industrial environments. With support for popular and secure Linux operating systems, it sup-
ports distributed architectures that improve reliability and security and reduce cost. Built by the industrial
connectivity experts, ThingWorx Kepware Edge eliminates the interoperability challenges associated with
implementing digital solutions.

ThingWorx Kepware Edge Syst em Requirem ent s


The product has been tested and verified on modern computer hardware running Ubuntu X86_64 version
18.04 LTS. It currently only runs on X86_64 platforms. Since we have not verified the server on systems with
limited RAM, CPU, and disk space; we cannot guarantee its performance if tested in such an environment.

This user manual expects the user has a working knowledge of:

l Linux operating system and commands


l Command line interfaces
l Command line or API utilities, such as Postman or cURL
l ThingWorx Platform
l OPC UA configuration and connectivity
l Client interfaces and connectivity

If additional information is required, consult the vendors and websites related to those tools and technologies
in use in your environment.

Prerequisites
l Ubuntu 18.04 LTS
l Latest Linux Standard Base (LSB) package
Tip: To install the Linux Standard Base components on Ubuntu, open a terminal and run the fol-
lowing command:
$ sudo apt install lsb
l Java Runtime Environment for MQTT
Tip: To install the Java runtime environment on Ubuntu, open a terminal and run the following com-
mand:
$ sudo apt install default-jdk

N ote: OpenJDK and Amazon Corretto have been tested and validated for running the MQTT agent.

www. ptc.com
ThingWorx Kepware Edge 14

API Archit ect ure


The diagram below shows the layout of the components. The Configuration API Service is installed on the
same machine with the server.

Inst alling ThingWorx Kepware Edge


Before installing ThingWorx Kepware Edge, verify the installer hash to ensure it is the official, secure file. To
generate the hash locally, run the following command and compare the results to the hash published
online.

$ sha256sum thingworx_kepware_edge*

The ThingWorx Kepware Edge must be installed by a user with root permissions. The installer supports both
GUI and command line installations.

To install, run the following command:

$ ./thingworx_kepware_edge*.run

For all installation options, run the following command:

$ ./thingworx_kepware_edge*.run --help

N ote: Ubuntu can place a lock on files needed to install software while it is checking for updates. Verify the
system is updated before installing ThingWorx Kepware Edge by running the 'apt update' command.

www. ptc.com
15 Th in gWorx Kep ware Ed ge

A strong unique password should be set for the ThingWorx Kepware Edge Administrator account during
installation. The password must be at least 14 characters and include a mix of uppercase and lowercase let-
ters, numbers, and special characters. Avoid well-known, easily guessed, or common passwords.

Once installed, any Linux user accounts adm inistering the ThingWorx Kepware Edge instance
m ust be added to the user group created during the installation, tkedge by default. This allows
those accounts to use the edge_admin tool and interact with the local file system to move files in and out of
the secured data directory (<installation_directory>/user_data directory).

Uninstalling ThingWorx Kepw are Edge


To uninstall, run the uninstall command from the <installation_directory> as root.

For a complete list of uninstall properties run the command:

$ sudo ./uninstall --help

N ote: the uninstall tool leaves the <installation_directory> with the original install log and an uninstall log.
This directory and these files may be removed manually.

See Also: Command Line Interface — edge_admin, Application Data

To access the command line options, run the following command:

$ sudo ./thingworx_kepware_edge*.run --help

Applicat ion Dat a


During installation, a user_data directory is created in the <installation_directory> path. The user_data dir-
ectory is the relative path where all project files are saved to and loaded from, as well as where automatic
tag generation (ATG) files should be placed.
N ote: All files in the user_data directory must be world readable or owned by the ThingWorx Kepware
Edge user and group that were created during installation, by default this is tkedge.

Any authorized Linux user should be added to the ThingWorx Kepware Edge user group that was created dur-
ing installation to have the proper permissions to interact locally with this folder. All Configuration API com-
mands that interact with this folder use the ThingWorx Kepware Edge user configured during installation,
tkedge by default.
N ote: Any directories created in the user_data directory must be writeable by members of the ThingWorx
Kepware Edge group created during installation, tkedge by default. Files in the user_data directory must be
either world readable or owned by the group that was setup during installation, tkedge by default.

ThingWorx Kepware Edge Licensing


Licensing in ThingWorx Kepware Edge is provided on a per-tag basis across the set of supported drivers.
This functionality is provided by a USB hardware key in association with a matching certificate file which
indicates the licensing level. When no certificate file is present, ThingWorx Kepware Edge runs in a time-lim-
ited mode.

The following are the available licensing levels:

l 100 Tag Limit


l 750 Tag Limit

www. ptc.com
ThingWorx Kepware Edge 16

l 1500 Tag Limit


l Unlimited

The tag count is measured across all drivers and is determined at the time of subscription. A tag is not con-
sidered utilized for the purpose of licensing unless there is an active subscription for it. Simulator tags and
system tags are not included in the tag limit. Subscribe to tags up to the limit established by the valid license.
Tags beyond this limit may be added to the server, but will not be active.

Installing a License
1. Login using a local Linux user account that is a member of the ThingWorx Kepware Edge user group
configured during installation, tkedge by default.

2. Copy the .lic license file that corresponds to the hardware key attached to the machine into the
<installation_directory>/.config/License directory.

3. Attach the hardware key to the machine and wait for the red light to light up on the key.

4. Restart the ThingWorx Kepware Edge runtime service and the server is now licensed.

Time-Limited Operation
To operate the server in evaluation mode, ensure that all license files have been removed from the <install-
ation_directory>/.config/License folder. The presence of files in this folder disables time-limited mode and
cause immediate deactivation of all unlicensed features. After any change in license status, the server must
be restarted for the change to take effect.

$ systemctl restart tkedge_runtime.service

Troubleshooting Licensing
If the .lic license file is located in <installation_directory>/.config/License and the corresponding hardware
key is attached to the system and ThingWorx Kepware Edge is still going into expired or demo mode, run the
listat command line utility from the install directory to troubleshoot the issue.

Listat doesn’t list the license.


Verify that the license has been copied to the <installation_directory>/.config/License directory and is read-
able by the current user and the ThingWorx Kepware Edge user (default tkedge).

Listat indicates that the license is not valid.


Verify that the usb key is connected to the system. Verify that the license has not been altered.

The USB key is not detected, or not detected as HASP:


Verify that the USB key daemon has been installed (version 7.90-1 expected).
On Ubuntu: apt list –installed

If the USB Key daemon has not been installed, it can be installed manually from <installation_dir-
ectory>/dependencies:
On Ubuntu: dpkg -Ii aksusbd* .deb

Listat will not start or returns an error.


Verify that the lsb package is installed on your system.
On Ubuntu: lsb_release –a

If the lsb package is not installed, it can be installed using the following command:

www. ptc.com
17 Th in gWorx Kep ware Ed ge

On Ubuntu: apt install lsb


N ote: All ThingWorx Kepware Edge services must be restarted after installing LSB.

The server is running but all tags are disabled.


If you are trying to operate in demo mode, make sure that all licenses have been removed from the <install-
ation_directory>/.config/License directory. Verify that the USB key is connected.

Com m and Line Int erface — edge_adm in


The edge_admin Command Line Interface (CLI) application is used to manage configuration API settings and
certificates for the server and from the command line. The documentation for the edge_admin CLI may be
obtained using the –help option. The following areas of functionality can be accessed through the command
line.

Certificates
l Trust Store: Import / Delete / List / Trust / Reject certificates for various interfaces.
l Instance Certificate: Import / Export / Reissue instance certificates for various interfaces.
l Configuration API Settings: Enable / Disable the Configuration API and manage the ports it listens on.

Linux user accounts that interact with the edge_admin must be members of the ThingWorx Kepware Edge
group that was created during installation. The edge_admin can be found at the installation location and run
from the command line.

Examples

Obtain general help information and list the areas of the product which can be managed using the CLI:

./edge_admin --help

View commands related to managing the configuration API:

./edge_admin manage-cfgapi --help

View commands related to managing the certificates:

./edge_admin manage-certificate --help

View commands related to managing the trust store:

./edge_admin manage-truststore --help

To import an OPC UA certificate into the truststore:

./edge_admin manage-truststore -i MyCertificateName.der uaserver

Com ponent s and Concept s


For more information on a specific server component, select a link from the list below.

What is a Channel?

www. ptc.com
ThingWorx Kepware Edge 18

What is a Device?
What is a Tag?
What is a Tag Group?
What is t he Alias M ap?
What is t he Event Log?

What is a Channel?
A channel represents a communication medium from the PC to one or more external devices. In ThingWorx
Kepware Edge, a channel is used to represent an Ethernet socket.

Before adding devices to a project, users must define the channel to be used when communicating with
devices. A channel and a device driver are closely tied. After creating a channel, only devices that the selec-
ted driver supports can be added to this channel.

Creating a Channel
Channels are defined by a set of properties based on the communication methods. Channels are created
through the configuration API service.

Channel names must be unique among all channels and devices defined in the project. For information on
reserved characters, refer to How To... Properly Name a Channel, Device, Tag, and Tag Group.

Removing a Channel
To remove a channel from the project use the Configuration API Service.

Displaying Channel Properties


To review the channel properties of a specific channel via the Configuration API, access the docum entation
channel endpoint.

See Also: Channel Properties — General

What is a Device?
Devices represent the PLCs, controllers, or other hardware with which the server communicates. The device
driver that the channel is using restricts device selection.

Adding a Device
Devices are defined by a set of properties based on the protocol, make, and model. Devices are created
through the Configuration API Service.

Device names are user-defined and should be logical for the device. This is the browser branch name used
in links to access the device's assigned tags.
For information on reserved characters, refer to How To... Properly Name a Channel, Device, Tag, and Tag
Group.

The Network ID is a number or string that uniquely identifies the device on the device's network. Networked,
multi-dropped devices must have a unique identifier so that the server's data requests are routed correctly.
If devices that are not multi-dropped, they do not need an ID, so this setting is not available.

Removing a Device
To remove a device from the project use the Configuration API Service.

www. ptc.com
19 Th in gWorx Kep ware Ed ge

Displaying Device Properties


To review the channel properties of a specific channel via the Configuration API, access the docum entation
channel endpoint.
For more information, refer to Device Properties.

What is a Tag?
A tag represents addresses within the device with which the server communicates. The server allows both
Dynamic tags and user-defined Static tags. Dynamic tags are entered directly in the client and specify device
data. User-defined Static tags are created in the server and support tag scaling. They can be browsed from
clients that support tag browsing.

Adding a Tag
Tags are defined by a set of properties based on the data. Tags are defined through the Configuration
API Service.

Tag names are user-defined and should be logical for reporting and data analysis.
For information on reserved characters, refer to How To... Properly Name a Channel, Device, Tag, and Tag
Group.

Removing a Tag
To remove a tag from the project; use the Configuration API Service.

Displaying Tag Properties


To review the tag properties of a specific channel via the Configuration API, access the docum entation
channel endpoint.

Tag Propert ies — General


A tag represents addresses in the PLC or other hardware device with which the server communicates. The
server allows both Dynamic tags and user-defined Static tags. Dynamic tags are entered directly in the client
and specify device data. User-defined Static tags are created in the server and support tag scaling. They can
be browsed from clients that support tag browsing.
For more information, refer to Dynamic Tags and Static User-Defined Tags.

N am e: Enter a string to represent this tag. The tag name can be up to 256 characters in length. While using
descriptive names is generally a good idea, some OPC client applications may have a limited display window
when browsing the tag space of an OPC UA server. For information on reserved characters, refer to How To...
Properly Name a Channel, Device, Tag, and Tag Group.
Tip: If the application is best suited for using blocks of tags with the same names, use tag groups to
segregate the tags. For more information, refer to Tag Group Properties.

Description: Apply a comment to the tag. A string of up to 255 characters can be entered for the descrip-
tion.

Address: Enter the target tag's driver address. The address's format is based on the driver protocol. The
address can be up to 128 characters.
Tip: For hints about how an address should be entered, click the browse (...) button. If the driver accepts
the address as entered, no messages are displayed. A popup informs of any errors. Some errors are related
to the data type selection and not the address string.

www. ptc.com
ThingWorx Kepware Edge 20

Data Type: Specify the format of this tag's data as it is found in the physical device. In most cases, this is
also the format of the data as it returned to the client. The data type setting is an important part of how a
communication driver reads and writes data to a device. For many drivers, the data type of a particular piece
of data is rigidly fixed and the driver knows what format needs to be used when reading the device's data. In
some cases, however, the interpretation of device data is largely in the user's hands. An example would be a
device that uses 16-bit data registers. Normally this would indicate that the data is either a Short or Word.
Many register-based devices also support values that span two registers. In these cases the double register
values could be a Long, DWord or Float. When the driver being used supports this level of flexibility, users
must tell it how to read data for this tag. By selecting the appropriate data type, the driver is being told to
read one, two, four, eight, or sixteen registers or possibly a Boolean value. The driver governs the data
format being chosen.

l Default - Uses the driver default data type


l Boolean - Binary value of true or false
l Char - Signed 8-bit integer data
l Byte - Unsigned 8-bit integer data
l Short - Signed 16-bit integer data
l Word - Unsigned 16-bit integer data
l Long - Signed 32-bit integer data
l DWord - Unsigned 32-bit integer data
l LLong - Signed 64-bit integer data
l QWord - Unsigned 64-bit integer data
l Float - 32-bit real value IEEE-754 standard definition
l Double - 64-bit real value IEEE-754 standard definition
l String - Null-terminated Unicode string
l BCD - Two byte-packed BCD value range is 0-9999
l LBCD - Four byte-packed BCD value range is 0-99999999
l Date - 8-byte floating point number

Client Access: Specify whether the tag is Read Only or Read / Write. By selecting Read Only, users can pre-
vent client applications from changing the data contained in this tag. By selecting Read / Write, users allow
client applications to change this tag's value as needed. The Client Access selection also affects how the tag
appears in the browse space of an OPC UA client. Many client applications allow filtering tags based on
attributes. Changing the access method of this tag may change how and when the tag appears in the browse
space of the client.

Scan Rate: Specify the update interval for this tag when using the Scan Mode option of Respect Tag-Spe-
cified Scan Rate within Device Properties. The server specifies an update rate on a tag per tag basis. Using
the scan rate, users can tailor the bandwidth requirements of the server to suit the needs of the application.
If, for example, data that changes very slowly needs to be read, there is no reason to read the value very
often. Using the scan rate this tag can be forced to read at a slower rate reducing the demand on the com-
munications channel. The valid range is 10 to 99999990 milliseconds (ms), with a 10 ms increment. The
default is 100 milliseconds.

With the server's online full-time operation, these properties can be changed at any time. Changes made
to tag properties take effect immediately; however, client applications that have already connected to this
tag are not affected until they release and attempt to reacquire it. Utilize the User Manager to restrict
access rights to server features and prevent operators from changing the properties.

www. ptc.com
21 Th in gWorx Kep ware Ed ge

Syst em Tags
System tags provide general error feedback to client applications, allow operational control when a device is
actively collecting data, and allow a channel or device's standard properties to be changed by a client applic-
ation when needed.

The number of system tags available at both the channel level and device level depends on the nature of the
driver being used. In addition, application-level system tags allow client applications to monitor the server's
status. System tags can also be grouped according to their purpose as both status and control or property
manipulation. Descriptions are as follows:

l Status Tags Status tags are read-only tags that provide data on server operation.
l Param eter Control Tags: Parameter control tags can be used to modify the server application's
operational characteristics. This provides a great deal of flexibility in the client applications. By using
the property control tags, users can implement redundancy by switching communications links or
changing the device ID of a target device. Users can also provide access to the tags through special
supervisory screens that allow a plant engineer to make changes to the communication parameters
of the server if needed.

N ote: If there are errors when writing to read / write system tags, verify that the authenticated user has
the appropriate permissions.

The tables below include descriptions of the following:

Applicat ion-Level Syst em Tags


Channel-Level Syst em Tags for Et hernet Drivers
Device-Level Syst em Tags for bot h Serial and Et hernet Drivers

Application-Level System Tags

Syntax Example: <Channel Name>.<Device Name>._System._ActiveTagCount

Tag Class Descript ion


_ActiveTagCount Status The _ActiveTagCount tag indicates the number of tags that are currently
Tag active in the server.

This is a read-only tag.


_ClientCount Status The _ClientCount tag indicates the number of clients that are currently
Tag connected to the server.

This is a read-only tag.


_Date Status The _Date tag indicates the current date of the system that the server is
Tag running on. The format of this string is defined by the operating system
date/time settings.

This is a read-only tag.


_DateTime Status The _DateTime tag indicates the GMT date and time of the system that
Tag the server is running on. The format of the string is '2004-05-
21T20:39:07.000'.

www. ptc.com
ThingWorx Kepware Edge 22

Tag Class Descript ion


This is a read-only tag.
_DateTimeLocal Status The _DateTimeLocal tag indicates the localized date and time of the sys-
Tag tem that the server is running on. The format of the string is '2004-05-
21T16:39:07.000'.

This is a read-only tag.


_Date_Day Status The _Date_Day tag indicates the current day of the month of the system
Tag on which the server is running.

This is a read-only tag.


_Date_DayOfWeek Status The _Date_DayOfWeek tag indicates the current day of the week of the
Tag system on which the server is running. The format of the string is a num-
ber from 0 (Sunday) to 6 (Saturday).

This is a read-only tag.


_Date_Month Status The _Date_Month tag indicates the current month of the system on which
Tag the server is running. The format of the string is a number (such as "9"
instead of "September").

This is a read-only tag.


_Date_Year2 Status The _Date_Year2 tag indicates the last two digits of the current year of
Tag the system on which the server is running.

This is a read-only tag.


_Date_Year4 Status The _Date_Year4 tag indicates the current year of the system on which
Tag the server is running.

This is a read-only tag.


_ExpiredFeatures Status The _ExpiredFeatures tag provides a list of all server features whose
Tag time-limited usage has expired. These features are no longer oper-
ational.

This is a read-only tag.


_FullProjectName Status The _FullProjectName tag indicates the fully qualified path and file name
Tag to the currently loaded project.

This is a read-only tag.


_IsDemo Status The _IsDemo tag is no longer available as the runtime will not enter Time
Tag Limited mode in version 6.0 or higher. See the _TimeLimitedFeatures, _
LicensedFeatures, and _ExpiredFeatures tags to monitor the status of
server features.
_LicensedFeatures Status The _LicensedFeatures tag provides a list of all server features in use that
Tag have a valid license. These features are not subject to a time limit and will
continue normal operation after any time-limited features expire.

This is a read-only tag.

www. ptc.com
23 Th in gWorx Kep ware Ed ge

Tag Class Descript ion


_ProductName Status The _ProductName tag indicates the name of the underlying com-
Tag munication server.

This is a read-only tag.


_ProductVersion Status The _ProductVersion tag indicates the version of the underlying com-
Tag munication server.

This is a read-only tag.


_ProjectName Status The _ProjectName tag indicates the currently loaded project file name
Tag and does not include path information.

This is a read-only tag.


_ProjectTitle Status The _ProjectTitle tag is a String tag that indicates the title of the project
Tag that is currently loaded.

This is a read-only tag.


_Time Status The _Time tag indicates the current time of the system that the server is
Tag running on. The format of this string is defined by the operating system
date/time settings.

This is a read-only tag.


_Time_Hour Status The _Time_Hour tag indicates the current hour of the system on which the
Tag server is running.

This is a read-only tag.


_Time_Hour24 Status The _Time_Hour24 tag indicates the current hour of the system on which
Tag the server is running in a 24-hour format.

This is a read-only tag.


_Time_Minute Status The _Time_Minute tag indicates the current minute of the system on
Tag which the server is running.

This is a read-only tag.


_Time_PM Status The _Time_PM tag indicates the current AM/PM status of the system on
Tag which the server is running. This is a Boolean tag: 0 (False) indicates AM,
and 1 (True) indicates PM.

This is a read-only tag.


_Time_Second Status The _Time_Second tag indicates the current second of the system on
Tag which the server is running.

This is a read-only tag.


_TimeLim- Status The _TimeLimitedFeatures tag provides a list of all server features that
itedFeatures Tag are time-limited and the time remaining (in seconds). When the time
remaining expires, the feature will cease operation.

This is a read-only tag.

www. ptc.com
ThingWorx Kepware Edge 24

Tag Class Descript ion


_TotalTagCount Status The _TotalTagCount tag indicates the total number of tags that are cur-
Tag rently being accessed. These tags can be active or inactive.

N ote: This count does not represent the number of tags configured in
the project.

This is a read-only tag.

Channel-Level System Tags for Ethernet Drivers

Syntax Example: <Channel name>._System._NetworkAdapter

Tag Class Descript ion


_AvailableNetworkAdapters The _AvailableNetworkAdapters tag lists the available NICs
and includes both unique NIC cards and NICs that have mul-
tiple IPs assigned to them. Additionally this tag also displays
any WAN connections that are active, such as a dial-up con-
nection. This tag is provided as a string tag and can be used to
determine the network adapters available for use on this PC.
Status Tag The string returned contains all of the NIC names and their IP
assignments. A semicolon separates each unique NIC to allow
the names to be parsed within an OPC application. For a serial
driver, this tag is only used if Ethernet Encapsulation is selec-
ted.

This is a read-only tag.


The _Description tag indicates the current user-defined text
description for the channel it is referencing.
_Description Status Tag

This is a read-only tag.


_EnableDiagnostics The _EnableDiagnostics tag allows the diagnostic system of
the driver to be enabled and disabled. The diagnostic system
places a little additional burden on the driver while enabled.
Parameter As such the server allows diagnostics to be enabled or dis-
Control abled to improve the driver's performance. When disabled,
Tag the Diagnostics tags will not be available. For more inform-
ation, refer to Statistics Tags.

This is a read / write tag.


The _FloatHandlingType tag allows the current channel-level
float handling to be changed. It exists in the channel-level _Sys-
Parameter
tem folder. For more information, refer to Channel Prop-
_FloatHandlingType Control
erties — Advanced.
Tag

This is a read / write tag.

Parameter The _InterDeviceDelayMS tag specifies the amount of time


_InterDeviceDelayMS that the channel will delay sending a request to the next
Control

www. ptc.com
25 Th in gWorx Kep ware Ed ge

Tag Class Descript ion


device after the data has been received from the current
device on the same channel. The valid range is 0 to 60000 mil-
liseconds. The default setting is 0.

Tag
N ote: This tag is only available on channels that use pro-
tocols that utilize the Inter-Device Delay.

This tag is a read / write tag.


The _NetworkAdapter tag allows the current NIC adapter in
use by the driver to be changed at will. As a string tag, the
name of the newly desired NIC adapter must be written to this
tag in string format. The string written must match the exact
description of the desired NIC for the change to take effect.
Parameter NIC names can be obtained from the _Avail-
_NetworkAdapter Control ableNetworkAdapters tag listed above. For a serial driver, this
Tag tag will only be used if Ethernet Encapsulation is selected.

N ote: When changing the NIC selection, the driver is forced


to break all current device connections and reconnect.

This is a read / write tag.


The _WriteOptimizationDutyCycle tag allows the duty cycle of
the write to read ratio to be changed at will. The duty cycle
controls how many writes the driver will do for each read it
Parameter performs. The _WriteOptimizationDutyCycle is defined as an
_WriteOp-
Control unsigned long value. The valid range is 1 to 10 write per read.
timizationDutyCycle
Tag For more information, refer to Channel Properties — Write
Optim izations.

This is a read / write tag.

Device-Level System Tags for both Serial and Ethernet Drivers

Syntax Example: <Channel Name>.<Device Name>._System._Error

Tag Class Descript ion


_AutoCreateTagDatabase Parameter The _AutoCreateTagDatabase tag is a Boolean tag that is
Control used to initiate the automatic tag database functions of this
Tag driver for the device to which this tag is attached. When this
tag is set True, the communications driver will attempt to
automatically generate a tag database for this device. This
tag will not appear for drivers that do not support Automatic
Tag Database Generation.

This is a read / write tag.


_AutoDemoted Status Tag The _AutoDemoted tag is a Boolean tag that returns the cur-
rent auto-demoted state of the device. When False, the device

www. ptc.com
ThingWorx Kepware Edge 26

Tag Class Descript ion


is not demoted and is being scanned by the driver. When set
True, the device is in demoted and not being scanned by the
driver.

This is a read-only tag.


_AutoDe- Parameter The _AutoDemotionDiscardWrites tag is a Boolean tag that
motionDiscardWrites Control specifies whether or not write requests should be discarded
Tag during the demotion period. When this tag is set to False, all
writes requests are performed regardless of the _AutoDe-
moted state. When this tag is set to True, all writes are dis-
carded during the demotion period.

This is a read / write tag.


_AutoDemotionEnabled Parameter The _AutoDemotionEnabled tag is a Boolean tag that allows
Control the device to be automatically demoted for a specific time
Tag period when the device is unresponsive. When this tag is set
False, the device will never be demoted. When this tag is set
True, the device is demoted when the _AutoDe-
motedFailureCount has been reached.

This is a read / write tag.


_AutoDemotedFailureCount Parameter The _AutoDemotedFailureCount tag specifies how many suc-
Control cessive failures it takes to demote a device. The _AutoDe-
Tag motedFailureCount is defined as a long data type. The valid
range is 1 to 30. This tag can only be written to if _AutoDe-
motionEnabled is set to True.

This is a read / write tag.


_AutoDemotionIntervalMS Parameter The _AutoDemotionIntervalMS tag specifics how long, in mil-
Control liseconds, a device is demoted before re-attempting to com-
Tag municate with the device. The _AutoDemotionIntervalMS is
defined as a long data type. The valid range is 100 to
3600000 milliseconds. This tag can only be written to if _
AutoDemotionEnabled is set to True.

This is a read / write tag.


_ConnectTimeout Parameter The _ConnectTimeout tag allows the timeout associated with
Control making an IP connection to a device to be changed at will.
Tag This tag is available when either a native Ethernet driver is in
use or a serial driver is in Ethernet Encapsulation mode. The _
ConnectTimeout is defined as a Long data type. The valid
range is 1 to 30 seconds.

This is a read / write tag.


_DemandPoll Status / The _DemandPoll tag issues a device read to all the active cli-
Control ent items associated with the device. This is the equivalent of
Tag a client performing an asynchronous device read for those

www. ptc.com
27 Th in gWorx Kep ware Ed ge

Tag Class Descript ion


items. It takes priority over any scheduled reads that are sup-
posed to occur for items that are being actively scanned.

The _DemandPoll tag becomes True (1) when written to. It


returns to False (0) when the final active tag signals that the
read requests have completed. Subsequent writes to the _
DemandPoll tag will fail until the tag value returns to False.
The demand poll respects the read / write duty cycle for the
channel.

This is a read / write tag.


Status Tag The _Description tag indicates the current user-defined text
description for the device it is referencing.
_Description

This is a read-only tag.


_DeviceId Parameter The _DeviceId tag allows the ID of the device to be changed at
Control will. The data format of the _DeviceId depends on the type of
Tag device. For most serial devices this tag is a Long data type.
For Ethernet drivers the _DeviceId is formatted as a string
tag, allowing the entry of an IP address. In either case, writing
a new device ID to this tag will cause the driver to change the
target field device. This will only occur if the device ID written
to this tag is correctly formatted and within the valid range for
the given driver.

This is a read / write tag.


_Enabled Parameter The _Enabled tag is a Boolean tag that allows the active state
Control of the device to be turned On or Off. When this tag is set
Tag False, all other user-defined tags and data from this device is
marked as invalid and writes will not be accepted for the
device. When this tag is set True, normal communications will
occur with the device.

This is a read / write tag.


_Error Status Tag The _Error tag is a Boolean tag that returns the current error
state of the device. When False, the device is operating prop-
erly. When set True, the driver has detected an error when
communicating with this device. A device enters an error
state if it has completed the cycle of request timeouts and
retries without a response.

N ote: For more information, refer to Device Properties —


Tim ing.

This is a read-only tag.


_FailedConnection Status Tag The _FailedConnection tag specifies that the connection
failed. It is only available to specific drivers.

www. ptc.com
ThingWorx Kepware Edge 28

Tag Class Descript ion


This is a read-only tag.
_InterRequestDelay Parameter The _InterRequestDelay tag allows the time interval between
Control device transactions to be changed at will. The _Inter-
Tag RequestDelay is defined as a Long data type. The valid range
is 0 to 30000 milliseconds. This tag only applies to drivers that
support this feature.

This is a read / write tag.


_RequestAttempts Parameter The _RequestAttempts tag allows the number of com-
Control munication attempts to be changed. The _RequestAttempts is
Tag defined as a Long value. The valid range is 1 to 10 attempts.
This tag applies to all drivers equally.

This is a read / write tag.


_RequestTimeout Parameter The _RequestTimeout tag allows the timeout associated with
Control a data request to be changed at will. The _RequestTimeout
Tag tag is defined as a Long value. The valid range is 100 to
30000 milliseconds. This tag applies to all drivers equally.

This is a read / write tag.


_NoError Status Tag The _NoError tag is a Boolean tag that returns the current
error state of the device. When True, the device is operating
properly. When False, the driver has detected an error when
communicating with this device. A device enters an error
state if it has completed the cycle of request timeouts and
retries without a response.

N ote: For more information, refer to Device Properties


— Tim ing.

This is a read-only tag.


_ScanMode Status Tag The _ScanMode tag allows clients to dictate the method used
for updates. It is defined as a String value, and corresponds to
the user-specified Scan Mode setting (located in device prop-
erties). "Respect client specified scan rate" has a value of
"UseClientRate," "Request data no faster than x" has a value
of "UseFloorRate," and "Request all data at x" has a value of
"ForceAllToFloorRate." The default setting is "Respect client
specified scan rate."

This is a read-only tag.


_ScanRateMs Status Tag The _ScanRateMs tag corresponds to the _ScanMode tag, and
is used when the Scan Mode is set to Request Data No Faster
than Scan Rate or Request All Data at Scan Rate. This tag is
defined as a DWord tag. The default setting is 1000 mil-
liseconds.

This is a read-only tag.

www. ptc.com
29 Th in gWorx Kep ware Ed ge

Tag Class Descript ion


_SecondsInError Status Tag The _SecondsInError tag is a DWord tag that displays the
number of seconds since the device entered an error state.
This tag displays 0 when the device is not in an error state.

This is a read-only tag.


_Simulated Parameter The _Simulated tag is a Boolean tag that provides feedback
Control about the simulation state of the current device. When read
Tag as True, this device is in a simulation mode. While in sim-
ulation mode, the server returns good data for this device,
but does not attempt to communicate with the actual physical
device. When tag is read as False, communication with the
physical device is active. Changing the tag value allows clients
to enable / disable simulated mode.
This is a read/write tag.

The _System branch found under the DeviceName branch is always available. If referencing a system tag
from a DDE application given the above example and the DDE defaults, the link would appear as "<DDE ser-
vice name>| _ddedata!Channel1.Device1._System._Error".

The _Enabled tag provides a very flexible means of controlling the OPC applications. Additionally, using the _
Enable tag to allow the application to turn a particular device off while the physical device is being serviced
can eliminate harmless but unwanted communications errors in the server's Event Log.

See Also:
Property Tags
Statistics Tags

Propert y Tags
Property tags are used to provide read-only access to tag properties for client applications. To access a tag
property, append the property name to the fully qualified tag address that has been defined in the server's
tag database. For more information, refer to Tag Properties — General.

If the fully qualified tag address is "Channel1.Device1.Tag1," its description can be accessed by appending
the description property as "Channel1.Device1.Tag1._Description".

Supported Property Tag Names


Tag N ame Descript ion
_Name The _Name property tag indicates the current name for the tag it is ref-
erencing.
_Address The _Address property tag indicates the current address for the tag it is ref-
erencing.
_Description The _Description property tag indicates the current description for the tag it is
referencing.
_RawDataType The _RawDataType property tag indicates the raw data type for the tag it is ref-
erencing.
_ScalingType The _ScalingType property tag indicates the scaling type (None, Linear or

www. ptc.com
ThingWorx Kepware Edge 30

Tag N ame Descript ion


Square Root) for the tag it is referencing.
_ScalingRawLow The _ScalingRawLow property tag indicates the raw low range for the tag it is
referencing. If scaling is set to none this value contains the default value if scal-
ing was applied.
_ScalingRawHigh The _ScalingRawHigh property tag indicates the raw high range for the tag it is
referencing. If scaling is set to none this value contains the default value if scal-
ing was applied.
_Scal- The _ScalingScaledDataType property tag indicates the scaled to data type for
ingScaledDataType the tag it is referencing. If scaling is set to none this value contains the default
value if scaling was applied.
_ScalingScaledLow The _ScalingScaledLow property tag indicates the scaled low range for the tag
it is referencing. If scaling is set to none this value contains the default value if
scaling was applied.
_ScalingScaledHigh The _ScalingScaledHigh property tag indicates the scaled high range for the tag
it is referencing. If scaling is set to none this value contains the default value if
scaling was applied.
_ScalingClampLow The _ScalingClampLow property tag indicates whether the scaled low value
should be clamped for the tag it is referencing. If scaling is set to none this
value contains the default value if scaling was applied.
_ScalingClampHigh The _ScalingClampHigh property tag indicates whether the scaled high value
should be clamped for the tag it is referencing. If scaling is set to none this
value contains the default value if scaling was applied.
_ScalingUnits The _ScalingUnits property tag indicates the scaling units for the tag it is ref-
erencing. If scaling is set to none this value contains the default value if scaling
was applied.

See Also:
St at ist ics Tags
Syst em Tags

St at ist ics Tags


Statistics tags are used to provide feedback to client applications regarding the operation of the channel
communications in the server. Statistics tags are only available when diagnostics are enabled. For more
information, refer to Channel Diagnostics

Syntax Example: <Channel Name>._Statistics._FailedReads

Supported Statistics Tag Names


Tag N ame Descript ion
_SuccessfulReads The _SuccessfulReads tag contains a count of the number of reads this channel has
completed successfully since the start of the application or since the last time the _
Reset tag was invoked. This tag is formatted as unsigned 32-bit integer and will even-
tually rollover. This tag is read only.
_SuccessfulWrites The _SuccessfulWrites tag contains a count of the number of writes this channel has
completed successfully since the start of the application or since the last time the _

www. ptc.com
31 Th in gWorx Kep ware Ed ge

Tag N ame Descript ion


Reset tag was invoked. This tag is formatted as an unsigned 32-bit integer and will
eventually rollover. This tag is read only.
_FailedReads The _FailedReads tag contains a count of the number of reads this channel has
failed to complete since the start of the application or since the last time the _Reset
tag was invoked. This count is only incremented after the channel has failed the
request based on the configured timeout and retry count for the device. This tag is
formatted as an unsigned 32-bit integer and will eventually rollover. This tag is read
only.
_FailedWrites The _FailedWrites tag contains a count of the number of writes this channel has
failed to complete since the start of the application or since the last time the _Reset
tag was invoked. This count is only incremented after the channel has failed the
request based on the configured timeout and retry count for the device. This tag is
formatted as unsigned 32-bit integer and will eventually rollover. This tag is read
only.
_RxBytes* The _RxBytes tag contains a count of the number of bytes the channel has received
from connected devices since the start of the application or since the last time the _
Reset tag was invoked. This tag is formatted as unsigned 32-bit integer and will even-
tually rollover. This tag is read only.
_TxBytes The _TxBytes tag contains a count of the number of bytes the channel has sent to
connected devices since the start of the application or since the last time the _Reset
tag was invoked. This tag is formatted as unsigned 32-bit integer and will eventually
rollover. This tag is read only.
_Reset The _Reset tag can be used to reset all diagnostic counters. The _Reset tag is format-
ted as a Boolean tag. Writing a non-zero value to the _Reset tag will cause the dia-
gnostic counters to be reset. This tag is read / write.
The _MaxPendingReads tag contains a count of the maximum number of pending
_MaxPend- read requests for the channel since the start of the application (or the _Reset tag)
ingReads was invoked. This tag is formatted as an unsigned 32-bit integer. The tag is read
only.
The _MaxPendingWrites tag contains a count of the maximum number of pending
_MaxPend- write requests for the channel since the start of the application (or the _Reset tag)
ingWrites was invoked. This tag is formatted as an unsigned 32-bit integer. The tag is read
only.
The _NextReadPriority is a channel-level system tag that reflects the priority level of
the next read in the channel's pending read queue. Possible values are -1: No
_NextReadPriority pending reads. 0: The next read is a result of a schedule-level demand poll or expli-
cit read from a client. 1 - n: The next read is a result of scheduled read. This tag is
read only.
The _PendingReads tag contains a count of the current pending read requests for
_PendingReads the channel. This tag is formatted as an unsigned 32-bit integer. The tag is read
only.
The _PendingWrites tag contains a count of the current pending write requests for
_PendingWrites the channel. This tag is formatted as an unsigned 32-bit integer. This tag is read
only.
* This statistical item is not updated in simulation mode (See Device Properties).

www. ptc.com
ThingWorx Kepware Edge 32

The _Statistics branch (located beneath the channel branch) only appears when diagnostics are enabled for
the channel. To reference a Diagnostics tag from a DDE application, given the above example and the DDE
defaults, the link would appear as: "<DDE service name>| _ddedata!Channel1._Statistics._SuccessfulReads".

The Diagnostics tag's value can also be viewed in the server by using the Communication Diagnostics
Viewer. If Diagnostics Capture is enabled under Channel Properties, right-click on that channel and select
Diagnostics.

See Also:
Syst em Tags
Propert y Tags

Dynam ic Tags
Dynamic tag addressing is a second method of defining tags that allows users to define tags only in the cli-
ent application. As such, instead of creating a tag item in the client that addresses another tag item created
in the server, users only need to create tag items in the client that directly accesses the device driver's
addresses. On client connect, the server creates a virtual tag for that location and starts scanning for data
automatically.

To specify an optional data type, append one of the following strings after the '@' symbol:

l BCD
l Boolean
l Byte
l Char
l Double
l DWord
l Float
l LBCD
l LLong
l Long
l QWord
l Short
l String
l Word

If the data type is omitted, the driver chooses a default data type based on the device and address being ref-
erenced. The default data types for all locations are documented in each individual driver's help doc-
umentation. If the data type specified is not valid for the device location, the server rejects the tag and an
error posts in the Event Log.

Client Using Dynamic Addressing Example


Scan the 16-bit location "R0001" on the Simulator device. The following Dynamic tag examples assume that
the project created is part of the example.

1. Start the client application and connect to the server.

2. Using the Simulator Driver, create a channel and name it Channel1. Then, make a device and name it
Device1.

www. ptc.com
33 Th in gWorx Kep ware Ed ge

3. In the client application, define an item name as "Channel1.Device1.R0001@Short."

4. The client project automatically starts receiving data. The default data type for address R0001 in the
Simulator device is Word. To override this, the @Short has been appended to select a data type of
Short.

N ote: When utilizing Dynamic tags in a client application, the use of the @[Data Type] modifier is not nor-
mally required. Clients can specify the desired data type as part of the request when registering a link for a
specific data item. The data type specified by the Client is used if it is supported by the communications
driver. The @[Data Type] modifier can be useful when ensuring that a communications driver interprets a
piece of data exactly as needed.

Clients can also override the update rate on a per-tag basis by appending @[Update Rate].

For example, appending:


<DDE service name>| _ddedata!Device1.R0001@500 overrides just the update rate.
<DDE service name>| _ddedata!Device1.R0001@500,Short overrides both update rate and data type.

Tips:

1. The server creates a special Boolean tag for every device in a project that can be used by a client to
determine whether a device is functioning properly. To use this tag, specify the item in the link as
"Error." If the device is communicating properly, the tag's value is zero; otherwise, it is one.

2. If the device address is used as the item of a link such that the address matches the name of a user-
defined tag in the server, the link references the address pointed to by the user-defined tag.

3. Static tags must be used to scale data in the server.

See Also:
Static Tags (User-Defined)
Designing a Project: Adding User-Defined Tags

Tag Propert ies — Scaling


This server supports tag Scaling, which allows raw data from the device to be scaled to an appropriate range
for the application.

Type: Select the method of scaling raw values. Select Linear, Square Root, or N one to disable. The for-
mulas for scaling types are shown below.

Type Formula for Scaled Value


Linear (((ScaledHigh - ScaledLow)/(RawHigh - RawLow))* (RawValue - RawLow)) + ScaledLow
Square (Square root ((RawValue - RawLow)/(RawHigh - RawLow))* (ScaledHigh - ScaledLow)) +
root ScaledLow

Raw Low: Specify the lower end of the range of data from the device. The valid range depends on the raw
tag data type. For example, if the raw value is Short, the valid range of the raw value would be from -32768
to 32767.

Raw High: Specify the upper end of the range of data from the device. The Raw High value must be greater
than the Raw Low value. The valid range depends on the raw tag data type.

www. ptc.com
ThingWorx Kepware Edge 34

Scaled Data Type: Select the data type for the tag being scaled. The data type can be set to any valid OPC
data type, including a raw data type, such as Short, to an engineering value with a data type of Long. The
default scaled data type is Double.

Scaled Low: Specify the lower end of the range of valid resulting scaled data values. The valid range
depends on the tag data type.

Scaled High: Specify the upper end of the range of valid resulting scaled data values. The valid range
depends on the tag data type.

Clam p Low: Select Yes to prevent resulting data from exceeding the lower end of the range specified.
Select N o to allow data to fall outside of the established range.

Clam p High: Select Yes to prevent resulting data from exceeding the upper end of the range specified.
Select N o to allow data to fall outside of the established range.

N egate Value: Select Yes to force the resulting value to be negated before being passed to the client. Select
N o to pass the value to the client unmodified.

A client can automatically configure the range of objects (such as user input objects or displays) using the
Scaling settings by accessing / changing the property tag values associated with the tag. Utilize the User
Manager to restrict access rights to server features to prevent any unauthorized operator from changing
these properties.

What is a Tag Group?


This server allows tag groups to be added to the project. Tag groups are used to tailor the layout of OPC
data into logical groupings that fit the application's needs. Tag groups allow multiple sets of identical tags to
be added under the same device: this can be convenient when a single device handles a number of similar
machine segments.

Adding a Tag Group


Tag groups are defined by the set of tags contained. Tag groups are defined through the Configuration
API Service.

Tag group names are user-defined and should be logical for reporting and data analysis.
For information on reserved characters, refer to How To... Properly Name a Channel, Device, Tag, and Tag
Group.

Removing a Tag Group


To remove a tag from the project; use the Configuration API Service.

Displaying Tag Group Properties


To review the tag group properties of a specific tag group via the Configuration API, access the doc-
um entation channel endpoint.

Tag Group Propert ies


From a client standpoint, tag groups allow users to segregate data into smaller tag lists, making finding spe-
cific tags easier.

www. ptc.com
35 Th in gWorx Kep ware Ed ge

Tag groups can be added at any level from the device-level down, and multiple tag groups can be nested
together to fit the application's needs.

N ote: With the server's online full-time operation, these properties can be changed at any time. Any
changes made to the tag groups take effect immediately. If the name is changed, Clients that have already
used that tag group as part of an item request are not affected until they release the item and attempt to
reacquire it. New tag groups added to the project immediately allows browsing from a client. Utilize the User
Manager to restrict access rights to server features to prevent operators from changing the properties.

What is t he Alias M ap?


The Alias Map provides both a mechanism for backwards compatibility with legacy server applications as
well as a way to assign simple alias names to complex tag references. This is especially useful in client
applications that limit the size of tag address paths. Although the latest version of the server automatically
creates the alias map, users can add their own alias map entries to compliment those created by the server.
Users can also filter the server created aliases so that the only ones visible are their own.

Alias Propert ies


The Alias Map allows a way to assign alias names to complex tag references that can be used in client applic-
ations.

N am e: Specify the alias name, which can be up to 256 characters long. It must be unique in the alias map.
For information on reserved characters, refer to How To... Properly N am e a Channel, Device, Tag, and
Tag Group.

Description: Enter a description of this alias to clarify data sources and reports (optional).

Mapped to: Specify or browse to the location of the alias. Because the alias map does not allow tag items to
be browsed from the alias table, create a short nickname that replaces the address that leads up to the tag.
This makes it easier to address items in a client application that does not support tag browsing.

Scan Rate Override: Specify an update rate to be applied to all non-OPC tags accessed using this alias map
entry. The valid range is 0 to 99999990 milliseconds. The default is 0 milliseconds.
N ote: When set to 0 milliseconds, the server observes the scan rate set at the individual tag level.
See Also: Configuration API Service — Endpoints

What is t he Event Log?


The Event Log provides the date, time, and source of an error, warning, information, or security event. For
more information, select a link from the list below.

Event Log Set t ings

Properly Nam e a Channel, Device, Tag, and Tag Group


When naming a channel, device, tag, or tag group, the following characters are reserved or restricted:

l Periods
l Double quotation marks
l Leading underscores
l Leading or trailing spaces

www. ptc.com
ThingWorx Kepware Edge 36

N ote: Some of the restricted characters can be used in specific situations. For more information, refer to
the list below.

1. Periods are used in aliases to separate the original channel name and the device name. For example,
a valid name is "Channel1.Device1".

2. Underscores can be used after the first character. For example, a valid name is "Tag_1".

3. Spaces may be used within the name. For example, a valid name is "Tag 1".

Get t ing St art ed


ThingWorx Kepware Edge does not have a graphical user interface. Configuration of the server is performed
using the Configuration API accessed via a REST client, and the edge_admin command line interface tool.
The Configuration API is used to modify all project settings and most administrative settings. The edge_
admin is used to manage certificates and configure the Configuration API administrative settings.

Additional help for the edge_adm in tool may be found by running the tool with the ‘--help’ option:

$ <installation_directory>/edge_admin --help

Additional help for the Configuration API may be accessed by a web browser at the following URL:

Endpoint:

https://<hostname_or_ip>:<port>/config/v1/doc

Tip: The default port numbers are below.


N ote: This version includes support for JSON-formatted documentation.
The initial API login credentials use the Administrator username and password configured during install-
ation. For best security, a new group and user should be created via the Configuration API with only the
appropriate permissions enabled.

Services:

l tkedge_configapi.service
l tkedge_eventlog.service
l tkedge_iotgateway.service
l tkedge_runtime.service

Tip: Once ThingWorx Kepware Edge is installed, verify the processes are running using the following com-
mand:

$ systemctl | grep tkedge

Ports:

l Configuration API HTTPS interface (Enabled): 57513


l Configuration API HTTP interface (Disabled by default): 57413
l OPC UA interface (Enabled by default): 49330
l Server Runtime service to IoT Gateway service (localhost only): 57213
l Server Runtime service to Configuration API service (localhost only): 32403
l Event Log service (localhost only): 56221

www. ptc.com
37 Th in gWorx Kep ware Ed ge

Service Logs
ThingWorx Kepware Edge services log information to the system journal. To view log information, run:

$ journalctl –u <service_name>

All service logs may be viewed together by running:

$ journalctl –u tkedge*

To save the log files to disk, can run the following command:

$ journalctl –u tkedge* >> ~/tkedgelog.txt

REST Configuration API Server Settings


l Endpoint: https://<hostname_or_ip>:<port>/config/
l Port: 57513 for HTTPS (57413 for HTTP)
l Authentication: Username and password of the Administrator account created during installation

For security reasons, the Administrator account should have a strong unique password. The password
must be at least 14 characters and include a mix of uppercase and lowercase letters, numbers, and special
characters. Avoid well-known, easily guessed, or common passwords. The Administrator account is specific
to the product installation; it is not the general operating system Administrator account.

Setting up a Project
During installation, there is an option to load a sample project. If that option was not selected, the default pro-
ject file is blank. To configure a project, use the API commands in this section to create new channels,
devices, and tags. If a baseline project is helpful, the example project may be loaded after installation using
these steps:

Reloading the Sam ple Project

1. Ensure the services are running.

2. Login using a local Linux user account that is a member of the ThingWorx Kepware Edge user group
configured during installation, tkedge by default.

3. Copy the example project from <installation_directory>/examples/tke_simdemo.lpf to the <install-


ation_directory>/user_data directory.

4. Use the configuration API to load the project using the instructions below.

Project Load Exam ple


Load the project by performing a PUT command from a REST client to invoke request on the ProjectLoad end-
point. The name of the project file is included in the body of the request. Use basic authentication for the
request. The response should include the message “Accepted” to indicate the project has been loaded.

Endpoint (PUT):

https://<hostname_or_ip>:<port>/config/v1/project/services/ProjectLoad

www. ptc.com
ThingWorx Kepware Edge 38

Body:

{
"common.ALLTYPES_NAME": "ProjectLoad",
"servermain.PROJECT_FILENAME":"tke_simdemo.lpf"
}

Authentication:
Basic Authentication with a username of administrator and the password created during installation.

Do not try to load a JSON project file generated from a Windows environment. ThingWorx Kepware Edge
supports only a subset of features; unsupported features in the project file may prevent the project from
loading.

M anaging ThingWorx Kepware Edge Services


ThingWorx Kepware Edge is comprised of four services:

l Runtim e: The Runtime is the main server process. This service hosts the current project, com-
municates with edge devices, and provides access to data over interfaces such as OPC UA, or
ThingWorx Native Interface.
l Event Log: The Event Log aggregates and manages log entries created by the other services.
l Configuration API: The Configuration API service provides a REST web service used to interact with
and configure the Runtime. It also provides the ability to retrieve logs from the Event Log service.
l IoT Gateway: The IoT Gateway service manages MQTT agents that publish data updates from the
Runtime to a MQTT broker.

Starting Each Service


The table below lists each service and the required arguments to start that service. These services all
require that the working directory of the process be set to directory where the product was installed.
Service Command t o Invoke (Shell)
Event Log ./server_eventlog
Runtime ./server_runtime
Configuration
./config_api_service
API
java -cp <installdir>/iotg/server-1.0.jar:<installdir>/iotg/lib:<installdir>/.config/IoTGateway
IoT Gateway*
com.Kepware.Main -port 57213
* N ote: The IoT Gateway must be started with port 57213. Using an alternative port number is not sup-
ported at this time.

Docum ent at ion Endpoint


The documentation endpoint can be used to retrieve information about the various endpoints, including:

l Supported properties of the endpoint


l Child nodes of the endpoint
l Property meta data (default values, state, data ranges, etc.)

N ote: Documentation served from the landing page is currently only available in JSON encoding.

Supported Actions

www. ptc.com
39 Th in gWorx Kep ware Ed ge

HTTP(S) Verb Act ion


GET Retrieves the current server properties
Endpoint (GET):

https://<hostname_or_ip>:<port>/config/v1/doc

Accessing the documentation endpoint URL via a web browser prompts for authentication. User cre-
dentials must be used to access the documentation.

Configurat ion API Service — Endpoint s


The Configuration API allows uses the following endpoint mapping scheme:

Project Connectivity Elements


/config/{version}/project
/config/{version}/project/aliases
/config/{version}/project/aliases/{alias_name}
/config/{version}/project/channels
/config/{version}/project/channels/{channel_name}
/config/{version}/project/channels/{channel_name}/devices
/config/{version}/project/channels/{channel_name}/devices/{device_name}
/config/{version}/project/channels/{channel_name}/devices/{device_name}/tags
/config/{version}/project/channels/{channel_name}/devices/{device_name}/tags/{tag_name}
/config/{version}/project/channels/{channel_name}/devices/{device_name}/tag_groups
/config/{version}/project/channels/{channel_name}/devices/{device_name}/tag_groups/{group_name}
/config/{version}/project/channels/{channel_name}/devices/{device_name}/tag_groups/{group_name}/tags
/config/{version}/project/channels/{channel_name}/devices/{device_name}/tag_groups/{group_name}/tags/
{tag_name}
/config/{version}/project/channels/{channel_name}/devices/{device_name}/tag_groups/{group_
name}/.../tag_groups
/config/{version}/project/channels/{channel_name}/devices/{device_name}/tag_groups/{group_
name}/.../tag_groups/{group_name}/tags
/config/{version}/project/channels/{channel_name}/devices/{device_name}/tag_groups/{group_
name}/.../tag_groups/{group_name}/tags/{tag_name}

Plug-in Endpoints
Plug-ins are considered project extensions and are managed under the Project endpoint:
/config/{version}/project/{namespace}
/config/{version}/project/{namespace}/{collection}
/config/{version}/project/{namespace}/{collection}/{object_name}

Server Administration Endpoints


/config/{version}/admin
/config/{version}/admin/server_usergroups
/config/{version}/admin/server-users
/config/{version}/admin/ua_endpoints

Log Endpoints
/config/{version}/log
/config/{version}/event_log
/config/{version}/transaction_log

www. ptc.com
ThingWorx Kepware Edge 40

Documentation Endpoints
/config/{version}/doc
/config/{version}/doc/drivers/{driver_name}/channels
/config/{version}/doc/drivers/{driver_name}/devices
/config/{version}/doc/drivers/{driver_name}/tags
/config/{version}/doc/drivers

Enabling Int erfaces


For security reasons, only the HTTPS Configuration API endpoint and a secured OPC UA endpoint are
enabled by default. The ThingWorx Native Interface and MQTT Agent are disabled by default. Interfaces are
enabled or disabled using the Configuration API.

Performing a GET on the project endpoint will return a unique project ID that will be needed to perform a
PUT successfully.

UA Server
The UA Server interface can be enabled from the project endpoint, as shown below:

Endpoint (PUT):

https://<hostname_or_ip>:<port>/config/v1/project

Body:

{
"project_id": <project_ID_from_GET>,
"uaserverinterface.PROJECT_OPC_UA_ENABLE": true
}

ThingWorx Native Interface


The ThingWorx Native Interface can be enabled from the project endpoint, as shown below:

Endpoint (PUT):

https://<hostname_or_ip>:<port>/config/v1/project

Body:

{
"project_id": <project_ID_from_GET>,
"thingworxinterface.ENABLED": true
}

M QTT Agent
After creating an MQTT Agent, it can be enabled or disabled in the MQTT Client endpoint, as shown below:

Endpoint (PUT):

https://<hostname_or_ip>:<port>/config/v1/project/_iot_gateway/mqtt_cli-
ents/<MQTTAgent_name>

Body:

www. ptc.com
41 Th in gWorx Kep ware Ed ge

{
"project_id": <project_ID_from_GET>,
"iot_gateway.AGENTTYPES_ENABLED": true
}

Int erfaces and Connect ivit y


This communications server simultaneously supports the client / server technologies listed below.

Server - a software application designed to bridge the communication between a device, controller, or data
source with a client application. Servers can only respond to requests made by a client.

Client - a software program that is used to contact and obtain data from a server (either on the same com-
puter or on another computer). A client makes a request and the server fulfills the request. An example of a
client would be an e-mail program connecting to a mail server or an Internet browser client connecting to a
web server.

Hum an Machine Interface (HMI) - a software application (typically a Graphical User Interface or GUI) that
presents information to the operator about the state of a process and to accept and implement the operator
control instructions. It may also interpret the plant information and guide the interaction of the operator with
the system.

Man Machine Interface (MMI) - a software application (typically a Graphical User Interface or GUI) that
presents information to the operator about the state of a process and to accept and implement the operator
control instructions. It may also interpret the plant information and guide the interaction of the operator with
the system.

For more information on a specific interface, select a link from the list below.
DDE
Fast DDE/ Suit eLink
iFIX N at ive Int erfaces
OPC .N ET
OPC AE
OPC DA
OPC UA
ThingWorx N at ive Int erface
IoT Gat eway - M QTT

OPC UA Int erface


Supported Version
1.02 optimized binary TCP

Overview
OPC Unified Architecture (UA) is an open standard created by the OPC Foundation with help from dozens of
member organizations. It provides an additional way to share factory floor data to business systems (from
shop-floor to top-floor). UA also offers a secure method for remote client-to-server connectivity without
depending on Microsoft DCOM. It has the ability to connect securely through firewalls and over VPN con-
nections. This implementation of the UA server supports optimized binary TCP and the DA data model.

www. ptc.com
ThingWorx Kepware Edge 42

OPC UA Profiles
OPC UA is a multi-part specification that defines a number of services and information models referred to as
features. Features are grouped into profiles, which are then used to describe the functionality supported by
a UA server or client.
For a full list and a description of each OPC UA profile, refer to https:/ / www.op-
cfoundation.org/ profilereporting/ index.htm.

Fully Supported OPC UA Profiles


l Standard UA Server Profile
l Core Server Facet
l Data Access Server Facet
l SecurityPolicy - Basic128Rsa15 (Deprecated)
l SecurityPolicy - Basic256 (Deprecated)
l SecurityPolicy - Basic256Sha256
l SecurityPolicy - None (Insecure)
l UA-TCP UA-SC UA Binary

CAUTION : Security policies Basic128Rsa15 and Basic256 have been deprecated by the OPC Foundation
as of OPC UA specification version 1.04. The encryption provided by these policies is considered less secure
and usage should be limited to providing backward compatibility.

Partially Supported OPC UA Profiles


l Base Server Behavior Facet

N ote: This profile does not support the Security Administrator – XML Schema.

ThingWorx Nat ive Int erface


Overview
ThingWorx is a connectivity platform that allows users to create actionable intelligence based on their device
data. The ThingWorx Native Interface allows a user to provide data to the ThingWorx Platform with little addi-
tional configuration using the ThingWorx Always On technology. With the introduction of the ThingWorx Next
Gen Composer, the ThingWorx Native interface has been updated to allow a better user interface integ-
ration with the Composer.

As noted in the ThingWorx documentation, configuration of a ThingWorx Application Key is crucial to


providing a secured environment. The Application Key that is used should provide the appropriate privileges
to allow the proper exchange of data between the server instance and the ThingWorx Platform.

See Also:
Project Properties – ThingWorx Native Interface
Industrial Internet of Things
ThingWorx Platform

IoT Gat eway — M QTT


Overview
The "Internet of Things" (IoT) Gateway is a built-in feature within ThingWorx Kepware Edge that allows sys-
tem and device tags to be published to third-party endpoints through industry standard IP-based protocols.
When the value for a configured tag changes or when a publish rate is met, an update is sent to the

www. ptc.com
43 Th in gWorx Kep ware Ed ge

corresponding third-party endpoint with a configurable payload of tag ID, value, quality, and timestamp in a
standard JSON format.

The IoT Gateway within ThingWorx Kepware Edge offers the following features:

l Ability to publish data consisting of a name, value, quality, and timestamp from any data source in the
server (e.g. drivers, plug-ins, or system tags)
l Standard human readable JSON data format with advanced format customization options
l Support for publishing via MQTT (Message Queue Telemetry Transport) versions 3.1 and 3.1.1
l Support for MQTT subscriptions for the purpose of accepting write operations
l Configurable data collection rate, as frequent as 10 milliseconds up to once per 27.77 hours
(99999990 milliseconds)
l Configurable data publish rate, as frequent as 10 milliseconds up to once per 27.77 hours (99999990
milliseconds)
l Support for authentication and TLS / SSL encryption with or without client-side certificates
l Support for user-level access based on the User Manager and Security Policies Plug-In
l Configurable payload information for integration with different third-party endpoints

Architectural Summary
The IoT Gateway is closely tied to the server’s core “tkedge_runtime.service” process, however the feature
uses its own executable – “tkedge_iotgateway.service” - to manage the following functionality:

l Configuration of the MQTT client agents


l Data collection from the server runtime
l Configuration of the Gateway settings
l License enforcement
l Connection management to each third party endpoint
l In-memory data buffering of up to 100,000 data updates buffered per agent
l Authentication and encryption management

What is M QTT?
MQTT stands for MQ Telemetry Transport. It is a publish / subscribe, extremely simple, and lightweight mes-
saging protocol designed for constrained devices and low-bandwidth, high-latency, or unreliable networks.
The design principles are to minimize network bandwidth and device resource requirements whilst also
attempting to ensure reliability and some degree of assurance of delivery. These principles also turn out to
make the protocol ideal of the emerging “machine-to-machine” (M2M) or “Internet of Things” world of con-
nected devices and for mobile applications where bandwidth and battery power are at a premium (source:
www.mqtt.org).

See Also:
Configuring the IoT Gateway

Configuring t he IoT Gat eway


The IoT Gateway allows information to be conveyed to an MQTT agent. The section below describes how to
configure the IoT Gateway.

IoT Gatew ay M QTT Agent Prerequisites

www. ptc.com
ThingWorx Kepware Edge 44

Caution: For the most secure configuration, enable ONLY those features that are being used or tested. As
such, if MQTT is not being used, this section should be skipped.

1. Install a Java JRE on the machine (if this has not already been installed):
apt install default-jdk
Tip: OpenJDK and Amazon Corretto have been tested.

2. Once installed, verify the Java JRE version using the terminal command:
java –version

3. Stop and restart all the ThingWorx Kepware Edge services.

M QTT Examples

Create MQTT Agent

Endpoint: (POST)

https://<hostname_or_ip>:<port>/config/v1/project/_iot_gateway/mqtt_clients

Body:

{
"common.ALLTYPES_NAME": "NewMqttClient",
"common.ALLTYPES_DESCRIPTION": "",
"iot_gateway.AGENTTYPES_TYPE": "MQTT Client",
"iot_gateway.AGENTTYPES_ENABLED": true
}

View MQTT Agents

Endpoint: (GET)

https://<hostname_or_ip>:<port>/config/v1/project/_iot_gateway/mqtt_clients

Create MQTT Agent Tag

Endpoint (POST):

https://<hostname_or_ip>:<port>/config/v1/project/_iot_gateway/mqtt_cli-
ents/NewMqttClient/iot_items

Body:

{
"common.ALLTYPES_NAME": "Simulator_Word1",
"iot_gateway.IOT_ITEM_SERVER_TAG": "Simulator.SimulatorDevice.Registers.Word1",
"iot_gateway.IOT_ITEM_ENABLED": true
}

View MQTT Agent Tags

Endpoint (GET):

https://<hostname_or_ip>:<port>/config/v1/project/_iot_gateway/mqtt_cli-
ents/NewMqttClient/iot_items

www. ptc.com
45 Th in gWorx Kep ware Ed ge

Update MQTT Agent

Endpoint (PUT):

https://<hostname_or_ip>:<port>/config/v1/project/_iot_gateway/mqtt_cli-
ents/NewMqttClient

Body:

{
"project_id": <project_ID_from_GET>,
"common.ALLTYPES_NAME": "NewMqttClient_updated",
"common.ALLTYPES_DESCRIPTION": "Update test"
}

Delete MQTT Agent

Endpoint (DEL):

https://<hostname_or_ip>:<port>/config/v1/project/_iot_gateway/mqtt_cli-
ents/NewMqttClient_updated

Body:

{
"project_id": <project_ID_from_GET>,
"common.ALLTYPES_NAME": "NewMqttClient_updated",
"common.ALLTYPES_DESCRIPTION": "Update test"
}

Configuring Self-Signed Cert ificat es for M QTT Agent


The IoT Gateway supports self-signed certificates with the MQTT agent. These agents use the Java KeyStore
to manage these certificates. Use the commands below to import, list, or delete a certificate from the
KeyStore.

These instructions assume the Java keytool is installed.

The default Java cacerts truststore password is “changeit”

Import certificate into the java store


sudo keytool -import -trustcacerts -keystore /usr/lib/jvm/<java_ver-
sion>/lib/security/cacerts -alias <alias> -file <certificate>

List the contents of the certificate


keytool -list -keystore /usr/lib/jvm/<java_version>/lib/security/cacerts -alias
<alias>

Delete the certificate


sudo keytool -delete -keystore /usr/lib/jvm/<java_version>/lib/security/cacerets -
alias <alias>

The location of the Java Key Store used in the above commands may vary. Use the location appropriate for
the local Java installation.

www. ptc.com
ThingWorx Kepware Edge 46

For more information about working with certificates using the Java keytool, consult the documentation found
on the Oracle Java website.

Configurat ion API — Project Exam ple


Project files control the communications and data collection of the server and all connected devices. Chan-
nel and device properties are defined and saved in the project file and how they are configured can impact
performance (see Optimization). Tag and tag group settings saved in the project can impact how the data is
available in control and monitoring displays and reports. There must always be one active open project.

Project saving and loading is restricted to the <installation_directory>/user_data directory. A local user must
be a member of the ThingWorx Kepware Edge user group created during installation, tkedge by default, to
be able to place files in this directory. The <installation_directory>/user_data directory is also used for load-
ing of automatic tag generation (ATG) files.
N ote: All files in the user_data directory must be world readable or owned by the ThingWorx Kepware
Edge user and group that were created during installation, by default this is tkedge.
See Also: Application Data

Save a Project
Use a “PUT” command from a REST client to invoke the ProjectSave service and provide a unique file name
for the new file. All files are loaded from and saved to the <installation_directory>/user_data directory.

Endpoint (PUT):

https://<hostname_or_ip>:<port>/config/v1/project/services/ProjectSave

Body:

{
"common.ALLTYPES_NAME": "ProjectSave",
"servermain.PROJECT_FILENAME":"myProject.json"
}

N ote: The project is saved to: <installation_directory>/user_data/. A path may be included in the file name,
such as ‘projects/MyProject.json’. Any directory that does not exist within the <installation_directory>/user_
data/ directory will be created upon successfully saving a project file.

Update a Project
The typical work flow for editing a project is to read the properties using a GET, modify the properties, then
write them into the body of the message using a PUT.

Read Available Device Properties Exam ple

Endpoint (GET):

https://<hostname_or_ip>:<port>/config/v1/project/channels/<channel_name>/devices

Return:

[
{
"PROJECT_ID": <project_ID_from_GET>,
"common.ALLTYPES_NAME": <device_name>,

www. ptc.com
47 Th in gWorx Kep ware Ed ge

"common.ALLTYPES_DESCRIPTION": "",
"servermain.MULTIPLE_TYPES_DEVICE_DRIVER": "<driver>",
"servermain.DEVICE_MODEL": 0,
"servermain.DEVICE_UNIQUE_ID": <ID>,
"servermain.DEVICE_CHANNEL_ASSIGNMENT": "<channel_name>",
"servermain.DEVICE_ID_FORMAT": 0,
"servermain.DEVICE_ID_STRING": "<nnn.nnn.n.n>.0",

}
]

where nnn.nnn.n.n is the Device ID address.

Update Specific Device Properties Exam ple


Only the properties you wish to change are needed for this step.

Endpoint (PUT):

https://<hostname_or_ip>:<port>/config/v1/project/channels/<channel_
name>/devices/<device_name>

Body:

{
"project_id": <project_ID_from_GET>,
"servermain.DEVICE_ID_STRING": "<nnn.nnn.n.n>.0"
}

where nnn.nnn.n.n is the Device ID address.

Configurat ion API Allen-Bradley Cont rolLogix Exam ple


For a list of channel and device definitions and enumerations, access the following endpoints with the REST
client.

Channel Definitions

Endpoint (GET):

https://<hostname_or_ip>:<port>/config/v1/doc/drivers/Allen-Brad-
ley%20ControlLogix%20Ethernet/channels

Device Definitions

Endpoint (GET):

https://<hostname_or_ip>:<port>/config/v1/doc/drivers/Allen-Brad-
ley%20ControlLogix%20Ethernet/devices

The following API commands are the minimum required to create an AllenBradley ControlLogix Ethernet
channel, device, and tag.
For more information regarding general project configuration, see the server help file.

Create Allen-Bradley ControlLogix Channel

www. ptc.com
ThingWorx Kepware Edge 48

Endpoint (POST):

https://<hostname_or_ip>:<port>/config/v1/project/channels

Body:

{
"common.ALLTYPES_NAME": "MyChannel",
"servermain.MULTIPLE_TYPES_DEVICE_DRIVER": "Allen-Bradley ControlLogix Ethernet"
}

Create Allen-Bradley ControlLogix Device

Endpoint (POST):

https://<hostname_or_ip>:<port>/config/v1/project/channels/MyChannel/devices

Body:

{
"common.ALLTYPES_NAME": "MyDevice",
"servermain.DEVICE_ID_STRING": "<IP>,0,1",
"servermain.MULTIPLE_TYPES_DEVICE_DRIVER": "Allen-Bradley ControlLogix Ethernet",
"servermain.DEVICE_MODEL": <model enumeration>
}

N ote: The format of the value for servermain.DEVICE_ID_STRING may vary depending on the model enu-
meration specified for servermain.DEVICE_MODEL. The device ID string format shown above is for the Con-
trolLogix 5500 model.

Create Allen-Bradley ControlLogix Tags

Endpoint (POST):

https://<hostname_or_ip>:<-
port>/config/v1/project/channels/MyChannel/devices/MyDevice/tags

Body:

[
{
"common.ALLTYPES_NAME": "MyTag1",
"servermain.TAG_ADDRESS": "40001"
}
{
"common.ALLTYPES_NAME": "MyTag2",
"servermain.TAG_ADDRESS": "40002"
}
]

See server help for more information on configuring tags and tag groups using the Configuration API.

www. ptc.com
49 Th in gWorx Kep ware Ed ge

Configurat ion API M odbus Et hernet Exam ple


For a list of channel and device definitions and enumerations, access the following endpoints with the REST
client.

Channel Definitions

Endpoint (GET):

https://<hostname_or_ip>:<-
port>/config/v1/doc/drivers/Modbus%20TCP%2FIP%20Ethernet/channels

Device Definitions

Endpoint (GET):

https://<hostname_or_ip>:<-
port>/config/v1/doc/drivers/Modbus%20TCP%2FIP%20Ethernet/devices

Create M odbus Channel

Endpoint (POST):

https://<hostname_or_ip>:<port>/config/v1/project/channels

Body:

{
"common.ALLTYPES_NAME": "MyChannel",
"servermain.MULTIPLE_TYPES_DEVICE_DRIVER": "Modbus TCP/IP Ethernet"
}

See Also: Appendix A for a list of channel properties.

Create M odbus Device

Endpoint (POST):

https://<hostname_or_ip>:<port>/config/v1/project/channels/MyChannel/devices

Body:

{
"common.ALLTYPES_NAME": "MyDevice",
"servermain.DEVICE_ID_STRING": <IP Address>.<Modbus ID>,
"servermain.MULTIPLE_TYPES_DEVICE_DRIVER": "Modbus TCP/IP Ethernet"
}

where <IP Address>.<Modbus ID> is the device IP address and Modbus ID, such as 192.160.0.1.0.

See Also: Appendix B for a list of device properties.

Device ID Update
Update the Device ID using a “PUT” command from a REST client.

www. ptc.com
ThingWorx Kepware Edge 50

The Endpoint example below references the “demo-project.json” project configuration with “ModbusTCPIP”
channel name and “ModbusDevice” device name.

Device ID Exam ple

Endpoint (PUT):

https://<hostname_or_ip>:<-
port>/config/v1/project/channels/ModbusTCPIP/devices/ModbusDevice

Body:

{
"project_id": <project_ID_from_GET>,
"servermain.DEVICE_ID_STRING": "<IP Address>.<Modbus ID>"
}

Create M odbus Tags

Endpoint (POST):

https://<hostname_or_ip>:<-
port>/config/v1/project/channels/MyChannel/devices/MyDevice/tags

Body:

[
{
"common.ALLTYPES_NAME": "MyTag1",
"servermain.TAG_ADDRESS": "40001"
}
{
"common.ALLTYPES_NAME": "MyTag2",
"servermain.TAG_ADDRESS": "40002"
}
]

See Also: Appendix C for a list of tag properties.

See server help for more information on configuring projects over the Configuration API.

Configurat ion API Siem ens TCP/ IP Et hernet Exam ple


For a list of channel and device definitions and enumerations, access the following endpoints with the REST
client:

Channel Definitions

Endpoint (GET):

https://<hostname_or_ip>:<-
port>/config/v1/doc/drivers/Siemens%20TCP%2FIP%20Ethernet/channels

Device Definitions

www. ptc.com
51 Th in gWorx Kep ware Ed ge

Endpoint (GET):

https://<hostname_or_ip>:<-
port>/config/v1/doc/drivers/Siemens%20TCP%2FIP%20Ethernet/devices

Create Siemens Channel

Endpoint (POST):

https://<hostname_or_ip>:<port>/config/v1/project/channels

Body:

{
"common.ALLTYPES_NAME": "MyChannel",
"servermain.MULTIPLE_TYPES_DEVICE_DRIVER": "Siemens TCP/IP Ethernet"
}

Create Siemens Device

Endpoint (POST):

https://<hostname_or_ip>:<port>/config/v1/project/channels/MyChannel/devices

Body:

{
"common.ALLTYPES_NAME": "MyDevice",
"servermain.DEVICE_ID_STRING": "192.160.0.1",
"servermain.MULTIPLE_TYPES_DEVICE_DRIVER": "Siemens TCP/IP Ethernet",
"servermain.DEVICE_MODEL": <model enumeration>
}

where 192.160.0.1 is the device address.

Create Siemens Tags Example

Endpoint (POST):

https://<hostname_or_ip>:<-
port>/config/v1/project/channels/MyChannel/devices/MyDevice/tags

Body:

[
{
"common.ALLTYPES_NAME": "MyTag1",
"servermain.TAG_ADDRESS": "DB1,INT00"
}
{
"common.ALLTYPES_NAME": "MyTag2",
"servermain.TAG_ADDRESS": "DB1,INT01"
}
]

www. ptc.com
ThingWorx Kepware Edge 52

See server help for more information on configuring projects over the Configuration API.

Configurat ion API ThingWorx Connect ion


To configure the ThingWorx connection, collect the following information from the ThingWorx platform
instance to connect:

l HOSTN AME: Hostname or IP of machine running ThingWorx


l PORT: Port configured to run ThingWorx, typically port 80 for HTTP and 443 for HTTPS
l APPKEY: Application key configured in ThingWorx
l THIN G_N AME: Name of the Industrial Connection defined in the platform.
Tip: If a name that does not yet exist on the platform is specified, an ephemeral thing will be cre-
ated. To complete the connection, navigate to the new Thing in the platform and Save.

For a list of ThingWorx interface definitions and enumerations, access the following endpoints with the REST
client:

Project definitions:

Endpoint (GET):

https://<hostname_or_ip>:<port>/config/v1/project

Tip: Enabling ThingWorx and configuring the connection settings can be done at the same time.

Enable ThingWorx Interface

Tip: This is already enabled if the instructions in the Quick Start Guide have been followed.

Endpoint (PUT):

https://<hostname_or_ip>:<port>/config/v1/project/

Body:

{
"project_id": <project_ID_from_GET>,
"thingworxinterface.ENABLED": true
}

Configure ThingWorx Test Connection Example

N ote: This is a testing configuration and the use of certificates and other security measures are sug-
gested for production systems.

Endpoint (PUT):

https://<hostname_or_ip>:<port>/config/v1/project

Body:

www. ptc.com
53 Th in gWorx Kep ware Ed ge

{
"project_id": <project_ID_from_GET>,
"thingworxinterface.ENABLED": true,
"thingworxinterface.HOSTNAME": "<hostname or IP>",
"thingworxinterface.PORT": <Port Number>,
"thingworxinterface.RESOURCE": "/Thingworx/WS",
"thingworxinterface.APPKEY": "<App Key>",
"thingworxinterface.ALLOW_SELF_SIGNED_CERTIFICATE": false,
"thingworxinterface.TRUST_ALL_CERTIFICATES": true,
"thingworxinterface.DISABLE_ENCRYPTION": true,
"thingworxinterface.THING_NAME": "<ThingName>"
}

Configurat ion API Service


The Configuration API allows an HTTPS RESTful client to add, edit, read, and delete objects such as channels,
devices, and tags in the server. The Configuration API offers the following features:

l Object definition in standard human-readable JSON data format


l Support for triggering and monitoring actions on some objects within the server
l Security via HTTP basic authentication and HTTP over SSL (HTTPS)
l Support for user-level access based on the User Manager and Security Policies Plug-In
l Transaction logging with configurable levels of verbosity and retention

N ote: This document assumes familiarity with HTTPS communication and REST concepts.

Initialization - The Configuration API is installed as a daemon and starts automatically with the system.
Operation - The Configuration API supports connections and commands between the server and REST cli-
ents.
If the Configuration API must be stopped, use the systemctl to stop the service.

Security
REST clients to the Configuration API must use HTTPS Basic Authentication. The user credentials are defined
in the server User Group. Initial login to the Configuration API uses the Administrator username and the
password set during installation. Additional users and groups should be created to allow the appropriate
access.
Administrator passwords must be at least 14 characters and no more than 512 characters.

Documentation
Please consult additional information on properties, data ranges, endpoint mapping scheme, and acceptable
actions for each endpoint is available at the Configuration API Landing Page at https://<hostname_or_ip>:<-
port>/config/ (for default configurations).

Documentation served from the landing page is HTML-encoded by default. To obtain JSON-encoded doc-
umentation, include an “Accept” request header with “application/json”.

Configurat ion API Service — Invoking Services


Objects may provide services if there are actions that can be invoked on the object beyond the standard
CRUD (Create, Retrieve, Update, Delete) operations. Services provide an asynchronous programmatic inter-
face through which remote clients can trigger and monitor these actions. Services can be found in a col-
lection called ‘services’ underneath the object on which they operate. For example, the project load service is
located at the https://<hostname_or_ip>:<port>/config/v1/project/services/ProjectLoad endpoint as it

www. ptc.com
ThingWorx Kepware Edge 54

operates on the project. Any object may provide services, so query if the service collection exists, then query
the collection to see the available services.

Service Architecture
Services are designed to provide stateless interaction with the object on which they operate. Services are
comprised of two components: a service and a job. The job executes the work asynchronously and provides
a mechanism through which a client can monitor the job for completion or for any errors that occurred dur-
ing its operation. After a job completes, it is scheduled for deletion automatically by the server; no action is
required by the client to clean up the job after it completes.

Service
The service is the interface through which an action is invoked. The service exposes all parameters that can
be specified during its invocation as properties. To see the available parameters, perform a HTTPS GET on
the service endpoint. All properties, besides the name and description of the service, are the parameters
that can be included when invoking a service. Depending on the service, some or all parameters may be
required.

Invocation of a service is accomplished by performing a HTTPS PUT request on the service endpoint with any
parameters specified in the body of the request. Services may limit the total number of concurrent invoc-
ations. If the maximum number of concurrent invocations has been reached, the request is rejected with an
"HTTPS 429 Too Many Requests" response. If the limit has not been reached, the server responds with an
"HTTPS 202 Accepted" response and the body of the response including a link to the newly created job.

Successful PUT response example:

{
"code": 202,
"message": "Accepted",
"href": "https://<hostname_or_ip>:<-
port>/config/v1/project/services/ProjectLoad/jobs/job1"
}

Busy PUT response example:

{
"code": 429,
"message": "The server is busy. Retry the operation at a later time."
}

Job
The job represents a specific request accepted by the server. To check the status of a job, perform a HTTPS
GET request on the job endpoint. The serverm ain.JOB_COMPLETE property represents the current state of
the job as a Boolean. The value of this property remains false until the job has finished executing. If the job
fails to execute for any reason, it provides the client with an appropriate error message in the server-
m ain.JOB_STATUS_MSG property.

Job Cleanup
Jobs are automatically deleted by the server after a configurable amount of time. By default, after a job has
completed, the client has 30 seconds to interact with it before the job is deleted. If a longer amount of time is
required by the client or the client is operating over a slow connection, the client can use the server-
m ain.JOB_TIME_TO_LIVE_SECON D parameter when invoking the service to increase the time-to-live up to a
maximum of five minutes. Each job has its own time-to-live and it may not be changed after a job has been

www. ptc.com
55 Th in gWorx Kep ware Ed ge

created. Clients are not allowed to manually delete jobs from the server, so it is best to choose the shortest
time-to-live without compromising the client’s ability to get the information from the job before it is deleted.

Service Automatic Tag Generation


The Automatic Tag Generation service operates under a device endpoint for a driver that supports Auto-
matic Tag Generation. The properties that support Automatic Tag Generation for the device must be con-
figured prior to initiating Automatic Tag Generation. See the driver specific documentation for related
properties.

To initiate Automatic Tag Generation, a PUT is sent to the TagGeneration endpoint with a defined empty pay-
load. In the following example, Automatic Tag Generation is initiated on Channel1/Device1.

Endpoint (PUT):

https://<hostname_or_ip>:<-
port>/config/v1/project/channels/Channel1/devices/Device1/services/TagGeneration

The response should look something like the following.

Body:

{
"code": 202,
"message": "Accepted",
"href": "https://<hostname_or_ip>:<-
port>/-
con-
fig/v1/project/channels/Channel1/devices/Device1/services/TagGeneration/jobs/job1"
}

This means the request was accepted and the job was created as job1. The status of the job can be seen by
querying the job. This is done by sending a GET to the job’s endpoint. The GET request should look like the fol-
lowing.

Endpoint (GET):

https://<hostname_or_ip>:<-
port>/-
con-
fig/v1/project/channels/Channel1/devices/Device1/services/TagGeneration/jobs/job1

Jobs are automatically cleaned up after their wait time has expired. This wait time is configurable.
See the Job Cleanup section for more information.
N ote: Not all drivers support Automatic Tag Generation.
Tip: Automatic Tag Generation files must be located in the <installation_directory>/user_data directory. All
files in the user_data directory must be world readable or owned by the ThingWorx Kepware Edge user and
group that were created during installation, by default this is tkedge.

Service Project Load


Projects can be loaded by interacting with the ProjectLoad service on the ProjectLoad endpoint. First a GET
request must be sent to get the Project ID to later be used in the PUT request.

The GET request should look like the following.

Endpoint (GET):

www. ptc.com
ThingWorx Kepware Edge 56

https://<hostname_or_ip>:<port>/config/v1/project/services/ProjectLoad

The server should respond with something similar to the following.

Body:

{
"PROJECT_ID": 3531905431,
"common.ALLTYPES_NAME": "ProjectLoad",
"servermain.JOB_TIME_TO_LIVE_SECONDS": 30,
"servermain.PROJECT_FILENAME": "",
"servermain.PROJECT_PASSWORD": ""
}

To initiate the project load, a PUT request is sent to the server with the absolute path to the project file, the
project file password, and the Project ID. If there is no password on the project, that field is not required. Pro-
ject loading supports SLPF, LPF, and JSON file types. The request should look similar to the following.

Endpoint (PUT):

https://<hostname_or_ip>:<port>/config/v1/project/services/ProjectLoad

Body:

{
"PROJECT_ID": 3531905431,
"servermain.PROJECT_FILENAME": "/Absolute/Path/To/MyProject.json",
"servermain.PROJECT_PASSWORD": ""
}

The server should respond with something similar to the following.

Body:

{
"code": 202,
"message": "Accepted",
"href": "https://<hostname_or_ip>:<-
port>/config/v1/project/services/ProjectLoad/jobs/job1"
}

This means the request was accepted and the job was created as job1. The status of the job can be seen by
querying the job. This is done by sending a GET to the job’s endpoint. The GET request should look like the fol-
lowing.

Endpoint (GET):

https://<hostname_or_ip>:<port>/config/v1/project/ProjectLoad/jobs/job1

Jobs are automatically cleaned up after their wait time has expired. This wait time is configurable.
See the Job Cleanup section for more information.

Service Project Save


Projects can be loaded by interacting with the ProjectSave service on the ProjectSave endpoint. A GET
request must be sent to get the Project ID to later be used in the PUT request. The GET request should look
similar to the following.

www. ptc.com
57 Th in gWorx Kep ware Ed ge

Endpoint (GET):

https://<hostname_or_ip>:<port>/config/v1/project/ProjectSave

The server should respond with something similar to the following.

Body:

{
"PROJECT_ID": 2401921849,
"common.ALLTYPES_NAME": "ProjectSave",
"servermain.JOB_TIME_TO_LIVE_SECONDS": 30,
"servermain.PROJECT_FILENAME": ""
}

To initiate the project save a PUT request is sent with the project file path and name of the file with the exten-
sion (SLPF, LPF, or JSON), the password to encrypt it with, and the Project ID. The password property is
required for SLPF file and ignored otherwise. The path is relative to the Application Data Folder. The PUT
request should look similar to the following.

Endpoint (PUT):

https://<hostname_or_ip>:<port>/config/v1/project/services/ProjectSave

Body:

{
"PROJECT_ID": 2401921849,
"servermain.PROJECT_FILENAME": "Projects/MyProject.SLPF",
"servermain.PROJECT_PASSWORD": "MyPassword"
}

The server should respond with something similar to the following.

Body:

{
"code": 202,
"message": "Accepted",
"href": "https://<hostname_or_ip>:<-
port>/config/v1/project/services/ProjectSave/jobs/job1"
}

This means the request was accepted and the job was created as job1. The status of the job can be seen by
querying the job. This is done by sending a GET to the job’s endpoint. The GET request should look like the fol-
lowing.

Endpoint (GET):

https://<hostname_or_ip>:<port>/config/v1/project/ProjectLoad/jobs/job1

Jobs are automatically cleaned up after their wait time has expired. This wait time is configurable.
See the Job Cleanup section for more information.

www. ptc.com
ThingWorx Kepware Edge 58

Project Propert ies (via API Com m ands)


The project endpoint is used to manage the project running in the server. All objects within the project can
be found underneath the project endpoint. To browse the child endpoints, see Content Retrieval.

The project endpoint provides a single point of access for configuring both global project settings as well as
client interfaces.
See Client Interfaces for detailed information on the available client interfaces and their associated settings.
See Project Properties for detailed information on the available Project Property settings.

Supported Actions
HTTPS Verb Act ion
GET Retrieves the current project properties
PUT Updates the project properties

Child Endpoints
Endpoint Descript ion
/config/v1/project/channels Endpoint used to manage the channels in the project
/config/v1/project/_iot_gate-
Endpoint used to manage the IOT Gateway client interface configuration
way
/config/v1/project/aliases Endpoint used to manage the object aliases in the project
/config/v1/project/client_
Endpoint used to manage the various client interfaces
interfaces
Endpoint used to access the services available to the project ( see Project
/config/v1/project/services
Load and Project Save)

GET / config/ v1/ project

Returns the set of project properties as they are configured when the request is processed.

N ote: You cannot delete the project or create a new one. However, you can load a new project or save the
project using the Project Load and Project Save services.

See Also: Project Load and Project Save)

Resource Inform ation


Type Descript ion
Resource URL https://<hostname/port>:<port>/config/v1/project
Response Format JSON
Param eters
Cont ent Ret urns
content=properties Returns the project properties
content=property_definitions Returns a detailed description for each property in the project endpoint
content=property_states Returns the property states
content=type_definition Returns the type definitions
content=children Returns a collection of child endpoints underneath the project endpoint.

www. ptc.com
59 Th in gWorx Kep ware Ed ge

Properties
Propert y N ame Type Descript ion
Provide a brief summary of this object or
common.ALLTYPES_DESCRIPTION String
its use.
Title of the project for informational pur-
servermain.PROJECT_TITLE String
poses.
servermain.PROJECT_TAGS_DEFINED String Count of tags identified in the project
Enable the OPC UA server interface to
uaserverinterface.PROJECT_OPC_UA_ accept client connections. Changes in this
YesNo
ENABLE property require runtime reinitialization to
take effect.
Enable sending diagnostic information to
the event log.
uaserverinterface.PROJECT_OPC_UA_
YesNo Warning: Enabling UA diagnostics
DIAGNOSTICS
allows server users to view encrypted OPC
UA client / server traffic.
Important: You must use Server Admin-
uaserverinterface.PROJECT_OPC_UA_
YesNo istration to define users if anonymous login
ANONYMOUS_LOGIN
is not allowed.
The number of simultaneous OPC UA client
uaserverinterface.PROJECT_OPC_UA_MAX_ connections allowed by the server.
Integer
CONNECTIONS Changes in this property require runtime
reinitialization to take effect.
uaserverinterface.PROJECT_OPC_UA_MIN_ Minimum session timeout period, in
Integer
SESSION_TIMEOUT_SEC seconds, that client is allowed to specify.
uaserverinterface.PROJECT_OPC_UA_MAX_ Maximum session timeout period, in
Integer
SESSION_TIMEOUT_SEC seconds, that client is allowed to specify.
Increase the timeout to improve per-
uaserverinterface.PROJECT_OPC_UA_TAG_
Integer formance for clients that perform reads /
CACHE_TIMEOUT_SEC
writes on unregistered tags.
uaserverinterface.PROJECT_OPC_UA_ Return tag properties when a client
YesNo
BROWSE_TAG_PROPERTIES browses the server address space.
uaserverinterface.PROJECT_OPC_UA_ Return device addressing hints when a cli-
YesNo
BROWSE_ADDRESS_HINTS ent browses the server address space.
Maximum number of data change noti-
uaserverinterface.PROJECT_OPC_UA_MAX_ fications queued per monitored item.
Integer
DATA_QUEUE_SIZE Higher limits give the client more flexibility
but can lead to higher memory usage.
Maximum number of notifications in the
republish queue the server allows per sub-
uaserverinterface.PROJECT_OPC_UA_MAX_
Integer scription. Higher limits use more memory
RETRANSMIT_QUEUE_SIZE
but allow clients to retransmit older mes-
sages.
Maximum number of notifications the
uaserverinterface.PROJECT_OPC_UA_MAX_
Integer server sends per publish. Use larger val-
NOTIFICATION_PER_PUBLISH
ues for fast and reliable connections.

www. ptc.com
ThingWorx Kepware Edge 60

Propert y N ame Type Descript ion


thingworxinterface.ENABLED YesNo Enable the ThingWorx native interface.
"The hostname or IP address of the
thingworxinterface.HOSTNAME String
ThingWorx Platform instance.
The port used to connect to the platform
thingworxinterface.PORT Integer instance, commonly 443 for secure con-
nections.
The endpoint URL of the platform hosting
thingworxinterface.RESOURCE String the websocket server, such as '/Th-
ingworx/WS'.
The application key used to authenticate;
thingworxinterface.APPKEY String
this is generated in the platform.
thingworxinterface.ALLOW_SELF_SIGNED_ Enable to trust valid self-signed certificates
YesNo
CERTIFICATE presented by the server (less secure).
Enable to trust all server certificates
thingworxinterface.TRUST_ALL_ (include self-signed and invalid) and com-
YesNo
CERTIFICATES pletely disable certificate validation. Do not
use on a production system.
Disable SSL/TLS and allow connecting to an
thingworxinterface.DISABLE_ENCRYPTION YesNo insecure endpoint. Do not use on a pro-
duction system.
thingworxinterface.THING_NAME String The thing name presented to the platform.
The minimum rate that updates are sent to
thingworxinterface.PUBLISH_FLOOR_MSEC Integer the platform. Set to zero to send updates
as fast as possible.
Enable ThingWorx Advanced Logging.
thingworxinterface.LOGGING_ENABLED YesNo When enabled, advanced log information is
routed to the server event log.
Enumeration:

Trace: 0 Determines that amount of information


thingworxinterface.LOG_LEVEL Info: 2 logged. Set to Trace to generate the most
Warning: 3 detailed output.
Error: 4
Audit: 6
Determines the level of detail of each mes-
thingworxinterface.VERBOSE YesNo sage logged. Set to Yes to add additional
verbosity.
thingworxinterface.PROXY_ENABLED YesNo Enables ThingWorx proxy support.
Specify the IP address or DNS name of the
thingworxinterface.PROXY_HOST String
proxy server to connect.
Specify the number of the TCP port used to
thingworxinterface.PROXY_PORT Integer
connect to the proxy server.
Enter the password authentication string
thingworxinterface.PROXY_USERNAME String for connecting to the ThingWorx server as
the user specified.

www. ptc.com
61 Th in gWorx Kep ware Ed ge

Propert y N ame Type Descript ion


Enter the password authentication string
thingworxinterface.PROXY_PASSWORD String for connecting to the ThingWorx server as
the user specified.

Exam ple Request

Endpoint (GET):

https://<hostname_or_ip>:<port>/config/v1/project

Exam ple Response

{
"PROJECT_ID": 3536816236,
"common.ALLTYPES_DESCRIPTION": "",
"servermain.PROJECT_TITLE": "",
"servermain.PROJECT_TAGS_DEFINED": "121",
"uaserverinterface.PROJECT_OPC_UA_ENABLE": true
"uaserverinterface.PROJECT_OPC_UA_DIAGNOSTICS": false,
"uaserverinterface.PROJECT_OPC_UA_ANONYMOUS_LOGIN": true,
"uaserverinterface.PROJECT_OPC_UA_MAX_CONNECTIONS": 128,
"uaserverinterface.PROJECT_OPC_UA_MIN_SESSION_TIMEOUT_SEC": 15,
"uaserverinterface.PROJECT_OPC_UA_MAX_SESSION_TIMEOUT_SEC": 60,
"uaserverinterface.PROJECT_OPC_UA_TAG_CACHE_TIMEOUT_SEC": 5,
"uaserverinterface.PROJECT_OPC_UA_BROWSE_TAG_PROPERTIES": false,
"uaserverinterface.PROJECT_OPC_UA_BROWSE_ADDRESS_HINTS": false,
"uaserverinterface.PROJECT_OPC_UA_MAX_DATA_QUEUE_SIZE": 2,
"uaserverinterface.PROJECT_OPC_UA_MAX_RETRANSMIT_QUEUE_SIZE": 10,
"uaserverinterface.PROJECT_OPC_UA_MAX_NOTIFICATION_PER_PUBLISH": 65536,
"thingworxinterface.ENABLED": false,
"thingworxinterface.HOSTNAME": "hostname_or_ip",
"thingworxinterface.PORT": 443,
"thingworxinterface.RESOURCE": "/Thingworx/WS",
"thingworxinterface.APPKEY": "",
"thingworxinterface.ALLOW_SELF_SIGNED_CERTIFICATE": false,
"thingworxinterface.TRUST_ALL_CERTIFICATES": false,
"thingworxinterface.DISABLE_ENCRYPTION": false,
"thingworxinterface.THING_NAME": "ThingworxKepwareEdge",
"thingworxinterface.PUBLISH_FLOOR_MSEC": 1000,
"thingworxinterface.LOGGING_ENABLED": false,
"thingworxinterface.LOG_LEVEL": 3,
"thingworxinterface.VERBOSE": false,
"thingworxinterface.PROXY_ENABLED": false,
"thingworxinterface.PROXY_HOST": "localhost",
"thingworxinterface.PROXY_PORT": 3128,
"thingworxinterface.PROXY_USERNAME": "",
"thingworxinterface.PROXY_PASSWORD": ""
}

Project Propert ies — ThingWorx


Support for the ThingWorx Native Interface simplifies the task of connecting with a ThingWorx Platform,
while simultaneously allowing OPC and other connectivity as needed.

www. ptc.com
ThingWorx Kepware Edge 62

Before configuring the ThingWorx Native Interface, create a Thing in the ThingWorx platform with the “Indus-
trial Gateway” Thing Template. A Thing name which represents its data source is recommended. Once the
Thing is created, configure the OPC server to connect to the ThingWorx platform using the Thing name. The
new connection will auto-bind to this Thing.

Once the connection to the ThingWorx platform is made, use the Industrial Connections selection from the
left-hand menu to select tags from the newly created server instance. These tags may be selected and
bound to new Things directly in the ThingWorx Composer.
Refer to the ThingWorx Composer documentation for more information.

Cautions:

l Any tags with an array data type must be configured with the Always push type in the ThingWorx Plat-
form. A push threshold set to value change will fail to publish updates to the platform.
l While most of the native interfaces function in a client server configuration, the ThingWorx Native
Interface acts more like a client, as it creates an outbound connection to the ThingWorx platform.
This allows the ThingWorx Native Interface to connect to a remote ThingWorx Platform using stand-
ard ports and protocols without the need to create unusual firewall or routing rules. As long as the
ThingWorx Composer is reachable in a browser from the machine hosting the OPC server, then the
server should be able to pass data to that platform through the Native interface.
l As noted in ThingWorx documentation, configuration of a ThingWorx Application Key is crucial to
providing a secured environment. The Application Key should provide the appropriate privileges to
allow the proper exchange of data between the server instance and the ThingWorx Platform.

Server Interface

Enable: Set to Yes for the ThingWorx Native interface to attempt connection with the information provided.

Connection Settings

Host: Specify the IP address or DNS name of the ThingWorx server.

Port: Specify the number of the TCP port used by the ThingWorx server.

Resource: Specify the URL endpoint on the ThingWorx server.

Application key: Enter or paste in the authentication string for connecting to the ThingWorx server.
Caution: Do NOT set this property using the Configuration API Service over HTTP in production mode; use
HTTPS for best security.

Trust self-signed certificates: Set to No for maximum security. Set to Yes to accept self-signed certificates
during development.
Caution: Do NOT set this to Yes in a production environment as it would compromise security.

Trust all certificates: Set to No for maximum security. Set to Yes and the TLS library does not validate the
server certificate.
Caution: Do NOT set this to Yes in a production environment as it would compromise security.

Disable encryption: Indicate if connections to a non-SSL-secured ThingWorx platform are allowed.


Caution: Do NOT set this to Yes in a production environment as it would compromise security.

Platform

www. ptc.com
63 Th in gWorx Kep ware Ed ge

Thing nam e: Enter the name of the entity (remote thing) on the ThingWorx server that represents this data
source. Use the OPC server template to create the remote thing.
N ote: The Thing Name must match the name of the Industrial Gateway thing exactly (case sensitive).

Data Rates

Publish floor: Specify the minimum rate at which updates are sent to the platform. Zero sends updates as
often as possible.

Logging

Enable: Set to Yes to activate advanced logging of the ThingWorx native interface. This logging is sent to the
server event log. This logging may cause the event log to fill up quickly, it is recommended that the logging
remain disabled when not troubleshooting.

Level: Set the severity of logging to be sent to the event log. Trace includes all messages from the native
ThingWorx interface.

Verbose: Set to Yes to make the error messages as detailed as possible.

See Also: Event Log

Proxy Properties
The server leverages the ThingWorx CSDK to allow communicating with the ThingWorx platform through a
proxy server. The following authentication options are supported:

l No authentication
l Basic authentication
l Digest authentication
l NTLM

Enable: Set to True to connect to the ThingWorx platform through a proxy server.

Host: The IP address or DNS name of the proxy server to connect.

Port: The number of the TCP port used to connect to the proxy server.

Usernam e: The user account name to connect to the proxy server and authenticate.

Password: The password authentication string for connecting to the ThingWorx server as the user specified.
Caution: Do NOT set this property using the Configuration API Service over HTTP in production mode; use
only HTTPS for best security.

Project Propert ies — OPC UA


OPC Unified Architecture (UA) provides a platform independent interoperability standard. The OPC UA Pro-
ject Properties group displays the current OPC UA settings in the server.

Server Interface

www. ptc.com
ThingWorx Kepware Edge 64

Enable: When enabled, the UA server interface is initialized and accepts client connections. When disabled,
the remaining properties on this page are disabled.

Client Sessions

Allow anonym ous login: This property specifies whether or not a user name and password are required to
establish a connection. For security, the default setting is No to disallow anonymous access and require cre-
dentials to log in.
Tip: Additional users may be configured to access data without all the permissions associated with the
administrator account. When the client supplies a password on connect, the server decrypts the password
using the encryption algorithm defined by the security policy of the endpoint, then uses it to login.
N ote: Users can login as the Administrator using the password set during the installation of ThingWorx Kep-
ware Edge to login. Additional users may be configured to access data without all the permissions asso-
ciated with the administrator account. When the client supplies a password on connect, the server decrypts
the password using the encryption algorithm defined by the security policy of the endpoint. then used to
login.
When the client supplies a password on connect, the server decrypts the password using the encryption
algorithm defined by the security policy of the endpoint.

Max. connections: specify the maximum number of supported connections. The valid range is 1 to 128. The
default setting is 128.

Minim um session tim eout: specify the UA client's minimum timeout limit for establishing a session. Val-
ues may be changed depending on the needs of the application. The default value is 15 seconds.

Maxim um session tim eout: specify the UA client's maximum timeout limit for establishing a session. Val-
ues may be changed depending on the needs of the application. The default value is 60 seconds.

Tag cache tim eout: specify the tag cache timeout. The valid range is 0 to 60 seconds. The default setting is
5 seconds.
N ote: This timeout controls how long a tag is cached after a UA client is done using it. In cases where UA
clients read / write to unregistered tags at a set interval, users can improve performance by increasing the
timeout. For example, if a client is reading an unregistered tag every 5 seconds, the tag cache timeout
should be set to 6 seconds. Since the tag does not have to be recreated during each client request, per-
formance improves.

Brow sing

Return tag properties: Enable to allow UA client applications to browse the tag properties available for
each tag in the address space. This setting is disabled by default.

Return address hints: Enable to allows UA client applications to browse the address formatting hints avail-
able for each item. Although the hints are not valid UA tags, certain UA client applications may try to add
them to the tag database. When this occurs, the client receives an error from the server. This may cause the
client to report errors or stop adding the tags automatically. To prevent this from occurring, make sure that
this property is disabled. This setting is disabled by default.

M onitored Items

www. ptc.com
65 Th in gWorx Kep ware Ed ge

Max. Data Queue Size: specify the maximum number of data notifications to be queued for an item. The
valid range is 1 to 100. The default setting is 2.
N ote: The data queue is used when the monitored item's update rate is faster than the subscription's
publish rate. For example, if the monitored item update rate is 1 second, and a subscription publishes every
10 seconds, then 10 data notifications are published for the item every 10 seconds. Because queuing data
consumes memory, this value should be limited when memory is a concern.

Subscriptions

Max. retransm it queue size: specify the maximum number of publishes to be queued per subscription.
The valid range is 1 to 100. A value of zero disables retransmits. The default setting is 0.
N ote: Subscription publish events are queued and retransmitted at the client's request. Because
queuing consumes memory, this value should be limited when memory is a concern.

Max. notifications per publish: specify the maximum number of notifications per publish. The valid range
is 1 to 65536. The default setting is 65536.
N ote: This value may affect the connection's performance by limiting the size of the packets sent from
the server to the client. In general, large values should be used for high-bandwidth connections and small val-
ues should be used for low-bandwidth connections.

Channel Propert ies — Configurat ion API


The following properties define a channel using the Configuration API service.

General Properties

common.ALLTYPES_NAME * Required parameter.

N ote: Changing this property causes the API endpoint URL to change.

common.ALLTYPES_DESCRIPTION

servermain.MULTIPLE_TYPES_DEVICE_DRIVER * Required parameter

Ethernet Communication Properties

servermain.CHANNEL_ETHERNET_COMMUNICATIONS_NETWORK_ADAPTER_STRING

Advanced Properties

servermain.CHANNEL_NON_NORMALIZED_FLOATING_POINT_HANDLING * Required parameter

Write Optimizations

servermain.CHANNEL_WRITE_OPTIMIZATIONS_METHOD

servermain.CHANNEL_WRITE_OPTIMIZATIONS_DUTY_CYCLE

See Also: The server help system Configuration API Service section.

www. ptc.com
ThingWorx Kepware Edge 66

Configurat ion API Service — Creat ing a Channel


To create a channel via the Configuration API service, only a minimum set of properties are required; all oth-
ers are set to the default value. Once a channel is defined, its properties and settings are used by all devices
assigned to that channel. The specific properties are dependent on the protocol or driver selected.

Using a REST-based API tool such as Postman, Insomnia, or Curl; make a POST request to the channel end-
point.

The example below creates a channel named Channel1 that uses the Simulator driver on a server running
on the local host.

Endpoint (POST):

https://<hostname_or_ip>:<port>/config/v1/project/channels

Body:

{
“common.ALLTYPES_NAME”: “Channel1”,

“servermain.MULTIPLE_TYPES_DEVICE_DRIVER”: “Simulator”

Refer to the driver specific help documentation to find out what properties are required to create a channel for
that driver.

Configurat ion API Service — Updat ing a Channel


To update a property or collection of properties on a channel, a GET request must first be sent to the end-
point to be updated to get the Project ID.

For more information about the Project ID see the Concurrent Clients section.

In the example below, the channel being updated is Channel1.

Endpoint (GET):

https://<hostname_or_ip>:<port>/config/v1/project/channels/Channel1

The GET request will return a JSON blob similar to the following.

Body:

{
"PROJECT_ID": <project_ID_from_GET>,
"common.ALLTYPES_NAME": "Channel1",
"common.ALLTYPES_DESCRIPTION": "",
"servermain.MULTIPLE_TYPES_DEVICE_DRIVER": "Simulator",
"servermain.CHANNEL_UNIQUE_ID": 2154899492,
"servermain.CHANNEL_WRITE_OPTIMIZATIONS_METHOD": 2,

To update or change a channel property, a PUT request is sent to the channel with the Project ID and the
new property value defined. In the following example, the channel name will change from Channel1 (from
above) to Simulator.

www. ptc.com
67 Th in gWorx Kep ware Ed ge

Endpoint (PUT):

https://<hostname_or_ip>:<port>/config/v1/project/channels/Channel1

Body:

{
"PROJECT_ID": <project_ID_from_GET>,
"common.ALLTYPES_NAME": "Simulator"
}

Following the PUT, a GET can be sent to the channel’s endpoint to validate that the property changed. In this
case, because the name was changed, the endpoint also changed and the GET request would be the fol-
lowing.
N ote: Some properties are client restricted and cannot be changed when a client is connected.

Endpoint (GET):

https://<hostname_or_ip>:<port>/config/v1/project/channels/Simulator

The response from the GET request should show the property value has changed. The response to the GET
above should look similar to the following:

Body:

{
"PROJECT_ID": <project_ID_from_GET>,
"common.ALLTYPES_NAME": "Simulator",
"common.ALLTYPES_DESCRIPTION": "",
"servermain.MULTIPLE_TYPES_DEVICE_DRIVER": "Simulator",
"servermain.CHANNEL_UNIQUE_ID": 2154899492,
"servermain.CHANNEL_WRITE_OPTIMIZATIONS_METHOD": 2,

Configurat ion API Service — Rem oving Channel


To remove a channel, send a DELETE command to the channel endpoint to be removed. This causes the
channel and all of its children to be removed.

In the example below, the channel Simulator will be removed.

Endpoint (DELETE):

https://<hostname_or_ip>:<port>/config/v1/project/channels/Simulator

This can be verified by sending a GET to the removed endpoint. The server will respond with an error. It can
also be verified with a GET to the "channels" endpoint; the removed channel will not be in the list of channels
returned from the GET request.

Device Propert ies — Configurat ion API


The following properties define a device using the Configuration API service.

General Properties

www. ptc.com
ThingWorx Kepware Edge 68

common.ALLTYPES_NAME

common.ALLTYPES_DESCRIPTION

servermain.DEVICE_CHANNEL_ASSIGNMENT

servermain.MULTIPLE_TYPES_DEVICE_DRIVER

servermain.DEVICE_MODEL

servermain.DEVICE_ID_STRING

servermain.DEVICE_DATA_COLLECTION

servermain.DEVICE_SIMULATED

Scan M ode

servermain.DEVICE_SCAN_MODE * Required parameter

servermain.DEVICE_SCAN_MODE_RATE_MS

servermain.DEVICE_SCAN_MODE_RATE_MS

servermain.DEVICE_SCAN_MODE_PROVIDE_INITIAL_UPDATES_FROM_CACHE

Auto Demotion

servermain.DEVICE_AUTO_DEMOTION_ENABLE_ON_COMMUNICATIONS_FAILURES

servermain.DEVICE_AUTO_DEMOTION_DEMOTE_AFTER_SUCCESSIVE_TIMEOUTS

servermain.DEVICE_AUTO_DEMOTION_PERIOD_MS

servermain.DEVICE_AUTO_DEMOTION_DISCARD_WRITES

Tag Generation

servermain.DEVICE_TAG_GENERATION_ON_STARTUP * Required parameter

servermain.DEVICE_TAG_GENERATION_DUPLICATE_HANDLING * Required parameter

servermain.DEVICE_TAG_GENERATION_GROUP

servermain.DEVICE_TAG_GENERATION_ALLOW_SUB_GROUPS

Tip: To Invoke Automatic Tag Generation, send a PUT with an empty body to the TagGeneration service
endpoint on the device.
N ote: All files in the user_data directory must be world readable or owned by the ThingWorx Kepware
Edge user and group that were created during installation, by default tkedge.
See Also: For more information see Services help.

Timing
servermain.DEVICE_CONNECTION_TIMEOUT_SECONDS

servermain.DEVICE_REQUEST_TIMEOUT_MILLISECONDS

servermain.DEVICE_RETRY_ATTEMPTS

www. ptc.com
69 Th in gWorx Kep ware Ed ge

servermain.DEVICE_INTER_REQUEST_DELAY_MILLISECONDS

See Also: The server help system Configuration API Service section.

Configurat ion API Service — Creat ing a Device


To create a device via the Configuration API service, only a minimum set of properties are required; all oth-
ers are set to the default value. The specific properties are dependent on the protocol or driver selected.

Using a REST-based API tool such as Postman, Insomnia, or Curl; make a POST request to the device end-
point under a channel.

The example below will create a device named Device1 under Channel1 that uses the Simulator driver on a
server running on the local host.

Endpoint (POST):

https://<hostname_or_ip>:<port>/config/v1/project/channels/Channel1/devices

Body:

{
“common.ALLTYPES_NAME”: “Device1”,
“servermain.MULTIPLE_TYPES_DEVICE_DRIVER”: “Simulator”
}

Refer to the driver specific help documentation to find out what properties are required to create a device for
that driver.

Configurat ion API Service — Updat ing a Device


To update a property or collection of properties on a device, a GET request must first be sent to the endpoint
to be updated to get the Project ID.

For more information about the Project ID, see the Concurrent Clients section.

In the example below, the device being updated is Device1 under Channel1.

Endpoint (GET):

https://<hostname_or_ip>:<-
port>/config/v1/project/channels/Channel1/devices/Device1

The GET request will return a JSON blob similar to the following.

Body:

{
"PROJECT_ID": <project_ID_from_GET>,
"common.ALLTYPES_NAME": "Device1",
"common.ALLTYPES_DESCRIPTION": "",
"servermain.MULTIPLE_TYPES_DEVICE_DRIVER": "Simulator",
"servermain.DEVICE_MODEL": 0,
"servermain.DEVICE_UNIQUE_ID": <project_ID_from_GET>,
"servermain.DEVICE_CHANNEL_ASSIGNMENT": "Channel1",

www. ptc.com
ThingWorx Kepware Edge 70

To update or change a device property a PUT request is sent to the device with the Project ID and the new
property value defined. In the following example the device name will change from Device1 (from above) to
Simulator.

Endpoint (PUT):

https://<hostname_or_ip>:<-
port>/config/v1/project/channels/Channel1/devices/Device1

Body:

{
"PROJECT_ID": <project_ID_from_GET>,
"common.ALLTYPES_NAME": "Simulator"
}

Following the PUT, a GET can be sent to the device endpoint to validate that the property changed. In this
case, because the name was changed, the endpoint also changed and the GET request would be the fol-
lowing.
N ote: Some properties are client restricted and cannot be changed when a client is connected.

Endpoint (GET):

https://<hostname_or_ip>:<-
port>/config/v1/project/channels/Channel1/devices/Simulator

The response from the GET request will show the property value has changed. The response to the GET
above should look similar to the following.

Body:

{
"PROJECT_ID": <project_ID_from_GET>,
"common.ALLTYPES_NAME": "Simulator",
"common.ALLTYPES_DESCRIPTION": "",
"servermain.MULTIPLE_TYPES_DEVICE_DRIVER": "Simulator",
"servermain.DEVICE_MODEL": 0,
"servermain.DEVICE_UNIQUE_ID": <device_ID_from_GET>,
"servermain.DEVICE_CHANNEL_ASSIGNMENT": "Channel1",

Configurat ion API Service — Rem oving a Device


To remove a device, send a DELETE to the device endpoint to be removed. This will cause the device and all
of its children to be removed.

In the example below, the device Simulator will be removed.

Endpoint (DELETE):

https://<hostname_or_ip>:<-
port>/config/v1/project/channels/Channel1/devices/Simulator

This can be verified by sending a GET to the removed endpoint. The server will respond with an error. It can
also be verified with a get to the devices endpoint and the removed device will not be in the list of devices
returned from the GET request.

www. ptc.com
71 Th in gWorx Kep ware Ed ge

Configurat ion API Service — Creat ing a Tag


To create a tag via the Configuration API service, only a minimum set of properties are required; all others
are set to the default value. The specific properties are dependent on the protocol or driver selected.

Using a REST-based API tool such as Postman, Insomnia, or Curl; make a POST request to the tags endpoint
under a device.

The example below will create a tag named MyTag for address R5 under Channel1/Device1 that uses the
Simulator driver on a server running on the local host.

Endpoint (POST):

https://<hostname_or_ip>:<-
port>/config/v1/project/channels/Channel1/devices/Device1/tags

Body:

{
“common.ALLTYPES_NAME”: “MyTag”,
"servermain.TAG_ADDRESS": "R5"
}

Tags can also be created within a tag group. The process for adding a tag group is the same except the URL
will change to include the tag_group endpoint and the group name.
In the following example, the tag group RampTags already exists and a tag named MyTag will be created
under it with the address R5.

For more information on creating a tag group see Creating a Tag Group section.

Endpoint (POST):

https://<hostname_or_ip>:<-
port>/config/v1/project/channels/Channel1/devices/Device1/tag_group/RampTags/tags

Body:

{
“common.ALLTYPES_NAME”: “MyTag”,
"servermain.TAG_ADDRESS": "R5"
}

Refer to the driver specific help documentation to find out what properties are required to create a tag for that
driver.

Configurat ion API Service — Updat ing a Tag


To update a property or collection of properties on a tag, a GET request must first be sent to the endpoint to
be updated to get the Project ID.

For more information about the Project ID see the Concurrent Clients section.

In the example below, the tag being updated is MyTag under Channel1/Device1.

Endpoint (GET):

www. ptc.com
ThingWorx Kepware Edge 72

https://<hostname_or_ip>:<-
port>/config/v1/project/channels/Channel1/devices/Device1/tags/MyTag

The GET request will return a JSON blob similar to the following.

Body:

{
"PROJECT_ID": <project_ID_from_GET>,
"common.ALLTYPES_NAME": "MyTag",
"common.ALLTYPES_DESCRIPTION": "",
"servermain.TAG_ADDRESS": "R0005",
"servermain.TAG_DATA_TYPE": 5,
"servermain.TAG_READ_WRITE_ACCESS": 1,
"servermain.TAG_SCAN_RATE_MILLISECONDS": 100,

To update or change a tag property, a PUT request is sent to the tag with the Project ID and the new prop-
erty value defined.
In the following example, the tag name will change from MyTag (from above) to Tag1.

Endpoint (PUT):

https://<hostname_or_ip>:<-
port>/config/v1/project/channels/Channel1/devices/Device1/tags/MyTag

Body:

{
"PROJECT_ID": <project_ID_from_GET>,
"common.ALLTYPES_NAME": "Tag1"
}

Following the PUT a GET can be sent to the tag’s endpoint to validate that the property changed. In this case,
because the name was changed, the endpoint also changed and the GET request would be the following.

Endpoint (GET):

https://<hostname_or_ip>:<-
port>/config/v1/project/channels/Channel1/devices/Device1/tags/Tag1

The response from the GET request will show the property value has changed. The response to the GET
above should look similar to the following.

Body:

{
"PROJECT_ID": <project_ID_from_GET>,
"common.ALLTYPES_NAME": "Tag1",
"common.ALLTYPES_DESCRIPTION": "",
"servermain.TAG_ADDRESS": "R0005",
"servermain.TAG_DATA_TYPE": 5,
"servermain.TAG_READ_WRITE_ACCESS": 1,
"servermain.TAG_SCAN_RATE_MILLISECONDS": 100,

www. ptc.com
73 Th in gWorx Kep ware Ed ge

Configurat ion API Service — Rem oving a Tag


To remove a tag, send a DELETE to the tag’s endpoint to be removed. This will cause the tag and all of its chil-
dren to be removed.
In the example below, the tag Tag1 will be removed.

Endpoint (DELETE):

https://<hostname_or_ip>:<-
port>/config/v1/project/channels/Channel1/devices/Device1/tags/Tag1

This can be verified by sending a GET to the removed endpoint. The server will respond with an error. It can
also be verified with a get to the tags endpoint and the removed tag will not be in the list of tags returned
from the GET request.

Configurat ion API Service — Creat ing a Tag Group


To create a tag group via the Configuration API service, only a group name is required.

Using a REST-based API tool such as Postman, Insomnia, or Curl; make a POST request to the tag_groups
endpoint under a device.

The example below will create a tag group named RampTags under Channel1/Device1 that uses the Sim-
ulator driver on a server running on the local host.

Endpoint (POST):

https://<hostname_or_ip>:<-
port>/config/v1/project/channels/Channel1/devices/Device1/tag_groups

Body:

{
“common.ALLTYPES_NAME”: “RampTags”
}

Tag groups can have tags and more tag groups nested under them. To add a Tag, see the Creating a Tag sec-
tion.

To nest a Tag Group within another group, another POST action is required to add the existing group name
and the tag_groups endpoint to the end of the URL.

Continuing the example above, the new request would look like the following.

Endpoint (POST):

https://<hostname_or_ip>:<-
port>/config/v1/project/channels/Channel1/devices/Device1/tag_groups/RampTags/tag_
groups

Body:

{
“common.ALLTYPES_NAME”: “1-10”
}

www. ptc.com
ThingWorx Kepware Edge 74

Configurat ion API Service — Updat ing a Tag Group


To update a property or collection of properties on a tag, a GET request must first be sent to the endpoint to
be updated to get the Project ID.
For more information about the Project ID, see the Concurrent Clients section.

In the example below, the tag group being updated is RampTags under Channel1/Device1.

Endpoint (GET):

https://<hostname_or_ip>:<-
port>/config/v1/project/channels/Channel1/devices/Device1/tag_groups/RampTags

The GET request will return a JSON blob similar to the following.

Body:

{
"PROJECT_ID": <project_ID_from_GET>,
"common.ALLTYPES_NAME": "RampTags",
"common.ALLTYPES_DESCRIPTION": "",
"servermain.TAGGROUP_LOCAL_TAG_COUNT": 0,
"servermain.TAGGROUP_TOTAL_TAG_COUNT": 0,
"servermain.TAGGROUP_AUTOGENERATED": false
}

To update or change a tag group property, a PUT request is sent to the tag group with the Project ID and the
new property value defined.
In the following example, the tag group name will change from RampTags (from above) to RampGroup.

Endpoint (PUT):

https://<hostname_or_ip>:<-
port>/config/v1/project/channels/Channel1/devices/Device1/tags/MyTag

Body:

{
"PROJECT_ID": <project_ID_from_GET>,
"common.ALLTYPES_NAME": "RampGroup"
}

Following the PUT, a GET can be sent to the tag group endpoint to validate that the property changed. In this
case, because the name was changed, the endpoint also changed and the GET request would be the fol-
lowing.

Endpoint (GET):

https://<hostname_or_ip>:<-
port>/config/v1/project/channels/Channel1/devices/Device1/tag_groups/RampGroup

The response from the GET request will show the property value has changed. The response to the GET
above should look similar to the following.

Body:

{
"PROJECT_ID": <project_ID_from_GET>,

www. ptc.com
75 Th in gWorx Kep ware Ed ge

"common.ALLTYPES_NAME": "RampTags",
"common.ALLTYPES_DESCRIPTION": "",
"servermain.TAGGROUP_LOCAL_TAG_COUNT": 0,
"servermain.TAGGROUP_TOTAL_TAG_COUNT": 0,
"servermain.TAGGROUP_AUTOGENERATED": false
}

Configurat ion API Service — Rem oving a Tag Group


To remove a tag group, send a DELETE to the tag group endpoint to be removed. This will cause the tag
group and all of its children to be removed. In the example below the tag group RampGroup will be removed.

Endpoint (DELETE):

https://<hostname_or_ip>:<-
port>/config/v1/project/channels/Channel1/devices/Device1/tag_groups/RampGroup

This can be verified by sending a GET to the removed endpoint. The server will respond with an error. It can
also be verified with a get to the tag_groups endpoint and the removed tag group will not be in the list of tag
groups returned from the GET request.

Configurat ion API Service — User M anagem ent


The User Manager controls client access to the project's objects (which are the channels, devices, tags. etc.)
and their corresponding functions. The User Manager allows permissions to be specified by user groups. For
example, the User Manager can restrict user access to project tag data based on its permissions from the
parent user group.

The User Manager has four built-in groups that each contain a built-in user. The default groups are Admin-
istrators, Server Users, Anonymous Clients, and ThingWorx Interface Users. The default users in these
groups are Administrator, Default User, Data Client, and ThingWorx Interface. Users cannot rename or
change the description fields of built-in user groups or users. Neither the default groups nor the default
users can be disabled.

To allow adequate access for data transfer between the server and the ThingWorx Platform, project modi-
fication must be enabled for the ThingWorx Interface Users group. The request to grant the correct access
for this functionality should look similar to the following:

Endpoint (PUT):

https://<hostname_or_ip>:<port>/config/v1/admin/server_usergroups/ThingWorx Inter-
face Users/project_permissions/Servermain Project

Body:

{
"libadminsettings.USERMANAGER_PROJECTMOD_EDIT": true
}

N otes:

1. Although the Administrator's group settings cannot be changed, additional administrative users can
be added to the group.

2. A project cannot load without correct user information.

www. ptc.com
ThingWorx Kepware Edge 76

3. There is no ”Project_ID” property on the User Management endpoints. All PUTs are accepted and the
last PUT to a given endpoint is applied.

User Groups

Endpoint: https://<hostname_or_ip>:<port>/config/v1/admin/server_usergroups

Supported Actions
HTTP(S) Verb Act ion
POST Create the specified group
GET Retrieves a list of all groups
DELETE Removes the specified group and all of its users

Endpoint: https://<hostname_or_ip>:<port>/config/v1/admin/server_usergroups/<GroupName>

Supported Actions
HTTP(S) Verb Act ion
GET Retrieves the specified group
PUT Updates the specified group
DELETE Removes the specified user

Properties
Propert y N ame Type Required Descript ion
common.ALLTYPES_NAME String Yes Specify the identity of this object.
Provide a brief summary of this object
common.ALLTYPES_DESCRIPTION String No
or its use.
libadminsettings.USERMANAGER_ The group's enabled-state takes pre-
Enable/Disable No
GROUP_ENABLED cedence over the users enabled state.
libadminsettings.USERMANAGER_ Allow/deny clients belonging to the
Enable/Disable No
IO_TAG_READ group to access I/O tag data.
Allow/deny clients belonging to the
group to modify I/O tag data. Note:
libadminsettings.USERMANAGER_ When USERMANAGER_IO_TAG_READ is
Enable/Disable No
IO_TAG_WRITE set to false, this property is also set to
false and disabled to prevent write-only
tags.
Allow/deny clients belonging to the
libadminsettings.USERMANAGER_
Enable/Disable No group to add items using dynamic
IO_TAG_DYNAMIC_ADDRESSING
addressing.
libadminsettings.USERMANAGER_ Allow/deny clients belonging to the
Enable/Disable No
SYSTEM_TAG_READ group to access system tag data.
Allow/deny clients belonging to the
libadminsettings.USERMANAGER_ group to modify system tag data. Note:
Enable/Disable No
SYSTEM_TAG_WRITE When USERMANAGER_SYSTEM_TAG_
READ is set to false, this property is also

www. ptc.com
77 Th in gWorx Kep ware Ed ge

Propert y N ame Type Required Descript ion


set to false and disabled to prevent
write-only tags.
libadminsettings.USERMANAGER_ Allow/deny clients belonging to the
Enable/Disable No
INTERNAL_TAG_READ group to access internal tag data.
Allow/deny clients belonging to the
group to modify internal tag data. Note:
libadminsettings.USERMANAGER_ When USERMANAGER_INTERNAL_TAG_
Enable/Disable No
INTERNAL_TAG_WRITE READ is set to false, this property is also
set to false and disabled to prevent
write-only tags.
libadminsettings.USERMANAGER_ Allow/deny users belonging to the
Enable/Disable No
SERVER_MANAGE_LICENSES group to access the license manager.
libadminsettings.USERMANAGER_
Allow/deny users belonging to the
SERVER_MODIFY_SERVER_ Enable/Disable No
group to access this property sheet.
SETTINGS
Allow/deny users belonging to the
libadminsettings.USERMANAGER_
Enable/Disable No group to take action that can cause
SERVER_DISCONNECT_CLIENTS
data clients to be disconnected.
Allow/deny users belonging to the
libadminsettings.USERMANAGER_
Enable/Disable No group to clear all logged event mes-
SERVER_RESET_EVENT_LOG
sages.
libadminsettings.USERMANAGER_ Allow/deny users belonging to the
SERVER_OPCUA_DOTNET_ Enable/Disable No group to access the OPC UA or XI con-
CONFIGURATION figuration manager.
libadminsettings.USERMANAGER_ Allow/deny users belonging to the
SERVER_CONFIG_API_LOG_ Enable/Disable No group to access the Configuration API
ACCESS Transaction Log.
libadminsettings.USERMANAGER_
Allow/deny users belonging to the
SERVER_REPLACE_RUNTIME_ Enable/Disable No
group to replace the running project.
PROJECT
Allow/deny clients belonging to the user
libadminsettings.USERMANAGER_
Enable/Disable No group to browse the project
BROWSE_BROWSENAMESPACE
namespace.

Project Permissions

Endpoint: https://<hostname_or_ip>:<port>/config/v1/admin/server_usergroups/<GroupName>/project_per-
missions

Supported Actions
HTTP(S) Verb Act ion
GET Retrieves a list of all project permissions

Child Endpoints

Properties

www. ptc.com
ThingWorx Kepware Edge 78

Endpoint Descript ion


/config/v1/admin/server_user-
Configure default 'Servermain Alias' access per-
groups/<GroupName>/project_per-
missions for the selected user group.
missions/Servermain Alias
/config/v1/admin/server_user-
Configure default 'Servermain Channel' access
groups/<GroupName>/project_per-
permissions for the selected user group.
missions/Servermain Channel
/config/v1/admin/server_user-
Configure default 'Servermain Device' access
groups/<GroupName>/project_per-
permissions for the selected user group.
missions/Servermain Device
Configure default 'Servermain Meter Order'
/config/v1/admin/server_user-
access permissions for the selected user group.
groups/<GroupName>/project_per-
N ote: Add and delete properties are disabled
missions/Servermain Meter Order
for this endpoint.
/config/v1/admin/server_user-
Configure default 'Servermain Phone Number'
groups/<GroupName>/project_per-
access permissions for the selected user group.
missions/Servermain Phone Number
Configure default 'Servermain Phone Priority'
/config/v1/admin/server_user-
access permissions for the selected user group.
groups/<GroupName>/project_per-
N ote: Add and delete properties are disabled
missions/Servermain Phone Priority
for this endpoint.
Configure default 'Servermain Project' access
/config/v1/admin/server_user-
permissions for the selected user group.
groups/<GroupName>/project_per-
N ote: Add and delete properties are disabled
missions/Servermain Project
for this endpoint.
/config/v1/admin/server_user-
Configure default 'Servermain Tag' access per-
groups/<GroupName>/project_per-
missions for the selected user group.
missions/Servermain Tag
/config/v1/admin/server_user-
Configure default 'Servermain Tag Group'
groups/<GroupName>/project_per-
access permissions for the selected user group.
missions/Servermain Tag Group

Endpoint: https://<hostname_or_ip>:<port>/config/v1/admin/server_usergroups/<GroupName>/project_per-
missions/<PermissionName>

Supported Actions
HTTP(S) Verb Act ion
GET Retrieves the specified project permission
PUT Updates the specified project permission

Properties
Propert y N ame Type Descript ion
common.ALLTYPES_NAME String Specify the identity of this object.
Provide a brief summary of this object or its
common.ALLTYPES_DESCRIPTION String
use.
libadminsettings.USERMANAGER_ Enable/Disable Allow/deny users belonging to the group to

www. ptc.com
79 Th in gWorx Kep ware Ed ge

Propert y N ame Type Descript ion


PROJECTMOD_ADD add this type of object.
libadminsettings.USERMANAGER_ Allow/deny users belonging to the group to
Enable/Disable
PROJECTMOD_EDIT edit this type of object.
libadminsettings.USERMANAGER_ Allow/deny users belonging to the group to
Enable/Disable
PROJECTMOD_DELETE delete this type of object.

Users

Endpoint: https://<hostname_or_ip>:<port>/config/v1/admin/server_users

Supported Actions
HTTP(S) Verb Act ion
POST Create the specified user
GET Retrieves a list of all users

Endpoint: https://<hostname_or_ip>:<port>/config/v1/admin/server_users/<UserName>

Supported Actions
HTTP(S) Verb Act ion
GET Retrieves the specified user
PUT Updates the specified user
Properties
Propert y N ame Type Required Descript ion
common.ALLTYPES_NAME String Yes Specify the identity of this object.
Provide a brief summary of this object
common.ALLTYPES_DESCRIPTION String No
or its use.
libadminsettings.USERMANAGER_
String Yes The name of the parent group.
USER_GROUPNAME
libadminsettings.USERMANAGER_ The group‘s enabled-state takes pre-
Enable/Disable No
USER_ENABLED cedence over the users enabled state.
The user’s password. This is case-sens-
itive.
The product Administrator password
must be at least 14 characters, no more
libadminsettings.USERMANAGER_
Password No than 512 characters, and include a mix
USER_PASSWORD
of uppercase and lowercase letters,
numbers, and special characters. Avoid
well-known, easily guessed, or common
passwords.
N ote: If there are errors when writing to read / write system tags, verify that the authenticated user has
the appropriate permissions.

www. ptc.com
ThingWorx Kepware Edge 80

Configurat ion API Service — Creat ing a User


To create a user via the Configuration API service, only a minimum set of properties are required; all others
are set to the default value.

Only members of the Administrators group can create users.

Using a REST-based API tool such as Postman, Insomnia, or Curl; make a POST request to the server_users
endpoint.

The example below creates a user named User1 that is a member of the server Administrators user group:

Endpoint (POST):

https://<hostname_or_ip>:<port>/config/v1/admin/server_users

Body:

{
"common.ALLTYPES_NAME": "User1",
"libadminsettings.USERMANAGER_USER_GROUPNAME": "Administrators",
"libadminsettings.USERMANAGER_USER_PASSWORD": "<Password>"
}

The product Administrator password must be at least 14 characters, no more than 512 characters, and
include a mix of uppercase and lowercase letters, numbers, and special characters. Avoid well-known, easily
guessed, or common passwords.

Configurat ion API Service — Creat ing a User Group


To create a group via the Configuration API service, only a minimum set of properties are required; all oth-
ers are set to the default value. Once a user group is defined, its permissions are used by all users assigned
to that user group.

Only members of the Administrators group can create user groups.

Using a REST-based API tool such as Postman, Insomnia, or Curl; make a POST request to the server_user-
groups endpoint.

The example below creates a user group named Operators:

Endpoint (POST):

https://<hostname_or_ip>:<port>/config/v1/admin/server_usergroups

Body:

{
“common.ALLTYPES_NAME”: “Operators”,
}

Configurat ion API Service — Updat ing a User


To update a user via the Configuration API service, provide new values for the properties that require updat-
ing.
Only members of the Administrators group can update users.

www. ptc.com
81 Th in gWorx Kep ware Ed ge

There is no PROJECT_ID field for users.

Using a REST-based API tool such as Postman, Insomnia, or Curl; make a POST request to the server_user-
s/<username> endpoint.

The example below updates the user named User1 to add a description and move it to a different user
group:

Endpoint (POST):

https://<hostname_or_ip>:<port>/config/v1/admin/server_users/User1

Body:

"common.ALLTYPES_DESCRIPTION": "The user account of


User1", "libadminsettings.USERMANAGER_USER_GROUPNAME": "Operators"

Configurat ion API Service — Updat ing a User Group


To edit a user group via the Configuration API service, provide new values for the properties that require
updating.
Only members of the Administrators group can update user groups.
There is no PROJECT_ID field for user groups.

Using a REST-based API tool such as Postman, Insomnia, or Curl; make a PUT request to the server_user-
groups/<groupname> endpoint.

The example below updates the user group named Operators to have permissions to modify server settings,
cause clients to be disconnected, and loading new runtime projects; it also updates the description of the
group:

Endpoint (POST):

https://<hostname_or_ip>:<port>/config/v1/admin/server_usergroups/Operators

Body:

{
"common.ALLTYPES_DESCRIPTION": "User group for standard operators",
"libadminsettings.USERMANAGER_SERVER_MODIFY_SERVER_SETTINGS": true,
"libadminsettings.USERMANAGER_SERVER_DISCONNECT_CLIENTS": true,
"libadminsettings.USERMANAGER_SERVER_REPLACE_RUNTIME_PROJECT": true
}

N ote: Group permissions for the administrator group are locked and cannot be modified by any user to
prevent an administrator from accidentally disabling a permission that could prevent administrators from
modifying any user permissions. Only users in the Administrator group can modify the permissions for other
groups.

www. ptc.com
ThingWorx Kepware Edge 82

Configurat ion API Service — Configuring User Group Project Perm issions
All user groups contain a collection of project permissions. Each project permission corresponds to a spe-
cific permission applied when interacting with objects in the project. All permissions are always present
under a user group (and therefore cannot be created nor deleted). An individual project permission can be
granted or denied by updating that specific project permission under the desired User Group.
Only members of the Administrators group can update a user group’s project permissions.
There is no PROJECT_ID field for project permissions.

Using a REST-based API tool such as Postman, Insomnia, or Curl; make a PUT request to the project_per-
missions/<permission_name> endpoint.

The example below updates the user-created user group named Operators to grant permission to users of
that group to add, edit, and delete channels:

Endpoint (POST):

https://<hostname_or_ip>:<port>/config/v1/admin/server_user-
groups/Operators/project_permissions/Servermain Channel

Body:

{
"libadminsettings.USERMANAGER_PROJECTMOD_ADD": true,
"libadminsettings.USERMANAGER_PROJECTMOD_EDIT": true,
"libadminsettings.USERMANAGER_PROJECTMOD_DELETE": true
}

OPC UA Endpoint
While the majority of the OPC UA configuration is located under the Projects endpoint, the ua-endpoints are
configured under the admin endpoint:
See Also: Project Properties — OPC UA

Endpoint (POST):

https://<hostname_or_ip>:<port>/config/v1/admin/ua_endpoints

Supported Actions
HTTP(S) Verb Act ion
GET Retrieves a list of all UA endpoint objects
POST Creates a new UA endpoint

Endpoint:

https://<hostname_or_ip>:<port>/config/v1/admin/ua_endpoints/<endpointName>

Supported Actions:
HTTP(S) Verb Act ion
GET Retrieves the specified UA endpoint
PUT Updates the specified UA endpoint

www. ptc.com
83 Th in gWorx Kep ware Ed ge

Properties
N ame Type Required Default Descript ion
Specifies the identity
common.ALLTYPES_NAME String Yes NA
of this object
Lists available network
adapters found on the
system. Adapters
common.ALLTYPES_DESCRIPTION String No ""
without assigned IP
address are listed as
disconnected.
libadminsettings.UACONFIGMANAGER_ Defines if the endpoint
Enable/Disable No True
ENDPOINT_ENABLE is enabled or disabled
Specifies the network
adapter to which the
endpoint will be
bound. A list of net-
work adapters
installed on the sys-
tem is provided in the
endpoint Description
property.

The “Default” adapter


indicates that the end-
point can bind to any
adapter.
N ote: Network
libadminsettings.UACONFIGMANAGER_
String No "Default" adapters that do not
ENDPOINT_ADAPTER
have a valid IPv4
address can be used
for configuring a UA
Endpoint; however, an
endpoint is only used
when there is a valid
IPv4 address during
startup. The server
needs to be rein-
itialized for endpoint
configurations to be
refreshed after con-
figuration changes are
made to the host’s net-
work adapters.
The port number to
libadminsettings.UACONFIGMANAGER_
Integer No 49330 which the endpoint will
ENDPOINT_PORT
be bound
libadminsettings.UACONFIGMANAGER_ The endpoint URL
String No ""
ENDPOINT_URL (READONLY).

www. ptc.com
ThingWorx Kepware Edge 84

N ame Type Required Default Descript ion


The property value is
generated based on
the selected network
adapter and port prop-
erty.
N ote: The property
is blank when the spe-
cified network adapter
does not have a valid
IPv4 address.
The accepted endpoint
security policy:
N one: Endpoint
accepts insecure con-
libadminsettings.UACONFIGMANAGER_
Enable/Disable No False nections
ENDPOINT_SECURITY_NONE
N ote: {Insecure}
This setting is insecure
and not recom-
mended.
The accepted endpoint
security policy:
BASIC256_SHA256:
Endpoint accepts
BASIC256_SHA256
encrypted connections
The value determines
libadminsettings.UACONFIGMANAGER_ the supported mes-
ENDPOINT_SECURITY_BASIC256_ Enum No 2 sage mode or disabled
SHA256 if no message mode is
selected:
Enum=Disabled:0
Enum=Sign:1
Enum=Sign and
Encrypt:2
Enum=Sign; Sign and
Encrypt:3
The accepted endpoint
security policy:
BASIC128_RSA15: End-
point accepts
BASIC128_RSA encryp-
libadminsettings.UACONFIGMANAGER_
Enum No 0 ted connections.
ENDPOINT_SECURITY_BASIC128_RSA15
The value determines
the supported mes-
sage mode or disabled
if no message mode is
selected:

www. ptc.com
85 Th in gWorx Kep ware Ed ge

N ame Type Required Default Descript ion


Enum=Disabled:0
Enum=Sign:1
Enum=Sign and
Encrypt:2
Enum=Sign; Sign and
Encrypt:3
N ote: {Deprecated}
This security policy is
deprecated.
The accepted endpoint
security policy:
BASIC256: Endpoint
accepts BASIC256
encrypted connections
The value determines
the supported mes-
sage mode or disabled
if no message mode is
libadminsettings.UACONFIGMANAGER_
Enum No 0 selected:
ENDPOINT_SECURITY_BASIC256
Enum=Disabled:0
Enum=Sign:1
Enum=Sign and
Encrypt:2
Enum=Sign; Sign and
Encrypt:3
N ote: {Deprecated}
This security policy is
deprecated.
N ote: A maximum of 100 OPC UA endpoints may be configured on a single instance of ThingWorx Kep-
ware Edge.

Configurat ion API Service — Creat ing a UA Endpoint


To create a UA endpoint via the Configuration API service, only a minimum set of properties are required; all
others are set to their default value.

To create a new UA endpoint, use a REST-based API tool such as Postman, Insomnia, or Curl and make a
POST request to the admin/ua_endpoints endpoint.

Endpoint (POST):

https://<hostname_or_ip>:<port>/config/v1/admin/ua_endpoints

Body:

{
"common.ALLTYPES_NAME": "Endpoint1"
}

www. ptc.com
ThingWorx Kepware Edge 86

Configurat ion API Service — Updat ing a UA Endpoint


To update a UA endpoint via the Configuration API service, provide new values for the properties that
require updating.

Using a REST-based API tool such as Postman, Insomnia, or Curl; make a POST request to the ua_end-
points/<endpoint> endpoint.

The example below updates the endpoint named Endpoint1 with a new port number and security policy:

Endpoint (PUT):

https://<hostname_or_ip>:<port>/config/v1/admin/ua_endpoints/Endpoint1

Body:

{
"libadminsettings.UACONFIGMANAGER_ENDPOINT_PORT": 49321,
"libadminsettings.UACONFIGMANAGER_ENDPOINT_SECURITY_BASIC256": 1
}

Configurat ion API Service — Rem oving a UA Endpoint


To delete an existing UA endpoint, make a DELETE request to the ua_endpoints/<endpoint_name> endpoint.
A request body is not required:

Endpoint (DELETE):

https://<hostname_or_ip>:<port>/config/v1/admin/ua_endpoints/Endpoint1

Body:

{
}

Configurat ion API Service — Dat a


The Configuration API Service receives requests in standard JSON format from the REST client. These
requests are consumed by the server and broken down into create, read, update, or delete commands.

Please consult additional information on properties, data ranges, endpoint mapping scheme, and acceptable
actions for each endpoint is available at the Configuration API Landing Page at https://<hostname_or_ip>:<-
port>/config/ (for default configurations).

Documentation served from the landing page is HTML-encoded by default. To obtain JSON-encoded doc-
umentation, include an “Accept” request header with “application/json”.

Object names containing spaces, or other characters disallowed in URL formatting, must be percent-
encoded to be correctly interpreted by the Configuration API. Percent encoding involves replacing disallowed
characters with their hexadecimal representation. For example, an object named 'default object' is percent-
encoded as default%20object. The following characters are not permitted in a URL and must be encoded:

* spac-
! # $ & ' ( ) * + , / : ; = ? @ [ ]
e*

www. ptc.com
87 Th in gWorx Kep ware Ed ge

%2- %2- %2- %2- %2- %2- %2- %2- %2- %2- %2- %3- %3- %3- %3- %4- %5- %5-
%20
1 3 4 6 7 8 9 A B C F A B D F 0 B D
All leading and trailing spaces are removed from object names before the server validates them. This can
create a discrepancy between the object name in the server and the object name a user provides via the
Configuration API. Users can send a GET on the parent object after sending a PUT/POST to verify the new or
modified object name in the server matches what was sent via the API.

An attempt to perform a POST/PUT/DELETE with the API as a non-admin user fails if a user has the server
configuration open at the same time. The error is a 401 status code (unauthorized). Only one user can write
to the runtime at a time; the API cannot take permissions from the server configuration if it has insufficient
credentials.

Create an Object
An object can be created by sending an HTTPS POST request to the Configuration API. When creating a new
object, the JSON must include required properties for the object (ex. each object must have a name), but
doesn’t require all properties. All properties not included in the JSON are set to the default value on creation.

Example POST JSON body:

{
"<Property1_Name>": <Value>,
"<Property2_Name>": <Value>,
"<Property3_Name>": <Value>
}

Create M ultiple Objects


Multiple objects may be added to a given collection by including the JSON property objects in an array.

Example POST JSON body:

[
{
"<Property1_Name>": <Value>,
"<Property2_Name>": <Value>,
"<Property3_Name>": <Value>
},
{
"<Property1_Name>": <Value>,
"<Property2_Name>": <Value>,
"<Property3_Name>": <Value>
}
]

When a POST includes multiple objects, if one or more cannot be processed due to a property validation fail-
ure or some other error, the HTTPS status code 207 (Multi-Status) will be returned along with a JSON object
array containing the status for each object in the request.

For example, if two objects are included in the request and the second one specifies the same name as the
first:

[
{

www. ptc.com
ThingWorx Kepware Edge 88

"code": 201,
"message": "Created"
},
{
"code": 400,
"message": "Validation failed on property common.ALLTYPES_NAME in object defin-
ition at line 7: The name 'Channel1' is already used."
}
]

Create an Object w ith Child Hierarchy


An object may be created with a full child object hierarchy beneath it. To do this, include that hierarchy in the
POST request just as it would appear when saved in a JSON project file.

For example, to create a channel with a device underneath it, the following JSON could be used:

[
{
"common.ALLTYPES_NAME": "Channel1",
"servermain.MULTIPLE_TYPES_DEVICE_DRIVER": "Simulator",
"devices":
[
{
"common.ALLTYPES_NAME": "Device1",
"servermain.MULTIPLE_TYPES_DEVICE_DRIVER": "Simulator",
"servermain.DEVICE_MODEL": 0
}
]
}
]

Read an Object
An object can be read by sending an HTTPS GET request to the Configuration API. All object properties are
returned on every GET request and each object includes a Project_ID. The Project_ID property is used to
track changes in the configuration and is updated on any change from the Configuration API or a server con-
figuration client. This property should be saved and used in all PUT requests to prevent stale data manip-
ulations.

Example response body:

{
"<Property1_Name>": <Value>,
"<Property2_Name>": <Value>,
"PROJECT_ID": 12345678
}

See Also: Content Retrieval

Edit an Object
An object can be edited by sending an HTTPS PUT request to the Configuration API. PUT requests require
the Project_ID or Force_Update property in the JSON body. Setting Force_Update to True ignores Project_ID
validation.

Example PUT body:

www. ptc.com
89 Th in gWorx Kep ware Ed ge

{
"<Property1_Name>": <Value>,
"<Property2_Name>": <Value>,
"PROJECT_ID": 12345678,
"FORCE_UPDATE": true
}

Normally, when a PUT request succeeds and all properties are assigned successfully, there is no response
body returned to the client; there is only a 200 status code to indicate success. There can be cases where a
property is included in a PUT request that is not assigned to the object instance by the Server Runtime. In
these cases, a response body will be generated as follows:

Body:

{,
"not_applied":,
{,
"servermain.CHANNEL_UNIQUE_ID": 2466304381
},
"code": 200,
"message": "Not all properties were applied. This could be due to active client
reference or property is disallowed/disabled/read-only."
}

The response indicates which property or properties were not applied to the object instance where each con-
tains the value that is actually in use. There are several possible reasons why the property value could not
be applied, such as:

l The property is read-only and cannot be changed.


l There is a client reference on the object that restricts what properties can be updated.
l The property is not allowed based on the values of other properties on which this condition
depends.
l The property is not enabled based on the values of other properties on which this condition
depends.
l The value was transformed in some way (ex. rounded or truncated).

Delete an Object
An object can be deleted by sending an HTTPS DELETE request to the Configuration API. The Configuration
API does not allow deleting multiple items on the same level with a single request (such as deleting all of the
devices in a channel), but can delete an entire tree (such as deleting a device deletes all its child tags).

Errors
All Configuration API Service requests return errors in JSON format.

Example:

{
"code": 400,
"message": "Invalid property: 'NAME'."
}

See Also: Troubleshooting

www. ptc.com
ThingWorx Kepware Edge 90

Configurat ion API Service — Cont ent Ret rieval


Content is retrieved from the server by issuing an HTTP(S) GET request. The URI specified in the request can
target one of the following areas:

1. Online documentation (ex. https://<hostname_or_ip>:<port>/config/v1/doc or /config/v1/doc/drivers)

2. Event log entries (ex. https://<hostname_or_ip>:<port>/config/v1/event_log)

3. Transaction log entries (ex. https://<hostname_or_ip>:<port>/config/v1/transaction_log)

4. Project configuration (ex. https://<hostname_or_ip>:<port>/config/v1/project or /con-


fig/v1/project/channels/Channel1)

When targeting project configuration, a REST client can specify the type(s) of content that should be
returned. In this context the word “content” refers to a category or categories of data about a collection or
object instance.

By default, when a GET request is issued using an endpoint that identifies a collection, the server will return
a JSON array that contains one value for each instance in the collection where each value is a JSON object
that contains the properties of the instance.

By default, when a GET request is made using an endpoint that identifies an object instance, the server will
return a JSON object that contains the properties of that instance.

The default behavior of these requests can be altered by specifying one or more “content” query parameters
appended to the URL as in https://<hostname>:<port>/config/v1/project?content=children. The following
table shows the available content types and their applicability to each endpoint type:

Cont ent Type Collect ion Endpoint Object Inst ance Endpoint
properties yes yes
property_definitions no yes
property_states no yes
type_definition yes yes
children yes yes

The following table shows the structure of the JSON response for a given content type:

GET Request URI JSON Response St ruct ure


{
<property name>: <value>,
https://<hostname_or_ip>:<-
<property name>: <value>,
port>/config/v1/project?content=properties
...
}
[
{<property definition>},
https://<hostname_or_ip>:<-
{<property definition>},
port>/config/v1/project?content=property_definitions
...
]
{
https://<hostname_or_ip>:<-
“allow”:
port>/config/v1/project?content=property_states

www. ptc.com
91 Th in gWorx Kep ware Ed ge

GET Request URI JSON Response St ruct ure


{
<property name>: true/-
false,
<property name>: true/-
false,
...
},
“enable”:
{
<property name>: true/-
false,
<property name>: true/-
false,
...
}
}
{
"name": <type name>,
"collection": <collection
name>,
"namespace": <namespace
name>,
"can_create": true/false,
"can_delete": true/false,
https://<hostname_or_ip>:<- "can_modify": true/false,
port>/config/v1/project?content=type_definition "auto_generated": true/-
false,
"requires_driver": true/-
false,
"access_controlled": true/-
false,
"child_collections": [<col-
lection names>]
}
{
<collection name>: [
{
“name”: <object instance
name>,
“href”: <object instance
uri>
},
...
],
https://<hostname_or_ip>:<-
<collection name>: [
port>/config/v1/project?content=children
{
“name”: <object instance
name>,
“href”: <object instance
uri>
},
...
],
...
}
Multiple content types can be specified in the same request by separating with a comma. For example,
https://<hostname>:<port>/config/v1/project?content=children,type_definition. When multiple types are spe-
cified, the JSON response will contain a single object with a member for each requested content type as in:

www. ptc.com
ThingWorx Kepware Edge 92

{
“properties”: <properties response structure>,
“property_definitions”: <property definitions response structure>,
“property_states”: <property states response structure>,
“type_definition”: <type definition response structure>,
“children”: <children response structure>
}

Type Definitions
The following table describes the members of the type definition JSON object.
M ember Type Descript ion
name string Object type name.
Collection name. Identifies the collection in which objects of this type will exist. This
collection string
name constitutes a valid endpoint that can be addressed using the REST interface.
Namespace that implements the object type. Objects that are implemented by the
namespace string server exist in the “servermain” namespace. Other namespaces are defined by
optional components such as drivers, plug-ins and client interfaces.
Indicates whether or not instances of this type can be created by an end user. For
can_create bool example, this is false for the “Project” type because it’s not something that can be
created.
Indicates whether or not instances of this type can be deleted by an end user.
can_delete bool
Again, the “Project” type is not something that can be deleted.
Indicates whether or not instances of this type can be modified by an end user. For
can_modify bool example, the server has some auto-generated objects that exist to create a child
collection only and do not themselves have any modifiable properties.
auto_gen- If true, instances of this type are auto-generated by the server. Typically objects of
bool
erated this type will have the previous three members defined as “false”.
requires_ True if instances of this type cannot be created without supplying the name of an
bool
driver installed driver.
access_con- True if the server provides group-level access control over the CRUD operations
bool
trolled that can be executed against an instance of this type (see User Manager).
An array of collection names that are supported as children under an object of this
child_col-
array type. For example, if a type includes “devices” in “child_collections”, then object
lections
instances of that type will support one or more “Device” instance as a child.

Property Definitions
A property definition identifies the characteristics of a given property, including the type of data it supports,
applicable ranges, default value, etc. The JSON structure of a property definition object is defined as follows:
M ember Type Descript ion
symbolic_ Identifies the property by canonical name in the form <namespace>.<-
string
name property name>.
The name the property would have if shown in the Server Configuration
display_ localized
property editor. Value will be returned in the language the server is cur-
name string
rently configured to use.
display_ localized The description the property would have if shown in the Server Con-
description string figuration property editor. Value will be returned in the language the

www. ptc.com
93 Th in gWorx Kep ware Ed ge

M ember Type Descript ion


server is currently configured to use.
True if the property is informational, not expected to change once initially
read_only Boolean
defined.
Determines the data type of the property value (see “Property Types”
type string
below).
number or
minimum_ null (applies Minimum value the property can have to be considered valid. If null, there
value to numeric is no minimum.
types)
number or
maximum_ null (applies Maximum value the property can have to be considered valid. If null, there
value to numeric is no maximum.
types)
number
minimum_
(applies to Minimum length a string value may have. 0 means no minimum.
length
strings only)
number
maximum_
(applies to Maximum length a string value may have. -1 means no maximum.
length
strings only)
arrays of
strings An array of possible choices that may be assigned to the property value.
hints
(applies to This member not included if no hints exist.
strings only)
For enumeration properties, this object identifies the valid name / value
object pairs the enumeration can have. Structure is as follows:
(applies to {
enumeration <name>: number,
enumerations
<name>: number,
only) ...
}
Defines a conditional dependency on one or more other properties that
array of determines whether this property is relevant. Properties that are not
allow
objects allowed are not shown in the Server Configuration property editor (see
“Allow and Enable Conditions” below).
Defines a conditional dependency on one or more other properties that
array of determines whether this property should be enabled for the client to
enable
objects change. Properties that are not enabled are grayed out in the Server Con-
fig property editor (see “Allow and Enable Conditions” below).

To get specific information about the property definitions of a specific endpoint, add "?content=property_
definitions" to the end of the URL of a GET request.

For example, to get the property definitions for a channel named Channel1 with the server running on the
local host, the GET request would be sent to:

Endpoint:

www. ptc.com
ThingWorx Kepware Edge 94

https://<hostname_or_ip>:<port>/config/v1/channels/Channel1?content=property_defin-
itions

The returned JSON block would look something like the following:
[
{
"symbolic_name": "common.ALLTYPES_NAME",
"display_name": "Name",
"display_description": "Specify the identity of this object.",
"read_only": false,
"type": "String",
"default_value": null,
"minimum_length": 1,
"maximum_length": 256
},
{
"symbolic_name": "common.ALLTYPES_DESCRIPTION",
"display_name": "Description",
"display_description": "Provide a brief summary of this object or its use.",
"read_only": false,
"type": "String",
"default_value": null,
"minimum_length": 0,
"maximum_length": 255
},

Property Types
The following table describes the different values that a property definition may contain for the “type” mem-
ber. The “Value Type” identifies what JSON type the property value should have.

Value
Type N ame Descript ion
Type
Describes a property that would show a drop-down list that contains the
AllowDeny bool
choices “Allow”=true and “Deny”= false.
Describes a property that would show a drop-down list that contains the
EnableDisable bool
choices “Enable”=true and “Disable”= false.
Describes a property that would show a drop-down list that contains the
YesNo bool
choices “Yes”=true and “No”= false.
Generic string. Properties of this type will include minimum_length and
String string
maximum_length specifiers.
Array of strings. Properties of this type will include minimum_length and
StringArray array maximum_length specifiers that apply to the strings themselves, not the
length of the array.
Obfuscated string that contains a password. When changing the value of a
property of this type, a plain-text password is expected. Password values
Password string
should only be changed over a secure connection. The Administrator
password must be at least 14 characters and fewer than 512 characters.
LocalFileSpec string A fully qualified file specification in the local file system.
UncFileSpec string A fully qualified file specification in a network location.
LocalPathSpec string A fully qualified path specification in the local file system.

www. ptc.com
95 Th in gWorx Kep ware Ed ge

Value
Type N ame Descript ion
Type
UncPathSpec string A fully qualified path specification to a network location.
Describes a property that has a string value that would normally be
StringWithBrowser string
chosen from a collection of dynamically generated strings.
Integer number Unsigned 32-bit integer value.
Unsigned 32-bit integer value intended to be displayed / edited in hexa-
Hex number
decimal notation.
Unsigned 32-bit integer value intended to be displayed / edited in octal
Octal number
notation.
SignedInteger number Signed 32-bit integer value.
Real4 number Single precision floating point value.
Real8 number Double precision floating point value.
One of the possible numeric values from the “enumeration” member of
Enumeration number
the property definition.
Describes a structure containing members that each have a fixed-length
PropArray object
array of values.
Integer value containing the number seconds since midnight that would
TimeOfDay number
define a specific time of day.
Date number Unix time value that specifies midnight on a given date.
DateAndTime number Unix time value that specifies a specific time on a given date.
Array of byte values that represents an opaque collection of data. Data of
Blob array
this type originates in the server and is hashed to prevent modification.

Allow and Enable Conditions


For definitions that contain allow and/or enable conditions, this is the structure they would have in the JSON:

<condition>: [
{
“depends_on”: <property name>
“operation”: “==” or “!=”
“value”: <value>
},
...
]

Each condition identifies another property that is a dependent and how it depends as equal or not equal to
the value of that property. More than one dependency can exist, either on the same property or different
ones. If multiple exist, the “operation” will always be the same. Evaluation of the expression to determine the
state of the condition when multiple dependencies exist is a logical “or” for “==” and a logical “and” for “!=”.

When using “content=property_states”, the returned JSON describes the outcome of the evaluation of these
conditions (if they exist) for each property.

Configurat ion API Service — Concurrent Client s


The Configuration API can serve multiple REST clients at the same time. To prevent a client from editing
stale configurations, the Server Runtime maintains a numeric project ID. Each time an object is edited

www. ptc.com
ThingWorx Kepware Edge 96

through the Configuration API or the local Configuration client, the Project ID changes. The current project ID
is returned in each GET response. The current project ID must be specified by the client in all PUT requests.

The best practice is to issue a GET request, save the current project ID, and use that ID for the following PUT
request. If only one client is used, the client may put the property “FORCE_UPDATE”: true in the PUT request
body to force the Configuration API server to ignore the project ID.

Using UaExpert
An application like Unified Automation UaExpert can be used to verify the flow of data from devices through
ThingWorx Kepware Edge.

The UaExpert tool is designed to be a general-purpose OPC UA test client; it is not meant for production.
Below is a walkthrough of creating a secure user with specific data access rights to read and write tags.

Default OPC UA Server Settings


l URL: opc.tcp://<hostname>:<port>
l Port: 49330
l Security Policies: Basic256Sha256
l Authentication: (Enabled by default)
l Server Interface Enabled: True

Creating a User Group and User w ith Read / Write / Brow se Access

1. Install ThingWorx Kepware Edge with default settings.

2. Add a new user group with data access and browse permissions via the Config API:

Endpoint (POST):

https://<hostname>:<port>/config/v1/admin/server_usergroups

Body:

{
"common.ALLTYPES_NAME": "Group1",
"libadminsettings.USERMANAGER_GROUP_ENABLED": true,
"libadminsettings.USERMANAGER_IO_TAG_READ": true,
"libadminsettings.USERMANAGER_IO_TAG_WRITE": true,
"libadminsettings.USERMANAGER_BROWSE_BROWSENAMESPACE": true
}

3. Add a new user with a password to the group created in above.

Endpoint (POST):

https://<hostname>:<port>/config/v1/admin/server_users

Body:

{
"common.ALLTYPES_NAME": "User1",

www. ptc.com
97 Th in gWorx Kep ware Ed ge

"libadminsettings.USERMANAGER_USER_GROUPNAME": "Group1",
"libadminsettings.USERMANAGER_USER_ENABLED": true,
"libadminsettings.USERMANAGER_USER_PASSWORD": "<insert_password>"
}

Adding Server Connection to UaExpert


1. Download, install, and launch UaExpert from Unified Automation.

2. Select the Server | Add drop-down menu option.

3. In the Add Server configuration window, double-click the Add Server option located under Custom
Discovery.

4. Enter the URL and port for the machine to connect. For example: “opc.tcp://<hostname>:49330”.

5. A new server connection is added in the Custom Discovery group.

6. Expand the new server connection for a list of valid endpoints. These are the available security
options for the server. In this example, only one option is available.

7. Choose the Basic256Sha256 – Sign & Encrypt security option.

8. Set the user name and password using the settings used in the creation of the user above.

9. Check the Store checkbox to save the password or leave it unchecked and to be prompted for a pass-
word when connecting to the server.

10. Click OK to close the window.

11. Verify that "ThingWorxKepwareEdge/UA" appears under Servers.

12. Right-click on the server and select Connect.

13. A certificate validation window appears.

14. Click Trust Server Certificate for the client to trust the ThingWorxKepwareEdge/UA server.

15. Click Continue. There is an error until the server trusts the client certificate.

16. To trust the client certificate on the server, use the edge_adm in tool.

17. The client certificate’s thumbprint is required to trust it. To get the thumbprint, use the edge_admin
tool to list the certificates in the UA Server trust store:

$ <installation_directory>/edge_admin manage-truststore --list uaserver

18. The output of the list shows a thumbprint, a status, and a common name of the certificate.
The UAExpert certificate will be Rejected. Use the thumbprint to trust the certificate.

$ <installation_directory>/edge_admin manage-truststore --trust=


<certificate_thumbprint> uaserver

19. List the certificates of the UA Server to verify that the certificate is now trusted.

20. In UaExpert, right-click on the server and click Connect. The connection should succeed and the
Address Space window in the lower right pane should be populated, which enables browsing for and
adding tags.

www. ptc.com
ThingWorx Kepware Edge 98

21. Add a tag in the data access view to verify that the user has read access.

22. Change the value of the tag to verify that the user has write access.

www. ptc.com
99 Th in gWorx Kep ware Ed ge

Event Log Messages


The following information concerns messages posted to the Event Log. Server help contains many common
messages, so should also be searched. Generally, the type of message (informational, warning) and
troubleshooting information is provided whenever possible.

Configurat ion API Service — Response Codes


One of the following response codes may be returned from a REST request. Where possible, the body of the
response contains specific error messages to help identify the cause of the error and possible solutions:

l HTTPS/1.1 200 OK
l HTTPS/1.1 201 Created
l HTTPS/1.1 202 Accepted
l HTTPS/1.1 207 Multi-Status
l HTTPS/1.1 400 Bad Request
l HTTPS/1.1 401 Unauthorized
l HTTPS/1.1 403 Forbidden
l HTTPS/1.1 404 Not Found
l HTTPS/1.1 429 Too Many Requests
l HTTPS/1.1 500 Internal Server Error
l HTTPS/1.1 503 Server Runtime Unavailable
l HTTPS/1.1 504 Gateway Timeout
l HTTPS/1.1 520 Unknown Error

Consult the Configuration API Service Event Log Messages

Configurat ion API Service — Logging


Messages from the event log service can be read from a REST client by sending a GET to https://<host-
name>:<port>/config/v1/event_log. The response contains comma-separated entries.

Endpoint (GET):

https://<hostname_or_ip>:<port>/config/v1/event_log

Example Return:

[
{
"timestamp": "2018-11-13T16:34:57.966",
"event": "Security",
"source": "ThingWorxKepwareEdge\\Runtime",
"message": "Configuration session started by admin as Default User (R/W)."
},
{
"timestamp": "2018-11-13T16:35:08.729",
"event": "Warning",
"source": "Licensing",
"message": "Feature Modbus TCP/IP Ethernet is time limited and will expire at
11/13/2019 12:00 AM."

www. ptc.com
ThingWorx Kepware Edge 100

}

]

Filtering: The Configuration API event log endpoint allows log items to be sorted or limited using filter para-
meters specified in the URI. The filters, which can be combined or used individually, allow the results of the
log query to be restricted to a specific time period (e.g. events which occurred since a given date, events
which occurred before a given date, or events that occurred between two dates). Example filtered log query:

Endpoint (GET):

https://<hostname_or_ip>:<port>/config/v1/event_log?limit=10&start=2016-01-
01T00:00:00.000&end=2016-01-02T20:00:00.000

where:

l Lim it = Maximum number of log entries to return. The default setting is 100 entries.
l Start = Earliest time to be returned in YYYY-MM-DDTHH:mm:ss.sss (UTC) format.
l End = Latest time to be returned in YYYY-MM-DDTHH:mm:ss.sss (UTC) format.

N ote: The Limit filter overrides the result of the specified time period. If there are more log entries in the
time period than the Limit filter allows, only the newest specified quantity of records that match the filter cri-
teria are displayed.

The Config API SSL cert ificat e cont ains a bad signat ure.
Error Type:
Error

The Config API is unable t o load t he SSL cert ificat e.


Error Type:
Error

Unable t o st art t he Config API Service. Possible problem binding t o port .


Error Type:
Error

Possible Cause:
The HTTP or HTTPS port specified in the Config API settings is already bound by another application.

Possible Solution:
Change the configuration of the Config API or blocking application to use a different port, or stop the applic-
ation blocking the port.

The Config API SSL cert ificat e has expired.


Error Type:
Warning

www. ptc.com
101 Th in gWorx Kep ware Ed ge

The Config API SSL cert ificat e is self-signed.


Error Type:
Warning

The configured version of TLS for t he Configurat ion API is no longer con-
sidered secure. It is recom m ended t hat only TLS 1.2 or higher is used.
Error Type:
Warning

Configurat ion API st art ed wit hout SSL on port <port num ber>.
Error Type:
Informational

Configurat ion API st art ed wit h SSL on port <port num ber>.
Error Type:
Informational

The <nam e> device driver was not found or could not be loaded.
Error Type:
Error

Possible Cause:
1. If the project has been moved from one PC to another, the required drivers may have not been
installed yet.

2. The specified driver may have been removed from the installed server.

3. The specified driver may be the wrong version for the installed server version.

Possible Solution:
1. Re-run the server install and add the required drivers.

2. Re-run the server install and re-install the specified drivers.

3. Ensure that a driver has not been placed in the installed server directory (which is out of sync with the
server version).

Unable t o load t he '<nam e>' driver because m ore t han one copy exist s
('<nam e>' and '<nam e>'). Rem ove t he conflict ing driver and rest art t he
applicat ion.
Error Type:
Error

Possible Cause:
Multiple versions of the driver DLL exist in the driver's folder in the server.

www. ptc.com
ThingWorx Kepware Edge 102

Possible Solution:
1. Re-run the server install and re-install the specified drivers.

2. Contact Technical support and verify the correct version. Remove the driver that is invalid and restart
the server and load the project.

Invalid project file.


Error Type:
Error

Failed t o open m odem line '<line>' [TAPI error = <code>].


Error Type:
Error

Possible Cause:
TAPI attempted to open the modem line for the server and encountered an error.

Possible Solution:
Correct the condition for the specified error. Then re-attempt to open the modem line.

Unable t o add channel due t o driver-level failure.


Error Type:
Error

Possible Cause:
Attempt failed due to issues in the driver.

Possible Solution:
Refer to the additional messages about the driver error and correct related issues.

Unable t o add device due t o driver-level failure.


Error Type:
Error

Possible Cause:
Attempt failed due to issues in the driver.

Possible Solution:
Refer to the additional messages about the driver error and correct related issues.

Version m ism at ch.


Error Type:
Error

www. ptc.com
103 Th in gWorx Kep ware Ed ge

Invalid XM L docum ent :


Error Type:
Error

Possible Cause:
The server is unable to parse the specified XML file.

Possible Solution:
If the server project was edited using a third-party XML editor, verify that the format is correct via the
schemas for the server and drivers.

Unable t o load project <nam e>:


Error Type:
Error

Possible Cause:
1. The project was created using a version of the server that contained a feature or configuration that
has been obsoleted and no longer exists in the server that is trying to load it.

2. The project was created in a server version that is not compatible with the version trying to load it.

3. The project file is corrupt.

Possible Solution:
Save project as XML(V5) or JSON(V6), remove the unsupported feature that is defined in the project file and
then save and load the updated project file into the server that is trying to load it.

Note:
Every attempt is made to ensure backwards compatibility in the server so that projects created in older ver-
sions may be loaded in newer versions. However, since new versions of the server and driver may have prop-
erties and configurations that do not exist in older versions, it may not be possible to open or load a older
project in a newer version.

Unable t o backup project file t o '<pat h>' [<reason>]. The save operat ion
has been abort ed. Verify t he dest inat ion file is not locked and has
read/ writ e access. To cont inue t o save t his project wit hout a backup,
deselect t he backup opt ion under Tools | Opt ions | General and re-save
t he project .
Error Type:
Error

Possible Cause:
1. The destination file may be not locked by another application.

2. The destination file or the folder where it is located does not allow read/write access.

www. ptc.com
ThingWorx Kepware Edge 104

Possible Solution:
1. Ensure that the destination file is not locked by another application, unlock the file, or close the applic-
ation.

2. Ensure that the destination file and with the folder where it is located allow read and write access.

<feat ure nam e> was not found or could not be loaded.
Error Type:
Error

Possible Cause:
The feature is not installed or is not in the expected location.

Possible Solution:
Re-run the server install and select the specified feature for installation.

Unable t o save project file <nam e>:


Error Type:
Error

Device discovery has exceeded <count > m axim um allowed devices. Lim it
t he discovery range and t ry again.
Error Type:
Error

<feat ure nam e> is required t o load t his project .


Error Type:
Error

The current language does not support loading XM L project s. To load XM L


project s, change t he product language select ion t o English in Server
Adm inist rat ion.
Error Type:
Error

Possible Cause:
Loading XML projects file allowed only in English environment.

Possible Solution:
Change the product language selection to English in Server Administration and try again.

Unable t o load t he project due t o a m issing object . | Object = '<object >'.


Error Type:
Error

www. ptc.com
105 Th in gWorx Kep ware Ed ge

Possible Cause:
Editing the JSON project file may have left it in an invalid state.

Possible Solution:
Revert any changes made to the JSON project file.

Invalid M odel encount ered while t rying t o load t he project . | Device =


'<device>'.
Error Type:
Error

Possible Cause:
The specified device has a model that is not supported in this version of the server.

Possible Solution:
Open this project with a newer version of the server.

Cannot add device. A duplicat e device m ay already exist in t his channel.


Error Type:
Error

Aut o-generat ed t ag '<t ag>' already exist s and will not be overwrit t en.
Error Type:
Warning

Possible Cause:
Although the server is regenerating tags for the tag database, it has been set not to overwrite tags that
already exist.

Possible Solution:
If this is not the desired action, change the setting of the "On Duplicate Tag" property for the device.

Unable t o generat e a t ag dat abase for device '<device>'. The device is not
responding.
Error Type:
Warning

Possible Cause:
1. The device did not respond to the communications request.

2. The specified device is not on, not connected, or in error.

Possible Solution:

www. ptc.com
ThingWorx Kepware Edge 106

1. Verify that the device is powered on and that the PC is on (so that the server can connect to it).

2. Verify that all cabling is correct.

3. Verify that the device IDs are correct.

4. Correct the device failure and retry the tag generation.

Unable t o generat e a t ag dat abase for device '<device>':


Error Type:
Warning

Possible Cause:
The specified device is not on, not connected, or in error.

Possible Solution:
Correct the device failure and retry the tag generation.

Aut o generat ion produced t oo m any overwrit es, st opped post ing error
m essages.
Error Type:
Warning

Possible Cause:
1. To keep from filling the error log, the server has stopped posting error messages on tags that cannot
be overwritten during automatic tag generation.

2. Reduce the scope of the automatic tag generation or eliminate problematic tags.

Failed t o add t ag '<t ag>' because t he address is t oo long. The m axim um


address lengt h is <num ber>.
Error Type:
Warning

Line '<line>' is already in use.


Error Type:
Warning

Possible Cause:
The target modem line is already open, likely because it is in use by another application.

Possible Solution:
Find the application holding the modem open and close or release it.

Hardware error on line '<line>'.


Error Type:

www. ptc.com
107 Th in gWorx Kep ware Ed ge

Warning

Possible Cause:
A hardware error was returned after a request was made for a tag in a device connected to the modem.

Possible Solution:
Disable data collection on the device. Enable it after the modem connects to the destination modem.

Note:
The error occurs on first scan and is not repeated.

No com m handle provided on connect for line '<line>'.


Error Type:
Warning

Possible Cause:
An attempt was made to connect to the modem line with no specified COMM handle.

Possible Solution:
Verify the modem is installed and initialized correctly.

Unable t o dial on line '<line>'.


Error Type:
Warning

Possible Cause:
The modem is not in a state that allows dialing.

Possible Solution:
To dial a number, the line must be idle. Monitor the _Mode Modem tag and dial when it indicates an idle
state.

Unable t o use net work adapt er '<adapt er>' on channel '<nam e>'. Using
default net work adapt er.
Error Type:
Warning

Possible Cause:
The network adapter specified in the project does not exist on this PC. The server uses the default network
adapter.

Possible Solution:
Select the network adapter to use for the PC and save the project.

See Also:
Channel Properties - Network Interface

www. ptc.com
ThingWorx Kepware Edge 108

Reject ing at t em pt t o change m odel t ype on a referenced device '<channel


device>'.
Error Type:
Warning

TAPI line init ializat ion failed: <code>.


Error Type:
Warning

Possible Cause:
The telephony service is not required to be running for the Runtime to start. When the service is disabled
and a serial driver is added to the project, this error message is reported.

Possible Solution:
1. If modem communication is not used, no action is required.

2. If modem communications are required, the telephony service must be started on the PC.

Validat ion error on '<t ag>': <error>.


Error Type:
Warning

Possible Cause:
An attempt was made to set invalid parameters on the specified tag.

Unable t o load driver DLL '<nam e>'.


Error Type:
Warning

Possible Cause:
The specified driver could not be loaded when the project started.

Possible Solution:
1. Verify the version of the installed driver. Check the website to see if the driver version is correct for
the server version installed.

2. If the driver corrupted, delete it and re-run the server install.

Note:
This problem is usually due to corrupted driver DLLs or drivers that are not compatible with the server ver-
sion.

Validat ion error on '<t ag>': Invalid scaling param et ers.


Error Type:
Warning

www. ptc.com
109 Th in gWorx Kep ware Ed ge

Possible Cause:
An attempt was made to set invalid scaling parameters on the specified tag.

See Also:
Tag Properties - Scaling

Unable t o apply m odem configurat ion on line '<line>'.


Error Type:
Warning

Possible Cause:
TAPI Manager was unable to apply configuration changes to the server.

Possible Solution:
1. Verify the cabling to the modem.

2. Verify that the modem is set to accept configuration changes.

3. Verify that the modem is not being used by another application.

Device '<device>' has been aut om at ically dem ot ed.


Error Type:
Warning

Possible Cause:
Communications with the specified device failed. The device has been demoted from the poll cycle.

Possible Solution:
1. If the device fails to reconnect, investigate the reason behind the communications loss and correct it.

2. To stop the device from being demoted, disable Auto-Demotion.

See Also:
Auto-Demotion

<Source>: Invalid Et hernet encapsulat ion IP '<address>'.


Error Type:
Warning

Possible Cause:
The IP address specified for a device on an Ethernet encapsulated channel is not a valid IP address.

Possible Solution:
Correct the IP in the XML file and re-load the project.

Note:

www. ptc.com
ThingWorx Kepware Edge 110

This error can occur when loading XML formatted projects that were created or edited with third-party XML
software.

The '<product >' driver does not current ly support XM L persist ence. Save
using t he default file form at .
Error Type:
Warning

Possible Cause:
The specified driver does not support XML formatting.

Possible Solution:
Save the project in binary format.

Unable t o load plug-in DLL '<nam e>'.


Error Type:
Warning

Possible Cause:
The specified plug-in could not be loaded when the project started.

Possible Solution:
1. Verify the version of the plug-in installed. Check the website to see if the plug-in version is compatible
with the server installed. If not, correct the server or re-run the server install.

2. If the plug-in is corrupt, delete it and then re-run the server install.

Note:
This problem is usually due to corrupted plug-in DLLs or plug-ins that are not compatible with the server ver-
sion.

The t im e zone set for '<device>' is '<zone>'. This is not a valid t im e zone
for t he syst em . Default ing t he t im e zone t o '<zone>'.
Error Type:
Warning

Unable t o load driver DLL '<nam e>'. Reason:


Error Type:
Warning

Possible Cause:
The specified plug-in could not be loaded when the project started.

Possible Solution:

www. ptc.com
111 Th in gWorx Kep ware Ed ge

1. Verify the version of the plug-in installed. Check the website to see if the plug-in version is compatible
with the server installed. If not, correct the server or re-run the server install.

2. If the plug-in is corrupt, delete it and then re-run the server install.

Unable t o load plug-in DLL '<nam e>'. Reason:


Error Type:
Warning

Possible Cause:
The specified plug-in could not be loaded when the project started.

Possible Solution:
1. Verify the version of the plug-in installed. Check the website to see if the plug-in version is compatible
with the server installed. If not, correct the server or re-run the server install.

2. If the plug-in is corrupt, delete it and then re-run the server install.

Channel requires at least one num ber in it s phonebook for aut om at ic dial-
ing. | Channel = '<channel>'.
Error Type:
Warning

Possible Cause:
The Auto-Dial property is set to Enable and there are no entries in the phonebook.

Possible Solution:
If auto-dialing is desired, add a phone number entry to the phonebook. If auto-dialing is not desired, disable
Auto-Dial.

Channel requires Aut o-Dial enabled and at least one num ber in it s phone-
book t o use a shared m odem connect ion. | Channel = '<channel>'.
Error Type:
Warning

Possible Cause:
Channel shares a modem with one or more existing channels and does not have Auto-Dial enabled or a
phone number for auto-dialing.

Possible Solution:
1. Enable Auto-Dial on the reported channel.

2. Add a phone number to the phonebook of the reported channel.

www. ptc.com
ThingWorx Kepware Edge 112

The specified net work adapt er is invalid on channel '%1' | Adapt er = '%2'.
Error Type:
Warning

Possible Cause:
The network adapter specified in the project does not exist on this PC.

Possible Solution:
Select the network adapter to use for the PC and save the project.

See Also:
Channel Properties - Network Interface

No t ags were creat ed by t he t ag generat ion request . See t he event log for
m ore inform at ion.
Error Type:
Warning

Possible Cause:
The driver produced no tag information but declined to provide a reason why.

Possible Solution:
Event log may contain information that will help troubleshoot the issue.

The t ag im port filenam e is invalid, file pat hs are not allowed.


Error Type:
Warning

Possible Cause:
The tag import filename includes a path.

Possible Solution:
Remove the path from the filename.

TAPI configurat ion has changed, reinit ializing...


Error Type:
Informational

<Product > device driver loaded successfully.


Error Type:
Informational

St art ing <nam e> device driver.


Error Type:
Informational

www. ptc.com
113 Th in gWorx Kep ware Ed ge

St opping <nam e> device driver.


Error Type:
Informational

Dialing '<num ber>' on line '<m odem >'.


Error Type:
Informational

Line '<m odem >' disconnect ed.


Error Type:
Informational

Dialing on line '<m odem >' canceled by user.


Error Type:
Informational

Line '<m odem >' connect ed at <rat e> baud.


Error Type:
Informational

Rem ot e line is busy on '<m odem >'.


Error Type:
Informational

Rem ot e line is not answering on '<m odem >'.


Error Type:
Informational

No dial t one on '<m odem >'.


Error Type:
Informational

The phone num ber is invalid (<num ber>).


Error Type:
Informational

Dialing abort ed on '<m odem >'.


Error Type:
Informational

Line dropped at rem ot e sit e on '<m odem >'.


Error Type:

www. ptc.com
ThingWorx Kepware Edge 114

Informational

Incom ing call det ect ed on line '<m odem >'.


Error Type:
Informational

M odem line opened: '<m odem >'.


Error Type:
Informational

M odem line closed: '<m odem >'.


Error Type:
Informational

<Product > device driver unloaded from m em ory.


Error Type:
Informational

Line '<m odem >' connect ed.


Error Type:
Informational

Sim ulat ion m ode is enabled on device '<device>'.


Error Type:
Informational

Sim ulat ion m ode is disabled on device '<device>'.


Error Type:
Informational

At t em pt ing t o aut om at ically generat e t ags for device '<device>'.


Error Type:
Informational

Com plet ed aut om at ic t ag generat ion for device '<device>'.


Error Type:
Informational

Init iat ing disconnect on m odem line '<m odem >'.


Error Type:
Informational

www. ptc.com
115 Th in gWorx Kep ware Ed ge

A client applicat ion has enabled aut o-dem ot ion on device '<device>'.
Error Type:
Informational

Possible Cause:
A client application connected to the server has enabled or disabled Auto Demotion on the specified device.

Possible Solution:
To restrict the client application from doing this, disable its ability to write to system-level tags through the
User Manager.

See Also:
User Manager

Dat a collect ion is enabled on device '<device>'.


Error Type:
Informational

Dat a collect ion is disabled on device '<device>'.


Error Type:
Informational

Object t ype '<nam e>' not allowed in project .


Error Type:
Informational

Creat ed backup of project '<nam e>' t o '<pat h>'.


Error Type:
Informational

Device '<device>' has been aut o-prom ot ed t o det erm ine if com -
m unicat ions can be re-est ablished.
Error Type:
Informational

Failed t o load library: <nam e>.


Error Type:
Informational

Failed t o read build m anifest resource: <nam e>.


Error Type:
Informational

www. ptc.com
ThingWorx Kepware Edge 116

The project file was creat ed wit h a m ore recent version of t his soft ware.
Error Type:
Informational

A client applicat ion has disabled aut o-dem ot ion on device '<device>'.
Error Type:
Informational

Phone num ber priorit y has changed. | Phone Num ber Nam e = '<nam e>',
Updat ed Priorit y = '<priorit y>'.
Error Type:
Informational

Tag generat ion result s for device '<device>'. | Tags creat ed = <count >.
Error Type:
Informational

Tag generat ion result s for device '<device>'. | Tags creat ed = <count >, Tags
overwrit t en = <count >.
Error Type:
Informational

Tag generat ion result s for device '<device>'. | Tags creat ed = <count >, Tags
not overwrit t en = <count >.
Error Type:
Informational

Access t o object denied. | User = '<account >', Object = '<object pat h>', Per-
m ission =
Error Type:
Security

User m oved from user group. | User = '<nam e>', Old group = '<nam e>',
New group = '<nam e>'.
Error Type:
Security

User group has been creat ed. | Group = '<nam e>'.


Error Type:
Security

www. ptc.com
117 Th in gWorx Kep ware Ed ge

User added t o user group. | User = '<nam e>', Group = '<nam e>'.
Error Type:
Security

User group has been renam ed. | Old nam e = '<nam e>', New nam e =
'<nam e>'.
Error Type:
Security

Perm issions definit ion has changed on user group. | Group = '<nam e>'.
Error Type:
Security

User has been renam ed. | Old nam e = '<nam e>', New nam e = '<nam e>'.
Error Type:
Security

User has been disabled. | User = '<nam e>'.


Error Type:
Security

User group has been disabled. | Group = '<nam e>'.


Error Type:
Security

User has been enabled. | User = '<nam e>'.


Error Type:
Security

User group has been enabled. | Group = '<nam e>'.


Error Type:
Security

Password for user has been changed. | User = '<nam e>'.


Error Type:
Security

The endpoint '<url>' has been added t o t he UA Server.


Error Type:
Security

www. ptc.com
ThingWorx Kepware Edge 118

The endpoint '<url>' has been rem oved from t he UA Server.


Error Type:
Security

The endpoint '<url>' has been disabled.


Error Type:
Security

The endpoint '<url>' has been enabled.


Error Type:
Security

User inform at ion replaced by im port . | File im port ed = '<absolut e file


pat h>'.
Error Type:
Security

User has been delet ed. | User = '<nam e>'.


Error Type:
Security

Group has been delet ed. | Group = '<nam e>'.


Error Type:
Security

Account '<nam e>' does not have perm ission t o run t his applicat ion.
Cont act t he syst em adm inist rat or.
Error Type:
Error

Changing runt im e operat ing m ode.


Error Type:
Informational

Runt im e operat ing m ode change com plet ed.


Error Type:
Informational

Shut t ing down t o perform an inst allat ion.


Error Type:
Informational

www. ptc.com
119 Th in gWorx Kep ware Ed ge

OPC ProgID has been added t o t he ProgID Redirect list . | ProgID = '<ID>'.
Error Type:
Informational

OPC ProgID has been rem oved from t he ProgID Redirect list . | ProgID =
'<ID>'.
Error Type:
Informational

The invalid ProgID ent ry has been delet ed from t he ProgID Redirect list . |
ProgID = '<ID>'.
Error Type:
Informational

Password for adm inist rat or was reset by t he current user. | Adm in-
ist rat or nam e = '<nam e>', Current user = '<nam e>'.
Error Type:
Security

User m oved from user group. | User = '<nam e>', Old group = '<nam e>',
New group '<nam e>'.
Error Type:
Security

User group has been creat ed. | Group = '<nam e>'.


Error Type:
Security

User added t o user group. | User = '<nam e>', Group = '<nam e>'.
Error Type:
Security

User inform at ion replaced by im port . | File im port ed = '<absolut e file


pat h>'.
Error Type:
Security

User group has been renam ed. | Old nam e = '<nam e>', New nam e =
'<nam e>'.
Error Type:
Security

www. ptc.com
ThingWorx Kepware Edge 120

Perm issions definit ion has changed on user group. | Group = '<nam e>'.
Error Type:
Security

User has been renam ed. | Old nam e = '<nam e>', New nam e = '<nam e>'.
Error Type:
Security

User has been disabled. | User = '<nam e>'.


Error Type:
Security

User group has been disabled. | Group = '<nam e>'.


Error Type:
Security

User has been enabled. | User = '<nam e>'.


Error Type:
Security

User group has been enabled. | Group = '<nam e>'.


Error Type:
Security

Failed t o reset password for adm inist rat or. | Adm inist rat or nam e =
'<nam e>'.
Error Type:
Security

Password reset for adm inist rat or failed. Current user is not a Windows
adm inist rat or. | Adm inist rat or nam e = '<nam e>', Current user = '<nam e>'.

Error Type:
Security

Password for user has been changed. | User = '<nam e>'.


Error Type:
Security

At t em pt t o add it em '<nam e>' failed.


Error Type:
Error

www. ptc.com
121 Th in gWorx Kep ware Ed ge

No device driver DLLs were loaded.


Error Type:
Error

Invalid project file: '<nam e>'.


Error Type:
Error

Could not open project file: '<nam e>'.


Error Type:
Error

Reject ing request t o replace t he project because it 's t he sam e as t he one


in use: '<nam e>'.
Error Type:
Error

Filenam e m ust not overwrit e an exist ing file: '<nam e>'.


Error Type:
Error

Filenam e m ust not be em pt y.


Error Type:
Error

Filenam e is expect ed t o be of t he form subdir/ nam e.{json, <binary ext >,


<secure binary ext >}
Error Type:
Error

Filenam e cont ains one or m ore invalid charact ers.


Error Type:
Error

Saving project files wit h Project File Encrypt ion enabled as .OPF file t ype is
not support ed. Support ed file t ypes are .SOPF and .JSON.
Error Type:
Error

Saving project files wit h Project File Encrypt ion disabled as .SOPF file t ype
is not support ed. Support ed file t ypes are .OPF and .JSON.
Error Type:

www. ptc.com
ThingWorx Kepware Edge 122

Error

Account '<nam e>' does not have perm ission t o run t his applicat ion.
Cont act t he syst em adm inist rat or.
Error Type:
Error

A password is required for saving encrypt ed project files (.<secure binary


ext ension>).
Error Type:
Error

Saving .<binary ext ension> and .JSON project files wit h a password is not
support ed. To save encrypt ed project files, use .<secure binary ext ension>.

Error Type:
Error

A password is required for saving/ loading encrypt ed project files (.<secure


binary ext ension>).
Error Type:
Error

Saving/ loading .<binary ext ension> and .JSON project files wit h a pass-
word is not support ed. To save encrypt ed project files, use .<secure binary
ext ension>.
Error Type:
Error

File is expect ed t o be locat ed in t he 'user_dat a' subdirect ory of t he inst all-


at ion direct ory and of t he form nam e.{json, <binary ext >, <secure binary
ext >}
Error Type:
Error

Addit ion of object t o '<nam e>' failed: <reason>.


Error Type:
Warning

M ove object '<nam e>' failed: <reason>.


Error Type:
Warning

www. ptc.com
123 Th in gWorx Kep ware Ed ge

Updat e of object '<nam e>' failed: <reason>.


Error Type:
Warning

Delet e object '<nam e>' failed: <reason>.


Error Type:
Warning

Unable t o load st art up project '<nam e>': <reason>.


Error Type:
Warning

Failed t o updat e st art up project '<nam e>': <reason>.


Error Type:
Warning

Runt im e project replaced wit h st art up project defined. Runt im e project


will be rest ored from '<nam e>' at next rest art .
Error Type:
Warning

Ignoring user-defined st art up project because a configurat ion session is


act ive.
Error Type:
Warning

Writ e request reject ed on read-only it em reference '<nam e>'.


Error Type:
Warning

Unable t o writ e t o it em '<nam e>'.


Error Type:
Warning

Writ e request failed on it em '<nam e>'. The writ e dat a t ype '<t ype>' cannot
be convert ed t o t he t ag dat a t ype '<t ype>'.
Error Type:
Warning

Writ e request failed on it em '<nam e>'. Error scaling t he writ e dat a.


Error Type:

www. ptc.com
ThingWorx Kepware Edge 124

Warning

Writ e request reject ed on it em reference '<nam e>' since t he device it


belongs t o is disabled.
Error Type:
Warning

<Nam e> successfully configured t o run as a syst em service.


Error Type:
Informational

<Nam e> successfully rem oved from t he service cont rol m anager dat abase.

Error Type:
Informational

Runt im e re-init ializat ion st art ed.


Error Type:
Informational

Runt im e re-init ializat ion com plet ed.


Error Type:
Informational

Updat ed st art up project '<nam e>'.


Error Type:
Informational

Runt im e service st art ed.


Error Type:
Informational

Runt im e process st art ed.


Error Type:
Informational

Runt im e perform ing exit processing.


Error Type:
Informational

Runt im e shut down com plet e.


Error Type:
Informational

www. ptc.com
125 Th in gWorx Kep ware Ed ge

Shut t ing down t o perform an inst allat ion.


Error Type:
Informational

Runt im e project replaced from '<nam e>'.


Error Type:
Informational

M issing applicat ion dat a direct ory.


Error Type:
Informational

Runt im e project saved as '<nam e>'.


Error Type:
Informational

Runt im e project replaced.


Error Type:
Informational

Configurat ion session st art ed by <nam e> (<nam e>).


Error Type:
Security

Configurat ion session assigned t o <nam e> has ended.


Error Type:
Security

Configurat ion session assigned t o <nam e> prom ot ed t o writ e access.


Error Type:
Security

Configurat ion session assigned t o <nam e> dem ot ed t o read only.


Error Type:
Security

Perm issions change applied on configurat ion session assigned t o <nam e>.

Error Type:
Security

www. ptc.com
ThingWorx Kepware Edge 126

Failed t o st art Script Engine server. Socket error occurred binding t o local
port . | Error = <error>, Det ails = '<inform at ion>'.
Error Type:
Error

Possible Cause:
The port conflicts with another application.

Possible Solution:
Use the server administration settings to update the Script Engine port.

An unhandled except ion was t hrown from t he script . | Funct ion = '<func-
t ion>', error = '<error>'.
Error Type:
Error

Possible Cause:
An exception was thrown from the script.

Possible Solution:
Correct the condition that lead to the exception, or update the script logic.

Script Engine service st opping.


Error Type:
Informational

Script Engine service st art ing.


Error Type:
Informational

Profile log m essage. | M essage = '<log m essage>'.


Error Type:
Informational

Connect ion t o ThingWorx failed. | Plat form = <host :port resource>, error =
<reason>.
Error Type:
Error

Possible Cause:
The connection to the ThingWorx Platform could not be established.

Possible Solution:

www. ptc.com
127 Th in gWorx Kep ware Ed ge

1. Verify that the host, port, resource, and application key are all valid and correct.

2. Verify that the host machine can reach the Composer on the ThingWorx Platform.

3. Verify that the proper certificate settings are enabled if using a self-signed certificate or no encryp-
tion.

Error adding it em . | It em nam e = '<it em nam e>'.


Error Type:
Error

Possible Cause:
The item <TagName> could not be added to the server for scanning.

Possible Solution:
1. Verify that the tag exists on a valid channel and device.

2. Verify that the tag may be read using another client, such as the QuickClient.

Failed t o t rigger t he aut obind com plet e event on t he plat form .


Error Type:
Error

Possible Cause:
The ThingWorx connection was terminated before the autobind process completed.

Possible Solution:
Wait to reinitialize or alter the ThingWorx project properties until after all autobinds have completed.

Connect ion t o ThingWorx failed for an unknown reason. | Plat form =


<host :port resource>, error = <error>.
Error Type:
Error

Possible Cause:
The connection to the ThingWorx Platform failed.

Possible Solution:
1. Verify that the host, port, resource, and application key are all valid and correct.

2. Verify that the host machine can reach the Composer on the ThingWorx Platform.

3. Verify that the proper certificate settings are enabled if using a self-signed certificate or no encryp-
tion.

4. Contact technical support with the error code and an application report.

www. ptc.com
ThingWorx Kepware Edge 128

One or m ore value change updat es lost due t o insufficient space in t he


connect ion buffer. | Num ber of lost updat es = <count >.
Error Type:
Error

Possible Cause:
Data is being dropped because the ThingWorx Platform is not available or too much data is being collected
by the instance.

Possible Solution:
1. Verify that some data is updating on the ThingWorx Platform and that the platform is reachable.

2. Slow down the tag scan rate to move less data into the ThingWorx Platform.

It em failed t o publish; m ult idim ensional arrays are not support ed. | It em
nam e = '%s'.
Error Type:
Error

Possible Cause:
The item <ItemName> references a tag whose data is a multidimensional array.

Possible Solution:
Modify the item to reference a tag with a supported datatype.

St ore and Forward dat ast ore unable t o st ore dat a due t o full disk.
Error Type:
Error

Possible Cause:
The disk being used to store updates has been filled to within 500 MiB.

Possible Solution:
1. Free up some space on the disk being used to store updates.

2. Delete the data stored in the datastore using the _DeleteStoredData system tag.

3. Replace the disk being used to store data with a larger disk.

St ore and Forward dat ast ore size lim it reached.


Error Type:
Error

Possible Cause:
The ThingWorx Interface is not able to send updates to the platform as fast as the updates are being gen-
erated.

www. ptc.com
129 Th in gWorx Kep ware Ed ge

Possible Solution:
1. Verify that the ThingWorx Interface can connect to the ThingWorx Platform.

2. Reduce the rate of updates being collected by the ThingWorx Interface.

Connect ion t o ThingWorx was closed. | Plat form = <host :port resource>.
Error Type:
Warning

Possible Cause:
The connection was closed. The service was stopped or the interface is no longer able to reach the platform.

Possible Solution:
1. Verify that the native interface is enabled in the project properties.

2. Verify that the host machine can reach the Composer on the ThingWorx Platform.

Failed t o aut obind propert y. | Nam e = '<propert y nam e>'.


Error Type:
Warning

Possible Cause:
A property with this name already exists under this Thing.

Possible Solution:
1. Check the property to see if data is current.

2. If data is not current, delete the property under the Thing and run the AddItem service once again.

Failed t o rest art Thing. | Nam e = '<t hing nam e>'.


Error Type:
Warning

Possible Cause:
When the AddItem service is complete, a restart service is called on the Thing. This allows the Composer to
visualize the changes. Data changes are sent to the platform even when this error has been presented.

Possible Solution:
Relaunch the Composer to restart the Thing.

Writ e t o propert y failed. | Propert y nam e = '<nam e>', reason = <reason>.


Error Type:
Warning

www. ptc.com
ThingWorx Kepware Edge 130

Possible Cause:
Unable to write to a tag due to a conversion issue.

Possible Solution:
1. Verify that the value to be written is within the appropriate range for the data type.

2. Verify that the data type of the tag in the server, as well as in the ThingWorx Platform, is correct and
consistent.

ThingWorx request t o add it em failed. The it em was already added. | It em


nam e = '<nam e>'.
Error Type:
Warning

Possible Cause:
The tag had already been added to this Thing.

Possible Solution:
1. Check the property to see if data is current.

2. If data is not current, delete the property under the Thing and run the AddItem service once again.

ThingWorx request t o rem ove it em failed. The it em doesn't exist . | It em


nam e = '<nam e>'.
Error Type:
Warning

Possible Cause:
The tag was already removed from the Thing or no such tag exists.

Possible Solution:
If the tag still shows under the properties of the Thing, delete that property in the ThingWorx Composer.

The server is configured t o send an updat e for every scan, but t he push
t ype of one or m ore propert ies are set t o push on value change only. |
Count = <count >.
Error Type:
Warning

Possible Cause:
The push type in the ThingWorx Platform is set to change only for some items. This push type only updates
data on the platform when the data value changes.

Possible Solution:
To use the Send Every Scan option, set this value to Always.

www. ptc.com
131 Th in gWorx Kep ware Ed ge

The push t ype of one or m ore propert ies are set t o never push an updat e
t o t he plat form . | Count = <count >.
Error Type:
Warning

Possible Cause:
The push type in the ThingWorx Platform is set to Never for some items, which prevents any data changes
from being automatically updated on the platform.

Possible Solution:
If this is not the desired behavior, change the push type in the ThingWorx Platform.

ThingWorx request t o rem ove an it em failed. The it em is bound and t he


force flag is false. | It em nam e = '<nam e>'.
Error Type:
Warning

Possible Cause:
The RemoveItems service could not remove the item because it is bound to a property and the Force Flag is
not set to True.

Possible Solution:
Re-run the service, explicitly calling the ForceRemove flag as True.

Writ e t o propert y failed. | Thing nam e = '<nam e>', propert y nam e =


'<nam e>', reason = <reason>.
Error Type:
Warning

Possible Cause:
Unable to write to a tag due to a conversion issue.

Possible Solution:
1. Verify that the data type of the tag in the server, as well as in the ThingWorx Platform, is correct and
consistent.

2. Verify that the value to be written is within the appropriate range for the data type.

Error pushing propert y updat es t o t hing. | Thing nam e = '<nam e>'.


Error Type:
Warning

Possible Cause:
Property updates for the named thing were not successfully published to the platform.

www. ptc.com
ThingWorx Kepware Edge 132

Possible Solution:
Check the platform's log for an indication of why property updates are failing, such as a permissions issue.

Unable t o connect or at t ach t o St ore and Forward dat ast ore. Using in-
m em ory st ore. | In-m em ory st ore size (updat es) = <count >.
Error Type:
Warning

Possible Cause:
1. The Store and Forward service is not running.

2. The service does not have access to the specified storage directory.

3. There is a port conflict that prevents the Store and Forward service from accepting connections.

Possible Solution:
1. Restart the server runtime.

2. Verify the specified storage location is accessible by the Store and Forward service.

3. Resolve the port conflict by configuring a new port for Store and Forward in the server administration.

St ore and Forward dat ast ore reset due t o file IO error or dat ast ore cor-
rupt ion.
Error Type:
Warning

Possible Cause:
1. The datastore was corrupted by a user or another program.

2. The datastore was corrupted by a hardware error.

3. An error occurred while attempting to read data from disk, possibly due to a hardware issue.

Possible Solution:
1. Use User Access Controls to limit the which users have access to the datastore location.

2. Move the datastore to another disk.

Unable t o apply set t ings change init iat ed by t he Plat form . Perm ission
Denied. | User = '<user nam e>'.
Error Type:
Warning

Possible Cause:

www. ptc.com
133 Th in gWorx Kep ware Ed ge

The user group "ThingWorx Interface Users" has the permissions "Project Modification:Servermain.Project"
set to "Deny".

Possible Solution:
Set the permission "Project Modification:Servermain.Project" on the user group "ThingWorx Interface Users"
to "Allow".

Configurat ion Transfer t o ThingWorx Plat form failed.


Error Type:
Warning

Configurat ion Transfer t o ThingWorx Plat form failed. | Reason =


'<reason>'
Error Type:
Warning

Possible Cause:
1. Refer to reason text for more information.

2. The runtime project is locked because a user is editing it.

3. The ThingWorx Interface user account does not have sufficient privelages to perform the operation.

Failed t o delet e st ored updat es in t he St ore and Forward dat ast ore.
Error Type:
Warning

Possible Cause:
A hardware or operating system error prevented the operation from completing.

Possible Solution:
Restart the machine and try again.

Configurat ion Transfer from ThingWorx Plat form failed.


Error Type:
Warning

Configurat ion Transfer from ThingWorx Plat form failed. | Reason =


'<reason>'
Error Type:
Warning

Possible Cause:

www. ptc.com
ThingWorx Kepware Edge 134

1. Refer to reason text for more information.

2. The runtime project is locked because a user is editing it.

3. The ThingWorx Interface user account does not have sufficient privelages to perform the operation.

Check t hat your Applicat ion Key is properly form at t ed and valid.
Error Type:
Warning

Possible Cause:
The connection to the ThingWorx Platform failed due to bad authorization.

Possible Solution:
1. Verify that application key has not expired.

2. Verify that application key is properly formatted.

3. Verify that application key was inputted correctly.

Connect ed t o ThingWorx. | Plat form = <host :port resource>, Thing nam e =


'<nam e>'.
Error Type:
Informational

Possible Cause:
A connection was made to the ThingWorx Platform.

Reinit ializing ThingWorx connect ion due t o a project set t ings change ini-
t iat ed from t he plat form .
Error Type:
Informational

Possible Cause:
When using the SetConfiguration service, this message informs an operator viewing the server event log
that a change was made.

Dropping pending aut obinds due t o int erface shut down or reinit ialize. |
Count = <count >.
Error Type:
Informational

Possible Cause:
A server shutdown or initialization was called while auto-binding was in process from an AddItems service
call.

Possible Solution:

www. ptc.com
135 Th in gWorx Kep ware Ed ge

Any Items not auto bound need to be manually created and bound in the ThingWorx Composer.

Serviced one or m ore aut obind request s. | Count = <count >.


Error Type:
Informational

Possible Cause:
Part of the AddItems service is the autobind action. This action may take more time than the actual adding of
the item. This message alerts the operator to how many items have been autobound.

Reinit ializing ThingWorx connect ion due t o a project set t ings change ini-
t iat ed from t he Configurat ion API.
Error Type:
Informational

Possible Cause:
When using the Configuration API, this message informs an operator viewing the server event log that a
change was made.

Resum ed pushing propert y updat es t o t hing: t he error condit ion was


resolved. | Thing nam e = '<nam e>'.
Error Type:
Informational

Configurat ion t ransfer from ThingWorx init iat ed.


Error Type:
Informational

Configurat ion t ransfer from ThingWorx abort ed.


Error Type:
Informational

Init ialized St ore and Forward dat ast ore. | Dat ast ore locat ion: '<locat ion>'.

Error Type:
Informational

Possible Cause:
ThingWorx Native Interface is configured to use Store and Forward.

Successfully delet ed st ored dat a from t he St ore and Forward dat ast ore.
Error Type:
Informational

www. ptc.com
ThingWorx Kepware Edge 136

Possible Cause:
A client used the _DeleteStoredData system tag to delete data cached for ThingWorx Interface in the Store
and Forward datastore.

St ore and Forward m ode changed. | Forward M ode = '<m ode>'.


Error Type:
Informational

Possible Cause:
The _ForwardMode system tag was written to by a connected client and the value of the write caused a set-
tings change.

Init ialized St ore and Forward dat ast ore. | Forward M ode = '<m ode>' |
Dat ast ore locat ion = '<locat ion>'.
Error Type:
Informational

Possible Cause:
ThingWorx Native Interface is configured to use Store and Forward.

M issing server inst ance cert ificat e '<cert locat ion>'. Please use t he OPC UA
Configurat ion M anager t o reissue t he cert ificat e.
Error Type:
Error

Failed t o im port server inst ance cert : '<cert locat ion>'. Please use t he OPC
UA Configurat ion M anager t o reissue t he cert ificat e.
Error Type:
Error

Possible Cause:
1. The file containing the server instance certificate does not exist or is inaccessible.

2. Certificate decryption failed.

Possible Solution:
1. Verify the file references a valid instance certificate to which the user has permissions.

2. Import a new certificate.

3. Re-issue the certificate to refresh the encryption.

The UA server cert ificat e is expired. Please use t he OPC UA Configurat ion
M anager t o reissue t he cert ificat e.
Error Type:

www. ptc.com
137 Th in gWorx Kep ware Ed ge

Error

Possible Cause:
The validity period of the certificate is before the current system date.

Possible Solution:
1. Import a non-expired certificate.

2. Re-issue the certificate to generate a new non-expired certificate.

A socket error occurred list ening for client connect ions. | Endpoint URL =
'<endpoint URL>', Error = <error code>, Det ails = '<descript ion>'.
Error Type:
Error

Possible Cause:
The endpoint socket returned an error while listening for client connections.

Possible Solution:
Note the details in the error message to diagnose the problem.

The UA Server failed t o regist er wit h t he UA Discovery Server. | Endpoint


URL: '<endpoint url>'.
Error Type:
Error

Possible Cause:
1. The UA server endpoint URL and the security policy are not supported in the UA Discovery Server.

2. The attempt to register the UA Server with the UA Discovery Server could not complete in the expec-
ted manner.

Possible Solution:
Verify the UA Server endpoint URL and the security policy with the UA Discovery Server endpoints.

Unable t o st art t he UA server due t o cert ificat e load failure.


Error Type:
Error

Possible Cause:
1. The UA Server application instance certificate validity period occurs before the current system date.

2. The file containing the server instance certificate does not exist or is inaccessible.

3. Certificate decryption failed.

www. ptc.com
ThingWorx Kepware Edge 138

Possible Solution:
1. Import a non-expired certificate.

2. Re-issue the certificate to generate a new non-expired certificate.

3. Verify the file references a valid instance certificate to which the user has permissions.

4. Re-issue the certificate to refresh the encryption.

Failed t o load t he UA Server endpoint configurat ion.


Error Type:
Error

Possible Cause:
The endpoint configuration file is corrupt or doesn't exist.

Possible Solution:
Re-configure the UA Endpoint configuration and reinitialize the server.

The UA Server failed t o unregist er from t he UA Discovery Server. | End-


point URL: '<endpoint url>'.
Error Type:
Warning

Possible Cause:
1. The UA server endpoint URL and the security policy are not supported in the UA Discovery Server.

2. The attempt to unregister the UA Server from the UA Discovery Server could not complete in the
expected manner.

Possible Solution:
Verify the UA Server endpoint URL and the security policy with the UA Discovery Server endpoints.

The UA Server failed t o init ialize an endpoint configurat ion. | Endpoint


Nam e: '<nam e>'.
Error Type:
Warning

Possible Cause:
The endpoint is configured to use a network adapter that does not have a valid ipv4 address.

Possible Solution:
1. Re-configure the network adapter property with an adapter that has a valid ipv4 address.

2. Restart the runtime to refresh the endpoint configurations.

www. ptc.com
139 Th in gWorx Kep ware Ed ge

The UA Server successfully regist ered wit h t he UA Discovery Server. | End-


point URL: '<endpoint url>'.
Error Type:
Informational

The UA Server successfully unregist ered from t he UA Discovery Server. |


Endpoint URL: '<endpoint url>'.
Error Type:
Informational

Sam ple Profile Library event log m essage. Reason: <reason>.


Error Type:
Warning

Possible Cause:
1. Sample Profile Library event log possible cause 1.

2. Sample Profile Library event log possible cause 2.

3. Sample Profile Library event log possible cause 3.

4. Sample Profile Library event log possible cause 4.

5. Sample Profile Library event log possible cause 5.

Possible Solution:
Sample Profile Library event log possible solution.

Com port is in use by anot her applicat ion. | Port = '<port >'.
Error Type:
Error

Possible Cause:
The serial port assigned to a device is being used by another application.

Possible Solution:
1. Verify that the correct port has been assigned to the channel.

2. Verify that only one copy of the current project is running.

Unable t o configure com port wit h specified param et ers. | Port =


COM <num ber>, OS error = <error>.
Error Type:
Error

Possible Cause:

www. ptc.com
ThingWorx Kepware Edge 140

The serial parameters for the specified COM port are not valid.

Possible Solution:
Verify the serial parameters and make any necessary changes.

Driver failed t o init ialize.


Error Type:
Error

Unable t o creat e serial I/ O t hread.


Error Type:
Error

Possible Cause:
The server process has no resources available to create new threads.

Possible Solution:
Each tag group consumes a thread. The typical limit for a single process is about 2000 threads. Reduce the
number of tag groups in the project.

Com port does not exist . | Port = '<port >'.


Error Type:
Error

Possible Cause:
The specified COM port is not present on the target computer.

Possible Solution:
Verify that the proper COM port is selected.

Error opening com port . | Port = '<port >', OS error = <error>.


Error Type:
Error

Possible Cause:
The specified COM port could not be opened due an internal hardware or software problem on the target
computer.

Possible Solution:
Verify that the COM port is functional and may be accessed by other applications.

Connect ion failed. Unable t o bind t o adapt er. | Adapt er = '<nam e>'.
Error Type:
Error

Possible Cause:

www. ptc.com
141 Th in gWorx Kep ware Ed ge

Since the specified network adapter cannot be located in the system device list, it cannot be bound to for
communications. This can occur when a project is moved from one PC to another (and when the project spe-
cifies a network adapter rather than using the default). The server reverts to the default adapter.

Possible Solution:
Change the Network Adapter property to Default (or select a new adapter), save the project, and retry.

Winsock shut down failed. | OS error = <error>.


Error Type:
Error

Winsock init ializat ion failed. | OS error = <error>.


Error Type:
Error

Possible Solution:
1. The underlying network subsystem is not ready for network communication. Wait a few seconds and
restart the driver.

2. The limit on the number of tasks supported by the Windows Sockets implementation has been
reached. Close one or more applications that may be using Winsock and restart the driver.

Winsock V1.1 or higher m ust be inst alled t o use t his driver.


Error Type:
Error

Possible Cause:
The version number of the Winsock DLL found on the system is older than 1.1.

Possible Solution:
Upgrade Winsock to version 1.1 or higher.

Socket error occurred binding t o local port . | Error = <error>, Det ails =
'<inform at ion>'.
Error Type:
Error

Device is not responding.


Error Type:
Warning

Possible Cause:
1. The connection between the device and the host PC is broken.

2. The communication parameters for the connection are incorrect.

www. ptc.com
ThingWorx Kepware Edge 142

3. The named device may have been assigned an incorrect device ID.

4. The response from the device took longer to receive than allowed by the Request Timeout device set-
ting.

Possible Solution:
1. Verify the cabling between the PC and the PLC device.

2. Verify that the specified communications parameters match those of the device.

3. Verify that the device ID for the named device matches that of the actual device.

4. Increase the Request Timeout setting to allow the entire response to be handled.

Device is not responding. | ID = '<device>'.


Error Type:
Warning

Possible Cause:
1. The network connection between the device and the host PC is broken.

2. The communication parameters configured for the device and driver do not match.

3. The response from the device took longer to receive than allowed by the Request Timeout device set-
ting.

Possible Solution:
1. Verify the cabling between the PC and the PLC device.

2. Verify that the specified communications parameters match those of the device.

3. Increase the Request Timeout setting to allow the entire response to be handled.

Serial com m unicat ions error on channel. | Error m ask = <m ask>.
Error Type:
Warning

Possible Cause:
1. The serial connection between the device and the host PC is broken.

2. The communications parameters for the serial connection are incorrect.

Possible Solution:
1. Investigate the error mask code and the related information.

2. Verify the cabling between the PC and the PLC device.

3. Verify that the specified communication parameters match those of the device.

www. ptc.com
143 Th in gWorx Kep ware Ed ge

See Also:
Error Mask Codes

Invalid array size det ect ed writ ing t o t ag <device nam e>.<address>.
Error Type:
Warning

Possible Cause:
Client trying to write before being updated.

Possible Solution:
Perform a read on the array before attempting a write.

Unable t o writ e t o address on device. | Address = '<address>'.


Error Type:
Warning

Possible Cause:
1. The connection between the device and the host PC is broken.

2. The communications parameters for the connection are incorrect.

3. The named device may have been assigned an incorrect device ID.

Possible Solution:
1. Verify the cabling between the PC and the PLC device.

2. Verify that the specified communication parameters match those of the device.

3. Verify that the device ID given to the named device matches that of the actual device.

It em s on t his page m ay not be changed while t he driver is processing


t ags.
Error Type:
Warning

Possible Cause:
An attempt was made to change a channel or device configuration while data clients were connected to the
server and receiving data from the channel/device.

Possible Solution:
Disconnect all data clients from the server before making changes.

Specified address is not valid on device. | Invalid address = '<address>'.


Error Type:

www. ptc.com
ThingWorx Kepware Edge 144

Warning

Possible Cause:
A tag address has been assigned an invalid address.

Possible Solution:
Modify the requested address in the client application.

Address '<address>' is not valid on device '<nam e>'.


Error Type:
Warning

This propert y m ay not be changed while t he driver is processing t ags.


Error Type:
Warning

Unable t o writ e t o address '<address>' on device '<nam e>'.


Error Type:
Warning

Possible Cause:
1. The connection between the device and the host PC is broken.

2. The communications parameters for the connection are incorrect.

3. The named device may have been assigned an incorrect device ID.

Possible Solution:
1. Verify the cabling between the PC and the PLC device.

2. Verify that the specified communication parameters match those of the device.

3. Verify that the device ID given to the named device matches that of the actual device.

Socket error occurred connect ing. | Error = <error>, Det ails = '<inform -
at ion>'.
Error Type:
Warning

Possible Cause:
Communication with the device failed during the specified socket operation.

Possible Solution:
Follow the guidance in the error and details, which explain why the error occurred and suggest a remedy
when appropriate.

www. ptc.com
145 Th in gWorx Kep ware Ed ge

Socket error occurred receiving dat a. | Error = <error>, Det ails = '<inform -
at ion>'.
Error Type:
Warning

Possible Cause:
Communication with the device failed during the specified socket operation.

Possible Solution:
Follow the guidance in the error and details, which explain why the error occurred and suggest a remedy
when appropriate.

Socket error occurred sending dat a. | Error = <error>, Det ails = '<inform -
at ion>'.
Error Type:
Warning

Possible Cause:
Communication with the device failed during the specified socket operation.

Possible Solution:
Follow the guidance in the error and details, which explain why the error occurred and suggest a remedy
when appropriate.

Socket error occurred checking for readabilit y. | Error = <error>, Det ails =
'<inform at ion>'.
Error Type:
Warning

Possible Cause:
Communication with the device failed during the specified socket operation.

Possible Solution:
Follow the guidance in the error and details, which explain why the error occurred and suggest a remedy
when appropriate.

Socket error occurred checking for writ abilit y. | Error = <error>, Det ails =
'<inform at ion>'.
Error Type:
Warning

Possible Cause:
Communication with the device failed during the specified socket operation.

Possible Solution:

www. ptc.com
ThingWorx Kepware Edge 146

Follow the guidance in the error and details, which explain why the error occurred and suggest a remedy
when appropriate.

%s |
Error Type:
Informational

<Nam e> Device Driver '<nam e>'


Error Type:
Informational

Could not load it em st at e dat a. Reason: <reason>.


Error Type:
Warning

Possible Cause:
1. The driver could not load the item state data for the specified reason.

2. Corrupt data files.

3. Inadequate disk space.

4. Invalid drive in path.

5. Deleted or renamed data files.

Possible Solution:
Solution depends upon the reason given in the error message. In the case of file corruption or deletion, pre-
vious state data is lost.

Could not save it em st at e dat a. Reason: <reason>.


Error Type:
Warning

Possible Cause:
1. The driver could not save the item state data for the specified reason.

2. Corrupt data files.

3. Inadequate disk space.

4. Invalid drive in path.

5. Deleted or renamed data files.

Possible Solution:
Solution depends upon the reason given in the error message. In the case of file corruption or deletion, pre-
vious state data is lost.

www. ptc.com
147 Th in gWorx Kep ware Ed ge

Feat ure '<nam e>' is not licensed and cannot be used.


Error Type:
Error

Possible Cause:
1. The named feature of the product has not been purchased and licensed.

2. The product license has been removed or trusted storage has become corrupted.

Possible Solution:
1. Download or install the software feature and purchase license.

2. Consult the Licensing User Manual for instructions on activating emergency licenses.

3. Contact a sales or support representative for assistance.

See Also:
License Utility Help

Failed t o load t he license int erface, possibly due t o a m issing t hird-part y


dependency. Run in Tim e Lim it ed m ode only.
Error Type:
Error

Possible Cause:
One or more required OEM licensing component is missing the system.

Possible Solution:
Contact a sales or support representative for assistance.

See Also:
License Utility Help

Tim e Lim it ed m ode has expired.


Error Type:
Warning

Possible Cause:
1. The product has not been purchased and licensed during Time Limited mode.

2. The server started in Time Limited mode with the specified time remaining in Time Limited mode.

Possible Solution:

www. ptc.com
ThingWorx Kepware Edge 148

1. If evaluating the server, no action needs to be taken.

2. If this is a production machine, activate the product licenses for the installed components before
Time Limited mode expires.

3. Purchase a license for all features of the product that will be used.

4. Contact a sales or support representative for assistance.

See Also:
License Utility Help

M axim um device count exceeded for t he lit e version '<num ber>' license.
Edit project and rest art t he server.
Error Type:
Warning

Possible Cause:
The specified driver was activated with a lite license, which limits the number of devices that can be con-
figured.

Possible Solution:
1. Verify the number of devices authorized by the license and correct the project design to reduce the
device count.

2. If more devices are needed or the lite activation is incorrect, contact a sales representative about
upgrading the license to support more devices.

See Also:
License Utility Help

M axim um runt im e t ag count exceeded for t he lit e version '<num ber>'


license. Edit client project and rest art t he server.
Error Type:
Warning

Possible Cause:
The specified driver was activated with a lite license, which limits the number of tags that can be configured.

Possible Solution:
1. Verify the number of tags authorized by the license and correct the project design to reduce the tag
count.

2. If more tags are needed or if the lite activation is incorrect, contact a sales representative about
upgrading the license to support more tags.

See Also:
License Utility Help

www. ptc.com
149 Th in gWorx Kep ware Ed ge

Type <num eric t ype ID> lim it of <m axim um count > exceeded on feat ure
'<nam e>'.
Error Type:
Warning

Possible Cause:
The installed feature license limits the number of items of the specified type that can be configured.

Possible Solution:
1. Contact customer solutions to determine what object type count should be reduced to remain within
the limits of the license.

2. If more items are needed, contact a sales representative about upgrading the license.

See Also:
License Utility Help

<Object t ype nam e> lim it of <m axim um count > exceeded on feat ure
'<nam e>'.
Error Type:
Warning

Possible Cause:
The installed feature license limits the number of items of the specified type that can be configured.

Possible Solution:
1. Verify the number authorized by the license and correct the project design to use only that number of
items.

2. If more items are needed, contact a sales representative about upgrading the license.

See Also:
License Utility Help

The FlexNet Licensing Service m ust be enabled t o process licenses. Failure


t o enable t he service result s in Tim e Lim it ed m ode.
Error Type:
Warning

Possible Cause:
An attempt was made to verify the license, but the FlexNet Licensing Service is disabled.

Possible Solution:
Use the Windows Service Control Manager to enable the FlexNet Licensing Service, which requires a
runtime restart.

www. ptc.com
ThingWorx Kepware Edge 150

See Also:
License Utility Help

The <nam e> feat ure license has been rem oved. The server will ent er Tim e
Lim it ed m ode unless t he license is rest ored before t he grace period
expires.
Error Type:
Warning

Possible Cause:
The feature license has been deleted, moved to another machine, the hardware key has been removed, or
trusted storage has been corrupted.

Possible Solution:
1. Consult the Licensing User Manual for instructions on activating an emergency licenses.

2. Contact a sales or support representative for assistance.

See Also:
License Utility Help

License for feat ure <nam e> cannot be accessed [error=<code>] and m ust
be react ivat ed.
Error Type:
Warning

Possible Cause:
Trusted storage has been corrupted, possibly due to a system update.

Possible Solution:
1. Consult the Licensing User Manual for instructions on activating an emergency licenses.

2. Contact a sales or support representative for assistance.

See Also:
License Utility Help

Feat ure <nam e> is t im e lim it ed and will expire at <dat e/ t im e>.
Error Type:
Warning

Feat ure <nam e> is t im e lim it ed and will expire at <dat e/ t im e>.
Error Type:
Warning

www. ptc.com
151 Th in gWorx Kep ware Ed ge

Object count lim it has been exceeded on feat ure <nam e>. Tim e lim it ed
usage will expire at <dat e/ t im e>.
Error Type:
Warning

Feat ure count lim it exceeded on <nam e>. Tim e lim it ed usage will expire
at <dat e/ t im e>.
Error Type:
Warning

Tim e lim it ed usage period on feat ure <nam e> has expired.
Error Type:
Warning

M axim um driver count exceeded for t he lit e version '<nam e>' driver
license. Edit project and rest art t he server.
Error Type:
Informational

Possible Cause:
The specified driver was activated with a lite license, which limits the number of drivers that can be con-
figured.

Possible Solution:
1. Verify the number of drivers authorized by the license. Correct the project to use only that number of
drivers.

2. If more drivers are needed or the lite activation is incorrect, contact a sales representative about
upgrading the license to support more drivers.

See Also:
1. Event Log (in server help)

2. License Utility Help

Cannot add it em . Request ed count of <num ber> would exceed license


lim it of <m axim um count >.
Error Type:
Informational

Possible Cause:
The product license limits the number of items that can be configured.

www. ptc.com
ThingWorx Kepware Edge 152

Possible Solution:
1. Verify the number authorized by the license and correct the project to use only that number of items.

2. If more items are needed, contact a sales representative about upgrading the license.

See Also:
License Utility Help

The version of com ponent <nam e> (<version>) is required t o m at ch t hat


of com ponent <nam e> (<version>).
Error Type:
Informational

Possible Cause:
Two installed components have an interdependency that requires the versions to match.

Possible Solution:
Verify component versions and download or install the matching versions of the components.

See Also:
License Utility Help

M axim um channel count exceeded for t he lit e version '<nam e>' driver
license. Edit project and rest art t he server.
Error Type:
Informational

Possible Cause:
The specified driver was activated with a lite license, which limits the number of channels that can be con-
figured.

Possible Solution:
1. Verify the number of channels authorized by the license. Correct the project to use only that number
of channels.

2. If more channels are needed or the lite activation is incorrect, contact a sales representative about
upgrading the license to support more channels.

See Also:
1. Event Log (in server help)

2. License Utility Help

%s is now licensed.
Error Type:

www. ptc.com
153 Th in gWorx Kep ware Ed ge

Informational

www. ptc.com
ThingWorx Kepware Edge 154

Index
%

%s | 146
%s is now licensed. 152

<

<feature name> is required to load this project. 104


<feature name> was not found or could not be loaded. 104
<Name> Device Driver '<name>' 146
<Name> successfully configured to run as a system service. 124
<Name> successfully removed from the service control manager database. 124
<Object type name> limit of <maximum count> exceeded on feature '<name>'. 149
<Product> device driver loaded successfully. 112
<Product> device driver unloaded from memory. 114
<Source>
In valid Eth ern et en cap su lation IP '<ad d ress>'. 109

A client application has disabled auto-demotion on device '<device>'. 116


A client application has enabled auto-demotion on device '<device>'. 115
A password is required for saving encrypted project files (.<secure binary extension>). 122
A password is required for saving/loading encrypted project files (.<secure binary extension>). 122
A socket error occurred listening for client connections. | Endpoint URL = '<endpoint URL>', Error =
<error code>, Details = '<description>'. 137
Access to object denied. | User = '<account>', Object = '<object path>', Permission = 116
Account '<name>' does not have permission to run this application. Contact the system
administrator. 118, 122
Addition of object to '<name>' failed
<reason >. 122
Address '<address>' is not valid on device '<name>'. 144
aksusbd 16
Alias Name 35
Alias Properties 35
An unhandled exception was thrown from the script. | Function = '<function>', error = '<error>'. 126
Anonymous 64

www. ptc.com
155 Th in gWorx Kep ware Ed ge

APPKEY 52
Application Data 15
Architecture 14, 54
Attempt to add item '<name>' failed. 120
Attempting to automatically generate tags for device '<device>'. 114
authentication 53
Authentication 96
Authorization 37
Auto-generated tag '<tag>' already exists and will not be overwritten. 105
Auto generation produced too many overwrites, stopped posting error messages. 106
Automatic Tag Generation 55

BCD 32
Boolean 32
Byte 32

Cannot add device. A duplicate device may already exist in this channel. 105
Cannot add item. Requested count of <number> would exceed license limit of <maximum count>. 151
certificate 45
Changing runtime operating mode. 118
Channel requires at least one number in its phonebook for automatic dialing. | Channel =
'<channel>'. 111
Channel requires Auto-Dial enabled and at least one number in its phonebook to use a shared modem
connection. | Channel = '<channel>'. 111
Char 32
Check that your Application Key is properly formatted and valid. 134
Child Endpoints 77
Clamp 34
Com port does not exist. | Port = '<port>'. 140
Com port is in use by another application. | Port = '<port>'. 139
Command line 13
Command Line Interface 17
Completed automatic tag generation for device '<device>'. 114
Components and Concepts 17
Concurrent Clients 95

www. ptc.com
ThingWorx Kepware Edge 156

Configuration API Service 53


Configuration API started with SSL on port <port number>. 101
Configuration API started without SSL on port <port number>. 101
Configuration session assigned to <name> demoted to read only. 125
Configuration session assigned to <name> has ended. 125
Configuration session assigned to <name> promoted to write access. 125
Configuration session started by <name> (<name>). 125
Configuration transfer from ThingWorx aborted. 135
Configuration transfer from ThingWorx initiated. 135
Configuration Transfer from ThingWorx Platform failed. 133
Configuration Transfer from ThingWorx Platform failed. | Reason = '<reason>' 133
Configuration Transfer to ThingWorx Platform failed. 133
Configuration Transfer to ThingWorx Platform failed. | Reason = '<reason>' 133
Configuring User Group Project Permissions 82
Connected to ThingWorx. | Platform = <host
p ort resou rce>, Th in g n am e = '<n am e>'. 134
Connection failed. Unable to bind to adapter. | Adapter = '<name>'. 140
Connection to ThingWorx failed for an unknown reason. | Platform = <host
p ort resou rce>, error = <error>. 127
Connection to ThingWorx failed. | Platform = <host
p ort resou rce>, error = <reason >. 126
Connection to ThingWorx was closed. | Platform = <host
p ort resou rce>. 129
Connectivity 39
Content Retrieval 90
Could not load item state data. Reason
<reason >. 146
Could not open project file
'<n am e>'. 121
Could not save item state data. Reason
<reason >. 146
Create MQTT Agent 44
Create MQTT Agent Tag 44
Created backup of project '<name>' to '<path>'. 115
Creating a Channel 66
Creating a Device 69
Creating a Tag 71
Creating a UA Endpoint 85
Creating a User 80
Creating a User Group 80
Credentials 64

www. ptc.com
157 Th in gWorx Kep ware Ed ge

cURL 13
Curl 66

daemon 16
Data 86
Data collection is disabled on device '<device>'. 115
Data collection is enabled on device '<device>'. 115
Default 15
DELETE 67, 70, 73, 75
Delete MQTT Agent 45
Delete object '<name>' failed
<reason >. 123
Device '<device>' has been auto-promoted to determine if communications can be re-established. 115
Device '<device>' has been automatically demoted. 109
Device discovery has exceeded <count> maximum allowed devices. Limit the discovery range and try
again. 104
Device is not responding. 141
Device is not responding. | ID = '<device>'. 142
Dialing '<number>' on line '<modem>'. 113
Dialing aborted on '<modem>'. 113
Dialing on line '<modem>' canceled by user. 113
Directory 15
Documentation Endpoint 38
Double 32
Driver failed to initialize. 140
Dropping pending autobinds due to interface shutdown or reinitialize. | Count = <count>. 134
DWord 32
Dynamic Tags 32

edge_admin 17
Enable 96
Encrypt 61
Endpoint 37
Endpoint Mapping 39
Error adding item. | Item name = '<item name>'. 127

www. ptc.com
ThingWorx Kepware Edge 158

Error opening com port. | Port = '<port>', OS error = <error>. 140


Error pushing property updates to thing. | Thing name = '<name>'. 131
Event Log Messages 99

Failed to add tag '<tag>' because the address is too long. The maximum address length is
<number>. 106
Failed to autobind property. | Name = '<property name>'. 129
Failed to delete stored updates in the Store and Forward datastore. 133
Failed to import server instance cert
'<cert location >'. Please u se th e OPC UA Con figu ration M an ager to reissu e th e certificate. 136
Failed to load library
<n am e>. 115
Failed to load the license interface, possibly due to a missing third-party dependency. Run in Time Limited
mode only. 147
Failed to load the UA Server endpoint configuration. 138
Failed to open modem line '<line>' [TAPI error = <code>]. 102
Failed to read build manifest resource
<n am e>. 115
Failed to reset password for administrator. | Administrator name = '<name>'. 120
Failed to restart Thing. | Name = '<thing name>'. 129
Failed to start Script Engine server. Socket error occurred binding to local port. | Error = <error>, Details
= '<information>'. 126
Failed to trigger the autobind complete event on the platform. 127
Failed to update startup project '<name>'
<reason >. 123
Feature '<name>' is not licensed and cannot be used. 147
Feature <name> is time limited and will expire at <date/time>. 150
Feature count limit exceeded on <name>. Time limited usage will expire at <date/time>. 151
File is expected to be located in the 'user_data' subdirectory of the installation directory and of the form
name.{json, <binary ext>, <secure binary ext>} 122
Filename contains one or more invalid characters. 121
Filename is expected to be of the form subdir/name.{json, <binary ext>, <secure binary ext>} 121
Filename must not be empty. 121
Filename must not overwrite an existing file
'<n am e>'. 121
Filtering 100
Float 32

www. ptc.com
159 Th in gWorx Kep ware Ed ge

GET Request URI 90


Getting Started 36
Group has been deleted. | Group = '<name>'. 118

Hardware error on line '<line>'. 106


hardware key 15
HASP 16
Hierarchy 88
HOSTNAME 52
HTTP 53
HTTPS 53
Human Machine Interface (HMI) 41

Ignoring user-defined startup project because a configuration session is active. 123


Incoming call detected on line '<modem>'. 114
Initialization 53
Initialized Store and Forward datastore. | Datastore location
'<location >'. 135
Initialized Store and Forward datastore. | Forward Mode = '<mode>' | Datastore location =
'<location>'. 136
Initiating disconnect on modem line '<modem>'. 114
Insomnia 66
installation directory 16
Installing 14
Instance Certificate 17
Interfaces and Connectivity 41
Introduction 13
Invalid array size detected writing to tag <device name>.<address>. 143
Invalid Model encountered while trying to load the project. | Device = '<device>'. 105
Invalid project file
'<n am e>'. 121
Invalid project file. 102
Invalid XML document 103

www. ptc.com
ThingWorx Kepware Edge 160

IoT Gateway 43, 45


IoT Gateway — MQTT 42
Item failed to publish 128
Items on this page may not be changed while the driver is processing tags. 143

Java Runtime 13
Job 54
Job Cleanup 54
JSON Response Structure 90

KeyStore 45
keytool 45

LBCD 32
License for feature <name> cannot be accessed [error=<code>] and must be reactivated. 150
Licensing 15
Line '<line>' is already in use. 106
Line '<modem>' connected at <rate> baud. 113
Line '<modem>' connected. 114
Line '<modem>' disconnected. 113
Line dropped at remote site on '<modem>'. 113
Linear 33
Linux 13
Listat 16
LLong 32
Location 15
Logging 99
Long 32
LSB 13

www. ptc.com
161 Th in gWorx Kep ware Ed ge

Man Machine Interface (MMI) 41


Mapped to 35
Maximum channel count exceeded for the lite version '<name>' driver license. Edit project and restart
the server. 152
Maximum device count exceeded for the lite version '<number>' license. Edit project and restart the
server. 148
Maximum driver count exceeded for the lite version '<name>' driver license. Edit project and restart the
server. 151
Maximum runtime tag count exceeded for the lite version '<number>' license. Edit client project and
restart the server. 148
Member 92
Missing application data directory. 125
Missing server instance certificate '<cert location>'. Please use the OPC UA Configuration Manager to
reissue the certificate. 136
Modem line closed
'<m od em >'. 114
Modem line opened
'<m od em >'. 114
Move object '<name>' failed
<reason >. 122
MQTT Agent 40, 43, 45
MQTT client 13
multidimensional arrays are not supported. | Item name = '%s'. 128
Multiple Objects 87

Negate 34
No comm handle provided on connect for line '<line>'. 107
No device driver DLLs were loaded. 121
No dial tone on '<modem>'. 113
No tags were created by the tag generation request. See the event log for more information. 112

Object 87
Object count limit has been exceeded on feature <name>. Time limited usage will expire at
<date/time>. 151
Object type '<name>' not allowed in project. 115

www. ptc.com
ThingWorx Kepware Edge 162

One or more value change updates lost due to insufficient space in the connection buffer. | Number of
lost updates = <count>. 128
OPC ProgID has been added to the ProgID Redirect list. | ProgID = '<ID>'. 119
OPC ProgID has been removed from the ProgID Redirect list. | ProgID = '<ID>'. 119
OPC UA 41
OPC UA Endpoint 82
OPC UA server 96
OpenJDK 13
Operation 53

Password 64, 94
Password for administrator was reset by the current user. | Administrator name = '<name>', Current
user = '<name>'. 119
Password for user has been changed. | User = '<name>'. 117, 120
Password reset for administrator failed. Current user is not a Windows administrator. | Administrator
name = '<name>', Current user = '<name>'. 120
Permissions change applied on configuration session assigned to <name>. 125
Permissions definition has changed on user group. | Group = '<name>'. 117, 120
Phone number priority has changed. | Phone Number Name = '<name>', Updated Priority =
'<priority>'. 116
Plug-in Endpoints 39
Port 37, 96
PORT 52
Postman 13, 66
Prerequisites 43
Profile log message. | Message = '<log message>'. 126
Project Permissions 77
Project Properties — OPC UA 63
Project Properties — ThingWorx Native Interface 61
Project Properties (via API Commands) 58
Project Save 56
ProjectSave 46
Properly Name a Channel, Device, Tag, and Tag Group 35
Property Definitions 92
Property Tags 29
Property Types 94
Proxy 63

www. ptc.com
163 Th in gWorx Kep ware Ed ge

QWord 32

Raw 33
Reinitializing ThingWorx connection due to a project settings change initiated from the Configuration
API. 135
Reinitializing ThingWorx connection due to a project settings change initiated from the platform. 134
Rejecting attempt to change model type on a referenced device '<channel device>'. 108
Rejecting request to replace the project because it's the same as the one in use
'<n am e>'. 121
Remote line is busy on '<modem>'. 113
Remote line is not answering on '<modem>'. 113
Removing a Device 70
Removing a Tag 73
Removing a Tag Group 75
Removing a UA Endpoint 86
Removing Channel 67
Response Codes 99
REST 37, 53, 66, 69, 71
Resumed pushing property updates to thing
th e error con d ition was resolved . | Th in g n am e = '<n am e>'. 135
Runtime operating mode change completed. 118
Runtime performing exit processing. 124
Runtime process started. 124
Runtime project replaced from '<name>'. 125
Runtime project replaced with startup project defined. Runtime project will be restored from '<name>' at
next restart. 123
Runtime project replaced. 125
Runtime project saved as '<name>'. 125
Runtime re-initialization completed. 124
Runtime re-initialization started. 124
Runtime service started. 124
Runtime shutdown complete. 124

www. ptc.com
ThingWorx Kepware Edge 164

Sample Profile Library event log message. Reason


<reason >. 139
Save 15
Saving .<binary extension> and .JSON project files with a password is not supported. To save encrypted
project files, use .<secure binary extension>. 122
Saving project files with Project File Encryption disabled as .SOPF file type is not supported. Supported file
types are .OPF and .JSON. 121
Saving project files with Project File Encryption enabled as .OPF file type is not supported. Supported file
types are .SOPF and .JSON. 121
Saving/loading .<binary extension> and .JSON project files with a password is not supported. To save
encrypted project files, use .<secure binary extension>. 122
Scaled 34
Scan rate override 35
Script Engine service starting. 126
Script Engine service stopping. 126
security 37
Security 53, 61, 64, 90, 96
Self-Signed Certificates 45
Serial communications error on channel. | Error mask = <mask>. 142
Service 54
Serviced one or more autobind requests. | Count = <count>. 135
Short 32
Shutdown 53
Shutting down to perform an installation. 118, 125
Simulation mode is disabled on device '<device>'. 114
Simulation mode is enabled on device '<device>'. 114
Socket error occurred binding to local port. | Error = <error>, Details = '<information>'. 141
Socket error occurred checking for readability. | Error = <error>, Details = '<information>'. 145
Socket error occurred checking for writability. | Error = <error>, Details = '<information>'. 145
Socket error occurred connecting. | Error = <error>, Details = '<information>'. 144
Socket error occurred receiving data. | Error = <error>, Details = '<information>'. 145
Socket error occurred sending data. | Error = <error>, Details = '<information>'. 145
Specified address is not valid on device. | Invalid address = '<address>'. 143
Square Root 33
Starting <name> device driver. 112
Statistics Tags 30
Stopping <name> device driver. 113
Store and Forward datastore reset due to file IO error or datastore corruption. 132

www. ptc.com
165 Th in gWorx Kep ware Ed ge

Store and Forward datastore size limit reached. 128


Store and Forward datastore unable to store data due to full disk. 128
Store and Forward mode changed. | Forward Mode = '<mode>'. 136
String 32
Successfully deleted stored data from the Store and Forward datastore. 135
System Requirements 13
System Services 53
System Tags 21
systemctl 16

Tag generation results for device '<device>'. | Tags created = <count>, Tags not overwritten =
<count>. 116
Tag generation results for device '<device>'. | Tags created = <count>, Tags overwritten = <count>. 116
Tag generation results for device '<device>'. | Tags created = <count>. 116
Tag Group Properties 34
Tag Properties — General 19
Tag Properties — Scaling 33
TAPI configuration has changed, reinitializing... 112
TAPI line initialization failed
<cod e>. 108
The '<product>' driver does not currently support XML persistence. Save using the default file
format. 110
The <name> device driver was not found or could not be loaded. 101
The <name> feature license has been removed. The server will enter Time Limited mode unless the
license is restored before the grace period expires. 150
The Config API is unable to load the SSL certificate. 100
The Config API SSL certificate contains a bad signature. 100
The Config API SSL certificate has expired. 100
The Config API SSL certificate is self-signed. 101
The configured version of TLS for the Configuration API is no longer considered secure. It is recom-
mended that only TLS 1.2 or higher is used. 101
The current language does not support loading XML projects. To load XML projects, change the product
language selection to English in Server Administration. 104
The endpoint '<url>' has been added to the UA Server. 117
The endpoint '<url>' has been disabled. 118
The endpoint '<url>' has been enabled. 118
The endpoint '<url>' has been removed from the UA Server. 118
The FlexNet Licensing Service must be enabled to process licenses. Failure to enable the service results

www. ptc.com
ThingWorx Kepware Edge 166

in Time Limited mode. 149


The invalid ProgID entry has been deleted from the ProgID Redirect list. | ProgID = '<ID>'. 119
The phone number is invalid (<number>). 113
The project file was created with a more recent version of this software. 116
The push type of one or more properties are set to never push an update to the platform. | Count =
<count>. 131
The server is configured to send an update for every scan, but the push type of one or more properties
are set to push on value change only. | Count = <count>. 130
The specified network adapter is invalid on channel '%1' | Adapter = '%2'. 112
The tag import filename is invalid, file paths are not allowed. 112
The time zone set for '<device>' is '<zone>'. This is not a valid time zone for the system. Defaulting the
time zone to '<zone>'. 110
The UA server certificate is expired. Please use the OPC UA Configuration Manager to reissue the cer-
tificate. 136
The UA Server failed to initialize an endpoint configuration. | Endpoint Name
'<n am e>'. 138
The UA Server failed to register with the UA Discovery Server. | Endpoint URL
'<en d p oin t u rl>'. 137
The UA Server failed to unregister from the UA Discovery Server. | Endpoint URL
'<en d p oin t u rl>'. 138
The UA Server successfully registered with the UA Discovery Server. | Endpoint URL
'<en d p oin t u rl>'. 139
The UA Server successfully unregistered from the UA Discovery Server. | Endpoint URL
'<en d p oin t u rl>'. 139
The version of component <name> (<version>) is required to match that of component <name> (<ver-
sion>). 152
THING_NAME 52
ThingWorx 61
ThingWorx Example 52
ThingWorx Native Interface 40, 42
ThingWorx Platform 13
ThingWorx request to add item failed. The item was already added. | Item name = '<name>'. 130
ThingWorx request to remove an item failed. The item is bound and the force flag is false. | Item name =
'<name>'. 131
ThingWorx request to remove item failed. The item doesn't exist. | Item name = '<name>'. 130
This property may not be changed while the driver is processing tags. 144
Time-Limited 16
Time Limited mode has expired. 147
Time limited usage period on feature <name> has expired. 151
Trust Store 17
twxedge 16
Type <numeric type ID> limit of <maximum count> exceeded on feature '<name>'. 149

www. ptc.com
167 Th in gWorx Kep ware Ed ge

Type Definitions 92

UA Server 40
UaExpert 96
Ubuntu 13, 16
Unable to add channel due to driver-level failure. 102
Unable to add device due to driver-level failure. 102
Unable to apply modem configuration on line '<line>'. 109
Unable to apply settings change initiated by the Platform. Permission Denied. | User = '<user
name>'. 132
Unable to backup project file to '<path>' [<reason>]. The save operation has been aborted. Verify the des-
tination file is not locked and has read/write access. To continue to save this project without a
backup, deselect the backup option under Tools | Options | General and re-save the project. 103
Unable to configure com port with specified parameters. | Port = COM<number>, OS error =
<error>. 139
Unable to connect or attach to Store and Forward datastore. Using in-memory store. | In-memory store
size (updates) = <count>. 132
Unable to create serial I/O thread. 140
Unable to dial on line '<line>'. 107
Unable to generate a tag database for device '<device>' 106
Unable to generate a tag database for device '<device>'. The device is not responding. 105
Unable to load driver DLL '<name>'. 108
Unable to load driver DLL '<name>'. Reason 110
Unable to load plug-in DLL '<name>'. 110
Unable to load plug-in DLL '<name>'. Reason 111
Unable to load project <name> 103
Unable to load startup project '<name>'
<reason >. 123
Unable to load the '<name>' driver because more than one copy exists ('<name>' and '<name>').
Remove the conflicting driver and restart the application. 101
Unable to load the project due to a missing object. | Object = '<object>'. 104
Unable to save project file <name> 104
Unable to start the Config API Service. Possible problem binding to port. 100
Unable to start the UA server due to certificate load failure. 137
Unable to use network adapter '<adapter>' on channel '<name>'. Using default network adapter. 107
Unable to write to address '<address>' on device '<name>'. 144
Unable to write to address on device. | Address = '<address>'. 143
Unable to write to item '<name>'. 123

www. ptc.com
ThingWorx Kepware Edge 168

Update MQTT Agent 45


Update of object '<name>' failed
<reason >. 123
Updated startup project '<name>'. 124
Updating a Channel 66
Updating a Device 69
Updating a Tag 71
Updating a Tag Group 74
Updating a UA Endpoint 86
Updating a User 80
Updating a User Group 81
URL 96
USB Key 16
User added to user group. | User = '<name>', Group = '<name>'. 117, 119
User group has been created. | Group = '<name>'. 116, 119
User group has been disabled. | Group = '<name>'. 117, 120
User group has been enabled. | Group = '<name>'. 117, 120
User group has been renamed. | Old name = '<name>', New name = '<name>'. 117, 119
User Groups 76
User has been deleted. | User = '<name>'. 118
User has been disabled. | User = '<name>'. 117, 120
User has been enabled. | User = '<name>'. 117, 120
User has been renamed. | Old name = '<name>', New name = '<name>'. 117, 120
User information replaced by import. | File imported = '<absolute file path>'. 118-119
User Management 75
User moved from user group. | User = '<name>', Old group = '<name>', New group '<name>'. 119
User moved from user group. | User = '<name>', Old group = '<name>', New group = '<name>'. 116
Users 79

Validation error on '<tag>'


<error>. 108
In valid scalin g p aram eters. 108
Version mismatch. 102
View MQTT Agent Tags 44
View MQTT Agents 44

www. ptc.com
169 Th in gWorx Kep ware Ed ge

What is a Channel? 18
What is a Device? 18
What is a Tag Group? 34
What is a Tag? 19
What is the Alias Map? 35
What is the Event Log? 35
Winsock initialization failed. | OS error = <error>. 141
Winsock shut down failed. | OS error = <error>. 141
Winsock V1.1 or higher must be installed to use this driver. 141
Word 32
Write request failed on item '<name>'. Error scaling the write data. 123
Write request failed on item '<name>'. The write data type '<type>' cannot be converted to the tag data
type '<type>'. 123
Write request rejected on item reference '<name>' since the device it belongs to is disabled. 124
Write request rejected on read-only item reference '<name>'. 123
Write to property failed. | Property name = '<name>', reason = <reason>. 129
Write to property failed. | Thing name = '<name>', property name = '<name>', reason = <reason>. 131

www. ptc.com

You might also like