Wirepas Services Tutorial

Here we will show you step-by-step how to deploy wirepas stack to a fleet of edge devices.

Video Tutorial

Pre-requisites

  1. Have Orchestra subscription (more).

  2. Add all your edge devices to Orchestra Manager (more) or make sure the Orchestra Daemon (orchestrad) installed is version 1.4.13 or above (Updating Orchestra Daemon).

  3. Install Docker Engine on your edge devices (Install Docker Engine).

  4. Make sure your Docker Compose file docker-compose.yml is ready and correct before proceeding. Copy the docker file from here.

docker-compose.yml
version: "3.7"

volumes:
  dbus-volume:
    driver: local

services:
  dbus-service:
    image: wirepas/gateway_dbus_service:v1.4.5
    container_name: dbus-service
    restart: always
    volumes:
      - dbus-volume:/var/run/dbus
    logging:
      driver: journald
  transport-wbs-service:
    image: wirepas/gateway_transport_service:v1.4.5
    container_name: transport-wbs-service
    environment:
      WM_GW_ID: --will-be-overridden--
      WM_GW_MODEL: --will-be-overridden--
      WM_GW_VERSION: --will-be-overridden--
      WM_SERVICES_MQTT_HOSTNAME: --will-be-overridden--
      WM_SERVICES_MQTT_PORT: --will-be-overridden--
      WM_SERVICES_MQTT_USERNAME: --will-be-overridden--
      WM_SERVICES_MQTT_PASSWORD: --will-be-overridden--
    restart: always
    depends_on:
      - dbus-service
    volumes:
      - dbus-volume:/var/run/dbus
    logging:
      driver: journald
  sink-service:
    image: wirepas/gateway_sink_service:v1.4.5
    container_name: sink-service
    restart: always
    privileged: true
    depends_on:
      - dbus-service
    environment:
      WM_GW_SINK_BAUDRATE: 125000
      WM_GW_SINK_ID: 1
      WM_GW_SINK_UART_PORT: --will-be-overridden--
    volumes:
      - dbus-volume:/var/run/dbus
    logging:
      driver: journald
  1. Prepare variables:

  • WM_SERVICES_MQTT_USERNAME

  • WM_SERVICES_MQTT_PASSWORD

  • WM_SERVICES_MQTT_HOSTNAME

  • WM_SERVICES_MQTT_PORT

  • WM_GW_MODEL

  • WM_GW_VERSION

  • WM_GW_ID

Steps

Step 1: List All Fleets

Begin by listing all the fleets in your system. This helps you identify existing fleets before proceeding to create a new one (more: List).

$ ocli calm fleet list
$ ocli calm fleet list
╒════════════════╤════════════════╤═════════╤═════════════╤═══════════════════════════╤════════════════╤════════════════╤═══════════════╤════════════════╕
│ created_at     │ updated_at     │ name    │ description │ devices                   │ compositions   │ id             │ status        │ deployment_inf │
│                │                │         │             │                           │                │                │               │ o              │
├────────────────┼────────────────┼─────────┼─────────────┼───────────────────────────┼────────────────┼────────────────┼───────────────┼────────────────┤
│ 2024-09-12     │ 2024-09-12     │ Wirepas │ Wirepas     │ ['66ea8308ad532faa0af547c │ ['66e989e25cdb │ 66e2bf8b0b7415 │ RECONFIGURING │ {'devices':    │
│ 10:16:43+00:00 │ 10:16:43+00:00 │         │ demo        │ d - SIDO Lyon GW']        │ 6ddb736f4702 - │ 3243c451dc     │               │ [{'status':    │
│                │                │         │             │                           │ Wirepas        │                │               │ 'OK', 'count': │
│                │                │         │             │                           │ stack:1.4.0']  │                │               │ 1}, {'status': │
│                │                │         │             │                           │                │                │               │ 'TOTAL',       │
│                │                │         │             │                           │                │                │               │ 'count': 1}],  │
│                │                │         │             │                           │                │                │               │ 'compositions' │
│                │                │         │             │                           │                │                │               │ : [{'status':  │
│                │                │         │             │                           │                │                │               │ 'RECONFIGURING │
│                │                │         │             │                           │                │                │               │ ', 'count':    │
│                │                │         │             │                           │                │                │               │ 1}]}           │
╘════════════════╧════════════════╧═════════╧═════════════╧═══════════════════════════╧════════════════╧════════════════╧═══════════════╧════════════════╛

Step 2: Create a New Fleet

Now, create a fleet where you will deploy your compositions. Include all of the devices you want to deploy wirepas application on (more: Create).

$ ocli calm fleet create --name "name" --description "desc"
$ ocli calm fleet create --name "Carrots fleet" --description "Fleet of carrots doing carrots' things."
╒════════════════╤════════════════╤═════════╤═════════════╤═════════╤══════════════╤══════════════════════════╤═════════╤═════════════════╕
│ created_at     │ updated_at     │ name    │ description │ devices │ compositions │ id                       │ status  │ deployment_info │
├────────────────┼────────────────┼─────────┼─────────────┼─────────┼──────────────┼──────────────────────────┼─────────┼─────────────────┤
│ 2024-09-30     │ 2024-09-30     │ Carrots │ Fleet of    │ []      │ []           │ 66fa8912b4c08769d7c6a140 │ UNKNOWN │                 │
│ 11:18:42+00:00 │ 11:18:42+00:00 │ fleet   │ carrots     │         │              │                          │         │                 │
│                │                │         │ doing       │         │              │                          │         │                 │
│                │                │         │ carrots'    │         │              │                          │         │                 │
│                │                │         │ things.     │         │              │                          │         │                 │
╘════════════════╧════════════════╧═════════╧═════════════╧═════════╧══════════════╧══════════════════════════╧═════════╧═════════════════╛

Step 3: Create a Composition

Next, create a composition. It defines your app and will store the versioning of this app (more: Create).

$ ocli calm composition create -n "name"
$ ocli calm composition create -n "Wirepas for carrots app"
╒════════════════╤════════════════╤═════════╤══════════════════════════╤════════════════╕
│ created_at     │ updated_at     │ name    │ id                       │ latest_version │
├────────────────┼────────────────┼─────────┼──────────────────────────┼────────────────┤
│ 2024-09-30     │ 2024-09-30     │ Wirepas │ 66fa8ae6aa1888819c7d9662 │                │
│ 11:26:30+00:00 │ 11:26:30+00:00 │ for     │                          │                │
│                │                │ carrots │                          │                │
│                │                │ app     │                          │                │
╘════════════════╧════════════════╧═════════╧══════════════════════════╧════════════════╛

Step 4: Create a Composition Version

After creating the composition, create a composition version for it. This version will be linked to specific configurations in your compose file. (more: Create).

Note

Make sure your Docker Compose file docker-compose.yml is ready and correct before proceeding.

$ ocli calm composition-version create -f <path to docker compose .yaml file> -v <version e.g. 1.0.0> -d "description" <composition_id>
$ ocli calm composition-version create -f docker_compose.yaml -v 1.0.0 -d "This is an initial version of Wirepas for carrots app" 66fa8ae6aa1888819c7d9662
╒════════════════╤════════════════╤══════════════════════════╤═════════╤═════════════╤══════════════╤══════════════════════════╤══════════════════╕
│ created_at     │ updated_at     │ composition_id           │ version │ description │ compose_file │ id                       │ composition_name │
├────────────────┼────────────────┼──────────────────────────┼─────────┼─────────────┼──────────────┼──────────────────────────┼──────────────────┤
│ 2024-09-30     │ 2024-09-30     │ 66fa8ae6aa1888819c7d9662 │ 1.0.0   │ This is an  │ OK           │ 66fa9e1964270b4e5ea32f75 │ Wirepas for      │
│ 12:48:25+00:00 │ 12:48:25+00:00 │                          │         │ initial     │              │                          │ carrots app      │
│                │                │                          │         │ version of  │              │                          │                  │
│                │                │                          │         │ Wirepas for │              │                          │                  │
│                │                │                          │         │ carrots app │              │                          │                  │
╘════════════════╧════════════════╧══════════════════════════╧═════════╧═════════════╧══════════════╧══════════════════════════╧══════════════════╛

Step 5: Attach Composition to the Fleet

Now, attach the composition you just created to your fleet. This step ensures that the fleet is ready to deploy the specified services (more: Attach).

$ ocli calm fleet attach composition -r <composition_id> <fleet_id>
$ ocli calm fleet attach composition -r 66fa8ae6aa1888819c7d9662 66fa8912b4c08769d7c6a140
╒════════════════╤════════════════╤═════════╤═════════════╤═════════╤════════════════════════════╤══════════════════════════╤═════════╤═════════════════╕
│ created_at     │ updated_at     │ name    │ description │ devices │ compositions               │ id                       │ status  │ deployment_info │
├────────────────┼────────────────┼─────────┼─────────────┼─────────┼────────────────────────────┼──────────────────────────┼─────────┼─────────────────┤
│ 2024-09-30     │ 2024-09-30     │ Carrots │ Fleet of    │ []      │ ['66fa9e1964270b4e5ea32f75 │ 66fa8912b4c08769d7c6a140 │ UNKNOWN │ {'devices':     │
│ 11:18:42+00:00 │ 11:18:42+00:00 │ fleet   │ carrots     │         │ - Wirepas for carrots      │                          │         │ [{'status':     │
│                │                │         │ doing       │         │ app:1.0.0']                │                          │         │ 'TOTAL',        │
│                │                │         │ carrots'    │         │                            │                          │         │ 'count': 0}],   │
│                │                │         │ things.     │         │                            │                          │         │ 'compositions': │
│                │                │         │             │         │                            │                          │         │ [{'status':     │
│                │                │         │             │         │                            │                          │         │ 'UNKNOWN',      │
│                │                │         │             │         │                            │                          │         │ 'count': 1}]}   │
╘════════════════╧════════════════╧═════════╧═════════════╧═════════╧════════════════════════════╧══════════════════════════╧═════════╧═════════════════╛

Step 6: Attach Devices to Your Fleet

Add the required devices to your fleet. These devices will run the services defined in your composition (more: Attach).

Note

Use the arrow keys to navigate the list of devices, press Space to select devices, and hit Enter to confirm your selections.

$ ocli calm fleet attach device <fleet_id>
$ ocli calm fleet attach device 66fa8912b4c08769d7c6a140
[?] Pick devices you want to attach to fleet 66fa8912b4c08769d7c6a140 - Carrots fleet:
  [ ] 66e13e6c2bc2262a5d5876e2 - test_adam_arm3
  [ ] 66e13e994366760572c806f7 - test_adam_amd3
  [X] 66e96c91b053f8dea450c2c0 - Harry-Test-GW #1
> [X] 66e96d25d72d0d4c0ff1962b - Harry-Test-GW #2
  [ ] 66ea8308ad532faa0af547cd - SIDO Lyon GW

╒════════════════╤════════════════╤═════════╤═════════════╤════════════════════════════╤════════════════════════════╤══════════════════════════╤═════════╤══════════════════╕
│ created_at     │ updated_at     │ name    │ description │ devices                    │ compositions               │ id                       │ status  │ deployment_info  │
├────────────────┼────────────────┼─────────┼─────────────┼────────────────────────────┼────────────────────────────┼──────────────────────────┼─────────┼──────────────────┤
│ 2024-09-30     │ 2024-09-30     │ Carrots │ Fleet of    │ ['66e96c91b053f8dea450c2c0 │ ['66fa9e1964270b4e5ea32f75 │ 66fa8912b4c08769d7c6a140 │ UNKNOWN │ {'devices':      │
│ 11:18:42+00:00 │ 11:18:42+00:00 │ fleet   │ carrots     │ - Harry-Test-GW #1',       │ - Wirepas for carrots      │                          │         │ [{'status':      │
│                │                │         │ doing       │ '66e96d25d72d0d4c0ff1962b  │ app:1.0.0']                │                          │         │ 'RECONFIGURING', │
│                │                │         │ carrots'    │ - Harry-Test-GW #2']       │                            │                          │         │ 'count': 2},     │
│                │                │         │ things.     │                            │                            │                          │         │ {'status':       │
│                │                │         │             │                            │                            │                          │         │ 'TOTAL',         │
│                │                │         │             │                            │                            │                          │         │ 'count': 2}],    │
│                │                │         │             │                            │                            │                          │         │ 'compositions':  │
│                │                │         │             │                            │                            │                          │         │ [{'status':      │
│                │                │         │             │                            │                            │                          │         │ 'UNKNOWN',       │
│                │                │         │             │                            │                            │                          │         │ 'count': 1}]}    │
╘════════════════╧════════════════╧═════════╧═════════════╧════════════════════════════╧════════════════════════════╧══════════════════════════╧═════════╧══════════════════╛

Step 7: Choose Composition Version

List all versions of your composition to select the one to be released.

$ ocli calm composition-version list <composition_id>
$ ocli calm composition-version list 66fa8ae6aa1888819c7d9662
╒════════════════╤════════════════╤══════════════════════════╤═════════╤═════════════╤══════════════╤══════════════════════════╤══════════════════╕
│ created_at     │ updated_at     │ composition_id           │ version │ description │ compose_file │ id                       │ composition_name │
├────────────────┼────────────────┼──────────────────────────┼─────────┼─────────────┼──────────────┼──────────────────────────┼──────────────────┤
│ 2024-09-30     │ 2024-09-30     │ 66fa8ae6aa1888819c7d9662 │ 1.0.0   │ This is an  │ OK           │ 66fa9e1964270b4e5ea32f75 │ Wirepas for      │
│ 12:48:25+00:00 │ 12:48:25+00:00 │                          │         │ initial     │              │                          │ carrots app      │
│                │                │                          │         │ version of  │              │                          │                  │
│                │                │                          │         │ Wirepas for │              │                          │                  │
│                │                │                          │         │ carrots app │              │                          │                  │
╘════════════════╧════════════════╧══════════════════════════╧═════════╧═════════════╧══════════════╧══════════════════════════╧══════════════════╛

Step 8: Set Up Required Variables for the Composition

Configure the necessary environment variables for your composition. Input each variable one by one as needed for your application (more: Create).

Tip

Double-check each variable to ensure it’s correct before proceeding.

First variable:

  • WM_SERVICES_MQTT_PASSWORD

$ ocli calm variable create -k <key> -v <value> -d <description> -r <composition_id> composition
$ ocli calm variable create -k WM_SERVICES_MQTT_PASSWORD -v ************** -d "mqtt pass" -r 66fa8912b4c08769d7c6a140 composition
╒════════════════╤════════════════╤═══════════════════════════╤══════════════════════════╤═════════════╤═════════════╤═════════════════╤════════╤═════════════════╤═════════════════╤═════════════════╕
│ created_at     │ updated_at     │ key                       │ value                    │ description │ kind        │ resource_id     │ masked │ expand_referenc │ id              │ overridden_vari │
│                │                │                           │                          │             │             │                 │        │ e               │                 │ able            │
├────────────────┼────────────────┼───────────────────────────┼──────────────────────────┼─────────────┼─────────────┼─────────────────┼────────┼─────────────────┼─────────────────┼─────────────────┤
│ 2024-10-01     │ 2024-10-01     │ WM_SERVICES_MQTT_PASSWORD │ ************************ │ mqtt pass   │ composition │ 66fa8912b4c0876 │ false  │ false           │ 66fbb7bef951624 │                 │
│ 08:50:06+00:00 │ 08:50:06+00:00 │                           │ *****                    │             │             │ 9d7c6a140       │        │                 │ 647fa8e38       │                 │
╘════════════════╧════════════════╧═══════════════════════════╧══════════════════════════╧═════════════╧═════════════╧═════════════════╧════════╧═════════════════╧═════════════════╧═════════════════╛

Second variable:

  • WM_SERVICES_MQTT_USERNAME

$ ocli calm variable create -k <key> -v <value> -d "description" -r <composition_id> composition
$ oocli calm variable create -k WM_SERVICES_MQTT_USERNAME -v mosquittouser -d "mqtt user" -r 66fa8912b4c08769d7c6a140 composition
╒════════════════╤════════════════╤═══════════════════════════╤═══════════════╤═════════════╤═════════════╤══════════════════════════╤════════╤══════════════════╤══════════════════╤═════════════════╕
│ created_at     │ updated_at     │ key                       │ value         │ description │ kind        │ resource_id              │ masked │ expand_reference │ id               │ overridden_vari │
│                │                │                           │               │             │             │                          │        │                  │                  │ able            │
├────────────────┼────────────────┼───────────────────────────┼───────────────┼─────────────┼─────────────┼──────────────────────────┼────────┼──────────────────┼──────────────────┼─────────────────┤
│ 2024-10-01     │ 2024-10-01     │ WM_SERVICES_MQTT_USERNAME │ mosquittouser │ mqtt user   │ composition │ 66fa8912b4c08769d7c6a140 │ false  │ false            │ 66fbbcd54b187c07 │                 │
│ 09:11:49+00:00 │ 09:11:49+00:00 │                           │               │             │             │                          │        │                  │ e8a1aef0         │                 │
╘════════════════╧════════════════╧═══════════════════════════╧═══════════════╧═════════════╧═════════════╧══════════════════════════╧════════╧══════════════════╧══════════════════╧═════════════════╛

Continue inputting each variable:

  • WM_SERVICES_MQTT_HOSTNAME

  • WM_SERVICES_MQTT_PORT

  • WM_GW_MODEL

  • WM_GW_VERSION

Last variable:

  • WM_GW_ID

Unlike other variables, WM_GW_ID is device-specific and cannot be set at the composition level. Each device must have a unique WM_GW_ID.

Let’s create this device-specific variable now:

$ ocli calm variable create -k <key> -v <value> -d "description" -r <device_id> device
$ ocli calm variable create -k WM_GW_ID -v btdoffice -d "gateway id" -r 66fa8912b4c08769d7c6a140 device
╒════════════════╤════════════════╤═══════════════════════════╤═══════════════╤═════════════╤═════════════╤══════════════════════════╤════════╤══════════════════╤══════════════════╤═════════════════╕
│ created_at     │ updated_at     │ key                       │ value         │ description │ kind        │ resource_id              │ masked │ expand_reference │ id               │ overridden_vari │
│                │                │                           │               │             │             │                          │        │                  │                  │ able            │
├────────────────┼────────────────┼───────────────────────────┼───────────────┼─────────────┼─────────────┼──────────────────────────┼────────┼──────────────────┼──────────────────┼─────────────────┤
│ 2024-10-01     │ 2024-10-01     │ WM_GW_ID                  │ btdoffice     │ gateway id  │ composition │ 66fa8912b4c08769d7c6a140 │ false  │ false            │ 66fbbcd54b187c07 │                 │
│ 09:11:49+00:00 │ 09:11:49+00:00 │                           │               │             │             │                          │        │                  │ e8a1aef0         │                 │
╘════════════════╧════════════════╧═══════════════════════════╧═══════════════╧═════════════╧═════════════╧══════════════════════════╧════════╧══════════════════╧══════════════════╧═════════════════╛

Note

If you adding more devices to fleet at once you have to configure WM_GW_ID for each device.

Once all variables are added, verify that everything is correctly configured (more: List).

$ ocli calm variable list composition -r <composition_id>
$ ocli calm variable list composition -r 66fa8912b4c08769d7c6a140
╒════════════════╤════════════════╤═══════════════════════════╤══════════════════════════╤═════════════╤═════════════╤═════════════════╤════════╤═════════════════╤═════════════════╤═════════════════╕
│ created_at     │ updated_at     │ key                       │ value                    │ description │ kind        │ resource_id     │ masked │ expand_referenc │ id              │ overridden_vari │
│                │                │                           │                          │             │             │                 │        │ e               │                 │ able            │
├────────────────┼────────────────┼───────────────────────────┼──────────────────────────┼─────────────┼─────────────┼─────────────────┼────────┼─────────────────┼─────────────────┼─────────────────┤
│ 2024-10-01     │ 2024-10-01     │ WM_GW_MODEL               │ cthingsco-5gedgegw       │ gateway     │ composition │ 66fa8912b4c0876 │ false  │ false           │ 66fbbe4685fa368 │                 │
│ 09:17:58+00:00 │ 09:17:58+00:00 │                           │                          │ model       │             │ 9d7c6a140       │        │                 │ 9bbf3ec59       │                 │
├────────────────┼────────────────┼───────────────────────────┼──────────────────────────┼─────────────┼─────────────┼─────────────────┼────────┼─────────────────┼─────────────────┼─────────────────┤
│ 2024-10-01     │ 2024-10-01     │ WM_GW_VERSION             │ ctgwra                   │ gateway     │ composition │ 66fa8912b4c0876 │ false  │ false           │ 66fbbe11f951624 │                 │
│ 09:17:05+00:00 │ 09:17:05+00:00 │                           │                          │ version     │             │ 9d7c6a140       │        │                 │ 647fa8e39       │                 │
├────────────────┼────────────────┼───────────────────────────┼──────────────────────────┼─────────────┼─────────────┼─────────────────┼────────┼─────────────────┼─────────────────┼─────────────────┤
│ 2024-10-01     │ 2024-10-01     │ WM_SERVICES_MQTT_HOSTNAME │ clasp-wirepas-           │ mqtt host   │ composition │ 66fa8912b4c0876 │ false  │ false           │ 66fbbdca7334027 │                 │
│ 09:15:54+00:00 │ 09:15:54+00:00 │                           │ wnt-4.cthings.co         │             │             │ 9d7c6a140       │        │                 │ 019388547       │                 │
├────────────────┼────────────────┼───────────────────────────┼──────────────────────────┼─────────────┼─────────────┼─────────────────┼────────┼─────────────────┼─────────────────┼─────────────────┤
│ 2024-10-01     │ 2024-10-01     │ WM_SERVICES_MQTT_PORT     │ 8883                     │ mqtt port   │ composition │ 66fa8912b4c0876 │ false  │ false           │ 66fbbd878586b62 │                 │
│ 09:14:47+00:00 │ 09:14:47+00:00 │                           │                          │             │             │ 9d7c6a140       │        │                 │ 7788367c4       │                 │
├────────────────┼────────────────┼───────────────────────────┼──────────────────────────┼─────────────┼─────────────┼─────────────────┼────────┼─────────────────┼─────────────────┼─────────────────┤
│ 2024-10-01     │ 2024-10-01     │ WM_SERVICES_MQTT_USERNAME │ mosquittouser            │ mqtt user   │ composition │ 66fa8912b4c0876 │ false  │ false           │ 66fbbcd54b187c0 │                 │
│ 09:11:49+00:00 │ 09:11:49+00:00 │                           │                          │             │             │ 9d7c6a140       │        │                 │ 7e8a1aef0       │                 │
├────────────────┼────────────────┼───────────────────────────┼──────────────────────────┼─────────────┼─────────────┼─────────────────┼────────┼─────────────────┼─────────────────┼─────────────────┤
│ 2024-10-01     │ 2024-10-01     │ WM_SERVICES_MQTT_PASSWORD │ ************************ │ mqtt pass   │ composition │ 66fa8912b4c0876 │ false  │ false           │ 66fbb7bef951624 │                 │
│ 08:50:06+00:00 │ 08:50:06+00:00 │                           │                          │             │             │ 9d7c6a140       │        │                 │ 647fa8e38       │                 │
╘════════════════╧════════════════╧═══════════════════════════╧══════════════════════════╧═════════════╧═════════════╧═════════════════╧════════╧═════════════════╧═════════════════╧═════════════════╛

And you can verify devices variables:

$ ocli calm variable list device -r <device_id>
$ ocli calm variable list device -r 66fa8912b4c08769d7c6a140
╒════════════════╤════════════════╤═══════════════════════════╤══════════════════════════╤═════════════╤═════════════╤═════════════════╤════════╤═════════════════╤═════════════════╤═════════════════╕
│ created_at     │ updated_at     │ key                       │ value                    │ description │ kind        │ resource_id     │ masked │ expand_referenc │ id              │ overridden_vari │
│                │                │                           │                          │             │             │                 │        │ e               │                 │ able            │
├────────────────┼────────────────┼───────────────────────────┼──────────────────────────┼─────────────┼─────────────┼─────────────────┼────────┼─────────────────┼─────────────────┼─────────────────┤
│ 2024-10-01     │ 2024-10-01     │ WM_GW_ID                  │ btdoffice                │ gateway id  │ composition │ 66fa8912b4c0876 │ false  │ false           │ 66fbb7bef951624 │                 │
│ 08:50:06+00:00 │ 08:50:06+00:00 │                           │                          │             │             │ 9d7c6a140       │        │                 │ 647fa8e38       │                 │
╘════════════════╧════════════════╧═══════════════════════════╧══════════════════════════╧═════════════╧═════════════╧═════════════════╧════════╧═════════════════╧═════════════════╧═════════════════╛

Step 9: List All Composition Versions

List all versions of your composition. This helps you identify the correct version to release (more: List).

$ ocli calm composition-version list <composition_id>
$ ocli calm composition-version list 66fa8ae6aa1888819c7d9662
╒════════════════╤════════════════╤══════════════════════════╤═════════╤═════════════╤══════════════╤══════════════════════════╤══════════════════╕
│ created_at     │ updated_at     │ composition_id           │ version │ description │ compose_file │ id                       │ composition_name │
├────────────────┼────────────────┼──────────────────────────┼─────────┼─────────────┼──────────────┼──────────────────────────┼──────────────────┤
│ 2024-09-30     │ 2024-09-30     │ 66fa8ae6aa1888819c7d9662 │ 1.0.0   │ This is an  │ OK           │ 66fa9e1964270b4e5ea32f75 │ Wirepas for      │
│ 12:48:25+00:00 │ 12:48:25+00:00 │                          │         │ initial     │              │                          │ carrots app      │
│                │                │                          │         │ version of  │              │                          │                  │
│                │                │                          │         │ Wirepas for │              │                          │                  │
│                │                │                          │         │ carrots app │              │                          │                  │
╘════════════════╧════════════════╧══════════════════════════╧═════════╧═════════════╧══════════════╧══════════════════════════╧══════════════════╛

Step 10: Release Your Composition

Finally, release the desired composition version to your fleet. This will deploy the services across the devices in the fleet (more: Release).

$ ocli calm release create -v <composition_version_id> -f <fleet_id>
$ ocli calm release create -v 66fa9e1964270b4e5ea32f75 -f 66fa8912b4c08769d7c6a140
Release successfully requested.
Check your fleet in a few minutes.

Step 11: Check The Release

After few minutes let’s check if the release succeeded. Use the fleet get command (more: Get).

$ ocli calm fleet get <fleet_id>
$ ocli calm fleet get 66fa8912b4c08769d7c6a140
╒════════════════╤════════════════╤═════════╤═════════════╤════════════════════════════╤════════════════════════════╤══════════════════════════╤═══════════════╤══════════════════╕
│ created_at     │ updated_at     │ name    │ description │ devices                    │ compositions               │ id                       │ status        │ deployment_info  │
├────────────────┼────────────────┼─────────┼─────────────┼────────────────────────────┼────────────────────────────┼──────────────────────────┼───────────────┼──────────────────┤
│ 2024-09-30     │ 2024-09-30     │ Carrots │ Fleet of    │ ['66e96c91b053f8dea450c2c0 │ ['66fa9e1964270b4e5ea32f75 │ 66fa8912b4c08769d7c6a140 │ OK            │ {'devices':      │
│ 11:18:42+00:00 │ 11:18:42+00:00 │ fleet   │ carrots     │ - Harry-Test-GW #1',       │ - Wirepas for carrots      │                          │               │ [{'status':      │
│                │                │         │ doing       │ '66e96d25d72d0d4c0ff1962b  │ app:1.0.0']                │                          │               │ 'OK',            │
│                │                │         │ carrots'    │ - Harry-Test-GW #2']       │                            │                          │               │ 'count': 2},     │
│                │                │         │ things.     │                            │                            │                          │               │ {'status':       │
│                │                │         │             │                            │                            │                          │               │ 'TOTAL',         │
│                │                │         │             │                            │                            │                          │               │ 'count': 2}],    │
│                │                │         │             │                            │                            │                          │               │ 'compositions':  │
│                │                │         │             │                            │                            │                          │               │ [{'status':      │
│                │                │         │             │                            │                            │                          │               │ 'OK',            │
│                │                │         │             │                            │                            │                          │               │ 'count': 1}]}    │
╘════════════════╧════════════════╧═════════╧═════════════╧════════════════════════════╧════════════════════════════╧══════════════════════════╧═══════════════╧══════════════════╛

You Wirepas application is running!

Note

If you are facing any problems or have suggestions please contact us through our Customer Portal.

Next steps

Next, you can Configuring Sink via CLI on Gateway.