# Werte berechnen: Der Rechner

Der Calculator ist ein Dienst, der es Ihnen ermöglicht, **eingehende Daten mithilfe mathematischer Ausdrücke zu transformieren, neu zu berechnen und zusammenzufassen** ein. Beispielsweise können Werte in Watt bei Eingang durch Division durch 1000 in Kilowatt umgerechnet werden. Der umgerechnete Wert wird dann im entsprechenden Attribut angezeigt, in dem die Berechnung durchgeführt wurde.

## Beispiele

### Werte umrechnen

* Watt in kW:

  ```calculatorlang
  {Wert}/1000
  ```
* Grad Celsius in Grad Fahrenheit \[F=(1.8×C)+32]

  ```
  (1.8*{Wert})+32
  ```

### Neue Werte berechnen

* Komfort mit Formeln berechnen

  Code-Snippet

  ```
  (0.8 * {temperature}) + (0.2 * {humidity})
  ```
* Personenzähler hinzufügen

  Code-Snippet

  ```
  [10.input.count] + [11.input.count] + [12.input.count]
  ```
* Verbrauch mehrerer Zähler addieren

  Code-Snippet

  ```
  [10.input.power] + [11.input.power] + [12.input.power]
  ```
* Wert liegt zwischen 1 und 80, dann Status "0 = Ok", andernfalls "1 = Alarm"

  Code-Snippet

  ```
  not(inrange(1, {Wert}, 80))
  ```
* Heizung je nach Temperatur ein- oder ausschalten (0 auf "aus" und 1 auf "ein" abbilden)

  Code-Snippet

  ```
  {temperature} < 20 ? 1 : 0
  ```

### Syntax

Um Berechnungen mit Attributen durchzuführen, setzen Sie die Namen der Attribute in geschweifte Klammern. Dadurch können Sie auf die Werte dieser Attribute zugreifen.

Auf Attribute innerhalb eines Assets zugreifen

Sie können direkt auf die Werte von Attributen desselben Typs zugreifen. Zum Beispiel:

```
{temperature} + {humidity}
```

#### Auf Attribute unterschiedlicher Typen innerhalb eines Assets zugreifen

Wenn Sie auf Attribute unterschiedlicher Typen innerhalb desselben Assets zugreifen möchten, verwenden Sie die folgende Syntax:

* `{input.temperature}`: Auf das Attribut "temperature" des Typs input zugreifen
* `{status.temperature}`: Auf das Attribut "temperature" des Typs status zugreifen
* `{output.temperature}`: Auf das Attribut "temperature" des Typs output zugreifen

#### Auf Attribute anderer Assets zugreifen

Um auf die Werte von Attributen anderer Assets zuzugreifen, verwenden Sie die folgende Syntax:

```
[asset_id.attribut_type.attribut_name]
```

#### Beispiel

```
[10.input.power] + [11.input.power] + [12.input.power]
```

In diesem Beispiel werden die Werte des Attributs "power" der Assets mit den IDs 10, 11 und 12 addiert.

## Berechnungen ausführen

Sie können Berechnungen mit Attributen an 2 Stellen in BuildingPro Suites ausführen:

* In der Asset-Vorlage
* Im einzelnen Asset

In der Asset-Vorlage werden Standardberechnungen festgelegt, die auf alle mit dieser Vorlage erstellten Assets angewendet werden. Diese Berechnungen können bei Bedarf jedoch in den einzelnen Assets individuell überschrieben werden.

{% hint style="info" %}
Vermeiden Sie es, in der Asset-Vorlage auf Attribute anderer Assets zuzugreifen, da dies bei Änderungen zu Problemen führt und alle Berechnungen neu erstellt werden müssen.
{% endhint %}

### Eine Berechnung in einer Asset-Vorlage ausführen

<figure><img src="https://3489494878-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9GvUpaatBiReR43XFSMg%2Fuploads%2Fq12omkIRPY6Vo3ylXjeF%2FDocs_Calculator%202.png?alt=media&#x26;token=1c0d02bf-3f73-43f3-9d53-ccc5276175c6" alt=""><figcaption></figcaption></figure>

1. Öffnen Sie eine vorhandene Asset-Vorlage oder erstellen Sie eine neue
2. Öffnen Sie ein vorhandenes Attribut oder erstellen Sie ein neues Attribut
3. Sie können Berechnungen in Feld \[A] ausführen. Diese Berechnungen gelten dann für alle Assets dieses Typs, können aber auch im einzelnen Asset überschrieben werden.

### Eine Berechnung in einem Asset ausführen

<figure><img src="https://3489494878-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9GvUpaatBiReR43XFSMg%2Fuploads%2F0tSv36XSXCprmr01joZb%2FDocs_Calculator%201.png?alt=media&#x26;token=ed1df66f-48df-4833-80bc-b333ade7b5c7" alt=""><figcaption></figcaption></figure>

1. Öffnen Sie die [-> Anlagendetails](https://docs.buildings.ability.abb/collection/german/pflichtbasis/assets/asset-details)
2. Klicken Sie auf das Attribut, dessen Werte Sie berechnen möchten.

   ▷ Die Seitenleiste \[A] öffnet sich
3. Geben Sie in Feld \[B] Ihre Berechnung ein.
4. Klicken Sie auf Speichern \[X]

#### Attribute eines anderen Assets (externe Werte) in einer Berechnung verwenden

Diese Funktion ist nur möglich, wenn Sie Berechnungen in einem Asset ausführen.

1. Öffnen Sie die [-> Anlagendetails](https://docs.buildings.ability.abb/collection/german/pflichtbasis/assets/asset-details)
2. Klicken Sie auf das Attribut, dessen Werte Sie berechnen möchten.

   ▷ Die Seitenleiste \[A] öffnet sich
3. Geben Sie in Feld \[B] Ihre Berechnung ein.
4. Klicken Sie auf \[C1], um das Asset auszuwählen, dessen Werte Sie in der Berechnung verwenden möchten.
5. Klicken Sie auf \[C3], um den Untertyp des Assets anzugeben.
6. Klicken Sie auf \[C4], um das Attribut anzugeben, das Sie verwenden möchten.
7. Klicken Sie auf \[C5], um Ihre Auswahl zu bestätigen.

   ▷ Die Informationen erscheinen nun in eckigen Klammern in Feld \[B]
8. Wenn Sie weitere externe Werte in die Berechnung einbeziehen möchten: 8.1. Klicken Sie auf \[C2] 8.2. Wiederholen Sie die Schritte 4 bis 8
9. Klicken Sie auf Speichern \[X]

### Ausgabeattribut zurücksetzen

Wenn ein Ausgabeattribut ausgewählt ist, gibt es die Option, den Wert zurückzusetzen.

* Durch Klicken auf "Attribut zurücksetzen" wird dem Attribut ein Nullwert zugewiesen.
* Dies entspricht dem Zustand, als ob keine Daten im Heap gespeichert wären.

<div align="left"><figure><img src="https://3489494878-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9GvUpaatBiReR43XFSMg%2Fuploads%2F53DVlUloLTrPAICNHxO0%2FReset%20Attribute.png?alt=media&#x26;token=30a56d9e-0b78-4057-af01-d37a44b27a50" alt="" width="375"><figcaption></figcaption></figure></div>

### Berechnungsketten

Berechnungsketten werden automatisch erstellt, wenn Sie Berechnungen anlegen, sowohl innerhalb eines einzelnen Assets als auch über mehrere Assets hinweg. Eine Berechnungskette besteht beispielsweise, wenn "Asset A von einem Wert aus Asset B abhängt, Asset B von einem Wert aus Asset C abhängt und Asset C von einem Wert aus Asset D abhängt".

Jedes Mal, wenn sich ein Wert in Asset A ändert, der in Asset B verwendet wird, wird für Asset B eine Berechnung ausgelöst. Jede Änderung eines Werts in Asset B, auf den in Asset C verwiesen wird, führt zu einer Berechnung in Asset C.

Die Kette wird unterbrochen, wenn ein Schritt der Berechnung fehlschlägt oder den [Filter](https://www.google.com/search?q=filter)nicht passiert. Dadurch wird die Anzahl der Ereignisse im System reduziert.

### Operatoren und Funktionen

Hier sind die verfügbaren Operatoren und Funktionen aufgelistet.

Operatoren

| Gruppe     | Operatoren                                                            |
| ---------- | --------------------------------------------------------------------- |
| Arithmetik | +, -, \*, /, % (Modulus-Operator), ^ (Exponent)                       |
| Vergleich  | ==, !=, <, >, <=, >=                                                  |
| Logisch    | not oder !, and oder &&, or oder                                      |
| Bedingt    | ? (ternärer Operator - Bedingung ? Wert wenn wahr : Wert wenn falsch) |

**Funktionen**

Funktionen können in der Syntax avg({Value1},{Value2},{Value3}) verwendet werden<br>

<table><thead><tr><th width="108.4000244140625">Funktion</th><th>Beschreibung</th></tr></thead><tbody><tr><td>avg</td><td>Gibt den Durchschnitt einer Liste von Werten zurück (beliebige Anzahl von float-Werten)</td></tr><tr><td>max</td><td>Gibt den Maximalwert einer Liste von Werten zurück (beliebige Anzahl von float-Werten)</td></tr><tr><td>min</td><td>Gibt den Minimalwert einer Liste von Werten zurück (beliebige Anzahl von float-Werten)</td></tr><tr><td>abs</td><td>Gibt den Absolutwert eines Werts zurück (einzelner float)</td></tr><tr><td>round</td><td>Rundet einen Wert auf die nächste ganze Zahl (einzelner float)</td></tr><tr><td>pow</td><td>Potenzierung (2 Argumente, das 2. ist die Potenz)</td></tr><tr><td>sin</td><td>Sinus eines Werts im Bogenmaß</td></tr><tr><td>cos</td><td>Kosinus eines Werts im Bogenmaß</td></tr><tr><td>cosh</td><td>Hyperbolischer Kosinus eines Werts im Bogenmaß</td></tr><tr><td>cot</td><td>Kotangens eines Werts im Bogenmaß</td></tr><tr><td>csc</td><td>Kosekans eines Werts im Bogenmaß</td></tr><tr><td>sec</td><td>Sekans eines Werts im Bogenmaß</td></tr><tr><td>equal</td><td>Vergleicht zwei Zahlen mit einer Toleranz von 0,001</td></tr><tr><td>nicht</td><td>Kehrt einen booleschen Wert um</td></tr><tr><td>rad2deg</td><td>Konvertiert Bogenmaß in Grad</td></tr><tr><td>deg2rad</td><td>Konvertiert Grad in Bogenmaß</td></tr><tr><td>inrange</td><td>Prüft, ob ein Wert innerhalb eines Bereichs liegt (linke Grenze, Wert, rechte Grenze)</td></tr><tr><td>history(reference, back_step)</td><td>Gibt einen historischen Wert eines Attributs zurück. <code>reference</code> ist die normale Referenz des Attributs (z. B. <code>[asset_id.subtype.attribute]</code>), und <code>back_step</code> ist eine negative Zahl, die angibt, welchen Wert aus dem Verlauf Sie abrufen möchten. Beispiel: <code>-1</code> gibt den vorherigen Wert zurück, <code>-2</code> den davorliegenden.</td></tr></tbody></table>

Diese Funktionen und Operatoren ermöglichen eine Vielzahl von Berechnungen und logischen Operationen in Ihren Berechnungen.
