npm

@nordicsemiconductor/coiote-azure-converter
TypeScript icon, indicating that this package has built-in type declarations

1.0.10 • Public • Published

Coiote LwM2M JSON encoding to nRF Asset Tracker LwM2M JSON encoding npm version

Test and Release Renovate @commitlint/config-conventional code style: prettier ESLint: TypeScript

Convert the LwM2M JSON encoding written by AVSystem's Coiote Azure integration to nRF Asset Tracker's LwM2M JSON encoding.

AssetTrackerv2 firmware to LwM2M Asset Tracker v2 through Coiote-Azure objects version mapping

Name AssetTrackerv2 Firmware Coiote-Azure LwM2M Asset Tracker v2
Device 3:1.2@1.1 3:1.2@1.1 3:1.2@1.1
Connectivity Monitoring 4:1.3@1.1 4:1.3@1.1 4:1.3@1.1
Location 6 6 6
Temperature 3303:1.1 3303 3303:1.1
Humidity 3304:1.1 3304 3304:1.1
Pressure 3323:1.1 3323 3323:1.1
Config 50009 50009 50009

Where ":" indicates the object version and "@" indicates the LwM2M version. if not present, values will be the default option. Default LwM2M version is 1.0. Default object version is 1.0.

Installation

npm install --save-exact

Running the tests

After cloning the repository:

npm ci
npm test

Example usage

import { converter } from './converter.js'
const deviceTwin = {} // ... full device twin
const result = await converter(deviceTwin)
console.log(result)

See ./src/example.ts for more details.

Expected input

Result of the integration between Coiote and Azure.

{
  "deviceId": "urn:imei:000000000000008",
  "etag": "AAAAAAAAAAE=",
  "deviceEtag": "MTMwNTk1MzI2",
  "status": "enabled",
  "statusUpdateTime": "0001-01-01T00:00:00Z",
  "connectionState": "Connected",
  "lastActivityTime": "0001-01-01T00:00:00Z",
  "cloudToDeviceMessageCount": 0,
  "authenticationType": "sas",
  "x509Thumbprint": {
    "primaryThumbprint": null,
    "secondaryThumbprint": null
  },
  "modelId": "",
  "version": 7,
  "properties": {
    "desired": {
      "$metadata": {
        "$lastUpdated": "2023-07-05T14:35:14.759071Z"
      },
      "$version": 1
    },
    "reported": {
      "lwm2m": {
        "3": {
          "0": {
            "0": {
              "value": "Nordic Semiconductor ASA"
            },
            "1": {
              "value": "Thingy:91"
            },
            "2": {
              "value": "351358815340515"
            },
            "3": {
              "value": "22.8.1+0"
            },
            "7": {
              "0": {
                "value": 80
              },
              "attributes": {
                "dim": "1"
              }
            },
            "11": {
              "0": {
                "value": 0
              },
              "attributes": {
                "dim": "1"
              }
            },
            "13": {
              "value": 1675874731
            },
            "16": {
              "value": "UQ"
            },
            "19": {
              "value": "3.2.1"
            }
          }
        },
        "4": {
          "0": {
            "0": {
              "value": 6
            },
            "1": {
              "0": {
                "value": 6
              },
              "1": {
                "value": 7
              },
              "attributes": {
                "dim": "2"
              }
            },
            "2": {
              "value": -85
            },
            "3": {
              "value": 23
            },
            "4": {
              "0": {
                "value": "10.160.120.155"
              },
              "attributes": {
                "dim": "1"
              }
            },
            "8": {
              "value": 34237196
            },
            "9": {
              "value": 2
            },
            "10": {
              "value": 242
            },
            "12": {
              "value": 12
            }
          },
          "attributes": {}
        },
        "6": {
          "0": {
            "0": { "value": -43.5723 },
            "1": { "value": 153.2176 },
            "2": { "value": 2 },
            "3": { "value": 24.798573 },
            "5": { "value": 1665149633 },
            "6": { "value": 5 }
          }
        },
        "3303": {
          "0": {
            "5700": {
              "value": 15
            }
          }
        },
        "3304": {
          "0": {
            "5700": {
              "value": 30
            }
          }
        },
        "3323": {
          "0": {
            "5601": {
              "value": 101697
            },
            "5602": {
              "value": 101705
            },
            "5700": {
              "value": 10
            },
            "5701": {
              "value": "Pa"
            }
          }
        },
        "50009": {
          "0": {
            "0": {
              "value": true
            },
            "2": {
              "value": 120
            },
            "3": {
              "value": 600
            },
            "4": {
              "value": 7200
            },
            "1": {
              "value": 60
            },
            "5": {
              "value": 8.5
            },
            "6": {
              "value": true
            },
            "7": {
              "value": true
            },
            "8": {
              "value": 2.5
            },
            "9": {
              "value": 0.5
            }
          }
        }
      },
      "$metadata": {
        "lwm2m": {}
      }
    },
    "$version": 6
  },
  "capabilities": {
    "iotEdge": false
  }
}

full device twin object here: ./src/deviceTwinExample.json

Expected output

export const output = {
  "6": {
    "0": -43.5723,
    "1": 153.2176,
    "2": 2,
    "3": 24.798573,
    "5": 1665149633,
    "6": 5,
  },
  "50009": {
    "0": true,
    "1": 60,
    "2": 120,
    "3": 600,
    "4": 7200,
    "5": 8.5,
    "6": true,
    "7": true,
    "8": 2.5,
    "9": 0.5,
  },
  "3:1.2@1.1": {
    "0": "Nordic Semiconductor ASA",
    "1": "Thingy:91",
    "2": "351358815340515",
    "3": "22.8.1+0",
    "7": [80],
    "11": [0],
    "13": 1675874731,
    "16": "UQ",
    "19": "3.2.1",
  },
  "4:1.3@1.1": {
    "0": 6,
    "1": [6, 7],
    "2": -85,
    "3": 23,
    "4": ["10.160.120.155"],
    "8": 34237196,
    "9": 2,
    "10": 242,
    "12": 12,
  },
  "3303:1.1": [{ "5518": 1692369551, "5700": 15 }],
  "3304:1.1": [{ "5518": 1692369551, "5700": 30 }],
  "3323:1.1": [
    {
      "5518": 1692369551,
      "5601": 101697,
      "5602": 101705,
      "5700": 10,
      "5701": "Pa",
    },
  ],
};

Architecture decision records (ADRs)

See ./adr.

Package Sidebar

Install

npm i @nordicsemiconductor/coiote-azure-converter

Weekly Downloads

15

Version

1.0.10

License

BSD-3-Clause

Unpacked Size

263 kB

Total Files

79

Last publish

Collaborators

  • aadnekar
  • ken.redergard
  • bencefr
  • bihanssen
  • nordicsemi
  • asset-tracker-cloud-ci
  • chfa.nordicsemi.no