Skip to main content

Console Marketplace

The Console Marketplace provides a way for Helium community members to contribute and share Console components. Initially, this includes Integrations, but over time the marketplace will expand to Decoders, and others.

Console Hosting Providers can choose which components are available to end-users. Some (for example, Helium Foundation) may choose to enable all available Console components, while others may only want to provide their users access to fewer for simplicity.

For more information about Integrations go here.

How it works overview

Marketplace participants:

  • Community members: contribute Console components.
  • Helium Foundation technical team: reviews and approves components.
  • Console Hosting Providers: choose which approved components are available to Console users on Console UI.
  • Console users: decide which Console components to use.

Follow the instructions to submit a Marketplace Integration or Decoder pull request to the Helium Console github repository for consideration by the Helium Foundation.

Create a Marketplace Integration

  • Add image assets for icons. Icons should be square and in png or svg format. Place image assets in /assets/img/channels folder and follow naming conventions.

  • Add new integration type to /lib/console/channels/channel.ex and indicate if new integration is in @http_types and @long_type_names.

  • Import image assets and add new integration info to integrationImgMap, add an entry to COMMUNITY_INTEGRATION_TYPES, and indicate if new integration is http_integrations or mqtt_integrations. All in /assets/js/util/integrationInfo.js.

  • Create form component for new integration page in /assets/js/components/channels/community folder and follow naming conventions.

  • Import form to /assets/js/components/channels/ChannelNew.jsx and add imported form component to renderForm().

  • Create form component for update integration page /assets/js/components/channels/community folder and follow naming conventions.

  • Import form to /assets/js/components/channels/ChannelConnectionDetails.jsx and add imported form to the switch case in export default () =>.

  • Add credential transform methods to populate actual connection details in file /lib/console/community/community_channels.ex in append_connection_details() and inject_credentials().

  • Add new integration controller action to /lib/console_web/controllers/v1/channel_controller.ex under create_community_channel() or create a new function if needed.

More info about Integrations here.

Create a Marketplace Decoder Function (staging)

  • Decide on your format name. Make sure it is written in lower case (ex. super_decoder).

  • Add image assets for icons. Icons should be square and in png or svg format. Place image assets in /assets/img/functions/community folder and follow naming conventions.

  • Add new function format (ex. super_decoder) to @all_formats in /lib/console/functions/function.ex

  • Import image assets and add new function entry to COMMUNITY_FUNCTION_FORMATS in /assets/js/util/functionInfo.js. Make sure the format value of the entry matches (ex. super_decoder).

  • Create a new file in /community_functions with your function body written in javascript.

  • Create an @variable for your function body and add a case for your function in the inject_body() method in /lib/console/community/community_functions.ex

More info about Decoder Functions here.

Enable Marketplace Integrations or Decoder Functions (For Console Hosting Providers)

Console Hosting Providers can choose which Integrations or Decoder Functions are available for their users. More information about becoming a Console Hosting Provider here.

warning

An Integration must be available for devices to transfer data through it and a Decoder must be available to decode packets. For example, if an existing Integration is disabled, any devices will no longer be able to transfer data via that Integration.

Choosing Approved Integrations

Choose which Integrations are available for users by making the following configuration settings.

Set ALLOWED_INTEGRATIONS .env variable to toggle desired integrations.

  • To choose all reviewed integrations (default): ALLOWED_INTEGRATIONS=all.

  • To choose selected integrations: ALLOWED_INTEGRATIONS=<integrations>. For example, to choose the following integrations: HTTP, MQTT, CARGO: ALLOWED_INTEGRATIONS=http,mqtt,cargo

Integration keys can be found in /lib/console/channels/channel.ex listed in @long_type_names.

Choosing Approved Decoder Functions (staging)

Choose which Decoder Functions are available for users by making the following configuration settings.

Set ALLOWED_FUNCTIONS .env variable to toggle desired functions.

  • To choose all reviewed decoder functions (default): ALLOWED_FUNCTIONS=all.

  • To choose selected decoder functions: ALLOWED_FUNCTIONS=<functions>. For example, to choose the following functions: CUSTOM, CAYENNE: ALLOWED_FUNCTIONS=custom,cayenne

Function keys can be found in /lib/console/functions/function.ex listed in @all_formats