EdgeX already defines data types in , so it’s recommended to use schema-less stream definition in EdgeX source as in below.

EdgeX source will try to get the data type of fields,

  • convert to related data type if field of a type can be found in the readings’s ValueType field;
  • or keep original value if field of a type can not be found in the readings’s ValueType field;

The types defined in readings will be converted into related data types that supported in eKuiper.

Boolean

If value of the reading is Bool, then eKuiper tries to convert to boolean type. Following values will be converted into true.

  • “1”, “t”, “T”, “true”, “TRUE”, “True”

Following will be converted into false.

  • “0”, “f”, “F”, “false”, “FALSE”, “False”

Bigint

If ValueType value of the reading is INT8 , INT16, INT32, INT64,`UINT , UINT8 , UINT16 , UINT32 , UINT64 then eKuiper tries to convert to Bigint type.

Float

If ValueType value of the reading is FLOAT32, FLOAT64, then eKuiper tries to convert to Float type.

String

If ValueType value of the reading is String, then eKuiper tries to convert to String type.

Boolean array

Bool array type in EdgeX will be converted to boolean array.

Bigint array

Float array

All of FLOAT32, FLOAT64 array types in EdgeX will be converted to Float array.

Global configurations

The configuration file of EdgeX source is at $ekuiper/etc/sources/edgex.yaml. Below is the file format.

  1. #Global Edgex configurations
  2. default:
  3. protocol: tcp
  4. server: localhost
  5. port: 5573
  6. topic: events
  7. messageType: event
  8. # optional:
  9. # ClientId: client1
  10. # Username: user1
  11. # Password: password

Use can specify the global EdgeX settings here. The configuration items specified in default section will be taken as default settings for all EdgeX source.

protocol

The protocol connect to EdgeX message bus, default value is tcp.

server

The server address of EdgeX message bus, default value is localhost.

The port of EdgeX message bus, default value is 5573.

connectionSelector

specify the stream to reuse the connection to EdgeX message bus. The connection profile located in connections/connection.yaml.

There is one configuration group for EdgeX message bus in the example, user need use edgex.redisMsgBus as the selector. For example

  1. default:
  2. protocol: tcp
  3. server: localhost
  4. port: 5573
  5. connectionSelector: edgex.redisMsgBus
  6. topic: events
  7. # optional:
  8. # ClientId: client1
  9. # Username: user1
  10. # Password: password

Note: once specify the connectionSelector in specific configuration group , all connection related parameters will be ignored , in this case protocol: tcp | server: localhost | port: 5573

topic

The EdgeX message bus type, currently three types of message buses are supported. If specified other values, then will use the default redis value.

  • zero: Use ZeroMQ as EdgeX message bus.
  • mqtt: Use the MQTT broker as EdgeX message bus.
  • redis: Use Redis as EdgeX message bus. When using EdgeX docker compose, the type will be set to this by default.

messageType

The EdgeX message model type. If connected to the topic of EdgeX application service, the message model is an “event”. Otherwise, if connected to the topic of EdgeX message bus directly to receive the message from device service or core data, the message is a “request”. There are two available types of messageType property:

  • event: The message will be decoded as a dtos.Event type. This is the default.
  • request: The message will be decoded as a requests.AddEventRequest type.

optional

If MQTT message bus is used, some other optional configurations can be specified. Please notice that all of values in optional are string type, so values for these configurations should be string - such as KeepAlive: "5000" . Below optional configurations are supported, please check MQTT specification for the detailed information.

  • ClientId

  • Username

  • Password
  • Qos
  • KeepAlive
  • Retained
  • ConnectionPayload
  • CertFile
  • KeyFile
  • CertPEMBlock
  • KeyPEMBlock

In some cases, maybe you want to consume message from multiple topics from message bus. eKuiper supports to specify another configuration, and use the CONF_KEY to specify the newly created key when you create a stream.

If you have a specific connection that need to overwrite the default settings, you can create a customized section. In the previous sample, we create a specific setting named with demo1. Then you can specify the configuration with option CONF_KEY when creating the stream definition (see for more info).

Sample

  1. create stream demo1() WITH (FORMAT="JSON", type="edgex", CONF_KEY="demo1");

The configuration keys used for these specific settings are the same as in default settings, any values specified in specific settings will overwrite the values in section.