Spread Sheet

Grundkonzept

Konfiguration

In der Konfiguration wird festgelegt, auf welche Eliona Instanz die Verbindung hergestellt werden soll und welche Reports mit welchem Template erstellt werden.

Eliona Instanz

{"eliona_handler": {
"host": "experimental.eliona.io",
"api": "https://experimental.eliona.io/api/v2", "project_id": 1,
"api_key": "slidfglsadbföabg$$äasfnasilbg"}
}
KonfigurationBeschreibungBeispielBemerkung

host

Adresse der Eliona Instanz ohne HTTPS.

develop.eliona.cloud

Optional. Idealerweise als

.env Variable

api

Adresse der verwendeten API. In diesem Fall ist das immer die /api/v2. Hier mit HTTPS.

https://develop.eliona.cloud

/api/v2

Optional. Idealerweise als

.env Variable

project_id

Projektnummer auf der verwendeten Eliona Instanz. (Diese erhaltet ihr, wenn ihr in den Einstellungen das Projekt bearbeitet und in die Adresszeile schaut.)

Notwendig

api_key

Schlüssel der API für die Verbindung zur Eliona Instanz

...

Optional. Idealerweise als

.env Variable

dbTimeZone

TimeZone der Datenbank.

Europe/Zurich

Optional. Idealerweise als

.env Variable

Reports

Die Konfiguration der Reports befindet sich innerhalb einer Liste. Diese kann also einen oder mehrere Reports enthalten. Jeder Report benötigt mindestens diese Konfigurationen.

"reportConfig": [
{
"name": "Report Monatlich Ebene 1", "schedule": "monthly",
"type": "DataEntry",
"templateFile": "./storage/reports/templates/Template_Report_Ebene_1.xlsx", "sheet": "Sheet1",
"separator":";",
"firstRow": "0", "fromTemplate": true,
"reportPath": "Report_Ebene1.xlsx", "tempPath": ""
},
{
"name": "Report Monatlich Ebene 2", "schedule": "monthly",
"type": "DataEntry",
"templateFile": "./storage/reports/templates/Template_Report_Ebene_2.xlsx", "sheet": "Sheet1",
"separator":";",
"firstRow": "0", "fromTemplate": true,
"reportPath": "Report_Ebene2.xlsx",
"tempPath": ""
}
]

KonfigurationBeschreibungBeispiel

name

Name der Report Definition

"Report Ebene 1 Monatlich"

schedule

Aufruf Häufigkeit

= yearly (Jährlicher Report wird im Januar versendet)

= monthly (Monatlicher Report wird jeden Monat versendet)

type

Report Typ Definition. Damit wird festgelegt, welcher Typ für das Reporting verwendet wird.

= "DataListSequential" (Liste untereinander)

= "DataListParallel" (Liste parallel)

= "DataEntry" (Einzelne Einträge in der Zelle)

templateFile

Pfadangabe für das Template file

./templates/syn_001.xlsx

sheet

Tabellenname bei Verwendung von Excel Tabellen

Tabelle1, Sheet1

fileType

Setzen des zu verwendenden Dateiformates für das Speichern und Einlesen der Daten

csv, xls, xlsx

separator

Separator, der bei dem Einlesen und Speichern von CSV Dateien verwendet werden soll.

";" // "," // " "

firstRow

Erste Zeile, die zu verwenden ist bei dem Auslesen der Template-Konfiguration und des Speicherns der Daten bei aktivem fromTemplate.

fromTemplate

Gibt an, ob die Datei neu oder aus dem Template übernommen werden soll. Eine .csv Datei sollte nicht verwendet werden, um die Daten anzuhängen. Bei einer XLSX Datei kann die Formatierung mit dieser Option übernommen werden. (Formeln, Zellenformatierung usw. werden beibehalten)

true / false

Bitte auf die Schreibweise achten

reportPath

Speicherpfad inklusive Name des Reports

./report_XY_001.xlsx

Templates

Die Templates sollten im Excel Format abgelegt sein und müssen die Konfiguration der Assets beinhalten. Die Verknüpfung zu den Assets / Attributen in Eliona sieht so aus:

{"assetGai":"H01 Fernwärme Energiezähler IWB", "attribute":"Energie", "raster":"MONTH", "mode":"sum"}

Hier wird im JSON-Format die benötigte Information eingetragen.

KeyValue BeispielBemerkung

"assetGai"

GAI des verwendeten Assets.

"attribute"

Hier werden die Attribute des Asset-Typen eingetragen, das ausgelesen werden soll

"raster"

M1 , M5, M10, M15 H1, H2, H4, H8, H12 DAY

WEEK MONTH YEAR

In Abhängigkeit des zu erstellenden Reports muss hier das Raster eingetragen werden. Für einen monatlichen Report muss das Raster MONTH verwendet werden.

"mode"

last first sum

average

Der Mode, der aus dem Raster ausgelesen werden soll.

Für Attribute, die eine Mittelwertbildung besitzen, muss "average" verwendet werden.

Attribute mit einem Summen oder kumulativ Summierung müssen "sum" verwenden.

Berechnungen

Berechnungen werden in Excel ausgeführt. Hier können alle Excel Funktionen verwendet werden. Das Referenzieren von Werten aus der eigenen Tabelle wie das Verwenden von Werten aus Eliona ist möglich. Bei dem Verwenden von Werten aus Eliona muss einfach der JSON-Teil für die Referenzierung verwendet werden.

Beispiel: Hier wird ein Zelleninhalt von einem Eliona Asset Attribut subtrahiert.

= ({"assetGai":"K01 Netz Energiezähler 1005", "attribute":"Energie", "raster":"MONTH", "mode":"sum"} - J6)

ACHTUNG: Das Eintragen einer solchen Formel wird durch Excel unterbunden. Hierzu muss das Format der Zelle angepasst werden. Nach dem Eintragen der Formel kann der Zellentyp wieder zurückgestellt. Empfohlen wird, das Zahlenformat zu wählen.

DataListSequential (Liste untereinander)

Wurde bislang nicht verwendet. Ist nur für ein Projekt in der Angebotsphase vorgesehen gewesen

DataListParallel (Liste parallel)

Beispiel Tabell

Beispiel Template

Beispiel Template

Timestamp

[m³] Volumen IWB Brauchwasser Kälteanlage 1004

[°C] Kälteanlage 1004 Wassertemperatur Rückführung WAR

[] IWB Brauchwasser Kälteanlage 1004 Verbindung OK

{"timeStamp":"%Y-%m-

%d %H:%M:%S",

"raster":"H1"}

{"assetGai":"IWB Kälteanlage 1004", "attribute":"Volumen", "mode":"sum"}

{"assetGai":"IWB Kälteanlage 1004", "attribute":"Temperatur", "mode":"average"}

{"assetGai":"IWB Kälteanlage 1004", "attribute":"Status", "mode":"last"}

DataEntry (Einzelne Einträge in der Zelle)

Beispiel Tabelle:

Beispiel Template:

von Datumbis DatumVerbrauch

{"timeStampStart":"%Y-%m-%d"}

{"timeStampEnd":"%Y-%m-%d"}

{"assetGai":"Trinkwasser Kalt WRO 1007P UG-8.OG

Frischwasserstation", "attribute":"Volumen", "raster":"MONTH", "mode":"sum"}

{"timeStampStart":"%Y-%m-%d"}

{"timeStampEnd":"%Y-%m-%d"}

{"assetGai":"Enthärtetes Wasser Gastro Zuleitung Frischwasser", "attribute":"Volumen", "raster":"MONTH", "mode":"sum"}

{"timeStampStart":"%Y-%m-%d"}

{"timeStampEnd":"%Y-%m-%d"}

= {"assetGai":"H02 Energiezähler BWW 1005", "attribute":"Energie", "raster":"MONTH", "mode":"sum"} * 1000

{"timeStampStart":"%Y-%m-%d"}

{"timeStampEnd":"%Y-%m-%d"}

= (1 - ((J4) / ((J2+J3)*64 + 68000)))*100

Manuelle Erstellung eines Reports

Für die manuelle Erstellung eines Reports kann der Docker Container geöffnet werden und die App.py mit Argumenten aufgerufen werden. Es existiert eine Hilfe, die mit -h aufgerufen werden kann.

(env311) spreadsheet-report-app % python ./src/spreadsheet-reportapp/
spreadsheet_report_app.py -h
usage: spreadsheet_report_app.py [-h] [-d DATE] [-c CONFIG] [-u USER] [-r REPORT] [-o OUTPUT]
options:
-h, --help show this help message and exit
-d DATE, --date DATE Date in the format: dd.mm.yyyy
-c CONFIG, --config CONFIG
Path to the used configuration file. For Example:
"./config/config.json"
-u USER, --user USER User name that's requested. Name can be read from config.json file.
-r REPORT, --report REPORT
Report name that's requested. Name can be read from config.json file.
-o OUTPUT, --output OUTPUT
Export file path. If empty will be stored under "./temp/file_name"
(env311) spreadsheet-report-app %
ArgumentBeschreibungBeispiel

-h, --help

Hilfe Text Ausgabe

python sp...app.py -h

-d, --date

Eingabe des gewünschten Report-Datums im Format "dd.mm.yyyy". Für Monatsreports ist Monat und Jahr wichtig.

Für Jahresreports ist das Jahr wichtig.

python sp...app.py -d "01.01.2021"

-c, --config

Pfad für die Settings Datei. Dies wird benötigt, um die Reportings und User Settings zu laden. Wenn dies leer bleibt, wird das für Standard Verzeichnis verwendet.

python sp...app.py -c "./config/config.json"

-u, --user

Entweder Benutzer oder Report Konfiguration auswählen. Hängt von der vorhandenen Konfiguration ab, welche verfügbar sind. Im Fall des Users werden alle Reports des Users erstellt. Im Fall eines Reports wird der einzelne Report erstellt.

Einer muss jedoch gesetzt sein.

python sp...app.py -u

-r, --report

python sp...app.py -r

-o, --output

Ausgabepfad für die erstellten Reports. Falls dieser Parameter leer bleibt, wird das Verzeichnis "

./tmp_reports/manual_created/" verwendet.

python sp...app.py -h "./tmp_files/export/"

Last updated