The emergence of an Internet of Things (IoT) service gateway model, running modern software stacks and operating on the edge of an IoT deployment as an aggregator and controller, has opened up the possibility of enabling enterprise-level technologies to IoT gateways.

Advanced software frameworks, which abstract and isolate the developer from the complexity of the hardware and the networking subsystems, redefine the development and reusability of integrated hardware and software solutions.

ESF is a smart application container that enables remote management of IoT gateways and provides a wide range of APIs allowing you to write and deploy your own IoT application.

ESF runs on top of the Java Virtual Machine (JVM) and leverages OSGi, a dynamic component system for Java, to simplify the process of writing reusable software building blocks. ESF APIs offer easy access to the underlying hardware including serial ports, GPS, watchdog, USB, GPIOs, I2C, etc. They also offer OSGi bundles to simplify the management of network configurations, the communication with IoT servers, and the remote management of the gateway.

ESF components are designed as configurable OSGi Declarative Services exposing the service API and raising events. While several ESF components are pure Java, others are invoked through JNI and depend on the Linux operating system.

ESF provides the following services:

  • I/O Services
    • Support serial port access through javax.comm 2.0 API or an OSGi I/O connection.
    • Support USB access and events through javax.usb, HID API, or custom extensions.
    • Support Bluetooth access through javax.bluetooth or an OSGi I/O connection.
    • Provide a Position Service for GPS information from a NMEA stream.
    • Offer a Clock Service for the synchronization of the system clock.
    • Utilize the ESF API for GPIO/PWM/I2C/SPI access.
  • Data Services
    • Enable store and forward functionality for the telemetry data that is collected by the gateway and published to remote servers.
    • Offer a policy-driven publishing system, which abstracts the application developer from the complexity of the network layer and the publishing protocol used. Eclipse Paho and its MQTT client provide the default messaging library used.
  • Cloud Services
    • Provide an easy-to-use API layer for IoT application communications with a remote server. In addition to simple publish/subscribe, the Cloud Service API simplifies the implementation of more complex interaction flows like request/response or remote resource management.
    • Allow for sharing of a single connection to a remote server across multiple applications in the gateway providing the necessary topic partitioning.
    • Offer an SSL Management Service that simplifies the management of SSL certificates and keystores.
  • Everyware Device Cloud Services
    • Provide a readily configurable Provisioning Service for remote configuration of the device.
    • Offer a VPN Client Service that allows a VPN connection to be established with the device and enables the system administrator to remotely access the device.
  • Configuration Service
    • Leverages the OSGi specifications ConfigurationAdmin and MetaType to provide a snapshot service for importing/exporting the configuration of all registered services in the container.
  • Remote Management
    • Allows for remote management of the IoT applications installed in ESF including their deployment, upgrades, and configuration. The Remote Management service relies on the Configuration Service and the Cloud Service.
  • Networking
    • Provides an API for introspects and configuration of the network interfaces available in the gateway, such as Ethernet, Wi-Fi, and cellular modems.
  • Watchdog Service
    • Provides the ability to register critical components to the Watchdog Service, which will force a system reset through the hardware watchdog when a problem is detected.
  • Web Administration Interface
    • Offers a web-based management console (ESF Gateway Administration Console) running within the ESF container to manage the gateway.