Skip to content

Instantly share code, notes, and snippets.

@wwerther
Created June 23, 2023 20:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wwerther/259b433418fee04906504cd14c50c972 to your computer and use it in GitHub Desktop.
Save wwerther/259b433418fee04906504cd14c50c972 to your computer and use it in GitHub Desktop.
IOBroker - Trigger Awattar 2 Influx
const axios = require('axios').default;
const influxDbInstance = 'influxdb.0';
const token = 'xxxxxxxxxxxxxxxxxxxxxx';
const measurement = 'energy-stats';
const loggingTemplate = {
'awattar.0.Rawdata': 'awattar',
//{"object":"list","data":[{"start_timestamp":1687392000000,"end_timestamp":1687395600000,"marketprice":115.49,"unit":"Eur/MWh"},{"start_timestamp":1687395600000,"end_timestamp":1687399200000,"marketprice":111.34,"unit":"Eur/MWh"},{"start_timestamp":1687399200000,"end_timestamp":1687402800000,"marketprice":107.02,"unit":"Eur/MWh"},{"start_timestamp":1687402800000,"end_timestamp":1687406400000,"marketprice":115.75,"unit":"Eur/MWh"},{"start_timestamp":1687406400000,"end_timestamp":1687410000000,"marketprice":137.62,"unit":"Eur/MWh"},{"start_timestamp":1687410000000,"end_timestamp":1687413600000,"marketprice":152.72,"unit":"Eur/MWh"},{"start_timestamp":1687413600000,"end_timestamp":1687417200000,"marketprice":153.94,"unit":"Eur/MWh"},{"start_timestamp":1687417200000,"end_timestamp":1687420800000,"marketprice":130.12,"unit":"Eur/MWh"},{"start_timestamp":1687420800000,"end_timestamp":1687424400000,"marketprice":116,"unit":"Eur/MWh"},{"start_timestamp":1687424400000,"end_timestamp":1687428000000,"marketprice":107.74,"unit":"Eur/MWh"},{"start_timestamp":1687428000000,"end_timestamp":1687431600000,"marketprice":106.72,"unit":"Eur/MWh"},{"start_timestamp":1687431600000,"end_timestamp":1687435200000,"marketprice":106.79,"unit":"Eur/MWh"},{"start_timestamp":1687435200000,"end_timestamp":1687438800000,"marketprice":106.46,"unit":"Eur/MWh"},{"start_timestamp":1687438800000,"end_timestamp":1687442400000,"marketprice":106.81,"unit":"Eur/MWh"},{"start_timestamp":1687442400000,"end_timestamp":1687446000000,"marketprice":108.19,"unit":"Eur/MWh"},{"start_timestamp":1687446000000,"end_timestamp":1687449600000,"marketprice":125.77,"unit":"Eur/MWh"},{"start_timestamp":1687449600000,"end_timestamp":1687453200000,"marketprice":137.3,"unit":"Eur/MWh"},{"start_timestamp":1687453200000,"end_timestamp":1687456800000,"marketprice":157.43,"unit":"Eur/MWh"},{"start_timestamp":1687456800000,"end_timestamp":1687460400000,"marketprice":155,"unit":"Eur/MWh"},{"start_timestamp":1687460400000,"end_timestamp":1687464000000,"marketprice":147.18,"unit":"Eur/MWh"},{"start_timestamp":1687464000000,"end_timestamp":1687467600000,"marketprice":134.34,"unit":"Eur/MWh"},{"start_timestamp":1687467600000,"end_timestamp":1687471200000,"marketprice":120.87,"unit":"Eur/MWh"},{"start_timestamp":1687471200000,"end_timestamp":1687474800000,"marketprice":103.8,"unit":"Eur/MWh"},{"start_timestamp":1687474800000,"end_timestamp":1687478400000,"marketprice":95.2,"unit":"Eur/MWh"},{"start_timestamp":1687478400000,"end_timestamp":1687482000000,"marketprice":91.79,"unit":"Eur/MWh"},{"start_timestamp":1687482000000,"end_timestamp":1687485600000,"marketprice":91.28,"unit":"Eur/MWh"},{"start_timestamp":1687485600000,"end_timestamp":1687489200000,"marketprice":90.94,"unit":"Eur/MWh"},{"start_timestamp":1687489200000,"end_timestamp":1687492800000,"marketprice":94.56,"unit":"Eur/MWh"},{"start_timestamp":1687492800000,"end_timestamp":1687496400000,"marketprice":115.09,"unit":"Eur/MWh"},{"start_timestamp":1687496400000,"end_timestamp":1687500000000,"marketprice":128.94,"unit":"Eur/MWh"},{"start_timestamp":1687500000000,"end_timestamp":1687503600000,"marketprice":130.87,"unit":"Eur/MWh"},{"start_timestamp":1687503600000,"end_timestamp":1687507200000,"marketprice":121.65,"unit":"Eur/MWh"},{"start_timestamp":1687507200000,"end_timestamp":1687510800000,"marketprice":106.27,"unit":"Eur/MWh"},{"start_timestamp":1687510800000,"end_timestamp":1687514400000,"marketprice":98.1,"unit":"Eur/MWh"},{"start_timestamp":1687514400000,"end_timestamp":1687518000000,"marketprice":93,"unit":"Eur/MWh"},{"start_timestamp":1687518000000,"end_timestamp":1687521600000,"marketprice":86.87,"unit":"Eur/MWh"},{"start_timestamp":1687521600000,"end_timestamp":1687525200000,"marketprice":79.98,"unit":"Eur/MWh"},{"start_timestamp":1687525200000,"end_timestamp":1687528800000,"marketprice":79.3,"unit":"Eur/MWh"},{"start_timestamp":1687528800000,"end_timestamp":1687532400000,"marketprice":86.87,"unit":"Eur/MWh"},{"start_timestamp":1687532400000,"end_timestamp":1687536000000,"marketprice":97,"unit":"Eur/MWh"},{"start_timestamp":1687536000000,"end_timestamp":1687539600000,"marketprice":107.49,"unit":"Eur/MWh"},{"start_timestamp":1687539600000,"end_timestamp":1687543200000,"marketprice":129.66,"unit":"Eur/MWh"},{"start_timestamp":1687543200000,"end_timestamp":1687546800000,"marketprice":137.1,"unit":"Eur/MWh"},{"start_timestamp":1687546800000,"end_timestamp":1687550400000,"marketprice":134.99,"unit":"Eur/MWh"},{"start_timestamp":1687550400000,"end_timestamp":1687554000000,"marketprice":130.68,"unit":"Eur/MWh"},{"start_timestamp":1687554000000,"end_timestamp":1687557600000,"marketprice":122.32,"unit":"Eur/MWh"}],"url":"/de/v1/marketdata"}
}
async function start() {
const influxDbInstanceConfig = await getObjectAsync(`system.adapter.${influxDbInstance}`);
const protocol = influxDbInstanceConfig.native.protocol;
const host = influxDbInstanceConfig.native.host;
const port = influxDbInstanceConfig.native.port;
const org = influxDbInstanceConfig.native.organization;
const bucket = influxDbInstanceConfig.native.dbname;
console.log(`Starting "${measurement}" logging to ${protocol}://${host}:${port} into bucket "${bucket}" by org ${org}`);
on({ id: Object.keys(loggingTemplate), change: 'ne' }, async (obj) => {
const key = loggingTemplate[obj.id];
// Update value in loggingObj
const json = JSON.parse(obj.state.val);
let influxData = "";
// Iterate through the data
for(let i = 0; i < json.data.length; i++){
// Migrate the start time field to Nanoseconds
const timeStamp = json.data[i].start_timestamp+"000000";
// Get the market price field and parse it into a float
let marketprice = parseFloat(json.data[i].marketprice);
// Transform the MWh price into a kWh price and restrict the digits
//let marketpriceAsKWh = (marketprice/1000).toFixed(3);
// Now add the result to the data base string
influxData += "energie,quelle="+ key + " "
// excl. VAT
+ " priceEPEXSpot=" + marketprice
//+ ",marketpriceAsKWh="
//+ marketpriceAsKWh
// "unit": "Eur/MWh"
+ " "
+ timeStamp + "\n";
}
if (influxData) {
//console.log(`Saving "${influxData}" to InfluxDB @ ${protocol}://${host}:${port}/`);
axios.post(`${protocol}://${host}:${port}/api/v2/write?bucket=${bucket}&org=${org}`, influxData, {
headers: {
'Content-Type': 'text/plain',
'Authorization': `Token ${token}`
}
}).catch(err => {
console.error(err);
});
}
});
}
start();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment