mirror of
https://github.com/joBr99/nspanel-lovelace-ui.git
synced 2026-03-05 11:06:51 +01:00
Updated ioBroker Card Definitionen (Seiten) (markdown)
@@ -580,19 +580,19 @@ Es ist darauf zu achten, die Anzahl an Werten aus der Datenbank möglichst gerin
|
|||||||
|
|
||||||
**Javascript für Influx2**
|
**Javascript für Influx2**
|
||||||
```
|
```
|
||||||
const Debug = false; //Bei Bedarf auf true stellen, um der Datenverarbeitung zur folgen
|
const Debug = true;
|
||||||
|
|
||||||
const NSPanel_Path = '0_userdata.0.NSPanel.'
|
const NSPanel_Path = '0_userdata.0.NSPanel.';
|
||||||
const Path = NSPanel_Path + "Influx2NSPanel.cardLChart.";
|
const Path = NSPanel_Path + 'Influx2NSPanel.cardLChart.';
|
||||||
const PathSensor = Path + "buero_temperature";
|
const PathSensor = Path + 'buero_temperature';
|
||||||
|
|
||||||
const Sensor = 'deconz.0.Sensors.65.temperature' //Datenpunkt, der gespeicherte Daten in der Influx 2.X enthält
|
const Sensor = 'deconz.0.Sensors.65.temperature';
|
||||||
|
|
||||||
const numberOfHoursAgo = 24; // Zeitraum in Stunden in dem die Daten visualisiert werden
|
const numberOfHoursAgo = 24;
|
||||||
const xAxisTicksEveryM = 60; // Striche der Skala an der X-Achse (In diesem Fall alle 60 Minuten)
|
const xAxisTicksEveryM = 60;
|
||||||
const xAxisLabelEveryM = 240; // Uhrzeit-Label der x-Achse (In diesem Fall alle 4 Stunden = 240 Minuten)
|
const xAxisLabelEveryM = 240;
|
||||||
|
|
||||||
const InfluxInstance = 'influxdb.0' //Die Instanz des InfluxDB-Adapters
|
const InfluxInstance = 'influxdb.0';
|
||||||
|
|
||||||
let coordinates = '';
|
let coordinates = '';
|
||||||
|
|
||||||
@@ -608,7 +608,7 @@ on({ id: Sensor, change: 'any' }, async function (obj) {
|
|||||||
let query =[
|
let query =[
|
||||||
'from(bucket: "iobroker")',
|
'from(bucket: "iobroker")',
|
||||||
'|> range(start: -' + numberOfHoursAgo + 'h)',
|
'|> range(start: -' + numberOfHoursAgo + 'h)',
|
||||||
'|> filter(fn: (r) => r["_measurement"] == "' + Sensor + '")',
|
'|> filter(fn: (r) => r["_measurement"] == "' + Sensor+ '")',
|
||||||
'|> filter(fn: (r) => r["_field"] == "value")',
|
'|> filter(fn: (r) => r["_field"] == "value")',
|
||||||
'|> drop(columns: ["from", "ack", "q"])',
|
'|> drop(columns: ["from", "ack", "q"])',
|
||||||
'|> aggregateWindow(every: 1h, fn: last, createEmpty: false)',
|
'|> aggregateWindow(every: 1h, fn: last, createEmpty: false)',
|
||||||
@@ -623,17 +623,17 @@ on({ id: Sensor, change: 'any' }, async function (obj) {
|
|||||||
} else {
|
} else {
|
||||||
// show result
|
// show result
|
||||||
if (Debug) console.log(result);
|
if (Debug) console.log(result);
|
||||||
var numResults = result.result.length;
|
let numResults = result.result.length;
|
||||||
for (var r = 0; r < numResults; r++)
|
for (let r = 0; r < numResults; r++)
|
||||||
{
|
{
|
||||||
let list = []
|
let list = []
|
||||||
var numValues = result.result[r].length;
|
let numValues = result.result[r].length;
|
||||||
|
|
||||||
for (var i = 0; i < numValues; i++)
|
for (let i = 0; i < numValues; i++)
|
||||||
{
|
{
|
||||||
var time = Math.round(result.result[r][i]._rtime/1000/1000/1000/60)
|
let time = Math.round(result.result[r][i]._rtime/1000/1000/1000/60);
|
||||||
var value = Math.round(result.result[r][i]._value * 10)
|
let value = Math.round(result.result[r][i]._value * 10);
|
||||||
list.push(time + ":" + value)
|
list.push(time + ":" + value);
|
||||||
}
|
}
|
||||||
|
|
||||||
coordinates = list.join("~");
|
coordinates = list.join("~");
|
||||||
@@ -646,30 +646,29 @@ on({ id: Sensor, change: 'any' }, async function (obj) {
|
|||||||
let timeOut = setTimeout (
|
let timeOut = setTimeout (
|
||||||
function () {
|
function () {
|
||||||
let ticksAndLabelsList = []
|
let ticksAndLabelsList = []
|
||||||
var date = new Date();
|
let date = new Date();
|
||||||
date.setMinutes(0, 0, 0);
|
date.setMinutes(0, 0, 0);
|
||||||
var ts = Math.round(date.getTime() / 1000);
|
let ts = Math.round(date.getTime() / 1000);
|
||||||
var tsYesterday = ts - (numberOfHoursAgo * 3600);
|
let tsYesterday = ts - (numberOfHoursAgo * 3600);
|
||||||
if (Debug) console.log("Iterate from " + tsYesterday + " to " + ts + " stepsize=" + (xAxisTicksEveryM * 60));
|
if (Debug) console.log('Iterate from ' + tsYesterday + ' to ' + ts + ' stepsize=' + (xAxisTicksEveryM * 60));
|
||||||
for (var x = tsYesterday, i = 0; x < ts; x += (xAxisTicksEveryM * 60), i += xAxisTicksEveryM)
|
for (let x = tsYesterday, i = 0; x < ts; x += (xAxisTicksEveryM * 60), i += xAxisTicksEveryM)
|
||||||
{
|
{
|
||||||
if ((i % xAxisLabelEveryM))
|
if ((i % xAxisLabelEveryM))
|
||||||
ticksAndLabelsList.push(i);
|
ticksAndLabelsList.push(i);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var currentDate = new Date(x * 1000);
|
let currentDate = new Date(x * 1000);
|
||||||
// Hours part from the timestamp
|
// Hours part from the timestamp
|
||||||
var hours = "0" + currentDate.getHours();
|
let hours = "0" + String(currentDate.getHours());
|
||||||
// Minutes part from the timestamp
|
// Minutes part from the timestamp
|
||||||
var minutes = "0" + currentDate.getMinutes();
|
let minutes = "0" + String(currentDate.getMinutes());
|
||||||
// Seconds part from the timestamp
|
let formattedTime = hours.slice(-2) + ':' + minutes.slice(-2);
|
||||||
var seconds = "0" + currentDate.getSeconds();
|
|
||||||
var formattedTime = hours.substr(-2) + ':' + minutes.substr(-2);
|
|
||||||
ticksAndLabelsList.push(String(i) + "^" + formattedTime);
|
ticksAndLabelsList.push(String(i) + "^" + formattedTime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Debug) console.log("Ticks & Label: " + ticksAndLabelsList);
|
if (Debug) console.log('Ticks & Label: ' + ticksAndLabelsList);
|
||||||
if (Debug) console.log("Coordinates: " + coordinates)
|
if (Debug) console.log('Coordinates: ' + coordinates);
|
||||||
setState(PathSensor, ticksAndLabelsList.join("+") + '~' + coordinates, true);
|
setState(PathSensor, ticksAndLabelsList.join("+") + '~' + coordinates, true);
|
||||||
},
|
},
|
||||||
1500
|
1500
|
||||||
|
|||||||
Reference in New Issue
Block a user