mirror of
https://github.com/joBr99/nspanel-lovelace-ui.git
synced 2026-02-27 21:02:14 +01:00
Updated ioBroker Card Definitionen (Seiten) (markdown)
@@ -541,6 +541,123 @@ on({id: sourceDP, change: "any"}, async function (obj) {
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
**Seitendefinition**
|
||||||
|
|
||||||
|
> Der Alias unter der PageItem.id ist ein Alias vom Gerätetyp: Info
|
||||||
|
|
||||||
|
```
|
||||||
|
let CardLChartExample = <PageChart>
|
||||||
|
{
|
||||||
|
"type": "cardLChart",
|
||||||
|
"heading": "Büro Temperatur",
|
||||||
|
"useColor": true,
|
||||||
|
'items': [<PageItem>{
|
||||||
|
id: 'alias.0.Haus.Erdgeschoss.Buero.Charts.Temperatur',
|
||||||
|
yAxis: 'Temperatur [°C]',
|
||||||
|
yAxisTicks: [160,170,180,190,200,210,220,230],
|
||||||
|
onColor: Yellow
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
**Javascript für Influx2**
|
||||||
|
```
|
||||||
|
const Debug = true;
|
||||||
|
|
||||||
|
const NSPanel_Path = '0_userdata.0.NSPanel.'
|
||||||
|
const Path = NSPanel_Path + "Influx2NSPanel.cardLChart.";
|
||||||
|
const PathSensor = Path + "buero_temperature";
|
||||||
|
|
||||||
|
const Sensor = 'deconz.0.Sensors.65.temperature'
|
||||||
|
|
||||||
|
const numberOfHoursAgo = 24;
|
||||||
|
const xAxisTicksEveryM = 60;
|
||||||
|
const xAxisLabelEveryM = 240;
|
||||||
|
|
||||||
|
const InfluxInstance = 'influxdb.1'
|
||||||
|
|
||||||
|
let coordinates = '';
|
||||||
|
|
||||||
|
createState(PathSensor, 0, {
|
||||||
|
name: 'SensorGrid',
|
||||||
|
desc: 'Sensor Values [~<time>:<value>]*',
|
||||||
|
type: 'string',
|
||||||
|
role: 'value',
|
||||||
|
});
|
||||||
|
|
||||||
|
on({ id: Sensor, change: 'any' }, async function (obj) {
|
||||||
|
|
||||||
|
let query =[
|
||||||
|
'from(bucket: "iobroker")',
|
||||||
|
'|> range(start: -' + numberOfHoursAgo + 'h)',
|
||||||
|
'|> filter(fn: (r) => r["_measurement"] == "' + Sensor+ '")',
|
||||||
|
'|> filter(fn: (r) => r["_field"] == "value")',
|
||||||
|
'|> drop(columns: ["from", "ack", "q"])',
|
||||||
|
'|> aggregateWindow(every: 1h, fn: last, createEmpty: false)',
|
||||||
|
'|> map(fn: (r) => ({ r with _rtime: int(v: r._time) - int(v: r._start)}))',
|
||||||
|
'|> yield(name: "_result")'].join('');
|
||||||
|
|
||||||
|
if (Debug) console.log('Query: ' + query);
|
||||||
|
|
||||||
|
sendTo(InfluxInstance, 'query', query, function (result) {
|
||||||
|
if (result.error) {
|
||||||
|
console.error(result.error);
|
||||||
|
} else {
|
||||||
|
// show result
|
||||||
|
console.log(result);
|
||||||
|
var numResults = result.result.length;
|
||||||
|
for (var r = 0; r < numResults; r++)
|
||||||
|
{
|
||||||
|
let list = []
|
||||||
|
var numValues = result.result[r].length;
|
||||||
|
|
||||||
|
for (var i = 0; i < numValues; i++)
|
||||||
|
{
|
||||||
|
var time = Math.round(result.result[r][i]._rtime/1000/1000/1000/60)
|
||||||
|
var value = Math.round(result.result[r][i]._value * 10)
|
||||||
|
list.push(time + ":" + value)
|
||||||
|
}
|
||||||
|
|
||||||
|
coordinates = list.join("~");
|
||||||
|
|
||||||
|
if (Debug) console.log(coordinates);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
let timeOut = setTimeout (
|
||||||
|
function () {
|
||||||
|
let ticksAndLabelsList = []
|
||||||
|
var date = new Date();
|
||||||
|
date.setMinutes(0, 0, 0);
|
||||||
|
var ts = Math.round(date.getTime() / 1000);
|
||||||
|
var tsYesterday = ts - (numberOfHoursAgo * 3600);
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
if ((i % xAxisLabelEveryM))
|
||||||
|
ticksAndLabelsList.push(i);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var currentDate = new Date(x * 1000);
|
||||||
|
// Hours part from the timestamp
|
||||||
|
var hours = "0" + currentDate.getHours();
|
||||||
|
// Minutes part from the timestamp
|
||||||
|
var minutes = "0" + currentDate.getMinutes();
|
||||||
|
// Seconds part from the timestamp
|
||||||
|
var seconds = "0" + currentDate.getSeconds();
|
||||||
|
var formattedTime = hours.substr(-2) + ':' + minutes.substr(-2);
|
||||||
|
ticksAndLabelsList.push(String(i) + "^" + formattedTime);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (Debug) console.log("Ticks & Label: " + ticksAndLabelsList);
|
||||||
|
if (Debug) console.log("Coordinates: " + coordinates)
|
||||||
|
setState(PathSensor, ticksAndLabelsList.join("+") + '~' + coordinates, true);
|
||||||
|
},
|
||||||
|
1500
|
||||||
|
) ;
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
# popUpNotify
|
# popUpNotify
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user