# Bitpool Edge

Tools to visually build IoT solutions

## What is Bitpool Edge?

Bitpool-Edge is a collection of hardware products and software services which perform the function of collecting `Internet of Things` (IoT) data from the real-world, as close to its source as possible.

> The term `edge` relates to *distributed information technology*, and refers to the mechanisms which reside on the periphery of client networks.

At Bitpool, we have built our edge solutions in conjunction with some of the worlds leading IoT vendors to create a friction-less experience to collect and process data from our customer edge networks.

The documentation below supports our current offering, for free and commercial solutions that *`live on the edge...`*

## Software Modules

Bitpool-Edge is broken up into free to use and commercial use.

* `Free to Use` (free)
* `Commercial` (freemium)

### Bitpool Edge - Free to Use

These are open source JavaScript modules which have been developed specifically for the open-source community based product, Node-RED. This software does not require any licensing and is free of charge for commercial or personal use.

> Bitpool Edge provides a pre-canned IoT integration platform for buildings built upon the NODE-Red Framework ([Bitpool-Edge](https://hub.docker.com/r/bitpoolos/bitpool-edge)). All nodes shown below are installed and ready to go.
>
> Please check your system requirements beforehand.

#### Nodes

* [Modbus](/bitpool-edge/connectors/bitpool-edge-modbus) - nodes for communicating with Modbus equipment.
* [Bitpool Uploader](/bitpool-edge/connectors/bitpool-edge-uploader) - a node to upload topic/value pairs to a Bitpool pool.

### Tridium Niagara - Freemium

These are closed source Java modules which have been developed for the Niagara ecosystem and operate for a short period of time.

> A valid license is required for unrestricted use, please check the how to license documentation.&#x20;

#### Modules

* [Bitpool Uploader Service](/niagara-connectors/niagara-bitpool-uploader-service) - a service that allows the uploading of Niagara histories into a Bitpool pool.
* [MQTT Driver Module](/niagara-connectors/niagara-mqtt-driver-module) - a driver module that can subscribe and publish data in/out of the Niagara ecosystem.

#### How To's

* [Update a Bitpool SSL Certificate](/niagara-connectors/how-to-install-or-update-bitpool-ssl-certificates-in-niagara) - a process for updating a station with the latest valid Bitpool SSL certificate.


# Bitpool Edge Installation

Procedure to install Bitpool Edge from Docker Hub

## Getting Started

Use this procedure to install Bitpool-Edge Docker image on a suitable server.

> Visit Docker Hub to find the latest information about our [Bitpool-Edge Docker image](https://hub.docker.com/r/bitpoolos/bitpool-edge).

### Docker Hub Install :whale:

Open a console to your machine running Docker, then issue the following commands.&#x20;

> *If you are running Windows, then this procedure will be similar in the Linux Subsystem (WSL) or Docker Desktop application.*

```javascript
// Perform a system update
sudo apt update

// Complete by upgrading any new packages
sudo apt upgrade -y

// Pull the latest image from Docker-Hub and launch the container as a background process.
sudo docker run -d --network host --name bitpool-edge -v bitpool-edge-data:/data bitpoolos/bitpool-edge

// Check the container is running by reviewing the Docker process list
sudo docker ps -a
```

Next, once you have confirmed that the container is running, open a Browser tab and navigate to the Docker machine.

`http://localhost:1880`

Assuming all has worked correctly, then you can log-in using the following default credentials.

* Username: `admin`
* Password: `bitpool`<br>

**Congratulations**! - that's it.&#x20;

> Assuming you have had no issues along the way, then you are ready to start creating smart IoT solutions using Bitpool-Edge.
>
> Check out our **nodes** on our applications page.

### Bitpool Edge Setting

Once you have Bitpool-Edge running as a Docker container, then you will likely want to make suitable alterations (e.g. log-in credentials) to the underlying Node-RED system. Thanks to the community there are many articles that can help you along the way.

#### Resources

Here are a couple of security related resources to get you started.

* [Official Docs](https://nodered.org/docs/user-guide/runtime/securing-node-red)
* [Ask Steve](https://stevesnoderedguide.com/securing-node-red-ssl)
* [Medium Article](https://medium.com/@thedyslexiccoder/how-to-secure-the-node-red-editor-on-a-raspberry-pi-4-df1a5d9b90d5)

#### Container Access

Use the following command to access the running container, included in the base image are standard editors like `nano`.<br>

```javascript
sudo docker exec -it bitpool-edge sh
```


# Bitpool Edge Requirements

Basic hardware and software requirements

## Server Hardware

We have successfully run Bitpool-Edge on a range of physical and virtual hardware platforms (`NUC`, `RPi`, `AWS-EC2`, generic laptops...) without issue, and we believe it should run on any modern system that supports this type of containerisation.

Given that Bitpool-Edge nodes have the ability to communicate using legacy protocols (`BACNet`, `Modbus`), we have allowed for serial (`RS232`, `RS485`) access from the running Docker container down into the host hardware ports.

> The only consideration when selecting hardware, is the ability to access peripherals on the local host hardware (i.e., serial ports) from a Docker container.&#x20;

> USB/Serial adapters are commonplace today, these will also work like actual physical DB9 serial ports.

### CPU

Bitpool-Edge will run smoothly on a `single CPU core`, and we would recommend **2 or more cores** to fully make use of background processing.

### RAM

With a Linux based systems then you should have **at least 1GB of RAM**, where `Windows` and `macOS` systems usually require a bit more RAM.

> We would also recommend increasing memory when performing I/O intensive tasks.

### Storage

Bitpool-Edge does not require excessive storage to run correctly, **at least 1 GB** capacity will be fine to start, but this is dependent on your individual requirements.

## Server OS / Architecture

Bitpool-Edge runs on virtually any system where Docker can be installed and supported. This means it runs on **Linux**, **macOS**, **Windows** and can container other solutions currently available today.

Our Docker image is built for the most common architecture variants, so when you pull from the Docker-Hub repo, Docker will determine the correct type to use with your host system.

> Find here the [supported architectures](https://hub.docker.com/r/bitpoolos/bitpool-edge/tags) for Bitpool-Edge - and a full list of [Docker support](https://github.com/docker-library/official-images#architectures-other-than-amd64) overall.&#x20;

## Supported Browsers

The following browsers are supported:

* Google Chrome
* Mozilla Firefox
* Microsoft Edge
* Apple Safari

> Note, only the latest stable version of these browsers are supported.


# Connectors


# Bitpool Edge Uploader

A Node-RED node to upload data to Bitpool

## **Getting Started**

This is a standard Node.js module developed specifically to function within the Node-RED ecosystem.

## **How to Use**

Use the following procedure to install this module to your Node-RED instance, or download the pre-themed [Bitpool-Edge Docker](https://wiki.bitpool.com/edge/apps/bitpool-edge/bitpool-edge-installation) image that contains all our favourite nodes pre-installed.

### **Bitpool-Edge Install**

1. Log into your Bitpool-Edge instance and click the `Hamburger` icon, in the top-right corner.
2. Select `Manage Palette` from the drop down menu then click the  `Pallete->Install` tabs to install.
3. Using the search bar type `@bitpoolos/edge-uploader` and install the module once displayed.
4. Finally, use the left most navigation menu to scroll down to the heading `Bitpool Uploader` to reveal available nodes<br>

### **Docker Install** :whale:

This Edge-Uploader module and many other Bitpool developed nodes have been pre-installed for your convenience in a Bitpool themed Node-RED application.

Go here for [how to install Bitpool-Edge](/bitpool-edge/bitpool-edge-installation).

### **Uploader Nodes**

The Uploader library of nodes is broken down into 2x functional blocks.

![](/files/wgp2tslH93UUPHsJTWAB)

1. `uploader` - interacts with the bitpool cloud, creating pools, streams, and uploading data.
2. `metatag` - appends tags to the node red msg object, and forwards the tags to the uploader node. This enriches the data getting uploaded to the bitpool cloud&#x20;

### **Further Information**

Now that your Bitpool-Edge is up and running, we have included simple examples flows to demonstrate how to create a basic solution.

1. Log into your Bitpool-Edge instance and click the `Hamburger` icon, in the top-right corner.
2. Select `Manage Palette` from the drop down menu then click the  `Import->Examples` tabs to see this node.
3. Navigate the ‘Examples flows’ tree and select `@bitpoolos/edge-uploader` to reveal the preconfigured examples.
4. Click the example you would like to test the click the `Import` button.
5. Place the example nodes on a flow and review the configuration of each node. You will need to make suitable changes for your system.
6. Finally, click the `Save` to test.

> Additionally, there is basic helper documentation on each node. Just select a target node and click the `Help` tab found at the top right corner of Bitpool-Edge.
>
> **Hint** *- the icon looks like a book!*


# Bitpool Edge BACnet

A BACnet gateway for node-red

## **Getting Started**

This is a standard Node.js module developed specifically to function within the Node-RED ecosystem.

## **How to Use**

Use the following procedure to install this module to your Node-RED instance, or download the pre-themed [Bitpool-Edge Docker](/bitpool-edge/bitpool-edge-installation) image that contains all our favourite nodes pre-installed.

### **Bitpool-Edge Install**

1. Log into your Bitpool-Edge instance and click the `Hamburger` icon, in the top-right corner.
2. Select `Manage Palette` from the drop down menu then click the `Pallete->Install` tabs to install.
3. Using the search bar type `@bitpoolos/edge-bacnet` and install the module once displayed.
4. Finally, use the left most navigation menu to scroll down to the heading `Bitpool BACnet` to reveal available nodes

### **Docker Install** :whale:

This BACnet module and many other Bitpool developed nodes have been pre-installed for your convenience in a Bitpool themed Node-RED application.

Go here for how to [install Bitpool-Edge](/bitpool-edge/bitpool-edge-installation).

### **BACnet Nodes**

The edge-bacnet library of nodes is broken down into 4x functional blocks.

![](/files/lShm3amIJCjsqThJMq87)

**Gateway**

The main component to the BACnet node collection. This node contains the interface to the node-bacnet package. All Read and Write nodes must link into the gateway. The gateway node also contains all network properties, to be configured by the user.

*Please note*: any property changes to the Gateway node currently requires a Node-RED **restart**.

There are 3 tabs on the gateway node:

*Gateway Tab*

* Network Interface - the desired interface for the BACnet client to bind to. This interface must not have any other BACnet clients bound to it.
* Broadcast Address - the desired subnet for global msgs to be broadcast and received on. This should be as strict as possible. Use 255.255.255.255 if unsure.
* Local Device Port - the port to be used for BACnet comms. Default is 47808
* Device ID - the Device ID the node itself would use if the Server is enabled. Ie: if the server is enabled, and a foreign device were to execute a discovery, that is the ID it would see for this node.
* Device ID range - a filter range for discovering other devices. &#x20;

*Discovery Tab*

* APDU Timeout - BACnet msg timeout option
* Max APDU Size - BACnet max apdu size
* Max Segments - BACnet max segments
* Number of Retries - The amount of retries the node will do if an error is found while fetching a foreign point list.&#x20;
* Global Discover Frequency - the frequency at which the gateway issues global WhoIs BACnet commands. This should be limited to the least amount possible, as over-loading a network can be a serious issue with BACnet commmunications.
* Manual Point Discovery Instance Range - if a BACnet device doesnt have a Object list (BACnet objectType:propertyId - 8:76), the this bacnet client will enter into manual discovery mode, where it iterates through types and instnace ranges. This range can be used to limit this manual scanning
* Log Device Found - toggles logging of found devices to the node-red debug tab.
* Log BACnet Errors to Console - toggles logging of BACnet related errors to the node-red console
* Device List - Import / Export. The Import option allows the user to import a JSON model for the node to use. The Export option exports the currently active model in JSON format.

*Server Tab*

This section provides the ability to simulate a BACnet device and BACnet points using node-red.

Injecting a msg.topic and msg.payload into the gateway node will create a virtual point that can be discovered by other devices via BACnet/IP

This node only supports 2 BACnet object types, Analog Value - to show numeric data, and a Character String - to show string data.

* Enabled - toggles whether or not the local BACnet server is started or not.
* Reinitialize Server - a button that completely clears the server and associated points

**Read**

The node that handles point and property selection for reading operations. The node is split up into 3 tabs:

1\. Device List - used to select points / devices to add to the read list,       &#x20;

2\. Read List - list of selected points / devices.       &#x20;

3\. Properties - the point properties to be read from the points in the read list.

**Write**

Much like the read node, this node handles point and property selection for writing operations. The node is split up into 3 tabs:

1\. Device List - used to select points / devices to add to the write list.    &#x20;

&#x20;2\. Write List - list of selected points / devices.       &#x20;

3\. Properties - the operation property's for the write command. Configuring the receiving BACnet device and setting            these properties are critical for a sucessfull write operation.

**Inject**

An extension of the Node-RED Inject node. It contains all of the standard inject node functionality, with 2 added buttons for a improved user experience. The buttons add a command to the msg object, which can instruct the Read, Write, or Gateway nodes, to either:

1\. Poll - invokes a Read or Write operation. A inject node with the Poll option must link into a Read or Write node.       &#x20;

2\. Discover - invokes a BACnet global WhoIs broadcast on the specified broadcast address. A inject node with the Discover option must link into a Gateway node.

### **Examples**

**Video walk-through**&#x20;

{% embed url="<https://youtu.be/4K7mVxfvfbc>" %}

Here are some examples and scenarios that could potentially be used with the edge-bacnet node.

**Read and Write**

*A flow with all of the BACnet read and write provided features*

<figure><img src="/files/PGmHMZHe1pnPD9YGobqA" alt=""><figcaption></figcaption></figure>

*Inject node used for Polling*

<figure><img src="/files/oZIV4fuQcvr5IAOzYs8x" alt=""><figcaption></figcaption></figure>

*Inject node used for Discovery*

<figure><img src="/files/1igj1vTfxDsQQe9rX4Yn" alt=""><figcaption></figcaption></figure>

*Read node action buttons*

<figure><img src="/files/Cl4Z7ifnRr2kspszuCQQ" alt=""><figcaption></figcaption></figure>

Add All Devices - this action adds all of the devices listed on the Device List tab to the Read List

<figure><img src="/files/PgGKohHlVuYasFNmLWOx" alt=""><figcaption></figcaption></figure>

Refresh Device List - this action refreshes the list

<figure><img src="/files/e9cxz8iPyNfAAs5RtxAc" alt=""><figcaption></figcaption></figure>

Clear Data model: - this action deletes and resets the bacnet data model. The user must wait for the node to construct the site model after selecting this button.

<figure><img src="/files/oC4xJODiLLcEtYZ2cJtJ" alt=""><figcaption></figcaption></figure>

*Example Gateway configurations*

<figure><img src="/files/GqW0jVfcFUrlagO4hlyE" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/3s7WYla3uvGNYuMMESZx" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/E4woy0EYBxdR3LrKeBAI" alt=""><figcaption></figcaption></figure>

**BACnet Server**

*MQTT to BACnet*

<figure><img src="/files/1aXXhREW9Pt5nkn6mGHh" alt=""><figcaption></figcaption></figure>

*Function generated data*

<figure><img src="/files/jA6tDvbjeVWwZkUueCgJ" alt=""><figcaption></figcaption></figure>

*Contents of previous function*

<figure><img src="/files/oUJAMVHKni3A0ytZKxpF" alt=""><figcaption></figcaption></figure>

*Yabe view of function generated BACnet data*

<figure><img src="/files/mGzOK25HoDobWiakaFOo" alt=""><figcaption></figcaption></figure>

### **Further Information**

Now that your Bitpool-Edge is up and running, we have included simple examples flows to demonstrate how to create a basic solution.

1. Log into your Bitpool-Edge instance and click the `Hamburger` icon, in the top-right corner.
2. Select `Manage Palette` from the drop down menu then click the `Import->Examples` tabs to see this node.
3. Navigate the ‘Examples flows’ tree and select `@bitpoolos/edge-bacnet` to reveal the preconfigured examples.
4. Click the example you would like to test the click the `Import` button.
5. Place the example nodes on a flow and review the configuration of each node. You will need to make suitable changes for your system.
6. Finally, click `Deploy` to test.

> Additionally, there is basic helper documentation on each node. Just select a target node and click the `Help` tab found at the top right corner of Bitpool-Edge.
>
> **Hint** *- the icon looks like a book!*


# Bitpool Edge Awair

A Node-RED node to communicate with Awair devices via their cloud API

## Getting Started

This is a standard Node.js module developed specifically to function within the Node-RED ecosystem.

## How to Use

Use the following procedure to install this module to your Node-RED instance, or download the pre-themed Bitpool-Edge Docker image that contains all our favourite nodes pre-installed.

### Bitpool-Edge Install

1. Log into your Bitpool-Edge instance and click the `Hamburger` icon, in the top-right corner.
2. Select `Manage Palette` from the drop down menu then click the `Pallete->Install` tabs to install.
3. Using the search bar type `@bitpoolos/edge-awair` and install the module once displayed.
4. Finally, use the left most navigation menu to scroll down to the heading `Bitpool Awair` to reveal available nodes.

### Docker Install :whale:

This Awair module and many other Bitpool developed nodes have been pre-installed for your convenience in a Bitpool themed Node-RED application.

Go here for how to install Bitpool-Edge.

### Awair Nodes

The Awair library contains a single node / functional block.&#x20;

<figure><img src="/files/6qQ8HQXT3XtLkLu2jLHp" alt=""><figcaption></figcaption></figure>

1. `Awair Device` - Allows for the connection to a device in the Awair Cloud and returns the latest available air data for that device.

### Basic Workflow

<figure><img src="/files/0wVt7TDWDdNhD2NwU5pD" alt=""><figcaption></figcaption></figure>

The image above is an example of a linked Awair Device node on a Flow tab. This is the basic flow of data.

1. The ‘Trigger’ node injects a simple timestamp into the `Awair Device` node.
2. The `Awair Device` node contains an API configuration along with a device selection which is used to retireve the latest air data for the device.
3. Finally, the `Output` node prints the payload to the debug tab for the user to see.

### Further Information

Now that your Bitpool-Edge is up and running, we have included simple example flows to demonstrate how to create a basic solution.

1. Log into your Bitpool-Edge instance and click the `Hamburger` icon, in the top-right corner.
2. Select `Manage Palette` from the drop down menu then click the `Import->Examples` tabs to see this node.
3. Navigate the ‘Examples flows’ tree and select `@bitpoolos/edge-awair` to reveal the preconfigured examples.
4. Click the example you would like to test then click the `Import` button.
5. Place the example nodes on a flow and review the configuration of each node. You will need to make suitable changes for your system.
6. Finally, click the `Save` to test.

> Additionally, there is basic helper documentation on each node. Just select a target node and click the `Help` tab found at the top right corner of Bitpool-Edge.
>
> **Hint** *- the icon looks like a book!*


# Bitpool Edge Modbus

A Node-RED node to communicate with Modbus equipment

## Getting Started

This is a standard Node.js module developed specifically to function within the Node-RED ecosystem.

## How to Use

Use the following procedure to install this module to your Node-RED instance, or download the pre-themed Bitpool-Edge Docker image that contains all our favourite nodes pre-installed.

### Bitpool-Edge Install

1. Log into your Bitpool-Edge instance and click the `Hamburger` icon, in the top-right corner.
2. Select `Manage Palette` from the drop down menu then click the `Pallete->Install` tabs to install.
3. Using the search bar type `@bitpoolos/edge-modbus` and install the module once displayed.
4. Finally, use the left most navigation menu to scroll down to the heading `Bitpool Modbus` to reveal available nodes.

### Docker Install :whale:

This Modbus module and many other Bitpool developed nodes have been pre-installed for your convenience in a Bitpool themed Node-RED application.

Go here for how to install Bitpool-Edge.

### Modbus Nodes

The Modbus library of nodes is broken down into 4x functional blocks.

<figure><img src="/files/HsBSQpcgAttg5T1vNT1M" alt=""><figcaption></figcaption></figure>

1. `device` - allows us to create a virtual map of a target Modbus device.
2. `reader` - defines a communication pathway to a Modbus device(s).
3. `decoder` - ensures that returned Modbus register data is correctly formatted.
4. `display` - is an *optional* component to visualise data for a unique Modbus register.

### Basic Workflow

<figure><img src="/files/VxbpQAdUeUKaosjRoMwd" alt=""><figcaption></figcaption></figure>

The image above here is an example of linked Modbus nodes on a Flow tab. This is the basic flow of data.

1. The ‘Trigger’ node injects a simple timestamp into the `device` node 'ABB B23 B24'.
2. The `device` node contains a list of Modbus registers with associated information which is sent to the `reader` node ‘Modbus Con’.
3. The `reader` node queues each Modbus register request and manages serial bus arbitration. Each response is then sent to the `decoder` node ‘Decoder’.
4. The `decoder` node handles each request using information stored in the JSON object. This is converted to the correct format as a topic/value pair, then sent to the output.
5. Finally, the `display` node prints the payload to it status field for the user to see.

### Basic Workflow Node Properties

* **Trigger** - this is a standard inject node and is used to initiate a Modbus read.
  * *Payload* - set as timestamp but can be any value.
  * *Topic* - not used.
* **Device** - description of the target Modbus device.
  * *Name* - any meaningful description.
  * *Modbus ID* - the numeric value of the Modbus address.
  * **Registers**
    * *Template* - the drop-down allows the user to select a predefined templates of Modbus registers. This is a cloud service and is only available if the system has Internet access. An alternative solution is to manage templates via the upload/download templates buttons.
    * *Load* – the selected template will be loaded into the Modbus Map
    * **Filters**
      * By Name - filters user input matching the Name.
      * By Address - filters user input matching the Modbus address.
    * **Register**
      * *Name* (mandatory) – forms part of topic structure.
      * *Address* (mandatory) - address of the Modbus register.
      * *Code* (mandatory) - Modbus register type (Coil, Register)
      * *Multiplier* (mandatory) - normally set to 1 (applied to output of Decoder node).
      * *Size* (mandatory) - vendor specific setting of register data size (applied to output of Decoder node).
      * *Format* (mandatory) - vendor specific setting of register format (applied to output of Decoder node).
      * *Unit Name* (optional) - supplemental Unit of Measure field for Display node (e.g. 100Wh).
      * *Unit Scale* (optional) - supplemental scaling prefix for Display node for (e.g. 100kWh).
    * **Buttons**
      * *Add* - adds a register block to the Register Map.
      * *Delete* - deletes all register blocks from Register Map.
      * *Upload* - allows a user to upload a previously saved Register Map from the local file system.
      * *Download* - allows a user to download the current Register Map to the local file system.
      * *View* - opens browser tab to provide a view of the current Register Map, formatted as JSON.
    * **Options**
      * **General**
        * Group Reads - option to optimize the number of Modbus request being made. A single request can return multiple values if the registers are in a contiguous block.
      * **Monitoring**
        * *Activity* - option to show the node activity.
        * *Warnings* - option to output warnings to the debug tab.
* **Reader** - defines the client-side connection to the Modbus network.
  * *Name* - any meaningful description of the reader node.
  * **Connection**
    * *Name* - any meaningful description of the new client.
    * *Type* - the connection type to either network socket or serial port.
    * *Unit ID* - allows multiple nodes to independently share the same Modbus network.
    * *Timeout* - number of milliseconds the node will wait before a timeout exception is raised.
    * *Reconnect* - number of milliseconds the node will wait after a timeout exception, before reattempting a connect.
    * *Queue Delay* - number of milliseconds the node will wait between sending Modbus register requests.
    * *Activity* - shows the status of the connection to the debug tab.
* **Decoder** - converts packets received from Modbus network to those defined in the Device node (factoring, byte resizing and reordering)
  * **Options**
    * **Monitoring**
      * *Activity* - shows activity of the node.
      * *Warnings* - outputs any node warnings to the debug tab.
    * **Converting**
      * *Power Factor* - option to convert multi quadrant values (-2,-1,0,1, 2) to absolute (0-1).
      * *Reals* - fixes all decimal point values to 3 significant places.
* **Display** - selected Modbus register values will be displayed.
  * *Name* - any meaningful description.
  * *Register* - text field to manually add the Modbus register, if known.
  * *Auto-Fill Device* - selection to automatically discover upstream Device node.
  * *Auto-Fill Register* - selection to automatically discover upstream Register name of the Device node.
  * **Options**
    * *Warnings* - option to output any node warnings to the debug tab.

### Further Information

Now that your Bitpool-Edge is up and running, we have included simple examples flows to demonstrate how to create a basic solution.

1. Log into your Bitpool-Edge instance and click the `Hamburger` icon, in the top-right corner.
2. Select `Manage Palette` from the drop down menu then click the `Import->Examples` tabs to see this node.
3. Navigate the ‘Examples flows’ tree and select `@bitpoolos/edge-modbus` to reveal the preconfigured examples.
4. Click the example you would like to test the click the `Import` button.
5. Place the example nodes on a flow and review the configuration of each node. You will need to make suitable changes for your system.
6. Finally, click the `Save` to test.

> Additionally, there is basic helper documentation on each node. Just select a target node and click the `Help` tab found at the top right corner of Bitpool-Edge.
>
> **Hint** *- the icon looks like a book!*


# Bitpool Edge Integriti

A Node-RED node to communicate with Integriti Security API

## Getting Started

This is a standard Node.js module developed specifically to function within the Node-RED ecosystem.

## How to Use

Use the following procedure to install this module to your Node-RED instance, or download the pre-themed Bitpool-Edge Docker image that contains all our favourite nodes pre-installed.

### Bitpool-Edge Install

1. Log into your Bitpool-Edge instance and click the `Hamburger` icon, in the top-right corner.
2. Select `Manage Palette` from the drop down menu then click the `Pallete->Install` tabs to install.
3. Using the search bar type `@bitpoolos/edge-integriti` and install the module once displayed.
4. Finally, use the left most navigation menu to scroll down to the heading `Bitpool Integriti` to reveal available nodes.

### Integriti Nodes

The Integriti library contains a single node / functional block.&#x20;

<figure><img src="/files/9pKE5QHF6urlPFTaSZe6" alt=""><figcaption></figcaption></figure>

1. `Integriti Device` - Allows for the connection to a device in the Integriti API and returns the latest available data for the connected system.

### Basic Workflow

<figure><img src="/files/QhH2vosZpNR1Ejjuj1XB" alt=""><figcaption></figcaption></figure>

The image above is an example of a linked Integriti Device node on a Flow tab. This is the basic flow of data.

1. The ‘Trigger’ node injects a simple timestamp into the `Integriti Device` node.
2. The `Integriti Device` node contains an API configuration along with a device selection which is used to retireve the latest data for the system.
3. Finally, the `Output` node prints the payload to the mqtt broker for the user to see.

### Basic Workflow Node Properties

* **Server** - this is the server end-point used to initiate an API connection.
  * *Port* - relevant port for the server connection.
* **Selection Window** - A selection tree view of the assocaiated controllers in the Integriti System.
  * Doors - Allows selection of required Doors to be polled for current state.
  * Inputs - Allows selection of required Inputs to be polled for current state.
  * Controllers - Allows selection of required Controllers to be polled for current state.

### Further Information

Now that your Bitpool-Edge is up and running, we have included simple example flows to demonstrate how to create a basic solution.

1. Log into your Bitpool-Edge instance and click the `Hamburger` icon, in the top-right corner.
2. Select `Manage Palette` from the drop down menu then click the `Import->Examples` tabs to see this node.
3. Navigate the ‘Examples flows’ tree and select `@bitpoolos/edge-integriti` to reveal the preconfigured examples.
4. Click the example you would like to test then click the `Import` button.
5. Place the example nodes on a flow and review the configuration of each node. You will need to make suitable changes for your system.
6. Finally, click the `Save` to test.


# Niagara Connectors


# How To Install or Update Bitpool SSL Certificates in Niagara

Process for installing or updating Bitpool SSL certificates in Niagara (N4)

Use the following process to install or update a Bitpool SSL certificate on a Niagara station.

> A valid Bitpool SSL certificate is only available on request. Please reach out to the Bitpool Team for the most recent version.

## Update Process

* on the target machine, transfer the latest pem file to a location available to the station.
* open Workbench and connect to station using credentials
* navigate to *Config->Services->PlatformService->CertManagerService*.
* open the **User Key Store** tab, then click the **Import** button.
* using the dialog box, locate and select the pem file.
* view and accept the new SSL certificate.
* navigate to *Config->Services->WebService*.
* open the Property Sheet tab and select the **Main Https Cert** drop down field.
* select the pem file installed above, then click the **Save** button.
* open the the browser and enter target URL for the station.
* from the address back inspect the SSL certificate and validate the *End Date* to confirm.


# How to License a Niagara Module

A process to obtain a Bitpool license for a Niagara driver, widget or service

## Overview

Most Bitpool software for the Niagara platform will require a suitable license to operate correctly. By default, software modules can be downloaded and installed without restriction - however there is a time limit preventing long term use.&#x20;

### How to License

Use the following process to license a Niagara driver, widget or service.

1. Once the module is installed, located the license fields (either at the driver or network levels) then copy the `Product Key` (e.g. *WIN-E123-xxx-xxx-xxx:MQTT*).
2. Using your favourite email client, or by clicking the link (<licensing@bitpool.com>), paste in the `Product Key` along with your details (can use the template below),  then `send`.
3. Please wait for an email response containing a unique `License Key` for your module and installation.
4. Finally, copy your provided `License Key` into the appropriate field of your module.
5. This will activate this product - **Congratulations**!\
   &#x20;

#### Request License Template

Please copy and paste this template request if you prefer.&#x20;

```plaintext
Hi Bitpool Team,

Could you please provide a license for the following product.

Product Name: Niagara MQTT Driver
Product Key: WIN-E123-456-789-012:MQTT
Platform:  Niagara N4.x

Company Name: ACME Ltd

Thanks
```


# Niagara Bitpool Uploader Service

Niagara service to upload point and history data to Bitpool

## Overview

The Bitpool Tridium Niagara uploader runs as a service under the services container. It's designed to be a simplistic way to extract and connect historical data from Tridium systems to the Bitpool Cloud ecosystem.

> Bitpool Niagara Uploader supports both Niagara 4 and Niagara AX frameworks.
>
> The Uploader is not compatible with Niagara 4.11.3 due to a known issue with oBIX in this revision of Niagara.

## Installation Process

Use the following procedure to add a Bitpool Niagara module as a service to your installation.

### Step 1

Log into your Bitpool organisation and navigate to the ‘API Keys’ section under the ‘Connections’ menu, generating a new API key with `ApiReadWrite`. Once created, copy the API key to a safe location, as this will be use later in&#x20;

<figure><img src="/files/6MpYUJO6QfXxH4QnbKjy" alt=""><figcaption></figcaption></figure>

### Step 2

Install Bitpool module ( `nBitpool-rt.jar` ) into the root Niagara modules directory of your installation. Note, this may require a Niagara Station restart in order for the module to be seen in the Palette.

<figure><img src="/files/m996bOJHAhtDOp6H3qm7" alt=""><figcaption></figcaption></figure>

### Step 3

Select the nBitpool module from the Palette in your Niagara Workbench and drag the `BitpoolUploadSvc` into the Services container. Open the AX Properties sheet view and provide the following.

1. `Bitpool API Key` - paste or enter the API key you previously stored in **Step 1**
2. `Station Name` - (optional) this slot will inherit the name of the Niagara station or alternatively you can provide a descriptive name for the controller itself.
3. `Pool Name` - enter the pool name you wish to create or publish to in Bitpool

<figure><img src="/files/Tuw3yGcCunYyuf0fLadm" alt=""><figcaption></figcaption></figure>

### Step 4

In Workbench, under the new service, select the histories you would like to export to Bitpool Cloud - using the Pool Name provided in **Step 3**. Hold-Shift to select multiple histories using right-click to bring up the context menu (enable or disable exporting).

<figure><img src="/files/WqImc5QtAxS6r4VS52ru" alt=""><figcaption></figcaption></figure>

## Advanced Settings

The following parameters can be tuned to improve performance under high volumes of data upload.

<figure><img src="/files/NUbJE3ugL3vicopvs28e" alt=""><figcaption></figcaption></figure>

### Upload Interval

The upload interval denotes the runtime frequency to which data will be pushed to the Bitpool Cloud environment. This parameter typically defaults to 1 second intervals, however this can be adjusted based on user preferences.

> For optimal performance, please leave at the default settings

### Upload Max

Denotes the maximum number of records that will be pushed at each upload interval, this parameter can be adjusted based on the device itself.

* `AX JACE` - \[0-800] recommended.
* `JACE 8000` - \[0-2000] recommended.
* `Niagara Supervisor` - \[0-5000] recommended.

> Should you choose to alter the **default settings** and experience connection alarms, reduce the **Upload Max** setting until stable operation is achieved.

### Fill Gaps

Should `Fill Gaps` be enabled, the `Fill Gaps From` date will be used as the starting interval for uploading data to Bitpool.

> This feature allows the user to back-fill any missing data, that is currently not in Bitpool.&#x20;

### Connection Alarm

This setting indicates if there have been any connectivity issues to the Bitpool Cloud, if there is an active alarm check the following

* Is the system connected to the internet ?
* Do you have an active `API key` ?
* Are your `Upload Max` to high ?
* Are your `Upload Intervals` to fast ?

## How to License

> This module does not require a license, however you must have a valid Bitpool account to generate your API Key.

## Downloads

### Version History

<table><thead><tr><th width="121">Version</th><th width="140">Driver</th><th width="96">Niagara Version</th><th>Comments</th><th data-type="files">Downloads</th><th data-hidden></th></tr></thead><tbody><tr><td></td><td></td><td></td><td></td><td></td><td>Documentation</td></tr><tr><td>4.11.0.142</td><td>nbitpool-4.11.0.142.zip</td><td>N4.x</td><td>v1.1.6 Added String point uploading and stricter history type selector. Self-signed.</td><td><a href="/files/3jdMfePu8mQmg8EWGAXs">/files/3jdMfePu8mQmg8EWGAXs</a></td><td>refer above</td></tr><tr><td>4.10.1.36</td><td>nbitpool-4.10.1.36.zip</td><td>N4.x</td><td>v1.1.6 Added String point uploading and stricter history type selector. Self-signed.</td><td><a href="/files/a9EYyi0n2prsZ53ZXbus">/files/a9EYyi0n2prsZ53ZXbus</a></td><td>refer above</td></tr><tr><td>4.9.0.198</td><td>nbitpool-4.9.0.198.zip</td><td>N4.x</td><td>v1.1.6 Added String point uploading and stricter history type selector. Self-signed.</td><td><a href="/files/HWeuoZ4sw8RaPWfI3rCP">/files/HWeuoZ4sw8RaPWfI3rCP</a></td><td>refer above</td></tr><tr><td>4.8.0.110</td><td>nbitpool-4.8.0.110.zip</td><td>N4.x</td><td>v1.1.6 Added String point uploading and stricter history type selector. Self-signed.</td><td><a href="/files/ZFRGajNwvxI1kz3R32Gk">/files/ZFRGajNwvxI1kz3R32Gk</a></td><td>refer above</td></tr><tr><td>4.7.109.20</td><td>nbitpool-4.7.109.20.zip</td><td>N4.x</td><td>v1.1.6 Added String point uploading and stricter history type selector. Self-signed.</td><td><a href="/files/bPLJ43jvrJ6KhZavCjTB">/files/bPLJ43jvrJ6KhZavCjTB</a></td><td>refer above</td></tr><tr><td>4.6.96.28</td><td>nbitpool-4.6.96.28.zip</td><td>N4.x</td><td>v1.1.6 Added String point uploading and stricter history type selector. Self-signed.</td><td><a href="/files/qFeE9aNDs3BZ6efhgqdm">/files/qFeE9aNDs3BZ6efhgqdm</a></td><td>refer above</td></tr><tr><td>4.4</td><td>nbitpool-4.4.zip</td><td>N4.x</td><td>v1.1.6 Compiled for niagara v4.4</td><td><a href="/files/Os5vO0bU5QqpKUibz13n">/files/Os5vO0bU5QqpKUibz13n</a></td><td>refer above</td></tr></tbody></table>


# Niagara MQTT Driver Module

MQTT Driver for Niagara N4

## Getting Started

The Bitpool MQTT driver extends the capability of Niagara to publish and subscribe to data outside the Niagara ecosystem.

## How to Use

Use the following procedure to install the MQTT driver to a N4.x Niagara installation.

### Quick Install

1. `Select and download` the appropriate `zip` (below) for you target Niagara installation.
2. `Unzip` the contents and copy to the `Niagara` modules folder, next restart the `Niagara` station.
3. From the `Palette` pane in `Workbench`, click the folder icon to select the driver `MQTT Pub/Sub Driver`.
4. Drag the `MqttNetwork` driver from the Palette, to the Navigation Tree (Station->Config->Drivers).
5. Drag the `MqttSubscribe` or `MqttPublish` device from the `Palette` and place under new ‘MqttNetwork’.

### Deep Dive

> For a complete guide to installing an configuring the MQTT driver in Niagara, please refer to the latest `PDF` listed in the table below.

## Downloads

### Version History

<table><thead><tr><th width="131">Version</th><th width="218" data-type="files">Driver</th><th width="346" data-type="files">Documentation</th><th width="107">Niagara Version</th><th>Comments</th><th data-hidden data-type="files"></th></tr></thead><tbody><tr><td>1.002.002</td><td><a href="/files/aNdr10oNd4Xs6zPwDjcz">/files/aNdr10oNd4Xs6zPwDjcz</a></td><td><a href="/files/XsITC5OtkDJTLLBXKAFD">/files/XsITC5OtkDJTLLBXKAFD</a></td><td>4.11</td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table>


# Windows Uploader

Upload your data to the Bitpool Cloud the easy way.

Supported data sources: BACnet, TAC Vista, Andover Continuum, TAC I/Net, ION, Reliable Controls, RC Archive, Tap Watch, Johnson Controls, Innotech, Trend963, Delta, oBIX, Tropical Data Hubs, Aurora.


