diff --git a/ioBroker-Card-Definitionen-(Seiten).md b/ioBroker-Card-Definitionen-(Seiten).md index f4df8dd..2d2de2a 100644 --- a/ioBroker-Card-Definitionen-(Seiten).md +++ b/ioBroker-Card-Definitionen-(Seiten).md @@ -481,6 +481,57 @@ let CardChartExample: PageChart = [Zum Blockly](https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/Blockly/CardChart.xml) +**Javascript für History Adapter** +``` +var sourceDP = 'alias.0.Wohnzimmer.Heizung.ACTUAL'; +var targetDP = '0_userdata.0.Test.chartTest'; +var rangeHours = 24; +var maxXAchsisTicks = 4; +var storeInstance = 'history.0'; + +on({id: sourceDP, change: "any"}, async function (obj) { + sendTo(historyInstance, 'getHistory', { + id: sourceDP, + options: { + start: Date.now() - (60 * 60 * 1000 * rangeHours), + end: Date.now(), + count: rangeHours, + limit: rangeHours, + aggregate: 'average' + } + }, function (result) { + var cardChartString = "" + + var stepXAchsis = rangeHours / maxXAchsisTicks; + + for (var i = 0; i < rangeHours; i++){ + var deltaHour = rangeHours - i + + var targetDate = new Date(Date.now() - (deltaHour * 60 * 60 * 1000)); + + //Check history items for requested hours + for (var j = 0, targetValue = 0; j < result.result.length; j++) { + var valueDate = new Date(result.result[j].ts); + var value = (Math.round(result.result[j].val * 10) / 10 ) + + if (valueDate > targetDate){ + if ((targetDate.getHours() % stepXAchsis) == 0){ + cardChartString += targetValue + '^' + targetDate.getHours() + ':00' + '~'; + } else { + cardChartString += targetValue + '~'; + } + break; + } else { + targetValue = value; + } + } + } + cardChartString = cardChartString.substring(0,cardChartString.length-1); + setState(targetDP, cardChartString, true); + }); + +}); +```