// npm install socket.io-client requestvar socket = require('socket.io-client')('http://api.pioupiou.fr/v1/push');socket.on('connect', function () {socket.emit('subscribe', 'all');});socket.on('measurement', function (data) {require('request').post('http://balisemeteo.com/script-des-balises.php', {form: data })});
// ici en nodejs, mais il doit être possible de faire la même chose en python, java, ou autre langage// ex : https://pypi.python.org/pypi/socketIO-client// créer un répertoire relay-pioupiou, dans lequel enegistrer ce fichier relay-pioupiou.js// installation de nodejs$ apt-get install nodejs npm$ cd ~/relay-pioupiou// installation des dépendances :$ npm install socket.io-client request// execution du code$ nodejs relay-pioupiou.js// ------------------ relay-pioupiou.js --------------------------------// on charge le module "socket.io" (techno de communication normalement utilisée pour faire du temps réel serveur vers web)// puis on ouvre un canal vers l'api push pioupiou, qui déclenchera des évènements lors de la réception des donnéesvar socket = require('socket.io-client')('http://api.pioupiou.fr/v1/push');// on charge le module request servant à appeler un autre serveurvar request = require('request');// quand evenement "connect", on s'abonne aux messages de un ou tous les pioupioussocket.on('connect', function () { socket.emit('subscribe', 'all'); // tous // on peut s'abonner à un ou plusieurs appareils à la fois : //socket.emit('subscribe', '123'); //socket.emit('subscribe', '124'); //socket.emit('subscribe', '125');});// quand événement "measurement", on renvoie la data reçuesocket.on('measurement', function (dataPioupiou) { // on affiche les données recues console.log(dataPioupiou); // on fait correspondre le nom des champs var dataFFVL = { "idBalise": "pioupiou-" + dataPioupiou.station_id, "vitesseVentMoy": dataPioupiou.wind_speed_avg, "vitesseVentMin": dataPioupiou.wind_speed_min, "vitesseVentMax": dataPioupiou.wind_speed_max, "directVentMoy": dataPioupiou.wind_heading, "date": dataPioupiou.date // ATTENTION // ou pour un timestamp unix : (new Date(dataPioupiou.date)).getTime()/1000 }; // ATTENTION : il faut que le serveur prenne également en compte le paramètre data.date, car les pioupious sigfox transmettent plusieures mesures à la fois. // Si le serveur attends un message POST request.post('http://balisemeteo.com/script-des-balises.php', {form: dataFFVL }, function(err, response, body) { if(err) { return console.err(err); } console.log("status code: " + response.statusCode); console.log(body); }); // Si le serveur attends un message GET request.get('http://balisemeteo.com/script-des-balises.php', {qs: dataFFVL }, function(err, response, body) { if(err) { return console.err(err); } console.log("status code: " + response.statusCode); console.log(body); });});