Lightweight Message Queuing Network (LwMQN) is an open source project that follows part of OMA LwM2M v1.0 specification to meet the minimum requirements of machine network management.
- LwMQN project provides you with this machine-side @lwmqn/qnode library and a server-side @lwmqn/shepherd library to build your machine network with JavaScript and Node.js easily.
- Server-side library: @lwmqn/shepherd (this module)
- Client-side library: @lwmqn/qnode
- A simple demo webapp
- Communication based on MQTT protocol and Mosca broker.
- Embedded persistence (NeDB) and auto-reloads Client Devices at boot-up.
- Build your IoT network with or without cloud services.
- LwM2M-like interfaces for Client/Server interaction.
- Hierarchical Smart Object data model (IPSO), which leads to a comprehensive and consistent way in describing real-world gadgets.
- Easy to query resources on a Client Device with the URI-style path, and everything has been well-organized to ease the pain for you to create RPC interfaces for your webapps, such as RESTful and websocket-based APIs.
- LwMQN Server is your local machine gateway and application runner. But if you like to let your machines go up cloud, why not? It's Node.js!
- Server: LwMQN server
- Client or Client Device: LwMQN client (machine)
- Shepherd: Class exposed by
require('@lwmqn/shepherd')
- Qnode: Class to create a software endpoint(proxy) of a remote Client Device on the server
- qserver: Instance of Shepherd Class
- qnode: Instance of Qnode Class
Currently Node.js 8.x LTS or higher is required.
$ npm install @lwmqn/shepherd
Shepherd versions / Node.js versions |
8.x LTS |
10.x LTS |
11.x | 12.x LTS |
13.x |
---|---|---|---|---|---|
v0.8.0 | ✔ | ✘ | ✘ | ✘ | ✘ |
const Shepherd = require('@lwmqn/shepherd')
const qserver = new Shepherd() // create a LWMQN server
qserver.on('ready', function () {
console.log('Server is ready.')
// when server is ready, allow devices to join the network within 180 secs
qserver.permitJoin(180)
})
qserver.start(function (err) { // start the sever
if (err) console.log(err)
})
// That's all to start a LwMQN server.
// Now qserver is going to automatically tackle most of the network managing things.
Licensed under MIT.