Python-Skripte schreiben
Python-Skripte schreiben
Mit der Einführung von BuildingPro Suites Version 12.2 wurden wichtige Änderungen vorgenommen, die eine Anpassung der Skripte an das neue API-Design erfordern.
Skriptdefinition
Wenn im BuildingPro-Suites-System ein neues Skript erstellt wird, wird automatisch ein Funktionskopf generiert. Dieser Kopf enthält zwei Parameter:
id: Die eindeutige ID des Skripts.eliona: Ein Objekt, über das der Benutzer mit dem BuildingPro-Suites-System interagieren kann.
Die Funktionsdeklaration sieht so aus:
# Imports dürfen nur innerhalb der Funktion hinzugefügt werden
# Die Funktionsdefinition nicht ändern oder löschen
def UserFunction(id, eliona):
# füge hier deinen Code einModule importieren
Alle erforderlichen Module müssen innerhalb der Funktion importiert werden. Es ist wichtig, dass Module nur innerhalb der Funktion importiert werden und keine globalen Importe verwendet werden.
Beispiel:
def UserFunction(id, eliona):
import random
# Weitere Codezeilen folgenMethoden des BuildingPro-Suites-Objekts
Das eliona Objekt stellt eine Reihe von Methoden bereit, mit denen Benutzer mit dem BuildingPro-Suites-System interagieren können. Hier sind die wichtigsten Methoden zusammen mit ihren Parametern und Beschreibungen:
GetHeap
gai: str, subtype: str, attribute: str
Ruft den aktuellen Wert eines Attributs oder das gesamte Daten-JSON eines Assets aus dem Heap ab.
SetHeap
gai: str, subtype: str, data: dict, source: str
Sendet Daten an den Rechner, damit sie verarbeitet und im Heap gespeichert werden.
GetAssetIDByGAI
gai: str
Gibt die numerische Asset-ID für die angegebene GAI zurück.
GetAll
`ids: list[int
str], `subtype: str`
Ruft alle Datenpunkte eines bestimmten Subtyps für eine Liste von Assets ab und gibt sie als Dictionary zurück (GAI → Daten).
SQLQuery
query: str
Führt eine beliebige SQL-Abfrage aus und gibt die Ergebnisse als Liste von Tupeln zurück.
MakeSource
id: int
Erzeugt eine Quellzeichenfolge für Heap-Operationen basierend auf der Funktions-ID.
OpenFile
name: str, mode: str
Öffnet eine Datei im Arbeitsverzeichnis von BuildingPro Suites (analog zu Python’s open()).
AddAssetTag
gai: str, tag: str
Fügt einem Asset ein Tag hinzu (falls noch nicht vorhanden).
RemoveAssetTag
gai: str, tag: str
Entfernt ein Tag von einem Asset (falls vorhanden).
GetTrendRecords
asset_id: int, subtype: str, attr: str, begin: datetime
Ruft historische Messwerte als Liste von TrendRecord(ts, value) ab dem angegebenen Zeitpunkt ab.
WriteTrendRecords
asset_id: int, subtype: str, attr: str, `recs: TrendRecord
Schreibt ein oder mehrere TrendRecord Datensätze in das System.
GetAggregate
agg: Aggregate, asset_id: int, subtype: str, attr: str,raster: str, start: datetime,end: datetime = now()
Berechnet aggregierte Werte (Avg, Sum, Cusum) in einem festen Raster über einen Zeitraum.
GetLastAggregate
agg: Aggregate, asset_id: int, subtype: str, attr: str, raster: str
Gibt das zuletzt kumulierte Aggregat im ausgewählten Raster zurück (einschl. last_ts).
Beispielskripte
GetHeap
Beschreibung: Ruft den aktuellen Wert eines Attributs oder das gesamte JSON eines Assets aus dem Heap ab.
Parameter:
gai: str(erforderlich) – GAI des Assets, z. B.,"K86_WP01"subtype: str(erforderlich) – Datensubtyp, z. B.,"input"attribute: str(erforderlich) – Attributname, z. B.,"Aussentemperatur"
Beispielcode:
Beispielausgabe:
SetHeap
Beschreibung: Sendet ein Dictionary von Werten an den Rechner, um es zu verarbeiten und im Heap zu speichern.
Parameter:
gai: str(erforderlich)subtype: str(erforderlich)data: dict(erforderlich) – z. B.,{"Aussentemperatur": 23.5}source: str(erforderlich) – typischerweiseeliona.MakeSource(id)
Code-Beispiel:
GetAssetIDByGAI
Beschreibung: Gibt die numerische Asset-ID für die angegebene GAI zurück.
Parameter:
gai: str(erforderlich)
Code-Beispiel:
GetAll
Beschreibung: Ruft alle Datenpunkte eines bestimmten Subtyps für eine Liste von Assets ab und gibt sie als Dictionary zurück (GAI → Daten).
Parameter:
ids: list[int|str](erforderlich) – z. B.,["K86_WP01", 1073]subtype: str(erforderlich)
Code-Beispiel:
SQLQuery
Beschreibung: Führt eine beliebige SQL-Abfrage aus und gibt die Ergebnisse als Liste von Tupeln zurück.
Parameter:
query: str(erforderlich)
Code-Beispiel:
Beispielausgabe:
MakeSource
Beschreibung: Generiert eine Quellzeichenfolge (z. B. "ssr:123") für Heap-Operationen basierend auf der Funktions-ID.
Parameter:
id: int(erforderlich)
Code-Beispiel:
OpenFile
Beschreibung: Öffnet eine Datei im Arbeitsverzeichnis von BuildingPro Suites (analog zu Python’s open()).
Parameter:
name: str(erforderlich) – Dateiname, z. B.,"log.txt"mode: str(erforderlich) – z. B.,"w","r"
Code-Beispiel:
AddAssetTag
Beschreibung: Fügt einem Asset ein Tag hinzu, wenn es noch nicht zugewiesen ist.
Parameter:
gai: str(erforderlich)tag: str(erforderlich)
Code-Beispiel:
RemoveAssetTag
Beschreibung: Entfernt ein Tag von einem Asset, falls vorhanden.
Parameter:
gai: str(erforderlich)tag: str(erforderlich)
Code-Beispiel:
GetTrendRecords
Beschreibung: Lädt eine Liste historischer Messwerte (TrendRecord(ts, value)) ab der angegebenen Startzeit.
Parameter:
asset_id: int(erforderlich)subtype: str(erforderlich)attr: str(erforderlich)begin: datetime(erforderlich)
Code-Beispiel:
WriteTrendRecords
Beschreibung: Schreibt ein oder mehrere TrendRecord Datensätze in das System.
Parameter:
asset_id: int(erforderlich)subtype: str(erforderlich)attr: str(erforderlich)recs: TrendRecord | list[TrendRecord](erforderlich)
Code-Beispiel:
GetAggregate
Beschreibung: Berechnet aggregierte Werte (Durchschnitt, Summe, kumulative Summe) in einem festen Raster über einen Zeitraum.
Parameter:
agg: Aggregate(erforderlich) – z. B.,eliona_types.Aggregate.Avgasset_id: int(erforderlich)subtype: str(erforderlich)attr: str(erforderlich)raster: str(erforderlich) – ISO-8601-Dauer, z. B.,"PT1H"für stündlichstart: datetime(erforderlich)end: datetime(optional, Standard:now())recs: TrendRecord | list[TrendRecord](erforderlich)
Code-Beispiel:
Beispielausgabe-Struktur:
GetLastAggregate
Beschreibung: Gibt das zuletzt kumulierte Aggregat im ausgewählten Raster zurück (einschließlich last_ts).
Parameter:
agg: Aggregate(erforderlich)asset_id: int(erforderlich)subtype: str(erforderlich)attr: str(erforderlich)raster: str(erforderlich)
Code-Beispiel:
Beispielausgabe-Struktur:
Einfaches Skript zur Datenmanipulation
Dieses Beispiel zeigt, wie ein Skript einen Zufallswert erzeugt und in den Heap eines Assets schreibt:
Beschreibung:
Das Skript importiert das
randomModul.Ein Dictionary
datawird erstellt, das einen Schlüsselpower_valenthält, dem ein Zufallswert zwischen 10 und 100 zugewiesen wird.Der erzeugte Wert wird in den Heap des
TestInactInAssets mit derSetHeapMethode geschrieben.
Daten abrufen und ändern
In diesem Beispiel wird der Wert eines Attributs von einem Asset abgerufen, geändert und in einem anderen Asset gespeichert:
Beschreibung:
Das Skript importiert das
datetimeModul.Der aktuelle Wert des
power_valAttributs wird aus dem Heap desTestInactInAssets abgerufen.Dieser Wert wird verdreifacht und als
energy_val.
Erweiterte Funktionen und SQL-Abfragen
Mit der SQLQuery Methode können beliebige SQL-Abfragen direkt aus dem Skript ausgeführt werden:
Beschreibung:
Die SQL-Abfrage ruft alle Informationen über das Asset mit der GAI
TestInactIn.Das Ergebnis kann dann weiterverarbeitet werden.
Zuletzt aktualisiert
War das hilfreich?