Git Product home page Git Product logo

device-sdk-go's Introduction

Go Device Service SDK

Overview

This repository is a set of Go packages that can be used to build Go-based device services for use within the EdgeX framework.

Usage

Developers can make their own device service by implementing the ProtocolDriver interface for their desired IoT protocol, and the main function to start the Device Service. To implement the main function, the startup package can be optionally leveraged, or developers can write customized bootstrap code by themselves.

Please see the provided simple device service as an example, included in this repository.

Command Line Options

The following command line options are available

  -c=<path>
  --confdir=<path>
        Specify an alternate configuration directory.
  -p=<profile>
  --profile=<profile>
        Specify a profile other than default.
  -f=<file>
  --file=<file>
        Indicates name of the local configuration file.
  -i=<instace>
  --instance=<instance>
        Provides a service name suffix which allows unique instance to be created.
        If the option is provided, service name will be replaced with "<name>_<instance>"
  -o
  --overwrite
        Overwrite configuration in the Registry with local values.
  -r
  --registry
        Indicates the service should use the registry.
  -cp
  --configProvider
        Indicates to use Configuration Provider service at specified URL.
        URL Format: {type}.{protocol}://{host}:{port} ex: consul.http://localhost:8500

Float value encoding

In EdgeX, float values have two kinds of encoding, Base64, and scientific notation (eNotation).

When EdgeX is given (or returns) a float32 or float64 value as a string, the format of the string is by default a base64 encoded little-endian of the float32 or float64 value, but the floatEncoding attribute relating to the value may instead specify eNotation in which case the representation is a decimal with exponent (eg 1.234e-5)

The above quote is from the official EdgeX device service requirements document, viewable on Google Docs here, under the "Device readings" section.

base64

Currently, the C device service SDK converts float values to little-endian binary, which is consistent with the EdgeX device service specifications. However, the Go device service SDK converts float values to big-endian binary. This inconsistency is due to the fact that the device service specifications changed in the EdgeX Fuji release - to track the status of this, please review issue #457.

In the device profile (example here), configure a profile property with property values as follows:

- name: "Temperature"
  description: "Temperature value"
  properties:
    value: { type: "FLOAT64", readWrite: "RW", floatEncoding: "Base64" }
    units: { type: "String", readWrite: "R", defaultValue: "degrees Celsius" }

Scientific Notation (e-notation)

The SDK will convert incoming string values with scientific notation (aka e-notation) representation to float values. To enable this, the floatEncoding field should be set to the value eNotation, detailed below.

In the device profile (example here), configure a profile property with property values as follows:

- name: "Temperature"
  description: "Temperature value"
  properties:
    value: { type: "FLOAT64", readWrite: "RW", floatEncoding: "eNotation" }
    units: { type: "String", readWrite: "R", defaultValue: "degrees Celsius" }

Community

License

Apache-2.0

device-sdk-go's People

Contributors

tonyespy avatar cloudxxx8 avatar steveoss avatar weichou1229 avatar tobiasmo1 avatar jduranf avatar iain-anderson avatar falkerson avatar felixting avatar lenny-goodell avatar brandonforster avatar rsdmike avatar tsconn23 avatar ernestojeda avatar difince avatar akramtexas avatar jdharms avatar jamesrgregg avatar cherrycl avatar anonymouse64 avatar jpwku avatar jpwhitemn avatar michaelestrin avatar dnoliver avatar charles-knox-intel avatar kaisawind avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.