Constrained Application Protocol using Node JS
Constrained application protocol is shortly called as CoAP and its based on Request Response Model where a browser or application will be requesting for a resource from the server. The resource would be a sensor reading like temperature, humidity, heartbeat, etc.
For complete explanation of the source code and the demo please go through the video:
CoAP can be developed with many programming or scripting languages like:
- Python
- Node JS
- Contiki OS
In this article, I will be writing or explaining the source code of CoAP using Node JS and this can be demonstrated with a plugin name called Cu Plugin for Chrome Browser. There are many CoAP client available like coap, libcoap, etc in Linux OS and Cu Plugin being a easier and common approach for a client.
You can refer the complete
This program first starts the CoAP Server and accept only the JSON format headers, else it will throw the error number '4.06'.
Based on the request URL (req.url), the incoming requests will be handled by the server and responded with json based sensor values namely: for example, for "temperature", the server respond with {'temperature':988}. The values generated her is baaed on a random integer, in case of real sensor attached to the sensor, it can send those information as well.
Here is the source code of the CoAP program. The name of the file is coap.js
var coap = require('coap');
function randomInt(min,max) {
return (Math.floor(Math.random()*(max-min) + min));
}
var portNumber=5683;
coap.createServer(function (req,res) {
console.info('CoAP device got a request from %s', req.url);
if(req.headers['Accept'] != 'application/json') {
res.code='4.06';
return res.end();
}
switch(req.url) {
case "/co2":
displayOutput(res, {'Co2':randomInt(0,1000)});
break;
case "/temperature":
displayOutput(res, {'Temperature':randomInt(-10,50)});
break;
case "/humidity":
displayOutput(res, {'Humidity':randomInt(0,100)});
break;
default:
displayOutput(res);
}
}).listen(portNumber);
console.log('CoAP Server is started at port Number 5683');
function displayOutput (res,content) {
if(content) {
res.setOption('Content-Format','application/json');
res.code='2.05';
res.end (JSON.stringify(content));
} else {
res.code='4.04';
res.end();
}
}
//End of Program
To install the packages in Linux, here is the command
$ sudo apt update
$ sudo apt install nodejs npm
$ npm install coap
The above program can be run using the command
$ node coap.js
The request are
coap://localhost:5683/co2
coap://localhost:5683/temperature
coap://localhost:5683/humidity
The following will be the output
{'Co2':899}
{'Temperature':45}
{'Humidity':67}
This will start the server and the client can browse the server through the plugin called Cu plugin in Google Chrome Browser. There is a small work around to do the customisation. Please follow the video for enabling the Cu plugin in Google Chrome browser.
Here is the output screen shot of the above request.
CoAP Client (Cu) plugin
Comments
Post a Comment