(Optional) Creating a Remote EnOcean (Beta) Device Interface (XIF) Definition

REMOTE ENOCEAN INTERFACE (BETA) IS SUPPORTED WITH SMARTSERVER 4.3 UPDATE 1 AND HIGHER. 

You can download, create, and modify a device interface (XIF) definition for an EnOcean device using remote mode. An EnOcean XIF definition specifies the name, program ID, manufacturer, EEP, and datapoints in a device. 

This page includes the following sections and applies to remote EnOcean interface (beta):

For local mode, see (Optional) Creating a Local EnOcean Device Interface (XIF) Definition.

Creating a Remote EnOcean XIF File

For a remote EnOcean XIF definition, create a CSV file with an .iotc extension defining the EnOcean device interface. The name of the EnOcean XIF file, without the .iotc extension, is the name of the EnOcean XIF. The extension must be .IOTC or .iotc.

You cannot use a compound extension name (i.e., .iotc.csv). To monitor, log, or generate alarms based on datapoint values for an EnOcean datapoint, set the datapoint properties for the datapoint as described in Defining Datapoint Properties.

An EnOcean XIF file has the following three sections.

  • A file type specification that identifies the file as an EnOcean XIF file.
  • A product details section that specifies the program ID, version, product name, manufacturer, and EnOcean Equipment Profile (EEP) for the EnOcean device.
  • A datapoint list that specifies the datapoints on the device to be available to the SmartServer. The first line of the datapoint list is a header with column headings for a datapoint list. 

The following figure shows the top portion of an EnOcean XIF file:

#filetype,Iotc_xif
#program_ID,80000BF60201E001
#version,v01
#product_name,EDRPU Double Rocker Pad
#manufacturer,EnOcean
#eep,f6-02-01
Datapoint Name,IAP Type,Block Name,Block Index,Address,Write Enable,EnumMapping

File Type Specification

Identify an EnOcean XIF file with an Iotc_xif filetype specification as shown in the following example:

#filetype,Iotc_xif

If you open a CSV file with this line in Excel, it is displayed as two cells, one with #filetype and one with Iotc_xif.

Product Details

Provide details about the product hosting the XIF described in the EnOcean XIF file with the program_ID, version, product_name, manufacturer, and EEP specifications as shown in the following example:

#program_ID,<Program ID>
#version,<Version>
#product_name,<Product Name>
#manufacturer,<Manufacturer>
#eep,<EnOcean Equipment Profile>

If you open a CSV file with these lines in Excel, each line is displayed as two cells.

Specify the details as follows:

  • <Program ID> – (required) in the 3 bytes comprising the Device Class and Usage fields (the 4th, 5th, and 6th bytes), the program ID contains the EEP values. The EEP informs the EnOcean driver how to decode the radio telegrams that it receives for this device type, based on a set of profiles that are built into the EoLink library code used by the driver. As of SmartServer 4.0, there are about 100 different profiles built into the EoLink library. The program ID can optionally have delimiters on 8-bit boundaries (e.g., 8A000BD21441E001, or  80:00:0B:D2:14:41:E0:01 with delimiters).

  • <Version> – (optional) version of the device.
  • <Product Name– (optional) manufacturer's name for the device.
  • <Manufacturer> – (optional) device manufacturer.
  • <EnOcean Equipment Profile> – (required) a hexadecimal number (e.g., f6-02-01) that is used to map EEPs to XIF.

Example product details specifications for an EDRPU Double Rocker Pad are shown below.

#program_ID,80000BF60201E001
#version,v01
#product_name,EDRPU Double Rocker Pad
#manufacturer,EnOcean
#eep,f6-02-01

Datapoint List

An EnOcean XIF describes a set of datapoints that are embedded in a single EnOcean radio telegram from an EnOcean device.

The first line of the datapoint list is a header with column headings for a datapoint list as shown in the example below.

Datapoint Name,IAP Type,Block Name,Block Index,Address,Write Enable,Precision,EnumMapping

The following table describes the column contents for the datapoint list.  You can arrange the columns in any order; the SmartServer uses the name in the heading row entry to identify the contents of the column.  

Parameter

Required/
Optional

Description

Datapoint NameRequired

The datapoint XIF name. This is a descriptive name to identify the datapoint.

IAP TypeRequired

An IAP type specifies the data encoding for a datapoint, the datapoint value appearance in IAP/MQ, and identifies the datapoint type to be reported in IAP/MQ when a datapoint update is published to IAP/MQ. 

An IAP type may also specify the semantic meaning of a datapoint. Each driver may support a different subset of IAP types for the native types.

The following IAP types are defined:

  • Base types – bit, boolean, sint8uint8, uint16, sint16, uint32, sint32, uint64, sint64, float, and float32.  Base type values are case-sensitive and must use lower-case letters.

  • Standard types – the types listed in the SNVT, SCPT, and ENUM sections of Online Resource Files - LonMark. As of SmartServer 3.2, the IAP standard resource file set is based on the version 16.00 LonMark standard resource file set and the version 2.01 IoT resource file set. These types are made available to IAP applications by the Resource Publisher.     

  • Custom types – types defined by a custom IAP resource file set.  Custom types are defined by an XML format export from the IzoT Resource Editor. Custom IAP resource file sets include a program ID and a scope identifier that specifies a mask for the program ID.  The scope ID may be 3, 4, 5, or 6 corresponding to program ID masks of 0xFFFFFF0000000000 for 3, 0xFFFFFFFFFF000000 for 4, 0xFFFFFFFFFFFFFF00 for 5, and 0xFFFFFFFFFFFFFFFF for 6.  Custom types are specified as <program ID>-<scope>/<type name> where the <program ID>-<scope> specification is the set identifier. 
Block NameOptionalBlock XIF name for the datapointIf not specified because the column does not exist or the existing column has no entry, then the block name will be block.
Block IndexOptional

Specifies a numeric block index. The block index can be any positive (>=0) integer value and is not required to be sequential. If not specified, the block index will be zero.

Example: for a device with 8 digital outputs, you can define 8 blocks, each named DO, using indexes 0 through 7 (it is not required for the index names to be sequential and they may not start with zero).

AddressRequired

Identifies the datapoint that the driver is interested in. Address refers to the ‘key’ reference string in the telemetry data published by the IoTC MQTT API.

Write EnableRequired

Specify read-only (-) for an EnOcean device.  

EnumMappingOptional

Contains a mapping definition between a string literal (coming from IoTC) and an integer number.

Mapping syntax:

Enum(<int>=<string>:<int+n>=<string2>:<int+m>=<string3>)

Mapping definition can be as follows:

Enum(0=heartbeat:1=threshold1:2=threshold2)

Do not duplicate values on either side of a mapping. The number of mappings is limited only by the IDL’s capability of handling strings.

If empty (default), no mapping is applied.

Write CommandOptional

Defines how to generate a message to be sent to IoTC's mqtt device/# topic. The value is a command to be executed.

Native 1 ValueOptional

Specifies the first of two native values for the datapoint. To specify scaling for a datapoint, specify two scaled values for the datapoint. The SmartServer uses the two sets of values to determine the scaling factors for converting a native value to an IAP value, as well as to convert an IAP value to a native value. 

Example, a native value can be scaled to an IAP value with the following:

Scaled Value = ((Native Value - Native Value 1) * ((Scaled Value 2- Scaled Value 1) / (Native Value 2- Native Value 1))) + Scaled Value 1

Example, an IAP value can be scaled to a native value with the following:

Native Value = ((Scaled Value - Scaled Value 1) *  ((Native Value 2 - Native Value 1) / (Scaled Value 2 - Scaled Value 1))) + Native Value 1

If a Native Value 1 value is specified, the Native Value 2, Scaled Value 1, and Scaled Value 2 values are required.

For Celsius to Fahrenheit conversion: 0 deg C = 32 deg F, and 100 deg C = 212 deg F
Native Value 1 = 0, Scaled Value 1 = 32 
Native Value 2 = 100, Scaled Value 2 = 212

Native Value 2OptionalSpecifies the second of two native values for the datapoint.  If a Native Value 2 value is specified, the Native Value 2, Scaled Value 1, and Scaled Value 2 values are required.  See the Native Value 1 parameter for usage and value requirements. 
Scaled Value 1OptionalSpecifies the first of two scaled values for the datapoint.  If a Scaled Value 1 value is specified, the Native Value 1, Native Value 2, and Scaled Value 2 values are required.  See the Native Value 1 parameter for usage, value requirements, and backward compatibility requirements. 
Scaled Value 2OptionalSpecifies the second of two scaled values for the datapoint.  If a Scaled Value 2 value is specified, the Native Value 1, Native Value 2, and Scaled Value 1 values are required.  See the Native Value 1 parameter for usage, value requirements, and backward compatibility requirements. 
PrecisionOptionalControls the number of decimals that will appear following a decimal point.

Importing an EnOcean XIF File

You can import a EnOcean XIF file that you downloaded or created as described in the previous sections.  The XIF file may be standalone, or it may be embedded in a device type package (.dtp) file.  A device type package file is a Zip archive containing multiple definition files.  To import an EnOcean XIF or device type package file, follow these steps:

  1. Open the SmartServer CMS.

  2. Click the Import / Export button () on the CMS dashboard.



    The Import / Export dialog appears.



  3. Drag your XIF or device type package file to the Drop Files to Import box, or click Browse to browse for your file.

Example

The filename for the example shown below is STM550-V1.iotc.  This example defines an EnOcean XIF for EEP D2-14-41.

#filetype,Iotc_xif
#program_ID,80000BD21441E001
#version,v01
#product_name,STM500 Multisensor
#manufacturer,EnOcean
#eep,d2-14-41
Datapoint Name,IAP Type,Block Name,Block Index,Address,Write Enable,Precision,EnumMapping
Temperature,float,Multisensor,1,temperature,-,1,
Humidity,float,Multisensor,2,humidity,-,0,
Luminance,float,Multisensor,3,illumination,-,0,
Acceleration Status,float,Multisensor,4,accelerationStatus,-,0,Enum(0=heartbeat:1=threshold1:2=threshold2)
Acceleration X,float,Multisensor,5,accelerationX,-,2,
Acceleration Y,float,Multisensor,6,accelerationY,-,2,
Acceleration Z,float,Multisensor,7,accelerationZ,-,2,
Contact State,boolean,Multisensor,8,contact,-,0,Enum(0=closed:1=open)


Additional example EnOcean XIF files are available in the EnOcean resources library at:

https://github.com/izot/smartserver-iot/tree/master/resources/enocean