milesight-powermeter-api
v2025.8.22-0
Published
Milesight Powermeter API is an internal tool accessible on backend. The API allows detail retrieval and command sending to its powermeters.
Readme
Milesight Powermeter Api
Description
The Milesight Powermeter API is an internal tool exclusively accessible to our backend team. It serves as a command hub for both single-phase and three-phase Milesight powermeters using lorawan downlink commands. The API provides separate endpoints for managing single-phase CT10x powermeters and three-phase CT3xx powermeters with independent functionality.
Requirements
- RabbitMQ 3.9.11
- Node 20.15.0
Installation
$ npm installConfiguration
AWS_ACCESS_KEY_ID
- AWS Access Key ID
AWS_SECRET_ACCESS_KEY
- AWS Secret Key
NODE_ENV
- Node environment
LOG_LEVEL
- value can be debug, info, error and verbose.
MILESIGHT_POWERMETER_API_PORT
- configurable host port and has a default of
9059
- configurable host port and has a default of
AMQP_HOST
- rabbitmq host
AMQP_USERNAME
- rabbitmq user
AMQP_PASSWORD
- rabbitmq password
AMQP_PORT
- rabbitmq port
Running the app
# development
$ npm run start
# watch mode
$ npm run start:dev
# production mode
$ npm run start:prodTest
# unit tests
$ npm run test
# e2e tests
$ npm run test:e2e
# test coverage
$ npm run test:covREST API
Single-Phase Powermeter Endpoints
Get single-phase lorawan powermeter list
GET powermeter/milesightQuery Parameters:
maxResult(optional) - Range from 1-255 (default is 25)nextToken(optional) - Token for the succeeding page/request
Response: Returns a list of single-phase Milesight powermeters with AWS IoT Thing details.
Reboot single-phase powermeter
POST powermeter/milesight/reboot
Body: {
deviceEui: string;
serialNumber?: string;
}Parameters:
deviceEui(required) - Device EUI of the single-phase Milesight powermeterserialNumber(optional) - Serial number of the single-phase Milesight powermeter
Response: Returns success message and boolean result indicating if the reboot command was sent successfully.
Set device interval for single-phase powermeter
POST powermeter/milesight/interval
Body: {
deviceEui: string;
serialNumber?: string;
interval: number;
}Parameters:
deviceEui(required) - Device EUI of the single-phase Milesight powermeterserialNumber(optional) - Serial number of the single-phase Milesight powermeterinterval(required) - Interval value in minutes (1-1440)
Response: Returns success message and boolean result indicating if the interval configuration was sent successfully.
Three-Phase Powermeter Endpoints
Get three-phase lorawan powermeter list
GET powermeter/three-phase/milesightQuery Parameters:
maxResult(optional) - Range from 1-255 (default is 25)nextToken(optional) - Token for the succeeding page/request
Response:
Returns a list of three-phase Milesight powermeters with AWS IoT Thing details. Uses thingType: 'three-phase-powermeter-milesight' to filter devices.
Reboot three-phase powermeter WIP
POST powermeter/three-phase/milesight/reboot
Body: {
deviceEui: string;
serialNumber?: string;
}Parameters:
deviceEui(required) - Device EUI of the three-phase Milesight powermeterserialNumber(optional) - Serial number of the three-phase Milesight powermeter
Response: Returns success message and boolean result indicating if the reboot command was sent successfully to the three-phase device.
Set device interval for three-phase powermeter WIP
POST powermeter/three-phase/milesight/interval
Body: {
deviceEui: string;
serialNumber?: string;
interval: number;
}Parameters:
deviceEui(required) - Device EUI of the three-phase Milesight powermeterserialNumber(optional) - Serial number of the three-phase Milesight powermeterinterval(required) - Interval value in minutes (1-1440)
Response: Returns success message and boolean result indicating if the interval configuration was sent successfully to the three-phase device.
API Architecture
The API is structured with separate controllers and services for single-phase and three-phase powermeters:
- Single-Phase: Uses
MilesightControllerandMilesightServicewiththingType: 'powermeter-milesight' - Three-Phase: Uses
ThreePhaseMilesightControllerandThreePhaseMilesightServicewiththingType: 'three-phase-powermeter-milesight'
This separation ensures clean isolation of functionality and allows for independent management of different powermeter types.
