# CC100_HW

Hardwareanbindung für die digitalen Ein- und Ausgänge sowie die beiden PT-Temperatursensoren einer CC100-Steuerung.

### Inhaltsverzeichnis

1. [Funktionsumfang](#1-funktionsumfang)
2. [Voraussetzungen](#2-voraussetzungen)
3. [Software-Installation](#3-software-installation)
4. [Einrichten der Instanzen in IP-Symcon](#4-einrichten-der-instanzen-in-ip-symcon)
5. [Statusvariablen und Profile](#5-statusvariablen-und-profile)
6. [WebFront](#6-webfront)
7. [PHP-Befehlsreferenz](#7-php-befehlsreferenz)

### 1. Funktionsumfang

- Ansteuerung von vier digitalen Ausgängen
- Auswertung von acht digitalen Eingängen
- Auswertung von zwei PT-Temperatursensoren
- Automatisches Einlesen der Temperaturen alle 30 Sekunden
- Automatisches Einlesen der digitalen Eingänge alle 2 Sekunden
- Schreiben der Ausgangszustände in die CC100-Systemdatei
- Umrechnung der digitalen Eingangszahl in acht einzelne Schaltzustände
- Umrechnung der PT-Rohwerte in Temperaturwerte

### 2. Voraussetzungen

- IP-Symcon ab Version 7.1
- Linux-basiertes CC100-System
- Zugriff des IP-Symcon-Dienstes auf die benötigten Systemdateien
- Schreibberechtigung für die Datei der digitalen Ausgänge
- Vorhandene CC100-Kernel- und IIO-Treiber

Folgende Systemdateien werden verwendet:

```text
/sys/kernel/dout_drv/DOUT_DATA
/sys/devices/platform/soc/44009000.spi/spi_master/spi0/spi0.0/din
/sys/bus/iio/devices/iio:device2/in_voltage13_raw
/sys/bus/iio/devices/iio:device2/in_voltage1_raw
```

Das Modul ist wegen dieser fest eingetragenen Systempfade nur für die entsprechende CC100-Hardware vorgesehen.

### 3. Software-Installation

- Das Verzeichnis `CC100_HW` in die verwendete IP-Symcon-Modulbibliothek kopieren.
- Alternativ die zugehörige Modulbibliothek über die Modulverwaltung installieren.
- Anschließend die Modulbibliothek neu laden.

### 4. Einrichten der Instanzen in IP-Symcon

Unter `Instanz hinzufügen` kann das Modul `CC100_HW` mithilfe des Schnellfilters gefunden werden.

Weitere Informationen zum Hinzufügen von Instanzen befinden sich in der [Dokumentation der Instanzen](https://www.symcon.de/service/dokumentation/konzepte/instanzen/#Instanz_hinzufügen).

**Konfigurationsseite**:

Name | Beschreibung
--- | ---
FilePath | Dateipfad zum Schreiben der digitalen Ausgangszustände
Standardwert | `/sys/kernel/dout_drv/DOUT_DATA`

Im aktuellen Modulverzeichnis ist keine `form.json` vorhanden. Die Eigenschaft `FilePath` ist deshalb nicht über eine normale Konfigurationsseite auswählbar und verwendet standardmäßig den im Modul hinterlegten Pfad.

### 5. Statusvariablen und Profile

Die Statusvariablen werden beim Erstellen der Instanz automatisch angelegt. Das Löschen einzelner Variablen kann zu Fehlfunktionen führen.

#### Statusvariablen

Name | Ident | Typ | Beschreibung
--- | --- | --- | ---
DO 1 | Bit1 | Boolean | Digitaler Ausgang 1
DO 2 | Bit2 | Boolean | Digitaler Ausgang 2
DO 3 | Bit3 | Boolean | Digitaler Ausgang 3
DO 4 | Bit4 | Boolean | Digitaler Ausgang 4
DI1 | DI1 | Boolean | Digitaler Eingang 1
DI2 | DI2 | Boolean | Digitaler Eingang 2
DI3 | DI3 | Boolean | Digitaler Eingang 3
DI4 | DI4 | Boolean | Digitaler Eingang 4
DI5 | DI5 | Boolean | Digitaler Eingang 5
DI6 | DI6 | Boolean | Digitaler Eingang 6
DI7 | DI7 | Boolean | Digitaler Eingang 7
DI8 | DI8 | Boolean | Digitaler Eingang 8
PT1 Temperatur | PT1 | Float | Berechnete Temperatur des PT1-Eingangs
PT2 Temperatur | PT2 | Float | Berechnete Temperatur des PT2-Eingangs

#### Profile

Name | Typ | Verwendung
--- | --- | ---
~Switch | Boolean | Darstellung der digitalen Ausgänge als Schalter
~Temperature | Float | Darstellung der PT-Werte als Temperatur

Es werden keine eigenen Variablenprofile erstellt.

### 6. WebFront

Im WebFront werden folgende Werte dargestellt:

- Vier digitale Ausgänge
- Acht digitale Eingänge
- Zwei Temperaturwerte

Die digitalen Eingänge werden alle 2 Sekunden aus der CC100-Systemdatei gelesen.

Die PT-Rohwerte werden alle 30 Sekunden eingelesen und anhand der im Modul hinterlegten Skalierungsbereiche in Temperaturwerte umgerechnet.

#### Einschränkung der digitalen Ausgänge

Die vier Ausgangsvariablen sind als bedienbare Schalter registriert. Die aktuelle `RequestAction()`-Implementierung verarbeitet die Identifikatoren `Bit1` bis `Bit4` jedoch nicht.

Beim direkten Schalten über das WebFront wird deshalb die Fehlermeldung `Invalid Ident` ausgelöst. Die Bedienung der Ausgänge funktioniert erst nach einer entsprechenden Erweiterung von `RequestAction()`.

### 7. PHP-Befehlsreferenz

#### PT-Werte manuell einlesen

```php
GEF_DOUT_ReadPTValues(12345);
```

Liest beide PT-Rohwerte ein, berechnet die Temperaturen und aktualisiert die Variablen `PT1` und `PT2`.

Dabei muss `12345` durch die Objekt-ID der CC100_HW-Instanz ersetzt werden.

#### PT-Werte über RequestAction aktualisieren

```php
IPS_RequestAction(12345, 'DOUT_ReadPTValues', '');
```

#### Digitale Ein- und Ausgänge aktualisieren

```php
IPS_RequestAction(12345, 'UpdateFile', '');
```

Diese Aktion liest die digitalen Eingänge ein und schreibt den aus `Bit1` bis `Bit4` berechneten Ausgangswert in die konfigurierte Systemdatei.