Programming device store

Programming device store

Neuko provides an abstract class of DeviceIdentifierStore to make it flexible for developer to choose on how some parameters is generated.

DeviceIdentifierStore is a class that defines on how the Neuko SDK module retrieves the following parameters:

  1. Account identifier (account_id)
  2. Project identifier (project_id)
  3. Telemetry state schema identifier (schema_id)
  4. Device unique identifier (device_id)

Device identifier

The first 3 identifiers can be retrieve from this procedure and hardcoded into the extension of the DeviceIdentifierStore class.

However device_id may need a generic method to retrieve it from the device. As an example to illustrate this, let’s use OS native UUID/GUID to act as the device identifier.

import { DeviceIdentifierStore } from "@neukolabs/device-sdk-js";

// the following package is for example
import { machineIdSync } from "node-machine-id";

class deviceIdentifier extends DeviceIdentifierStore {
    constructor() {
        super();
    }

    public getAccountId(): string {
        return "acc_someid";
    }

    public getProjectId(): string {
        return "prj_someid";
    }

    public getDeviceSchemaId(): string {
        return "sch_someid";
    }

    /*
       The usage of machine ID is an example to retrieve a UUID from machine
    */
    public getDeviceId(): string {
        return machineIdSync();
    } 
}

 

from neuko.device.identifierStore import DeviceIdentifierStore

class EdgeGatewayDeviceIdentifierStore(DeviceIdentifierStore):
    def getAccountId(self) -> str:
        return 'acc_someid'

    def getProjectId(self) -> str:
        return 'prj_someid'

    def getDeviceSchemaId(self) -> str:
        return 'sch_someid'

    def getDeviceId(self) -> str:
        serialNumber = subprocess.check_output(["cat", "/var/lib/dbus/machine-id"]).decode().strip()
        return serialNumber

 

Scroll to Top