From e157159513a16402bdb3328f5f29ce9e8dbe61a9 Mon Sep 17 00:00:00 2001 From: theknut Date: Mon, 22 Jan 2024 23:01:38 +0100 Subject: [PATCH] docs: update TS script for creating chart states --- ioBroker-Card-Definitionen-(Seiten).md | 168 +++++++++++++------------ 1 file changed, 91 insertions(+), 77 deletions(-) diff --git a/ioBroker-Card-Definitionen-(Seiten).md b/ioBroker-Card-Definitionen-(Seiten).md index 81965ef..6270504 100644 --- a/ioBroker-Card-Definitionen-(Seiten).md +++ b/ioBroker-Card-Definitionen-(Seiten).md @@ -559,7 +559,7 @@ let CardChartExample: PageType = "items": [{ id: 'alias.0.NSPanel_1.cardChart', yAxis: 'Leistung [kW]', - yAxisTicks: [2,4,6,8,10,2,4,6,8,20,2], + yAxisTicks: [2,4,6,8,10,2,4,6,8,20,2], // leave empty for automatic calculation of the y-axis onColor: Yellow }] }; @@ -655,48 +655,54 @@ let CardLChartExample: PageType = }; ``` -Erklärung zum nachfolgenden Beispiel-JS-Script: +Erklärung zum nachfolgenden Beispiel-TS-Script: > **Wichtiger Hinweis und Voraussetzungen:** >Für das Beispiel muss der InfluxDB Adapter installiert sein. Ebenfalls sollte über einen Zeitraum X bereits Sensordaten an eine Infux 2.X DB übertragen worden sein, welche jetzt zum Abruf bereit stehen! -Zu definieren ist der Pfad für den Datenpunkt (im Beispiel 0.userdata.0.NSPanel.Influx2NSPanel.buero_temperature) in den das u.a. JS-Script die aufbereiteten Daten für das NSPanel schreiben kann. Für das Beispiel wurde ein Datenpunkt (deconz.0.Sensors.65.temperature) aus dem DeConz-Adapter mit einem Zigbee-Temperatursensor gewählt. +Zu definieren ist der Pfad für den Datenpunkt (im Beispiel 0.userdata.0.NSPanel.Influx2NSPanel.buero_temperature) in den das u.a. TS-Script die aufbereiteten Daten für das NSPanel schreiben kann. Für das Beispiel wurde ein Datenpunkt (deconz.0.Sensors.65.temperature) aus dem DeConz-Adapter mit einem Zigbee-Temperatursensor gewählt. **Bei Bedarf kann das Query angepasst werden:** Es ist darauf zu achten, die Anzahl an Werten aus der Datenbank möglichst gering zu halten. Im nachfolgenden Beispiel wurden diese nochmals aggregiert. Die Summe an Zeichen für das Payload an die HMI des NSPanels ist begrenzt. Falls zu viele Werte verarbeitet werden, wird der Payload von der HMI gekürzt und die folge wäre eine schwarze Seite resultierend aus einem Fehlerzustand. -## **Javascript für Influx2** -```javascript -const Debug = true; +## **TypeScript für Influx2** +```typescript +const Debug = false; -const NSPanel_Path = '0_userdata.0.NSPanel.'; +const NSPanel_Path = '0_userdata.0.NSPanel.1.'; const Path = NSPanel_Path + 'Influx2NSPanel.cardLChart.'; -const PathSensor = Path + 'buero_temperature'; - -const Sensor = 'deconz.0.Sensors.65.temperature'; - +const InfluxInstance = 'influxdb.1'; +const influxDbBucket = 'iobroker'; const numberOfHoursAgo = 24; const xAxisTicksEveryM = 60; const xAxisLabelEveryM = 240; -const InfluxInstance = 'influxdb.0'; -const BucketName: string = 'storage_short'; +// this records holds all sensors and their corresponding states which act as the data source for the charts +// add all sensors which are to be displayed in this script, there is no need to use multiple scripts +const sensors : Record = {}; +/* ↓ Id of the sensor ↓ Id of the data source for the charts */ +sensors['deconz.0.Sensors.65.temperature'] = Path + 'buero_temperature'; +sensors['deconz.0.Sensors.65.humidity'] = Path + 'buero_luftfeuchte'; -let coordinates = ''; +// create data source for NsPanel on script startup +Object.keys(sensors).forEach(async x => { + await generateDateAsync(x, sensors[x]); +}); -createState(PathSensor, 0, { - name: 'SensorGrid', - desc: 'Sensor Values [~