# OpenHAB2

## <span class="mw-headline" id="Meine_Testumgebung">Meine Testumgebung</span>

### <span class="mw-headline" id="Die_Definitionen">Die Definitionen</span>

#### <span class="mw-headline" id="Items">Items</span>

So sieht meine Definition der Items in der Datei `test.items` im Ordner `/etc/openhab2/items` aus:

```
Number numTemp
Number numTemp2

```

#### <span class="mw-headline" id="Sitemap">Sitemap</span>

Meine Sitemap `home.sitemap` im Ordner `/etc/openhab2/sitemaps` sieht so aus:

```
sitemap home label="My home sitemap" {
    Setpoint item=numTemp label="Heizung Wohnzimmer [%.1f °C]" minValue=12 maxValue=30 step=1 icon="temperature"
    Text item=numTemp label="Heizung Wohnzimmer [%s °C]" icon="temperature"
    Text item=numTemp2 label="Heizung Testanzeige [%s °C]" icon="temperature"
}

```

So sieht es dann aus:  
[![OpenHAB2-sitemap-home.png](https://www.wiki.freakylabs.de/BookStack/public/uploads/images/gallery/2018-09-Sep/scaled-840-0/RFQIi61OdsG2yg7K-OpenHAB2-sitemap-home.png)](https://www.wiki.freakylabs.de/BookStack/public/uploads/images/gallery/2018-09-Sep/RFQIi61OdsG2yg7K-OpenHAB2-sitemap-home.png)

#### <span class="mw-headline" id="Rules">Rules</span>

Hier die Definition meiner Regel `heating.rules` im Ordner `/etc/openbhab2/rules`:

```
rule "Simulate the heating control"

when
    Item numTemp changed
then
    var int newValue=numTemp.state
    //newValue=newValue+1
    numTemp2.postUpdate((newValue as DecimalType)+100)
end

```

## <span class="mw-headline" id="Rechnen_mit_Items_vom_Typ_Numbers">Rechnen mit Items vom Typ Numbers</span>

### <span class="mw-headline" id="Vorwort">Vorwort</span>

Da ich selber gerade erst angefangen habe mich mit OpenHAB2 zu beschäftigen, musste ich mich erstmal durch die Dokumentation hangeln und teste noch herum wie was geht.  
Meine Testumgebung mit allen Definitionen habe ich bereits weiter oben beschrieben.

### <span class="mw-headline" id="Die_Berechnung">Die Berechnung</span>

Jetzt habe ich herausgefunden, dass man beim Rechnen mit Numbers den Wert den man benutzen will nochmal als "DecimalType" definieren muss.

```
var int newValue=numTemp.state
numTemp2.postUpdate((newValue as DecimalType)+100)

```

Damit wollte ich mal testen wie man mit einen Wert rechnen kann und diesen Wert mit einem Sitemap-Element vom Typ "Text" ausgibt. In meiner Sitemap habe ich das "Text"-Element wie folgt definiert: `Text item=numTemp2 label="Heizung Testanzeige [%s °C]" icon="tempereature"`  
Das sieht dann in der "BasicUI" so hier aus:  
[![OpenHAB2-TextItem1.png](https://www.wiki.freakylabs.de/BookStack/public/uploads/images/gallery/2018-09-Sep/scaled-840-0/AtPNh0oLEGc2AZS4-OpenHAB2-TextItem1.png)](https://www.wiki.freakylabs.de/BookStack/public/uploads/images/gallery/2018-09-Sep/AtPNh0oLEGc2AZS4-OpenHAB2-TextItem1.png)

## <span class="mw-headline" id="Installation_Telegram-Bot">Installation Telegram-Bot</span>

Alles schön erklärt: [http://openhab2.wermescher.com/dienst-telegram/](http://openhab2.wermescher.com/dienst-telegram/)

## <span class="mw-headline" id="Anwendungsbesipiele_mit_OpenHAB2">Anwendungsbesipiele mit OpenHAB2</span>

- [https://klenzel.de/kategorie/technik/hausautomatisierung/openhab](https://klenzel.de/kategorie/technik/hausautomatisierung/openhab)
- [http://onesmarthome.de/category/komfort/](http://onesmarthome.de/category/komfort/)
- Dokumentation eines OpenHAB Users: [https://openhabdoc.readthedocs.io/de/latest/setpoint/](https://openhabdoc.readthedocs.io/de/latest/setpoint/)

## Installation

## <span class="mw-headline" id="Vorraussetzungen">Vorraussetzungen</span>

### <span class="mw-headline" id="Java_SDK">Java SDK</span>

#### <span class="mw-headline" id="Vorwort">Vorwort</span>

In dem aktuellen Debian Paket befindet sich ein Bug. Da Oracle auf seinen Downloadseiten einiges umgebaut hat und man zuerst die AGB´s akzeptieren muss, kann der Paketmanager die aktuellste Java Version nicht downloaden. Dafür ist das Paket nicht programmiert.  
Also was tun wir? Richtig, wer nicht warten will bis das Debianpaket gefixt wird, der muss sich Java selber manuell herunterladen und installieren. Und das erkläre ich euch jetzt. Eine schäne Anleitung, die mir geholfen hat, findet ihr auch [hier bei sysadminslife.com](http://www.sysadminslife.com/linux/howto-oracle-java-8-jre-jdk-installation-und-upgrade-unter-debian-wheezy/)

#### <span class="mw-headline" id="Installation">Installation</span>

1. Java Runtime Environment (JRE) 8 von Oracle herunterladen (Zu der Zeit meiner Installation war aktuell die JDK 8 Update 152) 
    1. Oracle Downloadseite: [http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
    2. Befehl: `wget --no-cookies --no-check-certificate --header "Cookie: oraclelicense=accept-securebackup-cookie" "<a class="external free" href="http://download.oracle.com/otn-pub/java/jdk/8u152-b16/aa0333dd3019491ca4f6ddbe78cdb6d0/jdk-8u152-linux-x64.tar.gz" rel="nofollow">http://download.oracle.com/otn-pub/java/jdk/8u152-b16/aa0333dd3019491ca4f6ddbe78cdb6d0/jdk-8u152-linux-x64.tar.gz</a>"`
2. Entpacken: `tar -xzvf server-jre-8u25-linux-x64.tar.gz`
3. Den entpackten Java Ordner an die richtige Stelle verschieben: `mv /<em><strong>DOWNLOAD-Ordner</strong></em>/jdk1.8.0_152 /usr/lib/jvm`
    1. Der originale Java Ordner der Version 8 heißt ***java-8-oracle***. Damit wir etwas flexibler sind machen wir uns jetzt einen Symlink.
4. Symlink erstellen: `ln -s /usr/lib/jvm/jdk1.8.0_152/ /usr/lib/jvm/java-8-oracle`
5. Jetzt teilen wir dem System mit, dass er die von uns bereitgestellte Java Version nutzen soll: `update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/java-8-oracle/bin/java" 1`
6. Abschließend könnt ihr kontrollieren ob das Java funktioniert und welche Version er installiert hat: `java -version`

Meine Ausgabe sieht so aus:  
`root@Server:/usr/lib/jvm# java -version<br></br>java version "1.8.0_152"<br></br>Java(TM) SE Runtime Environment (build 1.8.0_152-b16)<br></br>Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)`

## <span class="mw-headline" id="Installation_OpenHAB2">Installation OpenHAB2</span>

Hier will ich gar nicht viele Worte verlieren, weil auf der Projektseite von OpenHAB2 alles super dokumentiert ist. [http://docs.openhab.org/installation/linux.html#installation](http://docs.openhab.org/installation/linux.html#installation)

<div id="bkmrk-"><div><div></div></div></div>