Dimplex Wärmepumpenmanager: Unterschied zwischen den Versionen

Aus FHEMWiki
(Die Seite wurde neu angelegt: „Mit der NWPM-Erweiterung ist es möglich den Dimplex Wärmepumpenmanager in ein Hausnetzwerk einzubinden. Durch die Einbindung der NWPM-Erweiterung ist es eben…“)
 
Keine Bearbeitungszusammenfassung
 
(15 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Mit der NWPM-Erweiterung ist es möglich den Dimplex Wärmepumpenmanager in ein Hausnetzwerk einzubinden. Durch die Einbindung der NWPM-Erweiterung ist es ebenfalls möglich die zur Verfügung gestellten Werte vom Wärmepumpenmanager mittels ModbusTCP in FHEM zu übernehmen, anzuzeigen und grafisch darzustellen.
<!-- bitte noch die Abkürzung "NWPM" erklären (Benutzer:Ph1959de, 2015/02/02) -->
Mit der NWPM-Erweiterung ist es möglich, den Dimplex Wärmepumpenmanager in ein Hausnetzwerk einzubinden. Durch die Einbindung der NWPM-Erweiterung ist es ebenfalls möglich, die zur Verfügung gestellten Werte vom Wärmepumpenmanager mittels ModbusTCP in FHEM zu übernehmen, anzuzeigen und grafisch darzustellen.


== Voraussetzung ==
== Voraussetzung ==
Die Anbindung des Dimplex Wärmepumpenmanager an FHEM erfolgt mittels NWPM-Erweiterung und der aktuellsten FHEM Installation. Weiterhin werden die zur Verfügung stehenden Module:
Die Anbindung des Dimplex Wärmepumpenmanager an FHEM erfolgt mittels NWPM-Erweiterung und der aktuellen FHEM Installation. Weiterhin werden die zur Verfügung stehenden Module:


* 36_ModbusTCPServer.pm  
* 36_ModbusTCPServer.pm  
Zeile 8: Zeile 9:
* 37_ModbusRegister.pm
* 37_ModbusRegister.pm


genutzt. Getestet wurde der Zugriff mit einem BeagleBone Black und mit der im Wiki (http://www.fhemwiki.de/wiki/BeagleBone_Black) beschriebenen Debian Installation.
genutzt. Getestet wurde der Zugriff auf einem BeagleBone Black mit der [[BeagleBone Black|hier beschriebenen]] Debian Installation.


== Installation ==
== Installation ==
Die nachfolgenden Module sind notwendig und müssen nachinstalliert werden. Zum Zeitpunkt der Erstellung dieser Dokumentation sind diese Module noch nicht offiziell in FHEM enthalten und werden auch nicht mittels Update mitgeliefert.
Die oben aufgeführten Module sind notwendig und müssen nachinstalliert werden. Zum Zeitpunkt der Erstellung dieser Dokumentation (31.1.2015) sind diese noch nicht offiziell in FHEM enthalten und werden auch nicht mittels Update verteilt. Die Module werden mit dem Befehl:
* download der Module von https://github.com/ChrisD70/FHEM-Modules:
<pre>
* 36_ModbusTCPServer.pm
update all https://raw.githubusercontent.com/ChrisD70/FHEM-Modules/master/autoupdate/mb/controls_modbus.txt
* 37_ModbusCoil.pm
</pre>
* 37_ModbusRegister.pm
über die FHEM Befehlszeile installiert und anschließend
* kopieren der Module in das Verzeichnis /fhem/FHEM/
<pre>
* anschließend gegebenenfalls durch ein Reload laden
reload 36_ModbusTCPServer.pm  
 
reload 37_ModbusCoil.pm
reload 37_ModbusRegister.pm
</pre>
mit einem Reload geladen.
== Benutzung ==  
== Benutzung ==  
=== Anlegen der ModbusTCPServer Verbindung ===
=== Anlegen der ModbusTCPServer Verbindung ===
Wie im im nachfolgenden angegeben muss zunächst eine ModbusTCPServer Verbindung hergestellt werden. Die angegebene IP-Adresse muss durch die IP-Adresse der Wärmepumpe ersetzt werden.
Wie im nachfolgenden angegeben muss zunächst eine ModbusTCPServer Verbindung hergestellt werden. Die angegebene IP-Adresse muss durch die IP-Adresse der Wärmepumpe ersetzt werden.
<pre>
<pre>
########################################################
########################################################
##  ModbusTCPServer definieren
##  ModbusTCPServer definieren
##  Erstellt........: 28.12.2014
########################################################
########################################################
define HeatPumpServer ModbusTCPServer 192.168.1.150
define HeatPumpServer ModbusTCPServer 192.168.1.150
Zeile 38: Zeile 41:
##  Außentemperatur
##  Außentemperatur
##  Erstellt........: 06.01.2015
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
########################################################
define dim_outdoor_temperature ModbusRegister 0 1
define dim_outdoor_temperature ModbusRegister 0 1
  attr dim_outdoor_temperature IODev HeatPumpServer
  attr dim_outdoor_temperature IODev HeatPumpServer
  attr dim_outdoor_temperature conversion 0.1:0
  attr dim_outdoor_temperature conversion 0.1:0
  attr dim_outdoor_temperature event-min-interval .*:900
  attr dim_outdoor_temperature event-min-interval .*:900
  attr dim_outdoor_temperature event-on-change-reading .*
  attr dim_outdoor_temperature event-on-change-reading .*
  attr dim_outdoor_temperature plcDataType INT
  attr dim_outdoor_temperature plcDataType INT
  attr dim_outdoor_temperature registerType Holding
  attr dim_outdoor_temperature registerType Holding
  attr dim_outdoor_temperature room Dimplex
  attr dim_outdoor_temperature room Dimplex
  attr dim_outdoor_temperature stateFormat {sprintf("%0.1f", ReadingsVal($name,"state",0))}
  attr dim_outdoor_temperature stateAlias temperature
  attr dim_outdoor_temperature updateIntervall 600
  attr dim_outdoor_temperature stateFormat {sprintf("%0.1f", ReadingsVal($name,"state",0))}
  attr dim_outdoor_temperature userReadings temperature {sprintf("%0.1f", ReadingsVal($name,"state",0))}
  attr dim_outdoor_temperature updateInterval 00:10:00
</pre>
</pre>
Erklärung:
Erklärung:
  ---------------------------------------------------------------------------------------------------------------------------------
  {| class="wikitable"
ModbusRegister 0 1         =  0 Device Adresse, in der Regel bei ModbusTCP immer 0
|+ Erläuterungen zur Adressdefinition
ModbusRegister 0 1         =  1 Register Adresse, wird unter www.dimplex.de/wiki → ModbusTCP → Spalten IP zur Verfügung gestellt
|-
IODev                       =  Verwendeter und zuvor angelegter ModbusTCPServer
! Attribut !! Erläuterungen
conversion                 =  eine gegebenenfalls notwendige Konvertierung des übermittelten Values
|-
PlcDataType                 =  Ermöglicht eine automatische Interpretation der ankommenden Daten
| ModbusRegister 0 1 || 0 Device Adresse, in der Regel bei ModbusTCP immer 0
updateIntervall            =  Intervall des Abfragezyklus (z.B. 300 Sekunden)
|-
userReadings                =  das userReading „temperature“ wird wegen dem Statistic-Modul gleich mit angelegt
| ModbusRegister 0 1 || 1 Register Adresse, wird unter www.dimplex.de/wiki → ModbusTCP → Spalten IP zur Verfügung gestellt
---------------------------------------------------------------------------------------------------------------------------------
|-
| IODev             || Verwendeter und zuvor angelegter ModbusTCPServer
|-
| conversion         || eine gegebenenfalls notwendige Konvertierung des übermittelten Values
|-
| PlcDataType       || Ermögliche automatische Interpretation der ankommenden Daten
|-
| stateAlias        || es wird ein zusätzliches Reading erzeugt, um zum Beispiel das Statistic-Modul nutzen zu können, stateAlias ist eine echte Kopie von "state"
|-
| updateInterval    || Intervall des Abfragezyklus (z.B. 00:10:00 Minuten)
|-
|}


=== Betriebsdaten ===
=== Betriebsdaten ===
Vorschlag der Namensvergabe für die Betriebsdaten
Vorschlag der Namensvergabe für die Betriebsdaten. Eine sinnvolle Namensvergabe erleichtert später das Anlegen weiterer Definitionen von zum Beispiel Logfiles, Statistiken oder auch [[readingsGroup]].
{| class="wikitable"
{| class="wikitable"
|-
|-
Zeile 91: Zeile 106:
##  Register Warmwassertemperatur definieren
##  Register Warmwassertemperatur definieren
##  Erstellt........: 06.01.2015
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
########################################################
define dim_dhw_temperature ModbusRegister 0 3
define dim_dhw_temperature ModbusRegister 0 3
  attr dim_dhw_temperature IODev HeatPumpServer
  attr dim_dhw_temperature IODev HeatPumpServer
  attr dim_dhw_temperature conversion 0.1:0
  attr dim_dhw_temperature conversion 0.1:0
  attr dim_dhw_temperature event-min-interval .*:900
  attr dim_dhw_temperature event-min-interval .*:900
  attr dim_dhw_temperature event-on-change-reading .*
  attr dim_dhw_temperature event-on-change-reading .*
  attr dim_dhw_temperature plcDataType INT
  attr dim_dhw_temperature plcDataType INT
  attr dim_dhw_temperature registerType Holding
  attr dim_dhw_temperature registerType Holding
  attr dim_dhw_temperature room Dimplex
  attr dim_dhw_temperature room Dimplex
  attr dim_dhw_temperature stateFormat {sprintf("%0.1f", ReadingsVal($name,"state",0))}
  attr dim_dhw_temperature stateAlias temperature
  attr dim_dhw_temperature updateIntervall 60
  attr dim_dhw_temperature stateFormat {sprintf("%0.1f", ReadingsVal($name,"state",0))}
  attr dim_dhw_temperature userReadings temperature {sprintf("%0.1f", ReadingsVal($name,"state",0))}
  attr dim_dhw_temperature updateInterval 00:01:00
</pre>
</pre>
<pre>
<pre>
Zeile 108: Zeile 124:
##  Register Vorlauftemperatur definieren
##  Register Vorlauftemperatur definieren
##  Erstellt........: 06.01.2015
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
########################################################
define dim_flow_temperature ModbusRegister 0 5
define dim_flow_temperature ModbusRegister 0 5
  attr dim_flow_temperature IODev HeatPumpServer
  attr dim_flow_temperature IODev HeatPumpServer
  attr dim_flow_temperature conversion 0.1:0
  attr dim_flow_temperature conversion 0.1:0
  attr dim_flow_temperature event-min-interval .*:900
  attr dim_flow_temperature event-min-interval .*:900
  attr dim_flow_temperature event-on-change-reading .*
  attr dim_flow_temperature event-on-change-reading .*
  attr dim_flow_temperature plcDataType INT
  attr dim_flow_temperature plcDataType INT
  attr dim_flow_temperature registerType Holding
  attr dim_flow_temperature registerType Holding
  attr dim_flow_temperature room Dimplex
  attr dim_flow_temperature room Dimplex
  attr dim_flow_temperature stateFormat {sprintf("%0.1f", ReadingsVal($name,"state",0))}
  attr dim_flow_temperature stateAlias temperature
  attr dim_flow_temperature updateIntervall 60
  attr dim_flow_temperature stateFormat {sprintf("%0.1f", ReadingsVal($name,"state",0))}
  attr dim_flow_temperature userReadings temperature {sprintf("%0.1f", ReadingsVal($name,"state",0))}
  attr dim_flow_temperature updateInterval 00:01:00
</pre>
</pre>
<pre>
<pre>
Zeile 125: Zeile 142:
##  Register Rücklauftemperatur definieren
##  Register Rücklauftemperatur definieren
##  Erstellt........: 06.01.2015
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
########################################################
define dim_return_temperature ModbusRegister 0 2
define dim_return_temperature ModbusRegister 0 2
  attr dim_return_temperature IODev HeatPumpServer
  attr dim_return_temperature IODev HeatPumpServer
  attr dim_return_temperature conversion 0.1:0
  attr dim_return_temperature conversion 0.1:0
  attr dim_return_temperature event-min-interval .*:900
  attr dim_return_temperature event-min-interval .*:900
  attr dim_return_temperature event-on-change-reading .*
  attr dim_return_temperature event-on-change-reading .*
  attr dim_return_temperature plcDataType INT
  attr dim_return_temperature plcDataType INT
  attr dim_return_temperature registerType Holding
  attr dim_return_temperature registerType Holding
  attr dim_return_temperature room Dimplex
  attr dim_return_temperature room Dimplex
  attr dim_return_temperature stateFormat {sprintf("%0.1f", ReadingsVal($name,"state",0))}
  attr dim_return_temperature stateAlias temperature
  attr dim_return_temperature updateIntervall 60
  attr dim_return_temperature stateFormat {sprintf("%0.1f", ReadingsVal($name,"state",0))}
  attr dim_return_temperature userReadings temperature {sprintf("%0.1f", ReadingsVal($name,"state",0))}
  attr dim_return_temperature updateInterval 00:01:00
</pre>
</pre>
<pre>
<pre>
Zeile 142: Zeile 160:
##  Register Rücklaufsolltemperatur definieren
##  Register Rücklaufsolltemperatur definieren
##  Erstellt........: 06.01.2015
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
########################################################
define dim_returnset_temperature ModbusRegister 0 53
define dim_returnset_temperature ModbusRegister 0 53
  attr dim_returnset_temperature IODev HeatPumpServer
  attr dim_returnset_temperature IODev HeatPumpServer
  attr dim_returnset_temperature conversion 0.1:0
  attr dim_returnset_temperature conversion 0.1:0
  attr dim_returnset_temperature event-min-interval .*:900
  attr dim_returnset_temperature event-min-interval .*:900
  attr dim_returnset_temperature event-on-change-reading .*
  attr dim_returnset_temperature event-on-change-reading .*
  attr dim_returnset_temperature plcDataType INT
  attr dim_returnset_temperature plcDataType INT
  attr dim_returnset_temperature registerType Holding
  attr dim_returnset_temperature registerType Holding
  attr dim_returnset_temperature room Dimplex
  attr dim_returnset_temperature room Dimplex
  attr dim_returnset_temperature stateFormat {sprintf("%0.1f", ReadingsVal($name,"state",0))}
  attr dim_returnset_temperature stateAlias temperature
  attr dim_returnset_temperature updateIntervall 300
  attr dim_returnset_temperature stateFormat {sprintf("%0.1f", ReadingsVal($name,"state",0))}
  attr dim_returnset_temperature userReadings temperature {sprintf("%0.1f", ReadingsVal($name,"state",0))}
  attr dim_returnset_temperature updateInterval 00:05:00
</pre>
 
==== Logfile Betriebsdaten ====
Anlegen eines täglichen Logfile der Betriebsdaten.
<pre>
########################################################
##  Logfile Betriebsdaten definieren
##  Erstellt........: 06.01.2015
########################################################
define filelog_dim_temperature FileLog ./log/filelog_dim_temperature-%W-%d.log
                                      dim_.*._temperature:temperature:.*|dim_.*._pressure:pressure:.*
  attr filelog_dim_temperature room Dimplex
</pre>
 
==== Statistiken ====
Folgender Code legt die Statistiken der Betriebsdaten an
<pre>
define dim_statistics statistics dim_.*._temperature|dim_.*._pressure
  attr dim_statistics dayChangeTime 1
  attr dim_statistics deltaReadings temperature,pressure
  attr dim_statistics minAvgMaxReadings temperature,pressure
  attr dim_statistics room Dimplex
  attr dim_statistics tendencyReadings temperature,pressure
</pre>
</pre>


=== Zustände ===
=== Zustände ===
Vorschlag der Namensvergabe für die Zustände
Vorschlag der Namensvergabe für die Zustände. Eine sinnvolle Namensvergabe erleichtert später das Anlegen weiterer Definitionen von zum Beispiel Logfiles, Statistiken oder auch [[readingsGroup]].
{| class="wikitable"
{| class="wikitable"
|-
|-
Zeile 181: Zeile 223:
##  Coil Verdichter definieren
##  Coil Verdichter definieren
##  Erstellt........: 06.01.2015
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
########################################################
define dim_compressor_output ModbusCoil 0 41
define dim_compressor_output ModbusCoil 0 41
  attr dim_compressor_output IODev HeatPumpServer
  attr dim_compressor_output IODev HeatPumpServer
  attr dim_compressor_output disableRegisterMapping 1
  attr dim_compressor_output disableRegisterMapping 1
  attr dim_compressor_output event-min-interval .*:900
  attr dim_compressor_output event-min-interval .*:900
  attr dim_compressor_output event-on-change-reading .*
  attr dim_compressor_output event-on-change-reading .*
  attr dim_compressor_output room Dimplex
  attr dim_compressor_output room Dimplex
  attr dim_compressor_output source Coil
  attr dim_compressor_output source Coil
   attr dim_compressor_output updateIntervall 60
  attr dim_compressor_output updateInterval 00:01:00
 
########################################################
##  Passenden HourCounter für Verdichter definieren
##  Erstellt........: 06.01.2015
########################################################
define hourcounter_compressor_output HourCounter dim_compressor_output:on dim_compressor_output:off
  attr hourcounter_compressor_output event-min-interval tick.*:0,.*:3600
   attr hourcounter_compressor_output event-on-change-reading .*
</pre>
</pre>
<pre>
<pre>
Zeile 195: Zeile 246:
##  Coil Ventilator definieren
##  Coil Ventilator definieren
##  Erstellt........: 06.01.2015
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
########################################################
define dim_ventilator_output ModbusCoil 0 43
define dim_ventilator_output ModbusCoil 0 43
  attr dim_ventilator_output IODev HeatPumpServer
  attr dim_ventilator_output IODev HeatPumpServer
  attr dim_ventilator_output disableRegisterMapping 1
  attr dim_ventilator_output disableRegisterMapping 1
  attr dim_ventilator_output event-min-interval .*:900
  attr dim_ventilator_output event-min-interval .*:900
  attr dim_ventilator_output event-on-change-reading .*
  attr dim_ventilator_output event-on-change-reading .*
  attr dim_ventilator_output room Dimplex
  attr dim_ventilator_output room Dimplex
  attr dim_ventilator_output source Coil
  attr dim_ventilator_output source Coil
  attr dim_ventilator_output updateIntervall 60
  attr dim_ventilator_output updateInterval 00:01:00
 
########################################################
##  Passenden HourCounter für Ventilator definieren
##  Erstellt........: 06.01.2015
########################################################
define hourcounter_ventilator_output HourCounter dim_ventilator_output:on dim_ventilator_output:off
  attr hourcounter_ventilator_output event-min-interval tick.*:0,.*:3600
  attr hourcounter_ventilator_output event-on-change-reading .*
</pre>
</pre>
<pre>
<pre>
########################################################
########################################################
##  Coil 2.Wärmeerzeguer definieren
##  Coil 2.Wärmeerzeuger definieren
##  Erstellt........: 06.01.2015
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
########################################################
define dim_2heatgenerator_output ModbusCoil 0 44
define dim_2heatgenerator_output ModbusCoil 0 44
  attr dim_2heatgenerator_output IODev HeatPumpServer
  attr dim_2heatgenerator_output IODev HeatPumpServer
  attr dim_2heatgenerator_output disableRegisterMapping 1
  attr dim_2heatgenerator_output disableRegisterMapping 1
  attr dim_2heatgenerator_output event-min-interval .*:900
  attr dim_2heatgenerator_output event-min-interval .*:900
  attr dim_2heatgenerator_output event-on-change-reading .*
  attr dim_2heatgenerator_output event-on-change-reading .*
  attr dim_2heatgenerator_output room Dimplex
  attr dim_2heatgenerator_output room Dimplex
  attr dim_2heatgenerator_output source Coil
  attr dim_2heatgenerator_output source Coil
  attr dim_2heatgenerator_output updateIntervall 60
  attr dim_2heatgenerator_output updateInterval 00:01:00
 
########################################################
##  Passenden HourCounter für 2.Wärmeerzeuger definieren
##  Erstellt........: 06.01.2015
########################################################
define hourcounter_2heatgenerator_output HourCounter dim_2heatgenerator_output:on dim_2heatgenerator_output:off
  attr hourcounter_2heatgenerator_output event-min-interval tick.*:0,.*:3600
  attr hourcounter_2heatgenerator_output event-on-change-reading .*
</pre>
</pre>
<pre>
<pre>
Zeile 223: Zeile 292:
##  Coil Heizungsumwälzpumpe M13 definieren
##  Coil Heizungsumwälzpumpe M13 definieren
##  Erstellt........: 06.01.2015
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
########################################################
define dim_circulationpump_output ModbusCoil 0 45
define dim_circulationpump_output ModbusCoil 0 45
  attr dim_circulationpump_output IODev HeatPumpServer
  attr dim_circulationpump_output IODev HeatPumpServer
  attr dim_circulationpump_output disableRegisterMapping 1
  attr dim_circulationpump_output disableRegisterMapping 1
  attr dim_circulationpump_output event-min-interval .*:900
  attr dim_circulationpump_output event-min-interval .*:900
  attr dim_circulationpump_output event-on-change-reading .*
  attr dim_circulationpump_output event-on-change-reading .*
  attr dim_circulationpump_output room Dimplex
  attr dim_circulationpump_output room Dimplex
  attr dim_circulationpump_output source Coil
  attr dim_circulationpump_output source Coil
  attr dim_circulationpump_output updateIntervall 60
  attr dim_circulationpump_output updateInterval 00:01:00
 
########################################################
##  Passenden HourCounter für Heizungsumwälzpumpe M13 definieren
##  Erstellt........: 06.01.2015
########################################################
define hourcounter_circulationpump_output HourCounter dim_circulationpump_output:on dim_circulationpump_output:off
  attr hourcounter_circulationpump_output event-min-interval tick.*:0,.*:3600
  attr hourcounter_circulationpump_output event-on-change-reading .*
</pre>
</pre>
<pre>
<pre>
Zeile 237: Zeile 315:
##  Coil Warmwasserpumpe M18 definieren
##  Coil Warmwasserpumpe M18 definieren
##  Erstellt........: 06.01.2015
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
########################################################
define dim_dhwpump_output ModbusCoil 0 46
define dim_dhwpump_output ModbusCoil 0 46
  attr dim_dhwpump_output IODev HeatPumpServer
  attr dim_dhwpump_output IODev HeatPumpServer
  attr dim_dhwpump_output disableRegisterMapping 1
  attr dim_dhwpump_output disableRegisterMapping 1
  attr dim_dhwpump_output event-min-interval .*:900
  attr dim_dhwpump_output event-min-interval .*:900
  attr dim_dhwpump_output event-on-change-reading .*
  attr dim_dhwpump_output event-on-change-reading .*
  attr dim_dhwpump_output room Dimplex
  attr dim_dhwpump_output room Dimplex
  attr dim_dhwpump_output source Coil
  attr dim_dhwpump_output source Coil
  attr dim_dhwpump_output updateIntervall 60
  attr dim_dhwpump_output updateInterval 00:01:00
 
########################################################
##  Passenden HourCounter für Warmwasserpumpe M18 definieren
##  Erstellt........: 06.01.2015
########################################################
define hourcounter_dhwpump_output HourCounter dim_dhwpump_output:on dim_dhwpump_output:off
  attr hourcounter_dhwpump_output event-min-interval tick.*:0,.*:3600
  attr hourcounter_dhwpump_output event-on-change-reading .*
</pre>
</pre>
<pre>
<pre>
########################################################
########################################################
##  Coil Zusatzpumpe M19 definieren
##  Coil Zusatzpumpe M16 definieren
##  Erstellt........: 06.01.2015
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
########################################################
define dim_auxiliarypump_output ModbusCoil 0 49
define dim_auxiliarypump_output ModbusCoil 0 49
  attr dim_auxiliarypump_output IODev HeatPumpServer
  attr dim_auxiliarypump_output IODev HeatPumpServer
  attr dim_auxiliarypump_output disableRegisterMapping 1
  attr dim_auxiliarypump_output disableRegisterMapping 1
  attr dim_auxiliarypump_output event-min-interval .*:900
  attr dim_auxiliarypump_output event-min-interval .*:900
  attr dim_auxiliarypump_output event-on-change-reading .*
  attr dim_auxiliarypump_output event-on-change-reading .*
  attr dim_auxiliarypump_output room Dimplex
  attr dim_auxiliarypump_output room Dimplex
  attr dim_auxiliarypump_output source Coil
  attr dim_auxiliarypump_output source Coil
   attr dim_auxiliarypump_output updateIntervall 60
  attr dim_auxiliarypump_output updateInterval 00:01:00
 
########################################################
##  Passenden HourCounter für Zusatzpumpe M16 definieren
##  Erstellt........: 06.01.2015
########################################################
define hourcounter_auxiliarypump_output HourCounter dim_auxiliarypump_output:on dim_auxiliarypump_output:off
  attr hourcounter_auxiliarypump_output event-min-interval tick.*:0,.*:3600
   attr hourcounter_auxiliarypump_output event-on-change-reading .*
</pre>
</pre>
<pre>
<pre>
Zeile 265: Zeile 361:
##  Coil Flanschheizung definieren
##  Coil Flanschheizung definieren
##  Erstellt........: 06.01.2015
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
########################################################
define dim_flangeheater_output ModbusCoil 0 50
define dim_flangeheater_output ModbusCoil 0 50
  attr dim_flangeheater_output IODev HeatPumpServer
  attr dim_flangeheater_output IODev HeatPumpServer
  attr dim_flangeheater_output disableRegisterMapping 1
  attr dim_flangeheater_output disableRegisterMapping 1
  attr dim_flangeheater_output event-min-interval .*:900
  attr dim_flangeheater_output event-min-interval .*:900
  attr dim_flangeheater_output event-on-change-reading .*
  attr dim_flangeheater_output event-on-change-reading .*
  attr dim_flangeheater_output room Dimplex
  attr dim_flangeheater_output room Dimplex
  attr dim_flangeheater_output source Coil
  attr dim_flangeheater_output source Coil
   attr dim_flangeheater_output updateIntervall 60
  attr dim_flangeheater_output updateInterval 00:01:00
 
########################################################
##  Passenden HourCounter für Flanschheizung M16 definieren
##  Erstellt........: 06.01.2015
########################################################
define hourcounter_flangeheater_output HourCounter dim_flangeheater_output:on dim_flangeheater_output:off
  attr hourcounter_flangeheater_output event-min-interval tick.*:0,.*:3600
  attr hourcounter_flangeheater_output event-on-change-reading .*
</pre>
 
==== Logfile Zustände ====
Anlegen eines wöchentlichen Logfile der Zustände.
<pre>
########################################################
##  Logfile Ausgänge/Zustände definieren
##  Erstellt........: 06.01.2015
########################################################
define filelog_dim_output_week FileLog ./log/filelog_dim_output_week-%W.log dim_.*._output.*
  attr filelog_dim_output_week room Dimplex
</pre>
 
=== Historie ===
Vorschlag der Namensvergabe für die Historie. Eine sinnvolle Namensvergabe erleichtert später das Anlegen weiterer Definitionen von zum Beispiel Logfiles, Statistiken oder auch [[readingsGroup]].
{| class="wikitable"
|-
| dim_compressor_history      || Verdichter
|-
| dim_ventilator_history      || Ventilator
|-
| dim_brinepump_history      || Solepumpe
|-
| dim_circulationpump_history || Heizungsumwälzpumpe M13
|-
| dim_2heatgenerator_history  || 2.Wärmeerzeuger
|-
| dim_dhwpump_history        || Warmwasserpumpe M18
|-
| dim_auxiliarypump_history  || Zusatzpumpe M16
|-
| dim_flangeheater_history   || Flanschheizung
|}
 
<pre>
########################################################
##  Register Historie Verdichter definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_compressor_history ModbusRegister 0 72
  attr dim_compressor_history IODev HeatPumpServer
  attr dim_compressor_history alignUpdateInterval 00:01:00
  attr dim_compressor_history event-on-change-reading .*
  attr dim_compressor_history plcDataType INT
  attr dim_compressor_history registerType Holding
  attr dim_compressor_history room Dimplex
  attr dim_compressor_history updateInterval 01:00:00
</pre>
<pre>
########################################################
##  Register Historie Ventilator definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_ventilator_history ModbusRegister 0 74
  attr dim_ventilator_history IODev HeatPumpServer
  attr dim_ventilator_history alignUpdateInterval 00:01:00
  attr dim_ventilator_history event-on-change-reading .*
  attr dim_ventilator_history plcDataType INT
  attr dim_ventilator_history registerType Holding
  attr dim_ventilator_history room Dimplex
  attr dim_ventilator_history updateInterval 01:00:00
</pre>
<pre>
########################################################
##  Register Historie 2.Wärmeerzeuger definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_2heatgenerator_history ModbusRegister 0 75
  attr dim_2heatgenerator_history IODev HeatPumpServer
  attr dim_2heatgenerator_history alignUpdateInterval 00:01:00
  attr dim_2heatgenerator_history event-on-change-reading .*
  attr dim_2heatgenerator_history plcDataType INT
  attr dim_2heatgenerator_history registerType Holding
  attr dim_2heatgenerator_history room Dimplex
  attr dim_2heatgenerator_history updateInterval 01:00:00
</pre>
<pre>
########################################################
##  Register Historie Heizungsumwälzpumpe M13 definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_circulationpump_history ModbusRegister 0 76
  attr dim_circulationpump_history IODev HeatPumpServer
  attr dim_circulationpump_history alignUpdateInterval 00:01:00
  attr dim_circulationpump_history event-on-change-reading .*
  attr dim_circulationpump_history plcDataType INT
  attr dim_circulationpump_history registerType Holding
  attr dim_circulationpump_history room Dimplex
  attr dim_circulationpump_history updateInterval 01:00:00
</pre>
<pre>
########################################################
##  Register Historie Warmwasserpumpe M18 definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_dhwpump_history ModbusRegister 0 77
  attr dim_dhwpump_history IODev HeatPumpServer
  attr dim_dhwpump_history alignUpdateInterval 00:01:00
  attr dim_dhwpump_history event-on-change-reading .*
  attr dim_dhwpump_history plcDataType INT
  attr dim_dhwpump_history registerType Holding
  attr dim_dhwpump_history room Dimplex
  attr dim_dhwpump_history updateInterval 01:00:00
</pre>
<pre>
########################################################
##  Register Historie Flanschheizung definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_flangeheater_history ModbusRegister 0 78
  attr dim_flangeheater_history IODev HeatPumpServer
  attr dim_flangeheater_history alignUpdateInterval 00:01:00
  attr dim_flangeheater_history event-on-change-reading .*
  attr dim_flangeheater_history plcDataType INT
  attr dim_flangeheater_history registerType Holding
  attr dim_flangeheater_history room Dimplex
  attr dim_flangeheater_history updateInterval 01:00:00
</pre>
==== Logfile Historie ====
Anlegen eines monatlichen Logfile für die Historischen Daten.
<pre>
########################################################
##  Logfile Historie definieren
##  Erstellt........: 06.01.2015
########################################################
define filelog_dim_history_month FileLog ./log/filelog_dim_history_month-%m.log dim_.*._history.*
  attr filelog_dim_history_month room Dimplex
</pre>
 
==== Wärmemengen ====
Laut Definition aus dem [http://www.dimplex.de/wiki Dimplex-Wiki] werden die Wärmemengen für Heizen, Warmwasser und Schwimmbad aus 3 Register-Adressen zusammengesetzt. Im Nachfolgenden Code-Beispiel wird dies entsprechend dargestellt. Dabei wird jeweils im ersten Register ein neues userReading mit der Darstellung der Gesamtwärmemenge angelegt.
<pre>
########################################################
##  Wärmemenge Heizen definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_heating1_thermalenergy ModbusRegister 0 5096
  attr dim_heating1_thermalenergy IODev HeatPumpServer
  attr dim_heating1_thermalenergy event-on-change-reading .*
  attr dim_heating1_thermalenergy plcDataType INT
  attr dim_heating1_thermalenergy registerType Holding
  attr dim_heating1_thermalenergy room Dimplex
  attr dim_heating1_thermalenergy updateInterval 00:15:00
  attr dim_heating1_thermalenergy userReadings heatingthermalenergy {
                                    ((ReadingsVal("dim_heating3_thermalenergy","state",0)*100000000)+
                                    (ReadingsVal("dim_heating2_thermalenergy","state",0)*10000)+
                                    (ReadingsVal("dim_heating1_thermalenergy","state",0)))}
 
define dim_heating2_thermalenergy ModbusRegister 0 5097
  attr dim_heating2_thermalenergy IODev HeatPumpServer
  attr dim_heating2_thermalenergy event-on-change-reading .*
  attr dim_heating2_thermalenergy plcDataType INT
  attr dim_heating2_thermalenergy registerType Holding
  attr dim_heating2_thermalenergy room Dimplex
  attr dim_heating2_thermalenergy updateInterval 00:15:00
 
define dim_heating3_thermalenergy ModbusRegister 0 5098
  attr dim_heating3_thermalenergy IODev HeatPumpServer
  attr dim_heating3_thermalenergy event-on-change-reading .*
  attr dim_heating3_thermalenergy plcDataType INT
  attr dim_heating3_thermalenergy registerType Holding
  attr dim_heating3_thermalenergy room Dimplex
  attr dim_heating3_thermalenergy updateInterval 00:15:00
</pre>
 
<pre>
########################################################
##  Wärmemenge Warmwasser definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_dhw1_thermalenergy ModbusRegister 0 5099
  attr dim_dhw1_thermalenergy IODev HeatPumpServer
  attr dim_dhw1_thermalenergy event-on-change-reading .*
  attr dim_dhw1_thermalenergy plcDataType INT
  attr dim_dhw1_thermalenergy registerType Holding
  attr dim_dhw1_thermalenergy room Dimplex
  attr dim_dhw1_thermalenergy updateInterval 00:15:00
  attr dim_dhw1_thermalenergy userReadings dhwthermalenergy {
                                ((ReadingsVal("dim_dhw3_thermalenergy","state",0)*100000000)+
                                (ReadingsVal("dim_dhw2_thermalenergy","state",0)*10000)+
                                (ReadingsVal("dim_dhw1_thermalenergy","state",0)))}
 
define dim_dhw2_thermalenergy ModbusRegister 0 5100
  attr dim_dhw2_thermalenergy IODev HeatPumpServer
  attr dim_dhw2_thermalenergy event-on-change-reading .*
  attr dim_dhw2_thermalenergy plcDataType INT
  attr dim_dhw2_thermalenergy registerType Holding
  attr dim_dhw2_thermalenergy room Dimplex
  attr dim_dhw2_thermalenergy updateInterval 00:15:00
 
define dim_dhw3_thermalenergy ModbusRegister 0 5101
  attr dim_dhw3_thermalenergy IODev HeatPumpServer
  attr dim_dhw3_thermalenergy event-on-change-reading .*
  attr dim_dhw3_thermalenergy plcDataType INT
  attr dim_dhw3_thermalenergy registerType Holding
  attr dim_dhw3_thermalenergy room Dimplex
  attr dim_dhw3_thermalenergy updateInterval 00:15:00
</pre>
</pre>
==== Umweltenergie ====
Als Umweltenergie wird die zugeführte Kälteenergie aus der Umwelt (Luft/Erdreich) bezeichnet. Das Auslesen dieser Werte über die Schnittstelle ist erst ab einem neueren Softwarestand möglich. Die Differenz der gesamten Wärmemenge und der Umweltenergie entspricht in etwa der Energie des Verdichters.
<pre>
########################################################
##  Umweltenergie/entzogene Kälteenergie definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_environment1_energy ModbusRegister 0 5127
  attr dim_environment1_energy IODev HeatPumpServer
  attr dim_environment1_energy event-on-change-reading .*
  attr dim_environment1_energy plcDataType INT
  attr dim_environment1_energy registerType Holding
  attr dim_environment1_energy room Dimplex
  attr dim_environment1_energy updateInterval 00:15:00
  attr dim_environment1_energy userReadings environmentenergy {
                                ((ReadingsVal("dim_environment3_energy","state",0)*100000000)+
                                  (ReadingsVal("dim_environment2_energy","state",0)*10000)+
                                  (ReadingsVal("dim_environment1_energy","state",0)))}


Die Dokumentation für die Historie, Wärmemengen, Logfile, HourCounter sowie Statistic-Modul folgen.  
define dim_environment2_energy ModbusRegister 0 5128
  attr dim_environment2_energy IODev HeatPumpServer
  attr dim_environment2_energy event-on-change-reading .*
  attr dim_environment2_energy plcDataType INT
  attr dim_environment2_energy registerType Holding
  attr dim_environment2_energy room Dimplex
  attr dim_environment2_energy updateInterval 00:15:00


define dim_environment3_energy ModbusRegister 0 5129
  attr dim_environment3_energy IODev HeatPumpServer
  attr dim_environment3_energy event-on-change-reading .*
  attr dim_environment3_energy plcDataType INT
  attr dim_environment3_energy registerType Holding
  attr dim_environment3_energy room Dimplex
  attr dim_environment3_energy updateInterval 00:15:00
</pre>
==== Logfile Wärmemengen ====
Anlegen eines jährlichen Logfile der Wärmemengen.
<pre>
########################################################
##  Logfile Wärmemengen definieren
##  Erstellt........: 06.01.2015
########################################################
define filelog_dim_thermalenergy_year FileLog ./log/filelog_dim_thermalenergy_year-%y.log
                                              dim_heating1_thermalenergy:heatingthermalenergy:.*|
                                              dim_dhw1_thermalenergy:dhwthermalenergy:.*|
                                              dim_heating1_thermalenergy:heatingthermalenergy:.*
  attr filelog_dim_thermalenergy_year room Dimplex
</pre>
=== Meldungen ===
[[Bild:dimplex_rh_status_heatpump.jpg|thumb|right|Beispiel Meldungen]]
Eine sinnvolle Anzeige sind die Meldungen (Status, Sperre, Störung) der Wärmepumpe. Im nachfolgenden Beispiel werden die Meldungen mit dem Hilfsmodul [[readingsHistory]] dargestellt. Die Definitionen der Meldungen beziehen sich auf die im [http://www.dimplex.de/wiki Dimplex-Wiki] beschriebene L-Software. Bei abweichenden Softwareständen müssen die Register sowie die Texte angepasst werden.
<pre>
########################################################
##  Register Statusmeldung definieren
##  Erstellt........: 04.01.2016
##  Geändert........:
########################################################
define dim_status_heatpump ModbusRegister 0 103
  attr dim_status_heatpump IODev HeatPumpServer
  attr dim_status_heatpump event-on-change-reading .*
  attr dim_status_heatpump plcDataType INT
  attr dim_status_heatpump registerType Holding
  attr dim_status_heatpump room Dimplex
  attr dim_status_heatpump updateInterval 00:00:10
  attr dim_status_heatpump userReadings Status {
                            ((ReadingsVal($name,"state","") == 1) ? "Aus":
                              (ReadingsVal($name,"state","") == 2) ? "Heizen":
                              (ReadingsVal($name,"state","") == 4) ? "Warmwasser":
                              (ReadingsVal($name,"state","") == 10) ? "Abtauen":
                              (ReadingsVal($name,"state","") == 11) ? "Durchflussüberwachnung":"")}
</pre>
<pre>
########################################################
##  Register Sperrmeldunge definieren
##  Erstellt........: 04.01.2016
##  Geändert........:
########################################################
define dim_block_heatpump ModbusRegister 0 104
  attr dim_block_heatpump IODev HeatPumpServer
  attr dim_block_heatpump event-on-change-reading .*
  attr dim_block_heatpump plcDataType INT
  attr dim_block_heatpump registerType Holding
  attr dim_block_heatpump room Dimplex
  attr dim_block_heatpump updateInterval 00:00:10
  attr dim_block_heatpump userReadings Sperre {
                            ((ReadingsVal($name,"state","") == 0) ? "":
                            (ReadingsVal($name,"state","") == 7) ? "Systemkontrolle":
                            (ReadingsVal($name,"state","") == 9) ? "Pumpenvorlauf":
                            (ReadingsVal($name,"state","") == 10) ? "Mindeststandzeit":
                            (ReadingsVal($name,"state","") == 11) ? "Netzbelastung":
                            (ReadingsVal($name,"state","") == 12) ? "Schaltspielsperre":
                            (ReadingsVal($name,"state","") == 15) ? "EVU":"")}
</pre>
<pre>
########################################################
##  Register Störmeldungen definieren
##  Erstellt........: 04.01.2016
##  Geändert........:
########################################################
define dim_fault_heatpump ModbusRegister 0 105
  attr dim_fault_heatpump IODev HeatPumpServer
  attr dim_fault_heatpump event-on-change-reading .*
  attr dim_fault_heatpump plcDataType INT
  attr dim_fault_heatpump registerType Holding
  attr dim_fault_heatpump room Dimplex
  attr dim_fault_heatpump updateInterval 00:01:00
  attr dim_fault_heatpump userReadings Störung {
                            ((ReadingsVal($name,"state","") == 0) ? "":
                            (ReadingsVal($name,"state","") == 6) ? "Elektronisches Ex.Ventil":
                            (ReadingsVal($name,"state","") == 15) ? "Sensorik":
                            (ReadingsVal($name,"state","") == 19) ? "!Primärkreis":
                            (ReadingsVal($name,"state","") == 22) ? "!Warmwasser":
                            (ReadingsVal($name,"state","") == 23) ? "!Last Verdichter":
                            (ReadingsVal($name,"state","") == 24) ? "!Codierung":
                            (ReadingsVal($name,"state","") == 25) ? "!Niederdruck":
                            (ReadingsVal($name,"state","") == 26) ? "!Frostschutz":
                            (ReadingsVal($name,"state","") == 27) ? "!Hochdruck":
                            (ReadingsVal($name,"state","") == 29) ? "!Temperatur Differenz":
                            (ReadingsVal($name,"state","") == 31) ? "!Durchfluss":"")}
</pre>
==== Anzeige der Meldungen ====
<pre>
########################################################
##  readingsHistory definieren
##  Erstellt........: 04.01.2016
##  Geändert........:
########################################################
define rh_dim_status_heatpump readingsHistory dim_status_heatpump:Status dim_block_heatpump:Sperre dim_fault_heatpump:Störung
  attr rh_dim_status_heatpump alias Status
  attr rh_dim_status_heatpump mapping {'dim_status_heatpump' => '', 'dim_block_heatpump' => '', 'dim_fault_heatpump' => ''}
  attr rh_dim_status_heatpump nohtml 1
  attr rh_dim_status_heatpump room Dimplex
  attr rh_dim_status_heatpump rows 20
  attr rh_dim_status_heatpump timestampFormat %b %a %R
</pre>
== Plotbeispiel ==
=== Temperaturen ===
<pre>
# Created by FHEM/98_SVG.pm, 2015-05-11 21:40:00
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<L1>'
set ytics nomirror
set y2tics
set grid ytics y2tics
set ylabel ""
set y2label "Temperatur (°C)"
#filelog_dim_temperature_week 4:dim_outdoor_temperature.*::
#filelog_dim_temperature_week 4:dim_room_temperature.*::
#filelog_dim_temperature_week 4:dim_return_temperature.*::
#filelog_dim_temperature_week 4:dim_returnset_temperature.*::
#filelog_dim_temperature_week 4:dim_dhw_temperature.*::
#filelog_dim_temperature_week 4:dim_flow_temperature.*::
#filelog_dim_temperature_week 4:dim_brine_temperature.*::
plot "<IN>" using 1:2 axes x1y2 title 'AT' ls l7 lw 1 with lines,\
    "<IN>" using 1:2 axes x1y2 title 'RT' ls l1 lw 1 with lines,\
    "<IN>" using 1:2 axes x1y2 title 'RL' ls l2 lw 1 with lines,\
    "<IN>" using 1:2 axes x1y2 title 'RLS' ls l3 lw 1 with lines,\
    "<IN>" using 1:2 axes x1y2 title 'WWT' ls l4 lw 1 with lines,\
    "<IN>" using 1:2 axes x1y2 title 'VLT' ls l0 lw 1 with lines,\
    "<IN>" using 1:2 axes x1y2 title 'SOL' ls l6 lw 1 with lines
</pre>
=== Ausgänge ===
<pre>
# Created by FHEM/98_SVG.pm, 2015-05-11 21:45:00
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title ''
set ytics ("An" -1, "Aus" -2, "An" -5, "Aus" -6, "An" -9, "Aus" -10, "An" -13, "Aus" -14)
set y2tics ("An" 1, "Aus" 0, "An" -3, "Aus" -4, "An" -7, "Aus" -8, "An" -11, "Aus" -12)
set grid
set ylabel ""
set y2label "Digital"
set yrange [-16:2]
set y2range [-16:2]
#FileLog 3:dim_compressor_output.*::$fld[2]=~"on"?1:0
#FileLog 3:dim_ventilator_output.*::$fld[2]=~"on"?-1:-2
#FileLog 3:dim_2heatgenerator_output.*::$fld[2]=~"on"?-3:-4
#FileLog 3:dim_circulationpump_output.*::$fld[2]=~"on"?-5:-6
#FileLog 3:dim_dhwpump_output.*::$fld[2]=~"on"?-7:-8
#FileLog 3:dim_auxiliarypump_output.*::$fld[2]=~"on"?-9:-10
#FileLog 3:dim_solarpump_output.*::$fld[2]=~"on"?-11:-12
#FileLog 3:dim_flangeheater_output.*::$fld[2]=~"on"?-13:-14
plot "<IN>" using 1:2 axes x1y2 title 'Vd' ls l7 lw 1.5 with steps,\
    "<IN>" using 1:2 axes x1y2 title 'Ve' ls l6 lw 1.5 with steps,\
    "<IN>" using 1:2 axes x1y2 title '2.We' ls l5 lw 1.5 with steps,\
    "<IN>" using 1:2 axes x1y2 title 'Hub' ls l4 lw 1.5 with steps,\
    "<IN>" using 1:2 axes x1y2 title 'Wup' ls l3 lw 1 with steps,\
    "<IN>" using 1:2 axes x1y2 title 'Zup' ls l0 lw 1.5 with steps,\
    "<IN>" using 1:2 axes x1y2 title 'Sol' ls l2 lw 1.5 with steps,\
    "<IN>" using 1:2 axes x1y2 title 'Flh' ls l7 lw 1.5 with steps
</pre>


= Plotbeispiel =
[[Bild:dimplex_hp_graph.jpg|thumb|right|Plotbeispiel]]
[[Bild:dimplex_hp_graph.jpg|thumb|right|Plotbeispiel]]
Im nebenstehenden Plotbeispiel werde die Temperaturen (Analogwerte) sowie die Ausgänge (Digitalwerte) dargestellt. Im einzelnen sind die Kurven für die
Im nebenstehenden Plotbeispiel werde die Temperaturen (Analogwerte) sowie die Ausgänge (Digitalwerte) dargestellt. Im einzelnen sind die Kurven für die
Zeile 302: Zeile 817:


= Kontakt =
= Kontakt =
Weitere Fragen, Wünsche und Anregungen bitte im entsprechenden {{Link2Forum|Topic=33086|LinkText=Forenthread zum Wiki-Artikel "Dimplex Wärmepumpenmanager"}} zur Diskussion stellen.
Offene Punkte:
- Darstellung der Werte in einer readingsGroup
- Zugriff auf Zeitfunktionen mit Lesen und Schreiben


Anfragen bei Problemen bitte in der entsprechenden (wird noch verlinkt) Diskussion stellen.
[[Kategorie:HOWTOS]]
[[Kategorie:Heizungssteuerung]]
[[Kategorie:Other Components]]

Aktuelle Version vom 4. Januar 2016, 18:16 Uhr

Mit der NWPM-Erweiterung ist es möglich, den Dimplex Wärmepumpenmanager in ein Hausnetzwerk einzubinden. Durch die Einbindung der NWPM-Erweiterung ist es ebenfalls möglich, die zur Verfügung gestellten Werte vom Wärmepumpenmanager mittels ModbusTCP in FHEM zu übernehmen, anzuzeigen und grafisch darzustellen.

Voraussetzung

Die Anbindung des Dimplex Wärmepumpenmanager an FHEM erfolgt mittels NWPM-Erweiterung und der aktuellen FHEM Installation. Weiterhin werden die zur Verfügung stehenden Module:

  • 36_ModbusTCPServer.pm
  • 37_ModbusCoil.pm
  • 37_ModbusRegister.pm

genutzt. Getestet wurde der Zugriff auf einem BeagleBone Black mit der hier beschriebenen Debian Installation.

Installation

Die oben aufgeführten Module sind notwendig und müssen nachinstalliert werden. Zum Zeitpunkt der Erstellung dieser Dokumentation (31.1.2015) sind diese noch nicht offiziell in FHEM enthalten und werden auch nicht mittels Update verteilt. Die Module werden mit dem Befehl:

update all https://raw.githubusercontent.com/ChrisD70/FHEM-Modules/master/autoupdate/mb/controls_modbus.txt

über die FHEM Befehlszeile installiert und anschließend

reload 36_ModbusTCPServer.pm 
reload 37_ModbusCoil.pm
reload 37_ModbusRegister.pm

mit einem Reload geladen.

Benutzung

Anlegen der ModbusTCPServer Verbindung

Wie im nachfolgenden angegeben muss zunächst eine ModbusTCPServer Verbindung hergestellt werden. Die angegebene IP-Adresse muss durch die IP-Adresse der Wärmepumpe ersetzt werden.

########################################################
##  ModbusTCPServer definieren
########################################################
define HeatPumpServer ModbusTCPServer 192.168.1.150
attr HeatPumpServer verbose 2

Ein erfolgreicher Verbindungsaufbau wird mit einem „ok“ im State gekennzeichnet.

Modbus-Register/Coil Adressen definieren

Im nachfolgendem Beispiel wird anhand der Außentemperatur die Adressdefinition erklärt.

########################################################
##  Außentemperatur
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_outdoor_temperature ModbusRegister 0 1
  attr dim_outdoor_temperature IODev HeatPumpServer
  attr dim_outdoor_temperature conversion 0.1:0
  attr dim_outdoor_temperature event-min-interval .*:900
  attr dim_outdoor_temperature event-on-change-reading .*
  attr dim_outdoor_temperature plcDataType INT
  attr dim_outdoor_temperature registerType Holding
  attr dim_outdoor_temperature room Dimplex
  attr dim_outdoor_temperature stateAlias temperature
  attr dim_outdoor_temperature stateFormat {sprintf("%0.1f", ReadingsVal($name,"state",0))}
  attr dim_outdoor_temperature updateInterval 00:10:00

Erklärung:

Erläuterungen zur Adressdefinition
Attribut Erläuterungen
ModbusRegister 0 1 0 Device Adresse, in der Regel bei ModbusTCP immer 0
ModbusRegister 0 1 1 Register Adresse, wird unter www.dimplex.de/wiki → ModbusTCP → Spalten IP zur Verfügung gestellt
IODev Verwendeter und zuvor angelegter ModbusTCPServer
conversion eine gegebenenfalls notwendige Konvertierung des übermittelten Values
PlcDataType Ermögliche automatische Interpretation der ankommenden Daten
stateAlias es wird ein zusätzliches Reading erzeugt, um zum Beispiel das Statistic-Modul nutzen zu können, stateAlias ist eine echte Kopie von "state"
updateInterval Intervall des Abfragezyklus (z.B. 00:10:00 Minuten)

Betriebsdaten

Vorschlag der Namensvergabe für die Betriebsdaten. Eine sinnvolle Namensvergabe erleichtert später das Anlegen weiterer Definitionen von zum Beispiel Logfiles, Statistiken oder auch readingsGroup.

dim_outdoor_temperature Außentemperatur
dim_flow_temperature Vorlauftemperatur
dim_return_temperature Rücklauftemperatur
dim_returnset_temperature Rücklaufsolltemperatur
dim_room_temperature Raumtemperatur
dim_dhw_temperature Warmwassertemperatur
dim_dhwset_temperature Warmwassersolltemperatur
dim_brine_temperature Soletemperatur
dim_high_pressure Hochdruck
dim_low_pressure Niederdruck
########################################################
##  Register Warmwassertemperatur definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_dhw_temperature ModbusRegister 0 3
  attr dim_dhw_temperature IODev HeatPumpServer
  attr dim_dhw_temperature conversion 0.1:0
  attr dim_dhw_temperature event-min-interval .*:900
  attr dim_dhw_temperature event-on-change-reading .*
  attr dim_dhw_temperature plcDataType INT
  attr dim_dhw_temperature registerType Holding
  attr dim_dhw_temperature room Dimplex
  attr dim_dhw_temperature stateAlias temperature
  attr dim_dhw_temperature stateFormat {sprintf("%0.1f", ReadingsVal($name,"state",0))}
  attr dim_dhw_temperature updateInterval 00:01:00
########################################################
##  Register Vorlauftemperatur definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_flow_temperature ModbusRegister 0 5
  attr dim_flow_temperature IODev HeatPumpServer
  attr dim_flow_temperature conversion 0.1:0
  attr dim_flow_temperature event-min-interval .*:900
  attr dim_flow_temperature event-on-change-reading .*
  attr dim_flow_temperature plcDataType INT
  attr dim_flow_temperature registerType Holding
  attr dim_flow_temperature room Dimplex
  attr dim_flow_temperature stateAlias temperature
  attr dim_flow_temperature stateFormat {sprintf("%0.1f", ReadingsVal($name,"state",0))}
  attr dim_flow_temperature updateInterval 00:01:00
########################################################
##  Register Rücklauftemperatur definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_return_temperature ModbusRegister 0 2
  attr dim_return_temperature IODev HeatPumpServer
  attr dim_return_temperature conversion 0.1:0
  attr dim_return_temperature event-min-interval .*:900
  attr dim_return_temperature event-on-change-reading .*
  attr dim_return_temperature plcDataType INT
  attr dim_return_temperature registerType Holding
  attr dim_return_temperature room Dimplex
  attr dim_return_temperature stateAlias temperature
  attr dim_return_temperature stateFormat {sprintf("%0.1f", ReadingsVal($name,"state",0))}
  attr dim_return_temperature updateInterval 00:01:00
########################################################
##  Register Rücklaufsolltemperatur definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_returnset_temperature ModbusRegister 0 53
  attr dim_returnset_temperature IODev HeatPumpServer
  attr dim_returnset_temperature conversion 0.1:0
  attr dim_returnset_temperature event-min-interval .*:900
  attr dim_returnset_temperature event-on-change-reading .*
  attr dim_returnset_temperature plcDataType INT
  attr dim_returnset_temperature registerType Holding
  attr dim_returnset_temperature room Dimplex
  attr dim_returnset_temperature stateAlias temperature
  attr dim_returnset_temperature stateFormat {sprintf("%0.1f", ReadingsVal($name,"state",0))}
  attr dim_returnset_temperature updateInterval 00:05:00

Logfile Betriebsdaten

Anlegen eines täglichen Logfile der Betriebsdaten.

########################################################
##  Logfile Betriebsdaten definieren
##  Erstellt........: 06.01.2015
########################################################
define filelog_dim_temperature FileLog ./log/filelog_dim_temperature-%W-%d.log
                                      dim_.*._temperature:temperature:.*|dim_.*._pressure:pressure:.*
  attr filelog_dim_temperature room Dimplex

Statistiken

Folgender Code legt die Statistiken der Betriebsdaten an

define dim_statistics statistics dim_.*._temperature|dim_.*._pressure
  attr dim_statistics dayChangeTime 1
  attr dim_statistics deltaReadings temperature,pressure
  attr dim_statistics minAvgMaxReadings temperature,pressure
  attr dim_statistics room Dimplex
  attr dim_statistics tendencyReadings temperature,pressure

Zustände

Vorschlag der Namensvergabe für die Zustände. Eine sinnvolle Namensvergabe erleichtert später das Anlegen weiterer Definitionen von zum Beispiel Logfiles, Statistiken oder auch readingsGroup.

dim_compressor_output Verdichter
dim_ventilator_output Ventilator
dim_brinepump_ output Solepumpe
dim_circulationpump_output Heizungsumwälzpumpe M13
dim_2heatgenerator_output 2.Wärmeerzeuger
dim_dhwpump_output Warmwasserpumpe M18
dim_auxiliarypump_output Zusatzpumpe M16
dim_flangeheater_output Flanschheizung
########################################################
##  Coil Verdichter definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_compressor_output ModbusCoil 0 41
  attr dim_compressor_output IODev HeatPumpServer
  attr dim_compressor_output disableRegisterMapping 1
  attr dim_compressor_output event-min-interval .*:900
  attr dim_compressor_output event-on-change-reading .*
  attr dim_compressor_output room Dimplex
  attr dim_compressor_output source Coil
  attr dim_compressor_output updateInterval 00:01:00

########################################################
##  Passenden HourCounter für Verdichter definieren
##  Erstellt........: 06.01.2015
########################################################
define hourcounter_compressor_output HourCounter dim_compressor_output:on dim_compressor_output:off
   attr hourcounter_compressor_output event-min-interval tick.*:0,.*:3600
   attr hourcounter_compressor_output event-on-change-reading .*
########################################################
##  Coil Ventilator definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_ventilator_output ModbusCoil 0 43
  attr dim_ventilator_output IODev HeatPumpServer
  attr dim_ventilator_output disableRegisterMapping 1
  attr dim_ventilator_output event-min-interval .*:900
  attr dim_ventilator_output event-on-change-reading .*
  attr dim_ventilator_output room Dimplex
  attr dim_ventilator_output source Coil
  attr dim_ventilator_output updateInterval 00:01:00

########################################################
##  Passenden HourCounter für Ventilator definieren
##  Erstellt........: 06.01.2015
########################################################
define hourcounter_ventilator_output HourCounter dim_ventilator_output:on dim_ventilator_output:off
  attr hourcounter_ventilator_output event-min-interval tick.*:0,.*:3600
  attr hourcounter_ventilator_output event-on-change-reading .*
########################################################
##  Coil 2.Wärmeerzeuger definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_2heatgenerator_output ModbusCoil 0 44
  attr dim_2heatgenerator_output IODev HeatPumpServer
  attr dim_2heatgenerator_output disableRegisterMapping 1
  attr dim_2heatgenerator_output event-min-interval .*:900
  attr dim_2heatgenerator_output event-on-change-reading .*
  attr dim_2heatgenerator_output room Dimplex
  attr dim_2heatgenerator_output source Coil
  attr dim_2heatgenerator_output updateInterval 00:01:00

########################################################
##  Passenden HourCounter für 2.Wärmeerzeuger definieren
##  Erstellt........: 06.01.2015
########################################################
define hourcounter_2heatgenerator_output HourCounter dim_2heatgenerator_output:on dim_2heatgenerator_output:off
  attr hourcounter_2heatgenerator_output event-min-interval tick.*:0,.*:3600
  attr hourcounter_2heatgenerator_output event-on-change-reading .*
########################################################
##  Coil Heizungsumwälzpumpe M13 definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_circulationpump_output ModbusCoil 0 45
  attr dim_circulationpump_output IODev HeatPumpServer
  attr dim_circulationpump_output disableRegisterMapping 1
  attr dim_circulationpump_output event-min-interval .*:900
  attr dim_circulationpump_output event-on-change-reading .*
  attr dim_circulationpump_output room Dimplex
  attr dim_circulationpump_output source Coil
  attr dim_circulationpump_output updateInterval 00:01:00

########################################################
##  Passenden HourCounter für Heizungsumwälzpumpe M13 definieren
##  Erstellt........: 06.01.2015
########################################################
define hourcounter_circulationpump_output HourCounter dim_circulationpump_output:on dim_circulationpump_output:off
  attr hourcounter_circulationpump_output event-min-interval tick.*:0,.*:3600
  attr hourcounter_circulationpump_output event-on-change-reading .*
########################################################
##  Coil Warmwasserpumpe M18 definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_dhwpump_output ModbusCoil 0 46
  attr dim_dhwpump_output IODev HeatPumpServer
  attr dim_dhwpump_output disableRegisterMapping 1
  attr dim_dhwpump_output event-min-interval .*:900
  attr dim_dhwpump_output event-on-change-reading .*
  attr dim_dhwpump_output room Dimplex
  attr dim_dhwpump_output source Coil
  attr dim_dhwpump_output updateInterval 00:01:00

########################################################
##  Passenden HourCounter für Warmwasserpumpe M18 definieren
##  Erstellt........: 06.01.2015
########################################################
define hourcounter_dhwpump_output HourCounter dim_dhwpump_output:on dim_dhwpump_output:off
  attr hourcounter_dhwpump_output event-min-interval tick.*:0,.*:3600
  attr hourcounter_dhwpump_output event-on-change-reading .*
########################################################
##  Coil Zusatzpumpe M16 definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_auxiliarypump_output ModbusCoil 0 49
  attr dim_auxiliarypump_output IODev HeatPumpServer
  attr dim_auxiliarypump_output disableRegisterMapping 1
  attr dim_auxiliarypump_output event-min-interval .*:900
  attr dim_auxiliarypump_output event-on-change-reading .*
  attr dim_auxiliarypump_output room Dimplex
  attr dim_auxiliarypump_output source Coil
  attr dim_auxiliarypump_output updateInterval 00:01:00

########################################################
##  Passenden HourCounter für Zusatzpumpe M16 definieren
##  Erstellt........: 06.01.2015
########################################################
define hourcounter_auxiliarypump_output HourCounter dim_auxiliarypump_output:on dim_auxiliarypump_output:off
   attr hourcounter_auxiliarypump_output event-min-interval tick.*:0,.*:3600
   attr hourcounter_auxiliarypump_output event-on-change-reading .*
########################################################
##  Coil Flanschheizung definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_flangeheater_output ModbusCoil 0 50
  attr dim_flangeheater_output IODev HeatPumpServer
  attr dim_flangeheater_output disableRegisterMapping 1
  attr dim_flangeheater_output event-min-interval .*:900
  attr dim_flangeheater_output event-on-change-reading .*
  attr dim_flangeheater_output room Dimplex
  attr dim_flangeheater_output source Coil
  attr dim_flangeheater_output updateInterval 00:01:00

########################################################
##  Passenden HourCounter für Flanschheizung M16 definieren
##  Erstellt........: 06.01.2015
########################################################
define hourcounter_flangeheater_output HourCounter dim_flangeheater_output:on dim_flangeheater_output:off
  attr hourcounter_flangeheater_output event-min-interval tick.*:0,.*:3600
  attr hourcounter_flangeheater_output event-on-change-reading .*

Logfile Zustände

Anlegen eines wöchentlichen Logfile der Zustände.

########################################################
##  Logfile Ausgänge/Zustände definieren
##  Erstellt........: 06.01.2015
########################################################
define filelog_dim_output_week FileLog ./log/filelog_dim_output_week-%W.log dim_.*._output.*
  attr filelog_dim_output_week room Dimplex

Historie

Vorschlag der Namensvergabe für die Historie. Eine sinnvolle Namensvergabe erleichtert später das Anlegen weiterer Definitionen von zum Beispiel Logfiles, Statistiken oder auch readingsGroup.

dim_compressor_history Verdichter
dim_ventilator_history Ventilator
dim_brinepump_history Solepumpe
dim_circulationpump_history Heizungsumwälzpumpe M13
dim_2heatgenerator_history 2.Wärmeerzeuger
dim_dhwpump_history Warmwasserpumpe M18
dim_auxiliarypump_history Zusatzpumpe M16
dim_flangeheater_history Flanschheizung
########################################################
##  Register Historie Verdichter definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_compressor_history ModbusRegister 0 72
  attr dim_compressor_history IODev HeatPumpServer
  attr dim_compressor_history alignUpdateInterval 00:01:00
  attr dim_compressor_history event-on-change-reading .*
  attr dim_compressor_history plcDataType INT
  attr dim_compressor_history registerType Holding
  attr dim_compressor_history room Dimplex
  attr dim_compressor_history updateInterval 01:00:00
########################################################
##  Register Historie Ventilator definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_ventilator_history ModbusRegister 0 74
  attr dim_ventilator_history IODev HeatPumpServer
  attr dim_ventilator_history alignUpdateInterval 00:01:00
  attr dim_ventilator_history event-on-change-reading .*
  attr dim_ventilator_history plcDataType INT
  attr dim_ventilator_history registerType Holding
  attr dim_ventilator_history room Dimplex
  attr dim_ventilator_history updateInterval 01:00:00
########################################################
##  Register Historie 2.Wärmeerzeuger definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_2heatgenerator_history ModbusRegister 0 75
  attr dim_2heatgenerator_history IODev HeatPumpServer
  attr dim_2heatgenerator_history alignUpdateInterval 00:01:00
  attr dim_2heatgenerator_history event-on-change-reading .*
  attr dim_2heatgenerator_history plcDataType INT
  attr dim_2heatgenerator_history registerType Holding
  attr dim_2heatgenerator_history room Dimplex
  attr dim_2heatgenerator_history updateInterval 01:00:00
########################################################
##  Register Historie Heizungsumwälzpumpe M13 definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_circulationpump_history ModbusRegister 0 76
  attr dim_circulationpump_history IODev HeatPumpServer
  attr dim_circulationpump_history alignUpdateInterval 00:01:00
  attr dim_circulationpump_history event-on-change-reading .*
  attr dim_circulationpump_history plcDataType INT
  attr dim_circulationpump_history registerType Holding
  attr dim_circulationpump_history room Dimplex
  attr dim_circulationpump_history updateInterval 01:00:00
########################################################
##  Register Historie Warmwasserpumpe M18 definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_dhwpump_history ModbusRegister 0 77
  attr dim_dhwpump_history IODev HeatPumpServer
  attr dim_dhwpump_history alignUpdateInterval 00:01:00
  attr dim_dhwpump_history event-on-change-reading .*
  attr dim_dhwpump_history plcDataType INT
  attr dim_dhwpump_history registerType Holding
  attr dim_dhwpump_history room Dimplex
  attr dim_dhwpump_history updateInterval 01:00:00
########################################################
##  Register Historie Flanschheizung definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_flangeheater_history ModbusRegister 0 78
  attr dim_flangeheater_history IODev HeatPumpServer
  attr dim_flangeheater_history alignUpdateInterval 00:01:00
  attr dim_flangeheater_history event-on-change-reading .*
  attr dim_flangeheater_history plcDataType INT
  attr dim_flangeheater_history registerType Holding
  attr dim_flangeheater_history room Dimplex
  attr dim_flangeheater_history updateInterval 01:00:00

Logfile Historie

Anlegen eines monatlichen Logfile für die Historischen Daten.

########################################################
##  Logfile Historie definieren
##  Erstellt........: 06.01.2015
########################################################
define filelog_dim_history_month FileLog ./log/filelog_dim_history_month-%m.log dim_.*._history.*
  attr filelog_dim_history_month room Dimplex

Wärmemengen

Laut Definition aus dem Dimplex-Wiki werden die Wärmemengen für Heizen, Warmwasser und Schwimmbad aus 3 Register-Adressen zusammengesetzt. Im Nachfolgenden Code-Beispiel wird dies entsprechend dargestellt. Dabei wird jeweils im ersten Register ein neues userReading mit der Darstellung der Gesamtwärmemenge angelegt.

########################################################
##  Wärmemenge Heizen definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_heating1_thermalenergy ModbusRegister 0 5096
  attr dim_heating1_thermalenergy IODev HeatPumpServer
  attr dim_heating1_thermalenergy event-on-change-reading .*
  attr dim_heating1_thermalenergy plcDataType INT
  attr dim_heating1_thermalenergy registerType Holding
  attr dim_heating1_thermalenergy room Dimplex
  attr dim_heating1_thermalenergy updateInterval 00:15:00
  attr dim_heating1_thermalenergy userReadings heatingthermalenergy {
                                    ((ReadingsVal("dim_heating3_thermalenergy","state",0)*100000000)+
                                     (ReadingsVal("dim_heating2_thermalenergy","state",0)*10000)+
                                     (ReadingsVal("dim_heating1_thermalenergy","state",0)))}

define dim_heating2_thermalenergy ModbusRegister 0 5097
  attr dim_heating2_thermalenergy IODev HeatPumpServer
  attr dim_heating2_thermalenergy event-on-change-reading .*
  attr dim_heating2_thermalenergy plcDataType INT
  attr dim_heating2_thermalenergy registerType Holding
  attr dim_heating2_thermalenergy room Dimplex
  attr dim_heating2_thermalenergy updateInterval 00:15:00

define dim_heating3_thermalenergy ModbusRegister 0 5098
  attr dim_heating3_thermalenergy IODev HeatPumpServer
  attr dim_heating3_thermalenergy event-on-change-reading .*
  attr dim_heating3_thermalenergy plcDataType INT
  attr dim_heating3_thermalenergy registerType Holding
  attr dim_heating3_thermalenergy room Dimplex
  attr dim_heating3_thermalenergy updateInterval 00:15:00
########################################################
##  Wärmemenge Warmwasser definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_dhw1_thermalenergy ModbusRegister 0 5099
  attr dim_dhw1_thermalenergy IODev HeatPumpServer
  attr dim_dhw1_thermalenergy event-on-change-reading .*
  attr dim_dhw1_thermalenergy plcDataType INT
  attr dim_dhw1_thermalenergy registerType Holding
  attr dim_dhw1_thermalenergy room Dimplex
  attr dim_dhw1_thermalenergy updateInterval 00:15:00
  attr dim_dhw1_thermalenergy userReadings dhwthermalenergy {
                                ((ReadingsVal("dim_dhw3_thermalenergy","state",0)*100000000)+
                                 (ReadingsVal("dim_dhw2_thermalenergy","state",0)*10000)+
                                 (ReadingsVal("dim_dhw1_thermalenergy","state",0)))}

define dim_dhw2_thermalenergy ModbusRegister 0 5100
  attr dim_dhw2_thermalenergy IODev HeatPumpServer
  attr dim_dhw2_thermalenergy event-on-change-reading .*
  attr dim_dhw2_thermalenergy plcDataType INT
  attr dim_dhw2_thermalenergy registerType Holding
  attr dim_dhw2_thermalenergy room Dimplex
  attr dim_dhw2_thermalenergy updateInterval 00:15:00

define dim_dhw3_thermalenergy ModbusRegister 0 5101
  attr dim_dhw3_thermalenergy IODev HeatPumpServer
  attr dim_dhw3_thermalenergy event-on-change-reading .*
  attr dim_dhw3_thermalenergy plcDataType INT
  attr dim_dhw3_thermalenergy registerType Holding
  attr dim_dhw3_thermalenergy room Dimplex
  attr dim_dhw3_thermalenergy updateInterval 00:15:00

Umweltenergie

Als Umweltenergie wird die zugeführte Kälteenergie aus der Umwelt (Luft/Erdreich) bezeichnet. Das Auslesen dieser Werte über die Schnittstelle ist erst ab einem neueren Softwarestand möglich. Die Differenz der gesamten Wärmemenge und der Umweltenergie entspricht in etwa der Energie des Verdichters.

########################################################
##  Umweltenergie/entzogene Kälteenergie definieren
##  Erstellt........: 06.01.2015
##  Geändert........: 04.01.2016
########################################################
define dim_environment1_energy ModbusRegister 0 5127
  attr dim_environment1_energy IODev HeatPumpServer
  attr dim_environment1_energy event-on-change-reading .*
  attr dim_environment1_energy plcDataType INT
  attr dim_environment1_energy registerType Holding
  attr dim_environment1_energy room Dimplex
  attr dim_environment1_energy updateInterval 00:15:00
  attr dim_environment1_energy userReadings environmentenergy {
                                 ((ReadingsVal("dim_environment3_energy","state",0)*100000000)+
                                  (ReadingsVal("dim_environment2_energy","state",0)*10000)+
                                  (ReadingsVal("dim_environment1_energy","state",0)))}

define dim_environment2_energy ModbusRegister 0 5128
  attr dim_environment2_energy IODev HeatPumpServer
  attr dim_environment2_energy event-on-change-reading .*
  attr dim_environment2_energy plcDataType INT
  attr dim_environment2_energy registerType Holding
  attr dim_environment2_energy room Dimplex
  attr dim_environment2_energy updateInterval 00:15:00

define dim_environment3_energy ModbusRegister 0 5129
  attr dim_environment3_energy IODev HeatPumpServer
  attr dim_environment3_energy event-on-change-reading .*
  attr dim_environment3_energy plcDataType INT
  attr dim_environment3_energy registerType Holding
  attr dim_environment3_energy room Dimplex
  attr dim_environment3_energy updateInterval 00:15:00

Logfile Wärmemengen

Anlegen eines jährlichen Logfile der Wärmemengen.

########################################################
##  Logfile Wärmemengen definieren
##  Erstellt........: 06.01.2015
########################################################
define filelog_dim_thermalenergy_year FileLog ./log/filelog_dim_thermalenergy_year-%y.log
                                              dim_heating1_thermalenergy:heatingthermalenergy:.*|
                                              dim_dhw1_thermalenergy:dhwthermalenergy:.*|
                                              dim_heating1_thermalenergy:heatingthermalenergy:.*
  attr filelog_dim_thermalenergy_year room Dimplex

Meldungen

Beispiel Meldungen

Eine sinnvolle Anzeige sind die Meldungen (Status, Sperre, Störung) der Wärmepumpe. Im nachfolgenden Beispiel werden die Meldungen mit dem Hilfsmodul readingsHistory dargestellt. Die Definitionen der Meldungen beziehen sich auf die im Dimplex-Wiki beschriebene L-Software. Bei abweichenden Softwareständen müssen die Register sowie die Texte angepasst werden.

########################################################
##  Register Statusmeldung definieren
##  Erstellt........: 04.01.2016
##  Geändert........: 
########################################################
define dim_status_heatpump ModbusRegister 0 103
  attr dim_status_heatpump IODev HeatPumpServer
  attr dim_status_heatpump event-on-change-reading .*
  attr dim_status_heatpump plcDataType INT
  attr dim_status_heatpump registerType Holding
  attr dim_status_heatpump room Dimplex
  attr dim_status_heatpump updateInterval 00:00:10
  attr dim_status_heatpump userReadings Status {
                             ((ReadingsVal($name,"state","") == 1) ? "Aus":
                              (ReadingsVal($name,"state","") == 2) ? "Heizen":
                              (ReadingsVal($name,"state","") == 4) ? "Warmwasser":
                              (ReadingsVal($name,"state","") == 10) ? "Abtauen":
                              (ReadingsVal($name,"state","") == 11) ? "Durchflussüberwachnung":"")}

########################################################
##  Register Sperrmeldunge definieren
##  Erstellt........: 04.01.2016
##  Geändert........: 
########################################################
define dim_block_heatpump ModbusRegister 0 104
  attr dim_block_heatpump IODev HeatPumpServer
  attr dim_block_heatpump event-on-change-reading .*
  attr dim_block_heatpump plcDataType INT
  attr dim_block_heatpump registerType Holding
  attr dim_block_heatpump room Dimplex
  attr dim_block_heatpump updateInterval 00:00:10
  attr dim_block_heatpump userReadings Sperre {
                            ((ReadingsVal($name,"state","") == 0) ? "":
                             (ReadingsVal($name,"state","") == 7) ? "Systemkontrolle":
                             (ReadingsVal($name,"state","") == 9) ? "Pumpenvorlauf":
                             (ReadingsVal($name,"state","") == 10) ? "Mindeststandzeit":
                             (ReadingsVal($name,"state","") == 11) ? "Netzbelastung":
                             (ReadingsVal($name,"state","") == 12) ? "Schaltspielsperre":
                             (ReadingsVal($name,"state","") == 15) ? "EVU":"")}
########################################################
##  Register Störmeldungen definieren
##  Erstellt........: 04.01.2016
##  Geändert........: 
########################################################
define dim_fault_heatpump ModbusRegister 0 105
  attr dim_fault_heatpump IODev HeatPumpServer
  attr dim_fault_heatpump event-on-change-reading .*
  attr dim_fault_heatpump plcDataType INT
  attr dim_fault_heatpump registerType Holding
  attr dim_fault_heatpump room Dimplex
  attr dim_fault_heatpump updateInterval 00:01:00
  attr dim_fault_heatpump userReadings Störung {
                            ((ReadingsVal($name,"state","") == 0) ? "":
                             (ReadingsVal($name,"state","") == 6) ? "Elektronisches Ex.Ventil":
                             (ReadingsVal($name,"state","") == 15) ? "Sensorik":
                             (ReadingsVal($name,"state","") == 19) ? "!Primärkreis":
                             (ReadingsVal($name,"state","") == 22) ? "!Warmwasser":
                             (ReadingsVal($name,"state","") == 23) ? "!Last Verdichter":
                             (ReadingsVal($name,"state","") == 24) ? "!Codierung":
                             (ReadingsVal($name,"state","") == 25) ? "!Niederdruck":
                             (ReadingsVal($name,"state","") == 26) ? "!Frostschutz":
                             (ReadingsVal($name,"state","") == 27) ? "!Hochdruck":
                             (ReadingsVal($name,"state","") == 29) ? "!Temperatur Differenz":
                             (ReadingsVal($name,"state","") == 31) ? "!Durchfluss":"")}

Anzeige der Meldungen

########################################################
##  readingsHistory definieren
##  Erstellt........: 04.01.2016
##  Geändert........: 
########################################################
define rh_dim_status_heatpump readingsHistory dim_status_heatpump:Status dim_block_heatpump:Sperre dim_fault_heatpump:Störung
  attr rh_dim_status_heatpump alias Status
  attr rh_dim_status_heatpump mapping {'dim_status_heatpump' => '', 'dim_block_heatpump' => '', 'dim_fault_heatpump' => ''}
  attr rh_dim_status_heatpump nohtml 1
  attr rh_dim_status_heatpump room Dimplex
  attr rh_dim_status_heatpump rows 20
  attr rh_dim_status_heatpump timestampFormat %b %a %R

Plotbeispiel

Temperaturen

# Created by FHEM/98_SVG.pm, 2015-05-11 21:40:00
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<L1>'
set ytics nomirror
set y2tics 
set grid ytics y2tics
set ylabel ""
set y2label "Temperatur (°C)"

#filelog_dim_temperature_week 4:dim_outdoor_temperature.*::
#filelog_dim_temperature_week 4:dim_room_temperature.*::
#filelog_dim_temperature_week 4:dim_return_temperature.*::
#filelog_dim_temperature_week 4:dim_returnset_temperature.*::
#filelog_dim_temperature_week 4:dim_dhw_temperature.*::
#filelog_dim_temperature_week 4:dim_flow_temperature.*::
#filelog_dim_temperature_week 4:dim_brine_temperature.*::

plot "<IN>" using 1:2 axes x1y2 title 'AT' ls l7 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'RT' ls l1 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'RL' ls l2 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'RLS' ls l3 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'WWT' ls l4 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'VLT' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'SOL' ls l6 lw 1 with lines

Ausgänge

# Created by FHEM/98_SVG.pm, 2015-05-11 21:45:00
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title ''
set ytics ("An" -1, "Aus" -2, "An" -5, "Aus" -6, "An" -9, "Aus" -10, "An" -13, "Aus" -14)
set y2tics ("An" 1, "Aus" 0, "An" -3, "Aus" -4, "An" -7, "Aus" -8, "An" -11, "Aus" -12)
set grid
set ylabel ""
set y2label "Digital"
set yrange [-16:2]
set y2range [-16:2]

#FileLog 3:dim_compressor_output.*::$fld[2]=~"on"?1:0
#FileLog 3:dim_ventilator_output.*::$fld[2]=~"on"?-1:-2
#FileLog 3:dim_2heatgenerator_output.*::$fld[2]=~"on"?-3:-4
#FileLog 3:dim_circulationpump_output.*::$fld[2]=~"on"?-5:-6
#FileLog 3:dim_dhwpump_output.*::$fld[2]=~"on"?-7:-8
#FileLog 3:dim_auxiliarypump_output.*::$fld[2]=~"on"?-9:-10
#FileLog 3:dim_solarpump_output.*::$fld[2]=~"on"?-11:-12
#FileLog 3:dim_flangeheater_output.*::$fld[2]=~"on"?-13:-14

plot "<IN>" using 1:2 axes x1y2 title 'Vd' ls l7 lw 1.5 with steps,\
     "<IN>" using 1:2 axes x1y2 title 'Ve' ls l6 lw 1.5 with steps,\
     "<IN>" using 1:2 axes x1y2 title '2.We' ls l5 lw 1.5 with steps,\
     "<IN>" using 1:2 axes x1y2 title 'Hub' ls l4 lw 1.5 with steps,\
     "<IN>" using 1:2 axes x1y2 title 'Wup' ls l3 lw 1 with steps,\
     "<IN>" using 1:2 axes x1y2 title 'Zup' ls l0 lw 1.5 with steps,\
     "<IN>" using 1:2 axes x1y2 title 'Sol' ls l2 lw 1.5 with steps,\
     "<IN>" using 1:2 axes x1y2 title 'Flh' ls l7 lw 1.5 with steps
Plotbeispiel

Im nebenstehenden Plotbeispiel werde die Temperaturen (Analogwerte) sowie die Ausgänge (Digitalwerte) dargestellt. Im einzelnen sind die Kurven für die

  • Aussen- (AT)
  • Raum- (RT)
  • Rücklauf- (RL)
  • Rücklaufsoll- (RLS)
  • Warmwasser- (WWT) und
  • Vorlauftemperatur (VLT)

sowie die Ausgänge für

  • Verdichter 1 (Vd)
  • Ventilator (Ve)
  • 2.Wärmeerzeuger (2We)
  • Heizungsumwälzpumpe (Hup)
  • Warmwasserumwälzpumpe (Wup) und
  • Zusatzumwälzpumpe (Zup)

enthalten.

Kontakt

Weitere Fragen, Wünsche und Anregungen bitte im entsprechenden Forenthread zum Wiki-Artikel "Dimplex Wärmepumpenmanager" zur Diskussion stellen.

Offene Punkte: - Darstellung der Werte in einer readingsGroup - Zugriff auf Zeitfunktionen mit Lesen und Schreiben