Hallo,
hier mal mein (erstes) Script, um Daten bei openSenseMap.org hochzuladen.
Wer Außentemperatur, Luftfeuchte, Niederschlag und andere Werte im iobroker als Datenpunkte hat, kann diese mit dem Script bei openSenseMap hochladen.
Man benötigt einen Account bei openSenseMap und muss darin eine senseBox registrieren. Dabei definiert man welche Werte erfasst werden sollen (Temp,Luftfeuchte,…).
Im Dashboard unter Script kann man die SENSEBOX_ID und die IDs der Sensoren auslesen.
Im Script muss folgendes ergänzt werden:
SENSEBOX_ID
ARRAY_ID
Array_Objects
Das Scriptbeispiel ist hat hier vier Sensoren.
// Upload data to opensensemap
// https://opensensemap.org/
var http = require('http');
var server = "ingress.opensensemap.org";
// senseBox ID
// hier aendern!!
var SENSEBOX_ID = "SENSEBOX_ID";
// Array of Sensor_IDs
// hier aendern!!
var ARRAY_ID = [ "Sensor_ID1" ,
"Sensor_ID2" ,
"Sensor_ID3" ,
"Sensor_ID4" ];
// Array of Dataobjects
// hier aendern!!
var Array_Objects = [ "javascript.0.Messdaten.xxxxx1" ,
"javascript.0.Messdaten.xxxxx2" ,
"javascript.0.Messdaten.xxxxx3" ,
"javascript.0.Messdaten.xxxxx4" ];
var optionsTemplate = {
host: server,
port: 80,
path: null,
method: 'POST',
headers: {
'Content-Type': 'application/json;charset=UTF-8',
'Connection': 'close'
}
};
function httpPost(options)
{
log('INFO: OpenSenseMap Start' , 'info');
var dataTemplate = "";
for (i = 0; i < ARRAY_ID.length; i++)
{
optionsTemplate.path = "/boxes/" + SENSEBOX_ID + "/" + ARRAY_ID[i] ;
dataTemplate = '{ "value": ' + getState(Array_Objects[i]).val + ' }';
log('path: ' + optionsTemplate.path , 'info');
log('data: ' + dataTemplate , 'info');
httpSaveData(options, dataTemplate );
}
}
function httpSaveData(options, data )
{
options.headers['Content-Length'] = data.length;
var req = http.request(options, function(res) {
log('http Status: ' + res.statusCode);
log('HEADERS: ' + JSON.stringify(res.headers), (res.statusCode != 201 ? 'warn' : 'info'));
var bodyChunks = [];
res.on('data', function(chunk) {
bodyChunks.push(chunk);
}).on('end', function() {
var body = Buffer.concat(bodyChunks);
log('body: ' + body);
});
});
req.on('error', function(e) {
log('ERROR: ' + e.message, 'warn');
});
req.write( data ) ;
req.end();
}
// Alle 5 Minuten
schedule("*/5 * * * *", function(){ httpPost(optionsTemplate)});
//httpPost(optionsTemplate );
Gruß
Harry[/i][/i]