# Ism8 Binding

_This binding can receive values of the Wolf heating system._

The ISM8 card can be placed into the Wolf heating system. 
The card is usually used in combination with an object server, where the object server does forward those messages into the KNX bus system. 
In case there is no need to handle the heating system values directly in the KNX system you can use this binding to monitor and control your heating system without the need to buy an object server. 
The system works in a way that the ISM8 connects to a partner and sends from time to time an update. The frequency depends on the change of the values. 
This binding is listening to those messages.
After the first connection there is an active command send to the ISM8 in order to receive all available data points.
The manual of the ISM8 can be downloaded from the supplier (https://www.wolf.eu/fileadmin/Wolf_Profi/Downloads/Montage-Bedienungsanleitungen/Regelungen/Zubehoer/3064356_201611_ISM8i_Montage-u.Bedienungsanleitung.pdf) 

## Supported Things

_This binding does only support one Thing - the Ism8-Device._

## Discovery

_Auto-discovery is not supported._


## Thing Configuration

The intention was to have a generic ISM8 binding in order to offer the full flexibilty for the different heating systems.
For this reason you need to create a Thing configuration, where basically only the port is required next to the channel configuration.
(`Thing ism8:device:heater "Wolf Heizung" [portNumber=12004]`)

## Channels

You can use any channel supported by the ISM8 as data point. Please have a look at the official manual from Wolf.
Within this document you'll find a table containing all supported data points. 
The available data points are depending on your heating system configuration. 
The ISM8 does currently support 4 different devices at the same moment of time (e.g. CGB-2, CWL Excellent, Solar, ...).

Once you have an overview of your heating system set you can start to create the channels accordingly.
Each channel should be created in the following way:

	| Type   | Name    | Description                | Configuration   |
	|--------|---------|----------------------------|-----------------|
	| Number | DpId004 | "Kesseltemperatur"         | id, type, write |

Type:

+ Switch use for boolean values
+ Number use for any number
+ Other types may work as well.

Name:

+ Put here any name you'd like. This name is used for creating the binding.


Description:

+ Put here any description you'd like or the description for the data point ID from the Wolf manual.


Configuration:

+ id=1            - Please enter here the ID of the data point you'd like to map to this channel. 
A list of the available IDs are available within the Wolf manual. 
The supported IDs are depending on the firmware version of the ISM8 and the connected systems.
+ type="1.001"    - Please enter here the knx type of the data point. 
You can find the data type in the Wolf ISM8 document as well.
+ write=true      - This parameter defines if the channel is bidirectional, but the parameter is optional and by default false. 

Note:
Not all available types of the ISM8 interface are fully supported, but this can be extended.
For the moment the following data types are implemented:

+ DPT-Bool:         `1.001`, `1.002`, `1.003`, `1.009`
+ DPT-Scaling:      `5.001`
+ DPT-Value:        `9.001`, `9.002`, `9.006`
+ DPT-FlowRate:     `13.002`
+ DPT-Mode:         `20.102`, `20.103`, `20.105`


## Full Example

_ism8.things_

    Thing ism8:device:heater "Wolf Heizung"         [portNumber=12004]
    {
        Type switch-readonly : DpId001 "Störung Heizgerät"            [id=1, type="1.001"]
        Type number-readonly : DpId002 "Betriebsart"                  [id=2, type="20.105"]
        Type number-readonly : DpId003 "Brennerleistung"              [id=3, type="5.001"] 
        Type number-readonly : DpId004 "Kesseltemperatur"             [id=4, type="9.001"] 
        Type number-readonly : DpId006 "Rücklauftemperatur"           [id=6, type="9.001"] 
        Type number-readonly : DpId007 "Warmwassertemperatur"         [id=7, type="9.001"] 
        Type number-readonly : DpId008 "Außentemperatur"              [id=8, type="9.001"] 
        Type switch-readonly : DpId009 "Status Flamme"                [id=9, type="1.001"] 
        Type number-readonly : DpId013 "Anlagendruck"                 [id=13, type="9.006"] 
        Type number-readonly : DpId053 "Störung Systemmodul"          [id=53, type="1.001"] 
        Type number-readonly : DpId054 "Außentemperatur Systemmodul"  [id=54, type="9.001"] 
        Type number          : DpId056 "Sollwert Warmwasser"          [id=56, type="9.001"] 
        Type number          : DpId057 "Betriebsart Heizkreis"        [id=57, type="20.102"] 
        Type number          : DpId058 "Betriebsart Warmwasser"       [id=58, type="20.103"] 
        Type number          : DpId065 "Sollwertverschiebung"         [id=65, type="9.002"] 
        Type number-readonly : DpId148 "CML Störung"                  [id=148, type="1.001"] 
        Type number          : DpId149 "CWL Betriebsart"              [id=149, type="20.102"] 
        Type number-readonly : DpId163 "CWL Lüftungsstufe"            [id=163, type="5.001"] 
        Type number-readonly : DpId164 "CWL Ablufttemperatur"         [id=164, type="9.001"] 
        Type number-readonly : DpId165 "CWL Zulufttemperatur"         [id=165, type="9.001"]
        Type number-readonly : DpId166 "CWL Luftdurchsatz Zuluft"     [id=166, type="13.002"]
        Type number-readonly : DpId167 "CWL Luftdurchsatz Abluft"     [id=167, type="13.002"]
        Type number-readonly : DpId192 "CML Filterwarnung"            [id=192, type="1.001"]    
    }

_ism8.items_

	Switch	ISM_HeizungStoerung              "Störung Heizgerät"                      { channel="ism8:device:heater:DpId001" }
	Number	ISM_HeizungBetriebsart           "Betriebsart"                            { channel="ism8:device:heater:DpId002" }
	Number	ISM_HeizungBrennerleistung       "Brennerleistung [%.1f %%]"              { channel="ism8:device:heater:DpId003" }
	Number	ISM_HeizungKesseltemperatur      "Kesseltemperatur [%.1f °C]"             { channel="ism8:device:heater:DpId004" }
	Number	ISM_HeizungRuecklauftemperatur   "Rücklauftemperatur [%.1f °C]"           { channel="ism8:device:heater:DpId006" }
	Number	ISM_HeizungWarmwassertemperatur  "Warmwassertemperatur [%.1f °C]"         { channel="ism8:device:heater:DpId007" }
	Number	ISM_HeizungAussentemperatur      "Außentemperatur [%.1f °C]"              { channel="ism8:device:heater:DpId008" }
	Switch	ISM_HeizungStatusFlamme          "Status Flamme"                          { channel="ism8:device:heater:DpId009" }
	Number	ISM_HeizungAnlagendruck          "Anlagendruck [%.2f bar]"                { channel="ism8:device:heater:DpId013" }
	Switch	ISM_HeizungSysStoerung           "Störung Systemmodul"                    { channel="ism8:device:heater:DpId053" }
	Number	ISM_HeizungSysAussentemperatur   "Außentemperatur Systemmodul [%.1f °C]"  { channel="ism8:device:heater:DpId054" }
	Number	ISM_HeizungSollwertWarmwasser    "Sollwert Warmwasser [%.1f °C]"          { channel="ism8:device:heater:DpId056" }
	Number	ISM_HeizungBetriebsartHeizkreis  "Betriebsart Heizkreis"                  { channel="ism8:device:heater:DpId057" }
	Number	ISM_HeizungBetriebsartWarmwasser "Betriebsart Warmwasser"                 { channel="ism8:device:heater:DpId058" }
	Number	ISM_HeizungSollwertverschiebung  "Sollwertverschiebung [%.1f °C]"         { channel="ism8:device:heater:DpId065" }
	Switch	ISM_LueftungStoerung             "CML Störung"                            { channel="ism8:device:heater:DpId148" }
	Number	ISM_LueftungBetriebsart          "CWL Betriebsart"                        { channel="ism8:device:heater:DpId149" }
	Number	ISM_LueftungLueftungsstufe       "CWL Lüftungsstufe [%.1f %%]"            { channel="ism8:device:heater:DpId163" }
	Number	ISM_LueftungAblufttemperatur     "CWL Ablufttemperatur [%.1f °C]"         { channel="ism8:device:heater:DpId164" }
	Number	ISM_LueftungZulufttemperatur     "CWL Zulufttemperatur [%.1f °C]"         { channel="ism8:device:heater:DpId165" }
	Number	ISM_LueftungLuftdurchsatzZuluft  "CWL Luftdurchsatz Zuluft [%.1f m³/h]"   { channel="ism8:device:heater:DpId166" }
	Number	ISM_LueftungLuftdurchsatzAbluft  "CWL Luftdurchsatz Abluft [%.1f m³/h]"   { channel="ism8:device:heater:DpId167" }
	Switch	ISM_LueftungFilterwarnung        "CML Filterwarnung"                      { channel="ism8:device:heater:DpId192" }
	
_demo.sitemap_

    Frame label="Heizung"
    {    
        Text item=ISM_HeizungSysStoerung                icon="siren"
        Text item=ISM_HeizungStoerung                   icon="siren"
        Text item=ISM_HeizungAussentemperatur           icon="temperature"
        Text item=ISM_HeizungBetriebsart                icon="radiator"          label="Modus [MAP(HVACContrMode.map):%s]"
        Text item=ISM_HeizungAnlagendruck               icon="pressure"
        Text item=ISM_HeizungBrennerleistung            icon="chart"
        Selection item=ISM_HeizungBetriebsartHeizkreis  icon="radiator"          mappings=[0="Auto", 1="Komfort", 2="Stand By", 3="Eco", 4="Frost Schutz"]
        Text item=ISM_HeizungStatusFlamme               icon="fire"
        Text item=ISM_HeizungKesseltemperatur           icon="temperature"
        Text item=ISM_HeizungRuecklauftemperatur        icon="temperature_cold"
        Setpoint item=ISM_HeizungSollwertverschiebung   icon="radiator"          minValue=-5 maxValue=5 step=1
    }
    Frame label="Wasser"
    {    
        Text item=ISM_HeizungWarmwassertemperatur       icon="temperature_hot"
        Setpoint item=ISM_HeizungSollwertWarmwasser     icon="temperature"       minValue=40 maxValue=60 step=1
        Selection item=ISM_HeizungBetriebsartWarmwasser icon="faucet"            mappings=[0="Auto", 1="Legionellen Schutz", 2="Normal", 3="Eco", 4="Frost Schutz"]
    }
    Frame label="Lüftung"
    {    
        Text item=ISM_LueftungStoerung                  icon="siren"        
        Selection item=ISM_LueftungBetriebsart          icon="fan"                mappings=[0="Auto", 1="Minimum", 2="Reduziert", 3="Normal", 4="Intensiv"]
        Text item=ISM_LueftungLueftungsstufe            icon="qualityofservice"
        Text item=ISM_LueftungFilterwarnung             icon="siren"
        Text item=ISM_LueftungAblufttemperatur          icon="temperature_hot"
        Text item=ISM_LueftungZulufttemperatur          icon="temperature_cold"
        Text item=ISM_LueftungLuftdurchsatzZuluft       icon="flow"
        Text item=ISM_LueftungLuftdurchsatzAbluft       icon="flow"
    }

_HVACContrMode.map_

    0=Auto
    1=Heizen
    2=Aufwärmen
    3=Abkühlen
    4=Nächtliche Reinigung
    5=Vorkühlen
    6=Aus
    7=Test
    8=Notfall Heizen
    9=Nur Lüften
    10=Freies Kühlen
    11=Eis
    12=Maximum Heizen
    13=Eco Heiz-/Kühlmodus
    14=Entfeuchten
    15=Kalibriermodus
    16=Notfall Kühlmodus
    17=Emergency Dampfmodus
    20=Reserviert
    NULL=Undefiniert

_Result_
<img src="doc/Sitemap-Example.png" width="800" height="600">
