Wer auf der Suche nach guten Rauchmeldern ist, diese möglicherweise sogar in eine bestehende KNX-Installation oder andere Hausautomationslösung einbinden möchte, der ist bei den Warnmeldern von EI-Electronics gut beraten.

 

Im Folgenden wird beschrieben, was benötigt wird, um Rauchmelder des Typs EI650W an den KNX-Bus zu koppeln. Der EI650W ist im Lieferzustand ein zuverlässiger autarker Rauchmelder, der sich unkomplizert im Handumdrehen in Betrieb nehmen lässt.
Wird er zusätzlich mit einem Funkmodul EI650M ausgestattet, kann er einem bestehenden Netzwerk aus Warmeldern (Rauch, Hitze, CO, etc) beitreten. Erkennt ein Warnmelder im Netzwerk eine Gefahrensituation, wird die Information an alle Melder weitergegeben, welche ebenfalls beginnen zu alarmieren. Jeder Funk-Rauchmelder arbeitet auch gleichzeitig als Repeater und gibt sowohl eigene als auch empfangene Meldungen an die nächsten Melder innerhalb seiner Reichweite weiter. Dies gilt sowohl für echte Alarme als auch für Fehlermeldungen wie schwache Batterie, etc.

Um die Melder an eine bestehende Hausautomation oder Alarmanlage anzubinden, wird noch ein Koppelmodul benötigt. Hier sei insbesondere das bidirektionale Koppelmodul EI413 erwähnt. Dieses Modul enthält zwei potentialfreie Ausgänge, über die Alarme und Fehler an die Hausautomation weitergegeben werden können sowie einen potentialfreien Eingang. Wird der Eingang an eine bestehende Hausautomation/Alarmanlage angeschlossen, können hierüber - quasi extern - die Melder zur Alarmierung gebracht werden (z.B bei Einbrucherkennung).

Das folgende Schaubild zeigt, wie die Rauchmelder mithilfe Koppelmoduls EI413 und einem Binäreingang ABB BE/2 8.20.1 ihre Meldungen an den KNX-Bus weitergeben können. In umgekehrter Richung können die Rauchmelder über den Binärausgang ABB SA/S 2.10.2.1 und das Koppelmodul zum Alarmieren gebracht werden.

 

 

Zeitgesteuerte oder ereignisbasierte Aktionen auszuführen ist eine Grundfunktionalität von openHAB. Hierzu wird einfach eine Regel mit einem entsprechenden zeit- oder ereignisbasierenden Trigger angelegt und schon steht die gewünschte Automatik bereit und verrichtet ihre Aufgaben. Im Privathaushalt macht es z. B. durchaus Sinn, die Warmwasserzirkulation nur dann einzuschalten, wenn tatsächlich Warmwasser benötigt wird - in der Regel morgens nach dem Aufstehen bzw. abends vor dem Schlafengehen. Was aber, wenn die Automatik selbst aktiviert bzw. deaktiviert werden soll, weil man ein paar Tage verreisen möchte und sie erst wieder nach der Rückkehr benötigt wird?

In diesem Fall benötigen wir zum eigentlichen Item, welches das zu schaltende Gerät abbildet, nur ein weiteres Hilfsitem mit dem sich die Automatik aktivieren bzw. deaktivieren lässt. Wir definieren also in unserem items-File das entsprechende Geräte-Item, hier "Zirkulationspumpe" sowie das Hilfsitem für die Automatik, hier das Item "Zirkulationsautomatik" (das Hilfsitem muss nicht zwingend mit einem Binding verknüpft sein, allerdings hat das den Vorteil, dass sich nicht nur das eigentliche Gerät, sondern auch die Automatik über das angegebene Binding steuern lässt).

Switch Zirkulationsautomatik            "Automatik"             <clock>         (Zirkulation)                           { knx="5/0/21" }
Switch Zirkulationspumpe                "Pumpe"                 <heating>       (KG_Werkstatt, Zirkulation)             { knx="<5/1/0" }

Danach definieren wir die benötigten Regeln.

Zuerst legen wir fest, dass unsere Zirkulationsautomatik automatisch aktiviert werden soll, sobald openHAB gestartet wird:

rule "Zirkulationsautomatik einschalten"
        when
                System started
        then
                Zirkulationsautomatik.sendCommand(ON)
end

Dann definieren wir die Regeln, die zu den gewünschten Zeiten die Zirkulation einschalten bzw. ausschalten - allerdings nur dann, wenn tatsächlich auch die Automatik aktiviert ist:

rule "Zirkulation automatisch einschalten"
        when
                Time cron "0 0 6 ? * MON-FRI"   or
                Time cron "0 15 20 ? * MON-FRI" or
                Time cron "0 0 7 ? * SAT-SUN"   or
                Time cron "0 0 18 ? * SAT-SUN"

        then
                if (Zirkulationsautomatik.state == ON) {
                        Zirkulationspumpe.sendCommand(ON)
                }
end

rule "Zirkulation automatisch ausschalten"
        when
                Time cron "0 0 8 ? * MON-FRI"   or
                Time cron "0 0 22 ? * MON-FRI"  or
                Time cron "0 0 9 ? * SAT-SUN"   or
                Time cron "0 0 22 ? * SAT-SUN"

        then
                if (Zirkulationsautomatik.state == ON) {
                        Zirkulationspumpe.sendCommand(OFF)
                }
end

Zu guter Letzt bietet es sich noch an, bei Deaktivierung der Automatik auch gleichzeitig eine eventuell laufende Zirkulationspumpe mit abzuschalten:

rule "Zirkulationsautomatik ausschalten"
        when
                Item Zirkulationsautomatik changed to OFF
        then
                Zirkulationspumpe.sendCommand(OFF)
end

Übrigens hat diese Methotik noch einen weiteren Vorteil: Egal, ob die Automatik aktiviert oder deaktiviert ist, manuell lässt sich die Zirkualtionspumpe immer ein- und ausschalten!

Der Vollständigkeit halber hier noch das komplette Rules-File.

zirkulationsautomatik.rules:

rule "Zirkulationsautomatik einschalten"
        when
                System started
        then
                Zirkulationsautomatik.sendCommand(ON)
end

rule "Zirkulation automatisch einschalten"
        when
                Time cron "0 0 6 ? * MON-FRI"   or
                Time cron "0 15 20 ? * MON-FRI" or
                Time cron "0 0 7 ? * SAT-SUN"   or
                Time cron "0 0 18 ? * SAT-SUN"

        then
                if (Zirkulationsautomatik.state == ON) {
                        Zirkulationspumpe.sendCommand(ON)
                }
end

rule "Zirkulation automatisch ausschalten"
        when
                Time cron "0 0 8 ? * MON-FRI"   or
                Time cron "0 0 22 ? * MON-FRI"  or
                Time cron "0 0 9 ? * SAT-SUN"   or
                Time cron "0 0 22 ? * SAT-SUN"

        then
                if (Zirkulationsautomatik.state == ON) {
                        Zirkulationspumpe.sendCommand(OFF)
                }
end

rule "Zirkulationsautomatik ausschalten"
        when
                Item Zirkulationsautomatik changed to OFF
        then
                Zirkulationspumpe.sendCommand(OFF)
end

Dieser Artikel beschreibt, wie eine Luxtronik der Hardwareversion 1 in openHAB eingebunden werden kann. Die benötigten Skripte werden als tar-File im Anhang bereitgestellt und stehen zum Download zur Verfügung. Konfigurationinformationen können per Copy & Paste übernommen werden. Die Benutzung erfolgt auf eigene Verantwortung. Für entstehende Schäden wird keine Haftung übernommen. Bei Rückfragen bitte ich darum, diese im openHAB-Unterforum des KNX-User-Forums zu stellen.

 

Voraussetzung Wärmepumpe:

  • Hardwarevoraussetzung: Luxtronik 1 Hardware 
  • Softwarevoraussetzung: Luxtronik V2.40 (getestet) - funktioniert vermutlich bereits ab 2.32

Voraussetzung openHAB-Serversystem:

  • PC-Hardware mit serieller Schnittstellenverbindung zur Luxtronik.
  • Betriebssystem Linux
  • Perl5 mit den Perlmodulen "Device::SerialPort" und "REST::Client"
  • openHAB mit installiertem exec-Binding

Benötigte Software (s. Anhang):

  • Luxtronik.pm - Perlmodul, das eine objektorientierte API zur Luxtronik zur Verfügung stellt
  • luxtronik.pl - Testskript zum Prüfen, ob Kommunikation mit der Luxtronik-Hardware funktioniert
  • luxtronik2openhab.pl - Perlskript, das die Daten aus der Luxtronik ausliest und per REST-API an die zugehörigen openHAB-Items übergibt
  • lux4openhab.pl - Perlskript zum Setzen von Betriebszuständen von Heizung und Brauchwasserbereitung sowie der Parallelverschiebung der Heizkurve

Benötigte openHAB-Konfigurationselemente:

  • waermepumpe.items - enthält alle openHAB-Items, die die entsprechenden Luxtronikparameter repräsentieren
  • sitemap-snippet - enthält eine Beispielsyntax der Sitemap zur Darstellung im Frontend
  • waermepumpe.rules  - enthält Cron-Rules, die regelmäßig luxtronik2openhab.pl aufrufen und somit die Luxtronik-Items in openHAB aktualisieren
  • Zusätzliche Icons - siehe Anhang

 

Funktionsweise

Per OpenHAB-Rule wird minütlich das Perlskript luxtronik2openhab.pl aufgerufen. Dieses Skript liest die aktuellen Messdaten und Statusinformationen von der Luxtronik aus und übergibt sie per REST-API an die zugehörigen openHAB-Items. Die Werte werden im Frontend (Classic-UI, Habdroid) dargestellt.

Außerdem können aus dem Frontend heraus die wichtigsten Funktionen wie Betriebszustand von Heizung und Warmwasser und die Parallelverschiebung der Heizkurve abgeändert werden. openHAB ruft hierzu das Skript lux4openhab.pl auf, welches die gewünschten Änderungen an die Luxtronik übermittelt.

 

Installation

Bitte beachten: Alles Skripte müssen von dem openHAB-User ausführbar sein. Ggf. Ownership abändern.

Es wird empfohlen, dieselben Pfade wie in diesem Beispiel zu verwenden. Werden andere Pfade verwendet, muss auf jedem Fall die Variable $basepath in den jeweiligen Skripten an die Gegebenheiten angepasset werden.

my $basepath = "/usr/local/luxtronik";

Per default verwenden alle Skripte das serielle Device "/dev/ttyS0". In Abhängigkeit von der physikalischen Hardware muss das gegebenenfalls angepasst werden. Hierzu folgende Zeile abändern:

$luxtronik = Luxtronik->new();

auf

Luxtronik->new(serialport => '/dev/ttyUSB0');

in luxtronik.pl und luxtronik2openhab.pl bzw. auf

$luxtronik = Luxtronik->new(request_retries => 20, serialport => '/dev/ttyUSB0');

in lux4openhab.pl

 

Pfad für die Skripte anlegen und die Perl-Dateien dort ablegen:

mkdir -p /usr/local/luxtronik
cd /usr/local/luxtronik
tar xzvf openhab_luxtronik.tar.gz

Testen ob Kommunikation mit der Luxtronik funktioniert:

su - <openhabuser>
cd /usr/local/luxtronik
./luxtronik.pl

Werden hier keine sinnvollen Werte ausgegeben, bitte nicht mit der Installation fortfahren, sondern erst vorhandene Probleme beheben.

 

Konfiguration von OpenHAB

Die wichtigste Datei waermepumpe.items (Achtung: kein Umlaut) im Verzeichnis $OPENHAB_PATH/configurations/items anlegen ($OPENHAB_PATH steht für den Pfad zur OpenHAB-Installation). Wer die Gruppendefinitionnen im Kopf der Datei lieber in einer separaten Datei (z.B. group.items) hätte, kann diese natürlich gerne auslagern.

waermepumpe.items:

Group Waermepumpe       (All)
Group WPTemperaturen    "Temperaturen"          <temperature>   (Waermepumpe)
Group WPEingaenge       "Eingänge"              <sani_earth_source_heat_pump>   (Waermepumpe)
Group WPAusgaenge       "Ausgänge"              <sani_earth_source_heat_pump>   (Waermepumpe)
Group WPAblaufzeiten    "Ablaufzeiten"          <clock> (Waermepumpe)
Group WPBetriebsstunden "Betriebsstunden"       <clock> (Waermepumpe)
Group WPAnlagenstatus   "Anlagenstatus"         <sani_earth_source_heat_pump>   (Waermepumpe)
Group WPFehlerspeicher  "Fehlerspeicher"        <pie>   (Waermepumpe)
Group WPAbschaltungen   "Abschaltungen"         <pie>   (Waermepumpe)

String Waermepumpenstatus       "Wärmepumpe [%s]"       <smiley_transp>        (Waermepumpe)

String WPBetriebsartHeizung          "WP Heizungsmodus"      <sani_heating>  (Waermepumpe)           { exec=">[automatik:/usr/local/luxtronik/lux4openhab.pl heizung automatik] >[zwe:/usr/local/luxtronik/lux4openhab.pl heizung zwe] >[party:/usr/local/luxtronik/lux4openhab.pl heizung party] >[aus:/usr/local/luxtronik/lux4openhab.pl heizung aus]" }

String WPBetriebsartWarmwasser        "WP Warmwassermodus"    <sani_water_hot>        (Waermepumpe)           { exec=">[automatik:/usr/local/luxtronik/lux4openhab.pl warmwasser automatik] >[zwe:/usr/local/luxtronik/lux4openhab.pl warmwasser zwe] >[party:/usr/local/luxtronik/lux4openhab.pl warmwasser party] >[aus:/usr/local/luxtronik/lux4openhab.pl warmwasser aus]" }

String WPHeizkurvenabweichung   "WP Heizkurvenabweichung"       <heizkurvenversch>      (Waermepumpe)   { exec=">[50:/usr/local/luxtronik/lux4openhab.pl heizkurve 50] >[45:/usr/local/luxtronik/lux4openhab.pl heizkurve 45] >[40:/usr/local/luxtronik/lux4openhab.pl heizkurve 40] >[35:/usr/local/luxtronik/lux4openhab.pl heizkurve 35] >[30:/usr/local/luxtronik/lux4openhab.pl heizkurve 30] >[25:/usr/local/luxtronik/lux4openhab.pl heizkurve 25] >[20:/usr/local/luxtronik/lux4openhab.pl heizkurve 20] >[15:/usr/local/luxtronik/lux4openhab.pl heizkurve 15] >[10:/usr/local/luxtronik/lux4openhab.pl heizkurve 10] >[5:/usr/local/luxtronik/lux4openhab.pl heizkurve 5] >[0:/usr/local/luxtronik/lux4openhab.pl heizkurve 0]  >[minus5:/usr/local/luxtronik/lux4openhab.pl heizkurve -5] >[minus10:/usr/local/luxtronik/lux4openhab.pl heizkurve -10] >[minus15:/usr/local/luxtronik/lux4openhab.pl heizkurve -15] >[minus20:/usr/local/luxtronik/lux4openhab.pl heizkurve -20] >[minus25:/usr/local/luxtronik/lux4openhab.pl heizkurve -25] >[minus30:/usr/local/luxtronik/lux4openhab.pl heizkurve -30] >[minus35:/usr/local/luxtronik/lux4openhab.pl heizkurve -35] >[minus40:/usr/local/luxtronik/lux4openhab.pl heizkurve -40] >[minus45:/usr/local/luxtronik/lux4openhab.pl heizkurve -45] >[minus50:/usr/local/luxtronik/lux4openhab.pl heizkurve -50] <[/usr/local/luxtronik/lux4openhab.pl heizkurve:300000:REGEX((.*?))]" }

String WPInfoTime                               "Aktualisierung in Epochensekunden [%s]"        <clock>         (Waermepumpe)
String WPInfoUhrzeit                            "Aktualisierung [%s]"   <clock>         (Waermepumpe)

Number WPTemperaturAussen                       "Außentemperatur [%.1f °C]"             <temperature>   (WPTemperaturen)
Number WPTemperaturVorlauf                      "Vorlauf [%.1f °C]"                     <temperature>   (WPTemperaturen)
Number WPTemperaturRuecklauf                    "Rücklauf [%.1f °C]"                    <temperature>   (WPTemperaturen)
Number WPTemperaturRuecklaufSoll                "Rücklauf Soll [%.1f °C]"               <temperature>   (WPTemperaturen)
Number WPTemperaturBrauchwasserIst              "Brauchwasser Ist [%.1f °C]"            <temperature>   (WPTemperaturen)
Number WPTemperaturBrauchwasserSoll             "Brauchwasser Soll [%.1f °C]"           <temperature>   (WPTemperaturen)
Number WPTemperaturWaermequelleEin              "Wärmequelleneingang [%.1f °C]"         <temperature>   (WPTemperaturen)
Number WPTemperaturHeissgas                     "Heissgas [%.1f °C]"                    <temperature>   (WPTemperaturen)
Number WPTemperaturKaeltekreis                  "Kältekreis [%.1f °C]"                  <temperature>   (WPTemperaturen)
Number WPTemperaturMischkreis1Vorlauf           "Mischkreis 1 Vorlauf [%.1f °C]"        <temperature>   (WPTemperaturen)
Number WPTemperaturMischkreis1VorlaufSoll       "Mischkreis 1 Vorl. Soll [%.1f °C]"     <temperature>   (WPTemperaturen)
Number WPTemperaturRaumstation                  "Raumstation [%.1f °C]"                 <temperature>   (WPTemperaturen)

String WPEingangASD                             "Eingang ASD [%s]"      <sani_earth_source_heat_pump>   (WPEingaenge)
String WPEingangEVU                             "Eingang EVU [%s]"      <sani_earth_source_heat_pump>   (WPEingaenge)
String WPEingangHD                              "Eingang HD [%s]"       <sani_earth_source_heat_pump>   (WPEingaenge)
String WPEingangMOT                             "Eingang MOT [%s]"      <sani_earth_source_heat_pump>   (WPEingaenge)
String WPEingangND                              "Eingang ND [%s]"       <sani_earth_source_heat_pump>   (WPEingaenge)
String WPEingangPEX                             "Eingang PEX [%s]"      <sani_earth_source_heat_pump>   (WPEingaenge)

Number WPAusgangAbtauventil                     "Abtauventil [%s]"              <sani_earth_source_heat_pump>   (WPAusgaenge)
Number WPAusgangBUP                             "Brauchwasserumwälzpumpe [%s]"  <sani_earth_source_heat_pump>   (WPAusgaenge)
Number WPAusgangFUP1                            "Fußbodenheizungsumwälzp [%s]"  <sani_earth_source_heat_pump>   (WPAusgaenge)
Number WPAusgangHUP                             "Heizungsumwälzpumpe [%s]"      <sani_earth_source_heat_pump>   (WPAusgaenge)
Number WPAusgangAusgangMischer1Auf              "Mischer 1 auf [%s]"            <sani_earth_source_heat_pump>   (WPAusgaenge)
Number WPAusgangAusgangMischer1Zu               "Mischer 1 zu  [%s]"            <sani_earth_source_heat_pump>   (WPAusgaenge)
Number WPAusgangVentilation                     "Ventilation [%s]"              <sani_earth_source_heat_pump>   (WPAusgaenge)
Number WPAusgangVentilBOSUP                     "Ventil BOSUP [%s]"             <sani_earth_source_heat_pump>   (WPAusgaenge)
Number WPAusgangVerdichter1                     "Verdichter 1 [%s]"             <sani_earth_source_heat_pump>   (WPAusgaenge)
Number WPAusgangVerdichter2                     "Verdichter 2 [%s]"             <sani_earth_source_heat_pump>   (WPAusgaenge)
Number WPAusgangZUPZIP                          "ZUP-ZIP [%s]"                  <sani_earth_source_heat_pump>   (WPAusgaenge)
Number WPAusgangZWE1                            "Zweitwärmeerzeuger [%s]"       <sani_earth_source_heat_pump>   (WPAusgaenge)
Number WPAusgangZWE2SST                         "ZWE 2 SST [%s]"                <sani_earth_source_heat_pump>   (WPAusgaenge)

String WPAblaufzeitWPSeit                       "Wärmepumpe seit [%s]"          <clock>   (WPAblaufzeiten)
String WPAblaufzeitZWE1Seit                     "ZWE 1 seit [%s]"               <clock>   (WPAblaufzeiten)
String WPAblaufzeitZWE2Seit                     "ZWE 2 seit [%s]"               <clock>   (WPAblaufzeiten)
String WPAblaufzeitNetzeinschv                  "Netzeinschaltverzögerung [%s]" <clock>   (WPAblaufzeiten)
String WPAblaufzeitSSPZeitStandzeit             "Schaltspielsp. Standzeit [%s]" <clock>   (WPAblaufzeiten)
String WPAblaufzeitSSPZeitEinschverz            "Schaltspielsp. Einschver [%s]" <clock>   (WPAblaufzeiten)
String WPAblaufzeitVDStand                      "VD Stand [%s]"                 <clock>   (WPAblaufzeiten)
String WPAblaufzeitHRMZeit                      "HRM Zeit [%s]"                 <clock>   (WPAblaufzeiten)
String WPAblaufzeitHRWZeit                      "HRW Zeit [%s]"                 <clock>   (WPAblaufzeiten)
String WPAblaufzeitTDIZeit                      "TDI Zeit [%s]"                 <clock>   (WPAblaufzeiten)
String WPAblaufzeitSperreTDI                    "Sperre TDI [%s]"               <clock>   (WPAblaufzeiten)

String WPBetriebsstundenVD1                     "Verdichter 1 [%s]"             <clock> (WPBetriebsstunden)
String WPBetriebsstundenVD1Imp                  "Verdichter 1 Impulse [%s]"     <clock> (WPBetriebsstunden)
String WPBetriebsstundenVD1DEZ                  "Verdichter 1 DEZ [%s]"         <clock> (WPBetriebsstunden)
String WPBetriebsstundenVD2                     "Verdichter 2 [%s]"             <clock> (WPBetriebsstunden)
String WPBetriebsstundenVD2Imp                  "Verdichter  2 Impulse [%s]"    <clock> (WPBetriebsstunden)
String WPBetriebsstundenVD2DEZ                  "Verdichter  2 DEZ [%s]"        <clock> (WPBetriebsstunden)
String WPBetriebsstundenZWE1                    "Zweitwärmeerz. 1 [%s]"         <clock> (WPBetriebsstunden)
String WPBetriebsstundenZWE2                    "Zweitwärmeerz. 2 [%s]"         <clock> (WPBetriebsstunden)
String WPBetriebsstundenWP                      "Wärmepumpe [%s]"               <clock> (WPBetriebsstunden)

String WPBetriebssekundenVD1                    "Verdichter 1 Sek. [%s]"                <clock> (WPBetriebsstunden)
String WPBetriebssekundenVD1DEZ                 "Verdichter 1 DEZ Sek. [%s]"    <clock> (WPBetriebsstunden)
String WPBetriebssekundenVD2                    "Verdichter 2 Sek. [%s]"                <clock> (WPBetriebsstunden)
String WPBetriebssekundenVD2DEZ                 "Verdichter  2 DEZ Sek. [%s]"   <clock> (WPBetriebsstunden)
String WPBetriebssekundenZWE1                   "Zweitwärmeerz. 1 Sek. [%s]"    <clock> (WPBetriebsstunden)
String WPBetriebssekundenZWE2                   "Zweitwärmeerz. 2 Sek.  [%s]"   <clock> (WPBetriebsstunden)
String WPBetriebssekundenWP                     "Wärmepumpe Sek. [%s]"          <clock> (WPBetriebsstunden)

String WPAnlagenstatusWPTyp                     "Wärmepumpentyp [%s]"           <sani_earth_source_heat_pump>   (WPAnlagenstatus)
String WPAnlagenstatusSWStand                   "Softwarestand [%s]"            <sani_earth_source_heat_pump>   (WPAnlagenstatus)
String WPAnlagenstatusBivStufe                  "Bivalenzstufe [%s]"            <sani_earth_source_heat_pump>   (WPAnlagenstatus)
Number WPAnlagenstatusBetriebszustand           "Betriebszustand [%s]"          <sani_earth_source_heat_pump>   (WPAnlagenstatus)
String WPAnlagenstatusBetriebszustandText       "Betriebszustand Text [%s]"     <sani_earth_source_heat_pump>   (WPAnlagenstatus)
String WPAnlagenstatusEinschaltzeitpunkt        "Einschaltzeitp. [%s]"          <sani_earth_source_heat_pump>   (WPAnlagenstatus)
String WPAnlagenstatusCompact                   "Compact [%s]"                  <sani_earth_source_heat_pump>   (WPAnlagenstatus)
String WPAnlagenstatusComfort                   "Comfort [%s]"                  <sani_earth_source_heat_pump>   (WPAnlagenstatus)


String WPFehlerspeicher0        "Speicher 0 [%s]"       <pie>   (WPFehlerspeicher)
String WPFehlerspeicher1        "Speicher 1 [%s]"       <pie>   (WPFehlerspeicher)
String WPFehlerspeicher2        "Speicher 2 [%s]"       <pie>   (WPFehlerspeicher)
String WPFehlerspeicher3        "Speicher 3 [%s]"       <pie>   (WPFehlerspeicher)
String WPFehlerspeicher4        "Speicher 4 [%s]"       <pie>   (WPFehlerspeicher)

String WPAbschaltung0           "Abschaltung 0 [%s]"            <pie>   (WPAbschaltungen)
String WPAbschaltung1           "Abschaltung 1 [%s]"            <pie>   (WPAbschaltungen)
String WPAbschaltung2           "Abschaltung 2 [%s]"            <pie>   (WPAbschaltungen)
String WPAbschaltung3           "Abschaltung 3 [%s]"            <pie>   (WPAbschaltungen)
String WPAbschaltung4           "Abschaltung 4 [%s]"            <pie>   (WPAbschaltungen)

String WPAbschaltungText0       "Abschaltung 0 [%s]"            <pie>   (WPAbschaltungen)
String WPAbschaltungText1       "Abschaltung 1 [%s]"            <pie>   (WPAbschaltungen)
String WPAbschaltungText2       "Abschaltung 2 [%s]"            <pie>   (WPAbschaltungen)
String WPAbschaltungText3       "Abschaltung 3 [%s]"            <pie>   (WPAbschaltungen)
String WPAbschaltungText4       "Abschaltung 4 [%s]"            <pie>   (WPAbschaltungen)

 

Für die Darstellung im Front-End benötigen wir als Nächstes ein paar Definitionen in der Sitemap ($OPENHAB_PATH/configurations/sitemaps/<yourname>.sitemap):

Text label="Wärmepumpe" icon="sani_earth_source_heat_pump" {
        Text item=WPInfoUhrzeit      label="Akt. [%s]"
        Text item=Waermepumpenstatus      label="Status [%s]"
        Selection item=WPBetriebsartHeizung     label="Heizung"    mappings=[automatik=Automatik, zwe=ZWE, party=Party, aus=Aus]
        Selection item=WPBetriebsartWarmwasser  label="Warmwasser" mappings=[automatik=Automatik, zwe=ZWE, party=Party, aus=Aus]
        Selection item=WPHeizkurvenabweichung  label="Heizkurvenabweichung" mappings=[50='5°C', 45='4,5°C', 40='4°C', 35='3,5°C', 30='3°C', 25='2,5°C', 20='2°C', 15='1,5°C', 10='1°C', 5='0,5°C', 0='0°C', minus5='-0,5°C',  minus10='-1°C',  minus15='-1,5°C',  minus20='-2°C',  minus25='-2,5°C',  minus30='-3°C',  minus35='-3,5°C',  minus40='-4°C',  minus45='-4,5°C',  minus50='-5°C' ]
        Group item=WPTemperaturen
        Group item=WPEingaenge
        Group item=WPAusgaenge
        Group item=WPAblaufzeiten
        Group item=WPBetriebsstunden
        Group item=WPAnlagenstatus
        Group item=WPFehlerspeicher
        Group item=WPAbschaltungen
}

 Im Anschluss noch die Icons im entsprechenden images-Ordner bereitstellen:

cp icons.tar.gz $OPENHAB_PATH/webapps/images
cd $OPENHAB_PATH/webapps/images
tar xzvf icons.tar.gz

Durch Ausführen von luxtronik2openhab.pl können jetzt die Daten von der Luxtronik nach OpenHAB übernommen und im Frontend angezeigt werden (die Werte werden auch auf der Kommandozeile ausgegeben):

su - <openhabuser>
/usr/local/luxtronik/luxtronik2openhab.pl 

Ausserdem können auch die Betriebsarten für Heizung und Warmwasser sowie die Heizkurvenabweichung (Parallelverschiebung) eingestellt werden.

 

Zuletzt müssen wir nur noch für einen automatischen Update der Items sorgen. Dies erledigen wir mit entsprechenden Cron-Rules in der Datei $OPENHAB_PATH/configurations/rules/waermepumpe.rules.

waermepumpe.rules

rule "Waermepumpenitems aktualisieren"
        when
                Time cron "0 * * * * ?"

        then
                executeCommandLine('/usr/local/luxtronik/luxtronik2openhab.pl')
end

/*
 Der Waermepumpenstatusitem soll erst aktualisiert werden, wenn luxtronik2openhab.pl
gelaufen ist. Wegen Laufzeit von ca. 10 Sek. wurde Ausführung auf Sekunde 30 festgelegt
*/
rule "Waermepumpenstatus aktualisieren"
        when
                Time cron "30 * * * * ?"

        then
                if (WPAnlagenstatusBetriebszustandText.state == 'Heizen' || (WPAnlagenstatusBetriebszustandText.state == 'Warmwasser') {

                        Waermepumpenstatus.postUpdate(WPAnlagenstatusBetriebszustandText.state + ' seit ' + WPAblaufzeitWPSeit.state)

                } else if (WPAnlagenstatusBetriebszustandText.state == 'Bereitschaft' || WPAnlagenstatusBetriebszustandText.state == 'EVU Sperre') {

                        Waermepumpenstatus.postUpdate(WPAnlagenstatusBetriebszustandText.state + ' seit ' + WPAblaufzeitVDStand.state)

                } else {

                        Waermepumpenstatus.postUpdate(WPAnlagenstatusBetriebszustandText.state)

                }
end

Geschafft. Glückwunsch!

Attachments:
Download this file (icons.tar.gz)icons.tar.gz[Icons]8 kB2016-02-21 18:20
Download this file (openhab_luxtronik.tar.gz)openhab_luxtronik.tar.gz[Perl-Skripte]10 kB2016-02-21 18:21

Introduction
This little program allows for activation or deactivation of a Fritz!Box WLAN. It works reliable and has been tested on Debian-Linux with the following Fritz!Boxes:
•    Fritz!Box 7390
•    Fritz!Box 7170
•    fritzed Speedport W 900V
•    other types might work as well but have not been tested

How it works
In order to control a Fritz!Box WLAN this little Perl program named “fritzwlan.pl” has been written. It can be executed directly from the command line and uses the telnet protocol to retrieve the current status or turn the WLAN on or off. Of course, the telnet-daemon on your Fritz!Box has to be activated beforehand.

So what we need is the following:
•    Activation of telnetd on the Fritz!Box
•    Installation of Perl module Net::Telnet
•    Installation of fritzwlan.pl

Activation of telnetd on the Fritz!Box
Using your Fritz!Box connected handheld phone is probably the easiest way to activate the telnet daemon on your Fritz!box. Just dial
#96*7* for activation
#96*8* for deactivation

Installation of Perl module Net::Telnet
fritzwlan.pl  requires Net::Telnet to function. On Debian systems this module comes with the
libnet-telnet-perl –package and can be installed with the following command:

apt-get install libnet-telnet-perl

Installation of fritzwlan.pl
The installation of fritzwlan.pl is quite simple: Just copy it to a path of your choice (e.g. /usr/local/scripts or whatever). Assuming it resides in /usr/local/scripts you can do a quick test by executing the following command:

/usr/local/scripts/fritzwlan.pl help

=> some usage information about its correct invocation is shown.

Now it is time trying to switch on/off  the WLAN or querying the state. Assuming your Fritz!Box is password protected and has the IP 192.168.178.1 you could use the following commands for status/switching on/switching off:

/usr/local/scripts/fritzwlan.pl  192.168.178.1 password status
/usr/local/scripts/fritzwlan.pl  192.168.178.1 password on
/usr/local/scripts/fritzwlan.pl  192.168.178.1 password off

Please note, it might take a few seconds until the WLAN reaches the desired state. For further information check the output of

/usr/local/scripts/fritzwlan.pl help

 

Copyright (c) 2013, Thomas Hoerndlein, GPL.  All rights reserved, some wrongs reversed.

Attachments:
Download this file (fritzwlan.pl)fritzwlan.pl[frizwlan.pl Version 1.1]2 kB2014-10-18 00:08

Subcategories

Beschreibungen zu Programmen und Skripten für KNX / EIB, die auf dieser Website zu finden sind.

Die Luxtronik ist ein Wärmepumpenregler, der bei Wärmepumpen von Alpha-Innotec und anderen Herstellern zum Einsatz kommt. Die hier aufgeführte Software ist nur für die Hardwareversion 1 der Luxtronik (Abbildung) geeignet.

Mit Hilfe des IP-Wetterdatenempfängers (IPWE 1) von ELV können die lokalen Wetterdaten über ein vorhandenes Ethernet-LAN mittels Webzugriff (http) bzw. telnet-Zugriff abgerufen und/oder in eigenen Softwareprojekten weiterverarbeitet werden. Die folgenden Artikel beschreiben was dazu nötig ist und wie dies technisch umgesetzt werden kann.

Diese Kategorie enthält Programme, Konfigurationen und Beispiellösungen für verschiedene Anwendungsfälle der Automatisierungssoftware openHAB. Weitere Informationen zu openHAB sind unter www.openhab.org zu finden. Dort ist auch das englischsprachige Wiki  verlinkt. openHAB hat unter community.openhab.org eine sehr aktive Community (englisch). Eine deutschsprachige Community gibt es hier: knx-user-forum.de/forum/supportforen/openhab.