SCPI Communication
Description
Communication with the smartCORE application is enabled via SCPI protocol using the built-in SCPI server.
Interfaces & protocols used
- SCPI
SCPI command set
The supported SCPI command set is shown below. IMPORTANT: If, for example, telnet is used for communication, the input/output is restricted to the maximum line length limit (generally 4096 characters). It is then advisable to switch to other clients.
*IDN?
Identification of the measuring device
Parameters
NONE
Return
(comma-separated) SCPI List of SCPI values in the following order
Parameters | Data type |
---|---|
Manufacturer | STRING |
Product | STRING |
Application | STRING |
Protocol version | INT |
Device serial number | STRING |
Hostname of the (communicating) SCPI interface | STRING |
Port of the (communicating) SCPI interface | INT |
Application version | STRING |
Date of manufacture of the device | STRING |
Device name | STRING |
Comment | STRING |
Example
< *IDN?
> "optiMEAS GmbH", "smartCORE", "smartcore", 0, "10000012345", "::ffff:127.0.0.1", 5024, "0.174", "19700101", "", "",
CONFIG:GET?
Query the contents of the configuration files
Parameters
Opt. | Parameter | Data type | Value range | Meaning |
---|---|---|---|---|
Configuration type | STRING | "STAT", "DYN" | Selection of static/dynamic configuration |
Return
BASE64 encoded JSON configuration
Example
< config:get? stat
> <BASE64 configuration>
CONFIG:SCHEMA?
Query the JSON schema of the configuration files
Parameters
Opt. | Parameter | Data type | Value range | Meaning |
---|---|---|---|---|
Configuration type | STRING | "STAT", "DYN" | Selection of static/dynamic configuration schema |
Return
BASE64 encoded JSON configuration schema
Example
< config:schema? stat
> <BASE64 configuration schema>
CONFIG:SET
Replacement of the configuration files
Parameters
Opt. | Parameter | Data type | Value range | Meaning |
---|---|---|---|---|
Source type | STRING | "BASE64", "FILE", "URL" | Selection of configuration source | |
Configuration type | STRING | "STAT", "DYN" | Selection of the static/dynamic configuration to be replaced | |
Configuration | STRING | see below | Description of the configuration |
Return
OK or ERR
Examples
< config:set base64,stat,<BASE64 configuration>
> OK
< config:set file,dyn,/sde/smartcore_dynamic.json.new
> OK
< config:set url,dyn,http://myserver/smartcore_dynamic.json.new
> OK
DATA:COUNT?
Query the number of configured channels
Parameters
Opt. | Parameter | Data type | Value range | Meaning |
---|---|---|---|---|
YES | Channel selection | STRING | Regular expression for channel selection |
Return
INT
Examples
< data:count?
> 42
< data:count? ^gps.*$
> 6
DATA:INFOS?
Query the channel descriptions
Parameters
Opt. | Parameter | Data type | Value range | Meaning |
---|---|---|---|---|
YES | Channel selection | STRING[] | List of channel names |
Return
BASE64 coded description of the channels
Examples
< data:infos?
> <BASE64 coded description of the channels>
< data:infos? channel name 1,channel name 2
<BASE64 coded description of the channels>
DATA:INFOS:REGEX?
Query the channel descriptions
Parameters
Opt. | Parameter | Data type | Value range | Meaning |
---|---|---|---|---|
YES | Channel selection | STRING[] | List of channel names (as RegEx) |
Return
BASE64 coded description of the channels
Examples
< data:infos:regex?
> <BASE64 coded description of the channels>
< data:infos:regex? ^can.*$,^modbus.*$
> <BASE64 coded description of the channels>
DATA:NAMES?
Query the channel names
Parameters
Opt. | Parameter | Data type | Value range | Meaning |
---|---|---|---|---|
YES | Channel selection | STRING[] | List of channel names |
Return
STRING[] existing channel name
Examples
< data:names?
> "temperature 1", "canbus 2", "modbus 3"
< data:names? canbus 2,modbus 3
> "canbus 2", "modbus 3"
DATA:NAMES:REGEX?
Query the channel names
Parameters
Opt. | Parameter | Data type | Value range | Meaning |
---|---|---|---|---|
YES | Channel selection | STRING[] | List of channel names (as RegEx) |
Return
STRING[] existing channel name
Examples
< data:names:regex?
> "temperature 1", "canbus 2", "modbus 3"
< data:names:regex? ^can.*$,^modbus.*$
> "canbus 2", "modbus 3"
DATA:VALUES?
Query current channel values
Parameters
Opt. | Parameter | Data type | Value range | Meaning |
---|---|---|---|---|
YES | Channel selection | STRING[] | List of channel names |
Return
BASE64 encoded JSON array of JSON objects containing timestamp "t" and value "v" for all channel values.
Examples
< data:values?
> <BASE64 encoded JSON array>
< data:values? channel name 1,channel name 2
<BASE64 encoded JSON array>
DATA:VALUES:REGEX?
Query current channel values and timestamp of last update
Parameters
Opt. | Parameter | Data type | Value range | Meaning |
---|---|---|---|---|
YES | Channel selection | STRING[] | List of channel names (as RegEx) |
Return
BASE64 encoded JSON array of JSON objects containing timestamp "t" and value "v" for all channel values.
Examples
< data:values:regex?
> <BASE64 encoded JSON array>
< data:values:regex? ^can.*$,^modbus.*$
<BASE64 encoded JSON array>
DATA:VALUES:SET
Production of a channel value (e.g. setting a process variable)
Parameters
Opt. | Parameter | Data type | Value range | Meaning |
---|---|---|---|---|
Sample | STRING | see below | Description of the sample to be produced |
The sample is defined in the form of a JSON object with the keys "channelName" and "value". This must then be BASE64 encoded. The channel specified using "channelName" must already exist.
Return
OK or ERR
Example
< data:values:set <BASE64 encoded JSON object with sample description>
> OK
ERROR?
Query the last SCPI error
Parameters
NONE
Return
(comma-separated) list of INT,STRING consisting of error code (not equal to 0 in case of error) and an error description
Example
< err?
> 0, "No Error!"
GPS:DATETIME?
Returns the GPS time of the first configured GPS module.
Parameters
NONE
Return
ZULU Time
Example
< gps:datetime?
> 0000-00-00T00:00:00.000Z
GPS:LOCATION?
Returns the GPS position of the first configured GPS module.
Parameters
NONE
Return
FLOAT[] consisting of latitude, longitude and altitude above sea level.
Example
< gps:location?
> 0.00000000, 0.00000000, 0
MODULES:CALL:FACTORY?
Calling a (static) call-interace function from the factory (~"class") of a module
Parameters
(comma-separated) list of the following arguments:
Opt. | Parameter | Data type | Value range | Meaning |
---|---|---|---|---|
Factory | STRING | |||
Function | STRING | |||
YES | Parameter | STRING[] | see below |
The parameters designated as "Parameters" are optional. Key-value pairs are specified in each case.
Return
BASE64 encoded JSON object that represents the return of the call interface function
Example
< modules:call:factory? factory,function
<BASE64 encoded JSON object>
< modules:call:factory? factory,function,Parameter 1 Key,Parameter 1 Value,Parameter 2 Key,Parameter 2 Value
<BASE64 encoded JSON object>
MODULES:CALL:FACTORY:JSON?
Calling a (static) call-interace function from the factory (~"class") of a module
Parameters
(comma-separated) list of the following arguments:
Opt. | Parameter | Data type | Value range | Meaning |
---|---|---|---|---|
Factory | STRING | |||
Function | STRING | |||
Parameter | STRING |
A BASE64-encoded JSON object in the form of a STRING must be passed as a "parameter". This (normally) consists of key-value pairs of the function parameters. Hierarchical structures can be mapped.
Return
BASE64 encoded JSON object that represents the return of the call interface function
Example
< modules:call:factory:json? factory,function,<BASE64 encoded JSON object with parameters>
<BASE64 encoded JSON object>
MODULES:CALL:INSTANCE?
Call a call-interace function from the instantiated module.
Parameters
(comma-separated) list of the following arguments:
Opt. | Parameter | Data type | Value range | Meaning |
---|---|---|---|---|
Configuration type | STRING | "STAT", "DYN" | Type of configuration that instantiates the module | |
Module name | STRING | |||
Function | STRING | |||
YES | Parameter | STRING[] | see below |
The parameters designated as "Parameters" are optional. Key-value pairs are specified in each case.
Return
BASE64 encoded JSON object that represents the return of the call interface function
Example
< modules:call:instance? stat,instance,function
<BASE64 encoded JSON object>
< modules:call:instance? dyn,instance,function,Parameter 1 Key,Parameter 1 Value,Parameter 2 Key,Parameter 2 Value
<BASE64 encoded JSON object>
MODULES:CALL:INSTANCE:JSON?
Call a call interface function from the instantiated module.
Parameters
(comma-separated) list of the following arguments:
Opt. | Parameter | Data type | Value range | Meaning |
---|---|---|---|---|
Configuration type | STRING | "STAT", "DYN" | Type of configuration that instantiates the module | |
Factory | STRING | |||
Function | STRING | |||
Parameter | STRING |
A BASE64-encoded JSON object in the form of a STRING must be passed as a "parameter". This (normally) consists of key-value pairs of the function parameters. Hierarchical structures can be mapped.
Return
BASE64 encoded JSON object that represents the return of the call interface function
Example
< modules:call:instance:json? dyn,instance,function,<BASE64 encoded JSON object with parameters>
<BASE64 encoded JSON object>
MODULES:FACTORIES:CALLSCHEMA:GET?
Query the call scheme of the module("instance")-related call interface functions of a module factory ("class")
Parameters
Opt. | Parameter | Data type | Value range | Meaning |
---|---|---|---|---|
Factory | STRING |
Return
BASE64 encoded JSON schema
Example
< modules:factories:callschema:get? factory
> <BASE64 encoded JSON object>
MODULES:FACTORIES:CONFIGSCHEMA:GET?
Query the configuration schema of a module factory (~"class")
Parameters
Opt. | Parameter | Data type | Value range | Meaning |
---|---|---|---|---|
Factory | STRING |
Return
BASE64 encoded JSON schema
Example
< modules:factories:configschema:get? factory
> <BASE64 encoded JSON object>
MODULES:FACTORIES:COUNT?
Query the number of all module factories (~"classes")
Parameters
NONE
Return
INT
Example
< modules:factories:count?
> 42
MODULES:FACTORIES:DOC?
Query the enclosed module documentation
Parameters
Opt. | Parameter | Data type | Value range | Meaning |
---|---|---|---|---|
Factory | STRING | Module-Factory (~"Class") | ||
YES | Type | STRING | "base64", "text" | Encoding of the returned documentation |
YES | Language | STRING | "de", "en" | Language version of the returned documentation |
Return
STRING or BASE64 Documentation
Example
< modules:factories:doc? factory
<documentation>
MODULES:FACTORIES:DOC:CHANGELOG?
Query the enclosed change logs of the modules
Parameters
Opt. | Parameter | Data type | Value range | Meaning |
---|---|---|---|---|
Factory | STRING | Module-Factory (~"Class") | ||
YES | Type | STRING | "base64", "text" | Encoding of the returned documentation |
Return
STRING or BASE64 Change Log
Example
< modules:factories:doc:changelog? factory
> <ChangeLog>
MODULES:FACTORIES:GET?
Query the description of all module factories (~"classes")
Parameters
NONE
Return
BASE64 encoded JSON array of JSON objects with the following keys
Key | Meaning |
---|---|
description | abstract description of the module |
fileName | File name of the loaded shared object in which the module is located |
name | Name of the module factory |
version | version |
Example
< modules:factories:get?
> <BASE64 encoded JSON array>
MODULES:FACTORIES:STATICCALLSCHEMA:GET?
Query the call schema of the module-factory("classes")-related call interface functions of a module factory ("class")
Parameters
Opt. | Parameter | Data type | Value range | Meaning |
---|---|---|---|---|
Factory | STRING |
Return
BASE64 encoded JSON schema
Example
< modules:factories:staticcallschema:get? factory
> <BASE64 encoded JSON object>
MODULES:GET?
Parameters
NONE
Return
BASE64 encoded JSON object that represents an assignment of all modules ("instances") to their respective module factories ("classes") in the form of a map.
Example
< modules:get?
> <BASE64 encoded JSON object>
SYSTEM:CHANGELOG?
Query the enclosed system change log.
Parameters
Opt. | Parameter | Data type | Value range | Meaning |
---|---|---|---|---|
YES | Type | STRING | "base64", "text" | Encoding of the returned documentation |
Return
STRING or BASE64 System Change Log
Example
< system:changelog?
> <ChangeLog>
SYSTEM:ERROR?
Query the last system error
Parameters
NONE
Return
(comma-separated) list of INT,STRING consisting of error code (not equal to 0 in the event of an error) and an error description
Example
< system:error?
> 0, "No Error!"
SYSTEM:RESTART
Restart the smartCORE application. If the SCPI module is in the restarted configuration file, it is unloaded and the connection is disconnected.
Parameters
Opt. | Parameter | Data type | Value range | Meaning |
---|---|---|---|---|
Type of restart | STRING | "ALL", "DYN" |
Return
OK
Example
< system:restart all
> OK
SYSTEM:START
Start the stopped smartCORE application. If the SCPI module is in the restarted configuration file, the connection is terminated.
Parameters
Opt. | Parameter | Data type | Value range | Meaning |
---|---|---|---|---|
Type of start | STRING | "ALL", "DYN" |
Return
OK
Example
< system:stop
> OK
[...]
< system:start all
> OK
SYSTEM:STATE?
Query the smartCORE operating status.
Parameters
NONE
Return
STRING Description of the operating status. Possible values are "Running" (active measurement mode), "Ready" (configuration mode, measurement mode stopped) and, less frequently, "Error" (error occurred) or other operating states.
Example
< system:state?
> Running
SYSTEM:STOP
Stop the smartCORE application. The SCPI connection is NOT disconnected.
Parameters
NONE
Return
OK
Example
< system:stop
> OK
SYSTEM:VERSION?
Query the smartCORE version
Parameters
NONE
Return
STRING
Example
< system:version?
> 42.0
SYSTEM:VERSION:MAJOR?
Query the smartCORE major version
Parameters
NONE
Return
STRING
Example
< system:version:major?
> 42
SYSTEM:VERSION:MINOR?
Query the smartCORE Minor version
Parameters
NONE
Return
STRING
Example
< system:version:minor?
> 0
TIMEOUT?
Query of the maximum waiting time for an action/query that blocks the interface.
Parameters
NONE
Return
STRING
Example
< timeout?
> 60000
TIMEOUT
Set the maximum waiting time for an action/query that blocks the interface.
Parameters
Opt. | Parameter | Data type | Value range | Meaning |
---|---|---|---|---|
Timeout | INT | 1 - | Maximum waiting time |
Return
OK, ERR
Example
< timeout 60000
> OK