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 difference)

Revision as of 07:48, 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.

Sample Node.js server

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}/`);
});