Skip to content

An npm package for Node.js that provides an API to control a router node in a BLE mesh network via the serial port.

License

Notifications You must be signed in to change notification settings

NordicPlayground/ble-mesh-serial-interface-js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ble-mesh-serial-interface-js

An npm package for Node.js that provides an API to control a router node in a BLE mesh network via the serial port.

Installation

npm install ble-mesh-serial-interface-js

Usage

'use strict';

const BLEMeshSerialInterface = require('./BLEMeshSerialInterface');

const MESH_ACCESS_ADDR = 0x8E89BED6;
const MESH_INTERVAL_MIN_MS = 100;
const MESH_CHANNEL = 38;

const bleMeshSerialInterfaceAPI = new BLEMeshSerialInterface();

bleMeshSerialInterfaceAPI.openSerialPort('COM45', err => {
  bleMeshSerialInterfaceAPI.init(MESH_ACCESS_ADDR, MESH_INTERVAL_MIN_MS, MESH_CHANNEL, err => {
    if (err) {
      console.log(err);
    }
    console.log('device initialized');
    bleMeshSerialInterfaceAPI.valueSet(0, new Buffer([0x00, 0x01, 0x02]), err => {
      if (err) {
        console.log(err);
      }
      console.log('valueSet() handle = 0, value = [0, 1, 2]');
      bleMeshSerialInterfaceAPI.valueGet(0, (err, res) => {
        if (err) {
          console.log(err);
        }
        console.log('valueGet() res: ', res);
        bleMeshSerialInterfaceAPI.radioReset(err => {
          if (err) {
            console.log(err);
          }
          console.log('device reset');
        });
      });
    });
  });
});
'use strict';

const BLEMeshSerialInterface = require('./BLEMeshSerialInterface');

const FIRST_COM_PORT = 'COM45';
const OPTIONAL_SECOND_COM_PORT = 'COM46';

const bleMeshSerialInterfaceAPI = new BLEMeshSerialInterface();

bleMeshSerialInterfaceAPI.openSerialPort('COM45', err => {
  if (err) {
    console.log(err);
  }
  const buf = new Buffer([0x01]);

  ble.echo(buf, (err, res) => {
    if (err) {
      console.log(err);
    }
    ble.openSerialPort(OPTIONAL_SECOND_COM_PORT, err => {
      if (err) {
        console.log(err);
      }
      ble.echo(buf, (err, res) => {
        if (err) {
          console.log(err);
        }
      });
    });
  });
});

API

TODO: Improve this.

BLEMeshSerialInterface is defined in 'index.js' and it has public methods for interfacing with the ble mesh device and opening/closing/writing the serial port. It also emits events on specific serial port events and ble mesh events. For now, see /* API Methods / and / nRF Open Mesh Serial Interface */ in 'index.js.' For info about the events BLEMeshSerialInterface emits, search 'index.js' for 'this.emit'

  • Only one serial port can be opened per instance of BLEMeshSerialInterface. If you have COM1 opened, and then call openSerialPort(COM2), COM1 will be automatically closed.
  • The constructor returns immediately, then to use any commands that send over serial you must explicitly call openSerialPort.

Tests

npm test

Contributing

In lieu of a formal style guide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code.

About

An npm package for Node.js that provides an API to control a router node in a BLE mesh network via the serial port.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages