Statistics Export via POST: Difference between revisions

From Allegro Network Multimeter Manual
Jump to navigation Jump to search
Access restrictions were established for this page. If you see this message, you have no access to this page.
(Created page with "The Statistics Export allows querying the API of the Allegro Network Multimeter and transmit JSON results to a remote server via HTTP POST requests. The API path can be determ...")
 
No edit summary
Line 11: Line 11:
This will generate a '''POST /interface-stats-for-mm-1234''' request to '''10.0.0.1''' every minute and send the interface statistics of the multimeter.
This will generate a '''POST /interface-stats-for-mm-1234''' request to '''10.0.0.1''' every minute and send the interface statistics of the multimeter.


==== Sample Node.js server ====
== Example receiving server ==
 
To test the correct setup, a simple example server using Node.js can be used to receive the POST requests and show the transmitted data.


The following script is a basic '''Node.js''' server (with minimal error handling) which reads all POST requests and stores them to a file:
The following script is a basic '''Node.js''' server (with minimal error handling) which reads all POST requests and stores them to a file:

Revision as of 07:50, 23 April 2020

The Statistics Export allows querying the API of the Allegro Network Multimeter and transmit JSON results to a remote server via HTTP POST requests. The API path can be determined by using a debug console of the browser on any of the modules of the Allegro Network Multimeter.

The configuration can be found in the menu "Settings -> Remote access & export -> Statistics export".

Example:

This will generate a POST /interface-stats-for-mm-1234 request to 10.0.0.1 every minute and send the interface statistics of the multimeter.

Example receiving server

To test the correct setup, a simple example server using Node.js can be used to receive the POST requests and show the transmitted data.

The following script is a basic Node.js server (with minimal error handling) which reads all POST requests and stores them to a file:

const http = require('http');
const fs = require('fs');

const listenAddress = '0.0.0.0';
const port = 3000;

let fileCount = 1;

const server = http.createServer((req, res) => {

  if (req.method != 'POST') {
        res.statusCode = 405;
        res.end();
        return;
  }

  let id = fileCount++;

  let outputFilename = `${req.url.substring(1).replace(/\//g, '_')}_${id}.json`;

  console.log(`${id}: ${req.method} ${req.url} => ${outputFilename}`);

  let data = [];

  req.on('data', chunk => data.push(chunk));

  req.on('end', () => {
        fs.writeFile(outputFilename, data, (err) => {
            if (err != null) {
                 console.log(err);
                 res.statusCode = 500;
            } else {
                 res.statusCode = 200;
            }
            res.end();
        });
  });
});

server.listen(port, listenAddress, () => {
  console.log(`Server running at http://${listenAddress}:${port}/`);
});