From b30fac7a766390792ddc4ae4af0593a1b7c28a05 Mon Sep 17 00:00:00 2001 From: Michael Weger Date: Sat, 14 Dec 2024 16:21:06 +0100 Subject: [PATCH 1/8] guntamatic indexed channels Signed-off-by: Michael Weger --- .../org.openhab.binding.guntamatic/README.md | 469 +++++++++--------- .../internal/GuntamaticHandler.java | 96 ++-- 2 files changed, 274 insertions(+), 291 deletions(-) diff --git a/bundles/org.openhab.binding.guntamatic/README.md b/bundles/org.openhab.binding.guntamatic/README.md index 745b6ca3def45..dfd765455b5f6 100644 --- a/bundles/org.openhab.binding.guntamatic/README.md +++ b/bundles/org.openhab.binding.guntamatic/README.md @@ -4,7 +4,7 @@ The Guntamatic Binding can be used to monitor and control [Guntamatic Heating Sy ## Supported Things -The Guntamatic Binding was developed and tested using Guntamatic Biostar 15kW Pellets Heating System, running Firmware 3.2d. +The Guntamatic Binding was developed and tested using Guntamatic Biostar 15kW Pellets Heating System, running Firmware 3.3d. It should work for all other Guntamatic Heating Systems as well, that support the same web interface (Pellets, WoodChips, EnergyGrain as well as Log Heating Systems). ## Things @@ -13,13 +13,13 @@ Guntamatic Heating Systems supported as Thing Types: | Name | Thing Type ID | Heating System Type | Binding Development Status | | --------- | ------------- | -------------------- | ------------------------------------------------ | -| Biostar | `biostar` | Pellets | tested via 15kW, firmware 3.2d, German & English | +| Biostar | `biostar` | Pellets | tested via 15kW, firmware 3.3d, German & English | | Biosmart | `biosmart` | Logs | tested via 22kW, firmware 3.2f, German | | Powerchip | `powerchip` | WoodChips | tested via 100kW, firmware 3.2d, French | -| Powercorn | `powercorn` | EnergyGrain | untested | -| Biocom | `biocom` | Pellets | untested | -| Pro | `pro` | Pellets or WoodChips | untested | -| Therm | `therm` | Pellets | untested | +| Powercorn | `powercorn` | EnergyGrain | untested (no user feedback) | +| Biocom | `biocom` | Pellets | untested (no user feedback) | +| Pro | `pro` | Pellets or WoodChips | untested (no user feedback) | +| Therm | `therm` | Pellets | untested (no user feedback) | | Generic | `generic` | - | use, if none from above | ### Thing Configuration @@ -82,116 +82,117 @@ The Binding dynamically generates Channels, derived from the data provided from Example list of Channels using a Guntamatic Biostar 15kW Pellets Heating System running firmware 3.2d and Guntamatic System Language configured to English: -| Channel | Description | Type | Unit | Security Access Level | ReadOnly | Advanced | -| -------------------- | ---------------------- | ---------------------- | :--: | :-------------------: | :------: | :------: | -| `running` | Running | `String` | | 🔓 W0 | R/O | false | -| `outsideTemp` | Outside Temp. | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `blrTargetTemp` | Blr.Target Temp | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `boilerTemperature` | Boiler Temperature | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `flueGasUtilisation` | Flue gas utilisation | `Number:Dimensionless` | `%` | 🔐 W1 | R/O | false | -| `output` | Output | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | -| `returnTemp` | Return temp | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `co2Target` | CO2 Target | `Number:Dimensionless` | `%` | 🔐 W1 | R/O | false | -| `co2Content` | CO2 Content | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | -| `returnTempTarget` | Return temp target | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `statusCode` | Status code | `Number` | | 🔐 W1 | R/O | false | -| `efficiency` | Efficiency | `Number:Dimensionless` | `%` | 🔐 W1 | R/O | false | -| `extractorSystem` | Extractor System | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | -| `feedTurbine` | Feed Turbine | `String` | | 🔐 W1 | R/O | false | -| `dischargeMotor` | Discharge motor | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | -| `g1Target` | G1 Target | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | -| `bufferTop` | Buffer Top | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `bufferMid` | Buffer Mid | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `bufferBtm` | Buffer Btm | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `pumpHp0` | Pump HP0 | `Switch` | | 🔓 W0 | R/O | false | -| `dhw0` | DHW 0 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `bDhw0` | B DHW 0 | `Switch` | | 🔓 W0 | R/O | false | -| `dhw1` | DHW 1 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `bDhw1` | B DHW 1 | `Switch` | | 🔓 W0 | R/O | false | -| `dhw2` | DHW 2 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `bDhw2` | B DHW 2 | `Switch` | | 🔓 W0 | R/O | false | -| `roomTempHc0` | Room Temp:HC 0 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `heatCirc0` | Heat Circ. 0 | `Switch` | | 🔓 W0 | R/O | false | -| `roomTempHc1` | Room Temp:HC 1 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `flowTarget1` | Flow Target 1 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `flowIs1` | Flow is 1 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `mixer1` | Mixer 1 | `String` | | 🔐 W1 | R/O | false | -| `heatCirc1` | Heat Circ. 1 | `Switch` | | 🔐 W1 | R/O | false | -| `roomTempHc2` | Room Temp:HC 2 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `flowTarget2` | Flow Target 2 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `flowIs2` | Flow is 2 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `mixer2` | Mixer 2 | `String` | | 🔐 W1 | R/O | false | -| `heatCirc2` | Heat Circ. 2 | `Switch` | | 🔓 W0 | R/O | false | -| `roomTempHc3` | Room Temp:HC 3 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `heatCirc3` | Heat Circ. 3 | `Switch` | | 🔓 W0 | R/O | false | -| `roomTempHc4` | Room Temp:HC 4 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `flowTarget4` | Flow Target 4 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `flowIs4` | Flow is 4 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `mixer4` | Mixer 4 | `String` | | 🔐 W1 | R/O | false | -| `heatCirc4` | Heat Circ. 4 | `Switch` | | 🔓 W0 | R/O | false | -| `roomTempHc5` | Room Temp:HC 5 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `flowTarget5` | Flow Target 5 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `flowIs5` | Flow is 5 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `mixer5` | Mixer 5 | `String` | | 🔐 W1 | R/O | false | -| `heatCirc5` | Heat Circ. 5 | `Switch` | | 🔓 W0 | R/O | false | -| `roomTempHc6` | Room Temp:HC 6 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `heatCirc6` | Heat Circ. 6 | `Switch` | | 🔓 W0 | R/O | false | -| `roomTempHc7` | Room Temp:HC 7 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `flowTarget7` | Flow Target 7 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `flowIs7` | Flow is 7 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `mixer7` | Mixer 7 | `String` | | 🔐 W1 | R/O | false | -| `heatCirc7` | Heat Circ. 7 | `Switch` | | 🔓 W0 | R/O | false | -| `roomTempHc8` | Room Temp:HC 8 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `flowTarget8` | Flow Target 8 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `flowIs8` | Flow is 8 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `mixer8` | Mixer 8 | `String` | | 🔐 W1 | R/O | false | -| `heatCirc8` | Heat Circ. 8 | `Switch` | | 🔓 W0 | R/O | false | -| `fuelLevel` | Fuel Level | `String` | | 🔐 W1 | R/O | false | -| `stb` | STB | `String` | | 🔐 W1 | R/O | false | -| `tks` | TKS | `String` | | 🔐 W1 | R/O | false | -| `boilerApproval` | Boiler approval | `Switch` | | 🔐 W1 | R/O | false | -| `programme` | Programme | `String` | | 🔓 W0 | R/O | false | -| `programHc0` | Program HC0 | `String` | | 🔓 W0 | R/O | false | -| `programHc1` | Program HC1 | `String` | | 🔓 W0 | R/O | false | -| `programHc2` | Program HC2 | `String` | | 🔓 W0 | R/O | false | -| `programHc3` | Program HC3 | `String` | | 🔓 W0 | R/O | false | -| `programHc4` | Program HC4 | `String` | | 🔓 W0 | R/O | false | -| `programHc5` | Program HC5 | `String` | | 🔓 W0 | R/O | false | -| `programHc6` | Program HC6 | `String` | | 🔓 W0 | R/O | false | -| `programHc7` | Program HC7 | `String` | | 🔓 W0 | R/O | false | -| `programHc8` | Program HC8 | `String` | | 🔓 W0 | R/O | false | -| `interuption0` | Interuption 0 | `String` | | 🔓 W0 | R/O | false | -| `interuption1` | Interuption 1 | `String` | | 🔓 W0 | R/O | false | -| `serial` | Serial | `Number` | | 🔓 W0 | R/O | false | -| `version` | Version | `String` | | 🔓 W0 | R/O | false | -| `runningTime` | Running Time | `Number:Time` | `h` | 🔓 W0 | R/O | false | -| `serviceHrs` | Service Hrs | `Number:Time` | `d` | 🔓 W0 | R/O | false | -| `emptyAshIn` | Empty ash in | `Number:Time` | `h` | 🔓 W0 | R/O | false | -| `flowIs0` | Flow is 0 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `flowIs3` | Flow is 3 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `flowIs6` | Flow is 6 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `fuelCounter` | Fuel counter | `Number:Volume` | `m³` | 🔐 W1 | R/O | false | -| `bufferLoad` | Buffer load. | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | -| `bufferTop0` | Buffer Top 0 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `bufferBtm0` | Buffer Btm 0 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `bufferTop1` | Buffer Top 1 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `bufferBtm1` | Buffer Btm 1 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `bufferTop2` | Buffer Top 2 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `bufferBtm2` | Buffer Btm 2 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `bExtraWw0` | B extra-WW. 0 | `Switch` | | 🔐 W1 | R/O | false | -| `bExtraWw1` | B extra-WW. 1 | `Switch` | | 🔐 W1 | R/O | false | -| `bExtraWw2` | B extra-WW. 2 | `Switch` | | 🔐 W1 | R/O | false | -| `auxiliaryPump0` | Auxiliary pump 0 | `Switch` | | 🔐 W1 | R/O | false | -| `auxiliaryPump1` | Auxiliary pump 1 | `Switch` | | 🔐 W1 | R/O | false | -| `auxiliaryPump2` | Auxiliary pump 2 | `Switch` | | 🔐 W1 | R/O | false | -| `boilersConditionNo` | Boiler´s condition no. | `String` | | 🔐 W1 | R/O | false | -| `bufferT5` | Buffer T5 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `bufferT6` | Buffer T6 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `bufferT7` | Buffer T7 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `extraWw0` | Extra-WW. 0 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `extraWw1` | Extra-WW. 1 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `extraWw2` | Extra-WW. 2 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `grate` | Grate | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | +| Channel | Description | Type | Unit | Security Access Level | ReadOnly | Advanced | +| ------------------------ | ---------------------- | ---------------------- | :--: | :-------------------: | :------: | -------: | +| `000_running` | Running | `String` | | 🔓 W0 | R/O | false | +| `001_outsideTemp` | Outside Temp. | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `002_blrTargetTemp` | Blr.Target Temp | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `003_boilerTemperature` | Boiler Temperature | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `004_flueGasUtilisation` | Flue gas utilisation | `Number:Dimensionless` | `%` | 🔐 W1 | R/O | false | +| `005_output` | Output | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | +| `006_returnTemp` | Return temp | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `007_co2Target` | CO2 Target | `Number:Dimensionless` | `%` | 🔐 W1 | R/O | false | +| `008_co2Content` | CO2 Content | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | +| `009_returnTempTarget` | Return temp target | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `010_statusCode` | Status code | `Number` | | 🔐 W1 | R/O | false | +| `011_efficiency` | Efficiency | `Number:Dimensionless` | `%` | 🔐 W1 | R/O | false | +| `012_output` | Output | `Number:Dimensionless` | `%` | 🔐 W1 | R/O | false | +| `013_extractorSystem` | Extractor System | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | +| `014_feedTurbine` | Feed Turbine | `String` | | 🔐 W1 | R/O | false | +| `015_dischargeMotor` | Discharge motor | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | +| `016_g1Target` | G1 Target | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | +| `017_bufferTop` | Buffer Top | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `018_bufferMid` | Buffer Mid | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `019_bufferBtm` | Buffer Btm | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `020_pumpHp0` | Pump HP0 | `Switch` | | 🔓 W0 | R/O | false | +| `021_dhw0` | DHW 0 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `022_bDhw0` | B DHW 0 | `Switch` | | 🔓 W0 | R/O | false | +| `023_dhw1` | DHW 1 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `024_bDhw1` | B DHW 1 | `Switch` | | 🔓 W0 | R/O | false | +| `025_dhw2` | DHW 2 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `026_bDhw2` | B DHW 2 | `Switch` | | 🔓 W0 | R/O | false | +| `027_roomTempHc0` | Room Temp:HC 0 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `028_heatCirc0` | Heat Circ. 0 | `Switch` | | 🔓 W0 | R/O | false | +| `029_roomTempHc1` | Room Temp:HC 1 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `030_flowTarget1` | Flow Target 1 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `031_flowIs1` | Flow is 1 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `032_mixer1` | Mixer 1 | `String` | | 🔐 W1 | R/O | false | +| `033_heatCirc1` | Heat Circ. 1 | `Switch` | | 🔐 W1 | R/O | false | +| `034_roomTempHc2` | Room Temp:HC 2 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `035_flowTarget2` | Flow Target 2 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `036_flowIs2` | Flow is 2 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `037_mixer2` | Mixer 2 | `String` | | 🔐 W1 | R/O | false | +| `038_heatCirc2` | Heat Circ. 2 | `Switch` | | 🔓 W0 | R/O | false | +| `039_roomTempHc3` | Room Temp:HC 3 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `040_heatCirc3` | Heat Circ. 3 | `Switch` | | 🔓 W0 | R/O | false | +| `041_roomTempHc4` | Room Temp:HC 4 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `042_flowTarget4` | Flow Target 4 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `043_flowIs4` | Flow is 4 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `044_mixer4` | Mixer 4 | `String` | | 🔐 W1 | R/O | false | +| `045_heatCirc4` | Heat Circ. 4 | `Switch` | | 🔓 W0 | R/O | false | +| `046_roomTempHc5` | Room Temp:HC 5 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `047_flowTarget5` | Flow Target 5 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `048_flowIs5` | Flow is 5 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `049_mixer5` | Mixer 5 | `String` | | 🔐 W1 | R/O | false | +| `050_heatCirc5` | Heat Circ. 5 | `Switch` | | 🔓 W0 | R/O | false | +| `051_roomTempHc6` | Room Temp:HC 6 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `052_heatCirc6` | Heat Circ. 6 | `Switch` | | 🔓 W0 | R/O | false | +| `053_roomTempHc7` | Room Temp:HC 7 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `054_flowTarget7` | Flow Target 7 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `055_flowIs7` | Flow is 7 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `056_mixer7` | Mixer 7 | `String` | | 🔐 W1 | R/O | false | +| `057_heatCirc7` | Heat Circ. 7 | `Switch` | | 🔓 W0 | R/O | false | +| `058_roomTempHc8` | Room Temp:HC 8 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `059_flowTarget8` | Flow Target 8 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `060_flowIs8` | Flow is 8 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `061_mixer8` | Mixer 8 | `String` | | 🔐 W1 | R/O | false | +| `062_heatCirc8` | Heat Circ. 8 | `Switch` | | 🔓 W0 | R/O | false | +| `065_fuelLevel` | Fuel Level | `String` | | 🔐 W1 | R/O | false | +| `066_stb` | STB | `String` | | 🔐 W1 | R/O | false | +| `067_tks` | TKS | `String` | | 🔐 W1 | R/O | false | +| `068_boilerApproval` | Boiler approval | `Switch` | | 🔐 W1 | R/O | false | +| `069_programme` | Programme | `String` | | 🔓 W0 | R/O | false | +| `070_programHc0` | Program HC0 | `String` | | 🔓 W0 | R/O | false | +| `071_programHc1` | Program HC1 | `String` | | 🔓 W0 | R/O | false | +| `072_programHc2` | Program HC2 | `String` | | 🔓 W0 | R/O | false | +| `073_programHc3` | Program HC3 | `String` | | 🔓 W0 | R/O | false | +| `074_programHc4` | Program HC4 | `String` | | 🔓 W0 | R/O | false | +| `075_programHc5` | Program HC5 | `String` | | 🔓 W0 | R/O | false | +| `076_programHc6` | Program HC6 | `String` | | 🔓 W0 | R/O | false | +| `077_programHc7` | Program HC7 | `String` | | 🔓 W0 | R/O | false | +| `078_programHc8` | Program HC8 | `String` | | 🔓 W0 | R/O | false | +| `079_interuption0` | Interuption 0 | `String` | | 🔓 W0 | R/O | false | +| `080_interuption1` | Interuption 1 | `String` | | 🔓 W0 | R/O | false | +| `081_serial` | Serial | `Number` | | 🔓 W0 | R/O | false | +| `082_version` | Version | `String` | | 🔓 W0 | R/O | false | +| `083_runningTime` | Running Time | `Number:Time` | `h` | 🔓 W0 | R/O | false | +| `084_serviceHrs` | Service Hrs | `Number:Time` | `d` | 🔓 W0 | R/O | false | +| `085_emptyAshIn` | Empty ash in | `Number:Time` | `h` | 🔓 W0 | R/O | false | +| `086_flowIs0` | Flow is 0 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `087_flowIs3` | Flow is 3 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `088_flowIs6` | Flow is 6 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `089_fuelCounter` | Fuel counter | `Number:Volume` | `m³` | 🔐 W1 | R/O | false | +| `090_bufferLoad` | Buffer load. | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | +| `091_bufferTop0` | Buffer Top 0 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `092_bufferBtm0` | Buffer Btm 0 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `093_bufferTop1` | Buffer Top 1 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `094_bufferBtm1` | Buffer Btm 1 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `095_bufferTop2` | Buffer Top 2 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `096_bufferBtm2` | Buffer Btm 2 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `097_bExtraWw0` | B extra-WW. 0 | `Switch` | | 🔐 W1 | R/O | false | +| `098_bExtraWw1` | B extra-WW. 1 | `Switch` | | 🔐 W1 | R/O | false | +| `099_bExtraWw2` | B extra-WW. 2 | `Switch` | | 🔐 W1 | R/O | false | +| `100_auxiliaryPump0` | Auxiliary pump 0 | `Switch` | | 🔐 W1 | R/O | false | +| `101_auxiliaryPump1` | Auxiliary pump 1 | `Switch` | | 🔐 W1 | R/O | false | +| `102_auxiliaryPump2` | Auxiliary pump 2 | `Switch` | | 🔐 W1 | R/O | false | +| `104_boilersConditionNo` | Boiler´s condition no. | `String` | | 🔐 W1 | R/O | false | +| `108_bufferT5` | Buffer T5 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `109_bufferT6` | Buffer T6 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `110_bufferT7` | Buffer T7 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `111_extraWw0` | Extra-WW. 0 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `112_extraWw1` | Extra-WW. 1 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `113_extraWw2` | Extra-WW. 2 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `114_grate` | Grate | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | #### Security Access Levels @@ -210,131 +211,115 @@ Thing guntamatic:biostar:mybiostar "Guntamatic Biostar" [ hostname="192.1 ### Item File ```java -String Biostar_ControlBoilerApproval "Set Boiler Approval" { channel="guntamatic:biostar:mybiostar:controlBoilerApproval" } -String Biostar_ControlProgram "Set Program" { channel="guntamatic:biostar:mybiostar:controlProgram" } -String Biostar_ControlHeatCircProgram0 "Set Heat Circle 0 Program" { channel="guntamatic:biostar:mybiostar:controlHeatCircProgram0" } -String Biostar_ControlHeatCircProgram1 "Set Heat Circle 1 Program" { channel="guntamatic:biostar:mybiostar:controlHeatCircProgram1" } -String Biostar_ControlHeatCircProgram2 "Set Heat Circle 2 Program" { channel="guntamatic:biostar:mybiostar:controlHeatCircProgram2" } -String Biostar_ControlHeatCircProgram3 "Set Heat Circle 3 Program" { channel="guntamatic:biostar:mybiostar:controlHeatCircProgram3" } -String Biostar_ControlHeatCircProgram4 "Set Heat Circle 4 Program" { channel="guntamatic:biostar:mybiostar:controlHeatCircProgram4" } -String Biostar_ControlHeatCircProgram5 "Set Heat Circle 5 Program" { channel="guntamatic:biostar:mybiostar:controlHeatCircProgram5" } -String Biostar_ControlHeatCircProgram6 "Set Heat Circle 6 Program" { channel="guntamatic:biostar:mybiostar:controlHeatCircProgram6" } -String Biostar_ControlHeatCircProgram7 "Set Heat Circle 7 Program" { channel="guntamatic:biostar:mybiostar:controlHeatCircProgram7" } -String Biostar_ControlHeatCircProgram8 "Set Heat Circle 8 Program" { channel="guntamatic:biostar:mybiostar:controlHeatCircProgram8" } -String Biostar_ControlWwHeat0 "Trigger Warm Water Circle 0" { channel="guntamatic:biostar:mybiostar:controlWwHeat0" } -String Biostar_ControlWwHeat1 "Trigger Warm Water Circle 1" { channel="guntamatic:biostar:mybiostar:controlWwHeat1" } -String Biostar_ControlWwHeat2 "Trigger Warm Water Circle 2" { channel="guntamatic:biostar:mybiostar:controlWwHeat2" } -String Biostar_ControlExtraWwHeat0 "Trigger Extra Warm Water Circle 0" { channel="guntamatic:biostar:mybiostar:controlExtraWwHeat0" } -String Biostar_ControlExtraWwHeat1 "Trigger Extra Warm Water Circle 1" { channel="guntamatic:biostar:mybiostar:controlExtraWwHeat1" } -String Biostar_ControlExtraWwHeat2 "Trigger Extra Warm Water Circle 2" { channel="guntamatic:biostar:mybiostar:controlExtraWwHeat2" } -String Biostar_Running "Running" { channel="guntamatic:biostar:mybiostar:running" } -Number:Temperature Biostar_OutsideTemp "Outside Temp." { channel="guntamatic:biostar:mybiostar:outsideTemp" } -Number:Temperature Biostar_BlrTargetTemp "Blr.Target Temp" { channel="guntamatic:biostar:mybiostar:blrTargetTemp" } -Number:Temperature Biostar_BoilerTemperature "Boiler Temperature" { channel="guntamatic:biostar:mybiostar:boilerTemperature" } -Number:Dimensionless Biostar_FlueGasUtilisation "Flue gas utilisation" { channel="guntamatic:biostar:mybiostar:flueGasUtilisation" } -Number:Dimensionless Biostar_Output "Output" { channel="guntamatic:biostar:mybiostar:output" } -Number:Temperature Biostar_ReturnTemp "Return temp" { channel="guntamatic:biostar:mybiostar:returnTemp" } -Number:Dimensionless Biostar_Co2Target "CO2 Target" { channel="guntamatic:biostar:mybiostar:co2Target" } -Number:Dimensionless Biostar_Co2Content "CO2 Content" { channel="guntamatic:biostar:mybiostar:co2Content" } -Number:Temperature Biostar_ReturnTempTarget "Return temp target" { channel="guntamatic:biostar:mybiostar:returnTempTarget" } -Number Biostar_StatusCode "Status code" { channel="guntamatic:biostar:mybiostar:statusCode" } -Number:Dimensionless Biostar_Efficiency "Efficiency" { channel="guntamatic:biostar:mybiostar:efficiency" } -Number:Dimensionless Biostar_ExtractorSystem "Extractor System" { channel="guntamatic:biostar:mybiostar:extractorSystem" } -String Biostar_FeedTurbine "Feed Turbine" { channel="guntamatic:biostar:mybiostar:feedTurbine" } -Number:Dimensionless Biostar_DischargeMotor "Discharge motor" { channel="guntamatic:biostar:mybiostar:dischargeMotor" } -Number:Dimensionless Biostar_G1Target "G1 Target" { channel="guntamatic:biostar:mybiostar:g1Target" } -Number:Temperature Biostar_BufferTop "Buffer Top" { channel="guntamatic:biostar:mybiostar:bufferTop" } -Number:Temperature Biostar_BufferMid "Buffer Mid" { channel="guntamatic:biostar:mybiostar:bufferMid" } -Number:Temperature Biostar_BufferBtm "Buffer Btm" { channel="guntamatic:biostar:mybiostar:bufferBtm" } -Switch Biostar_PumpHp0 "Pump HP0" { channel="guntamatic:biostar:mybiostar:pumpHp0" } -Number:Temperature Biostar_Dhw0 "DHW 0" { channel="guntamatic:biostar:mybiostar:dhw0" } -Switch Biostar_BDhw0 "B DHW 0" { channel="guntamatic:biostar:mybiostar:bDhw0" } -Number:Temperature Biostar_Dhw1 "DHW 1" { channel="guntamatic:biostar:mybiostar:dhw1" } -Switch Biostar_BDhw1 "B DHW 1" { channel="guntamatic:biostar:mybiostar:bDhw1" } -Number:Temperature Biostar_Dhw2 "DHW 2" { channel="guntamatic:biostar:mybiostar:dhw2" } -Switch Biostar_BDhw2 "B DHW 2" { channel="guntamatic:biostar:mybiostar:bDhw2" } -Number:Temperature Biostar_RoomTempHc0 "Room Temp:HC 0" { channel="guntamatic:biostar:mybiostar:roomTempHc0" } -Switch Biostar_HeatCirc0 "Heat Circ. 0" { channel="guntamatic:biostar:mybiostar:heatCirc0" } -Number:Temperature Biostar_RoomTempHc1 "Room Temp:HC 1" { channel="guntamatic:biostar:mybiostar:roomTempHc1" } -Number:Temperature Biostar_FlowTarget1 "Flow Target 1" { channel="guntamatic:biostar:mybiostar:flowTarget1" } -Number:Temperature Biostar_FlowIs1 "Flow is 1" { channel="guntamatic:biostar:mybiostar:flowIs1" } -String Biostar_Mixer1 "Mixer 1" { channel="guntamatic:biostar:mybiostar:mixer1" } -Switch Biostar_HeatCirc1 "Heat Circ. 1" { channel="guntamatic:biostar:mybiostar:heatCirc1" } -Number:Temperature Biostar_RoomTempHc2 "Room Temp:HC 2" { channel="guntamatic:biostar:mybiostar:roomTempHc2" } -Number:Temperature Biostar_FlowTarget2 "Flow Target 2" { channel="guntamatic:biostar:mybiostar:flowTarget2" } -Number:Temperature Biostar_FlowIs2 "Flow is 2" { channel="guntamatic:biostar:mybiostar:flowIs2" } -String Biostar_Mixer2 "Mixer 2" { channel="guntamatic:biostar:mybiostar:mixer2" } -Switch Biostar_HeatCirc2 "Heat Circ. 2" { channel="guntamatic:biostar:mybiostar:heatCirc2" } -Number:Temperature Biostar_RoomTempHc3 "Room Temp:HC 3" { channel="guntamatic:biostar:mybiostar:roomTempHc3" } -Switch Biostar_HeatCirc3 "Heat Circ. 3" { channel="guntamatic:biostar:mybiostar:heatCirc3" } -Number:Temperature Biostar_RoomTempHc4 "Room Temp:HC 4" { channel="guntamatic:biostar:mybiostar:roomTempHc4" } -Number:Temperature Biostar_FlowTarget4 "Flow Target 4" { channel="guntamatic:biostar:mybiostar:flowTarget4" } -Number:Temperature Biostar_FlowIs4 "Flow is 4" { channel="guntamatic:biostar:mybiostar:flowIs4" } -String Biostar_Mixer4 "Mixer 4" { channel="guntamatic:biostar:mybiostar:mixer4" } -Switch Biostar_HeatCirc4 "Heat Circ. 4" { channel="guntamatic:biostar:mybiostar:heatCirc4" } -Number:Temperature Biostar_RoomTempHc5 "Room Temp:HC 5" { channel="guntamatic:biostar:mybiostar:roomTempHc5" } -Number:Temperature Biostar_FlowTarget5 "Flow Target 5" { channel="guntamatic:biostar:mybiostar:flowTarget5" } -Number:Temperature Biostar_FlowIs5 "Flow is 5" { channel="guntamatic:biostar:mybiostar:flowIs5" } -String Biostar_Mixer5 "Mixer 5" { channel="guntamatic:biostar:mybiostar:mixer5" } -Switch Biostar_HeatCirc5 "Heat Circ. 5" { channel="guntamatic:biostar:mybiostar:heatCirc5" } -Number:Temperature Biostar_RoomTempHc6 "Room Temp:HC 6" { channel="guntamatic:biostar:mybiostar:roomTempHc6" } -Switch Biostar_HeatCirc6 "Heat Circ. 6" { channel="guntamatic:biostar:mybiostar:heatCirc6" } -Number:Temperature Biostar_RoomTempHc7 "Room Temp:HC 7" { channel="guntamatic:biostar:mybiostar:roomTempHc7" } -Number:Temperature Biostar_FlowTarget7 "Flow Target 7" { channel="guntamatic:biostar:mybiostar:flowTarget7" } -Number:Temperature Biostar_FlowIs7 "Flow is 7" { channel="guntamatic:biostar:mybiostar:flowIs7" } -String Biostar_Mixer7 "Mixer 7" { channel="guntamatic:biostar:mybiostar:mixer7" } -Switch Biostar_HeatCirc7 "Heat Circ. 7" { channel="guntamatic:biostar:mybiostar:heatCirc7" } -Number:Temperature Biostar_RoomTempHc8 "Room Temp:HC 8" { channel="guntamatic:biostar:mybiostar:roomTempHc8" } -Number:Temperature Biostar_FlowTarget8 "Flow Target 8" { channel="guntamatic:biostar:mybiostar:flowTarget8" } -Number:Temperature Biostar_FlowIs8 "Flow is 8" { channel="guntamatic:biostar:mybiostar:flowIs8" } -String Biostar_Mixer8 "Mixer 8" { channel="guntamatic:biostar:mybiostar:mixer8" } -Switch Biostar_HeatCirc8 "Heat Circ. 8" { channel="guntamatic:biostar:mybiostar:heatCirc8" } -String Biostar_FuelLevel "Fuel Level" { channel="guntamatic:biostar:mybiostar:fuelLevel" } -String Biostar_Stb "STB" { channel="guntamatic:biostar:mybiostar:stb" } -String Biostar_Tks "TKS" { channel="guntamatic:biostar:mybiostar:tks" } -Switch Biostar_BoilerApproval "Boiler approval" { channel="guntamatic:biostar:mybiostar:boilerApproval" } -String Biostar_Programme "Programme" { channel="guntamatic:biostar:mybiostar:programme" } -String Biostar_ProgramHc0 "Program HC0" { channel="guntamatic:biostar:mybiostar:programHc0" } -String Biostar_ProgramHc1 "Program HC1" { channel="guntamatic:biostar:mybiostar:programHc1" } -String Biostar_ProgramHc2 "Program HC2" { channel="guntamatic:biostar:mybiostar:programHc2" } -String Biostar_ProgramHc3 "Program HC3" { channel="guntamatic:biostar:mybiostar:programHc3" } -String Biostar_ProgramHc4 "Program HC4" { channel="guntamatic:biostar:mybiostar:programHc4" } -String Biostar_ProgramHc5 "Program HC5" { channel="guntamatic:biostar:mybiostar:programHc5" } -String Biostar_ProgramHc6 "Program HC6" { channel="guntamatic:biostar:mybiostar:programHc6" } -String Biostar_ProgramHc7 "Program HC7" { channel="guntamatic:biostar:mybiostar:programHc7" } -String Biostar_ProgramHc8 "Program HC8" { channel="guntamatic:biostar:mybiostar:programHc8" } -String Biostar_Interuption0 "Interuption 0" { channel="guntamatic:biostar:mybiostar:interuption0" } -String Biostar_Interuption1 "Interuption 1" { channel="guntamatic:biostar:mybiostar:interuption1" } -Number Biostar_Serial "Serial" { channel="guntamatic:biostar:mybiostar:serial" } -String Biostar_Version "Version" { channel="guntamatic:biostar:mybiostar:version" } -Number:Time Biostar_RunningTime "Running Time" { channel="guntamatic:biostar:mybiostar:runningTime" } -Number:Time Biostar_ServiceHrs "Service Hrs" { channel="guntamatic:biostar:mybiostar:serviceHrs" } -Number:Time Biostar_EmptyAshIn "Empty ash in" { channel="guntamatic:biostar:mybiostar:emptyAshIn" } -Number:Temperature Biostar_FlowIs0 "Flow is 0" { channel="guntamatic:biostar:mybiostar:flowIs0" } -Number:Temperature Biostar_FlowIs3 "Flow is 3" { channel="guntamatic:biostar:mybiostar:flowIs3" } -Number:Temperature Biostar_FlowIs6 "Flow is 6" { channel="guntamatic:biostar:mybiostar:flowIs6" } -Number:Volume Biostar_FuelCounter "Fuel counter" { channel="guntamatic:biostar:mybiostar:fuelCounter" } -Number:Dimensionless Biostar_BufferLoad "Buffer load." { channel="guntamatic:biostar:mybiostar:bufferLoad" } -Number:Temperature Biostar_BufferTop0 "Buffer Top 0" { channel="guntamatic:biostar:mybiostar:bufferTop0" } -Number:Temperature Biostar_BufferBtm0 "Buffer Btm 0" { channel="guntamatic:biostar:mybiostar:bufferBtm0" } -Number:Temperature Biostar_BufferTop1 "Buffer Top 1" { channel="guntamatic:biostar:mybiostar:bufferTop1" } -Number:Temperature Biostar_BufferBtm1 "Buffer Btm 1" { channel="guntamatic:biostar:mybiostar:bufferBtm1" } -Number:Temperature Biostar_BufferTop2 "Buffer Top 2" { channel="guntamatic:biostar:mybiostar:bufferTop2" } -Number:Temperature Biostar_BufferBtm2 "Buffer Btm 2" { channel="guntamatic:biostar:mybiostar:bufferBtm2" } -Switch Biostar_BExtraWw0 "B extra-WW. 0" { channel="guntamatic:biostar:mybiostar:bExtraWw0" } -Switch Biostar_BExtraWw1 "B extra-WW. 1" { channel="guntamatic:biostar:mybiostar:bExtraWw1" } -Switch Biostar_BExtraWw2 "B extra-WW. 2" { channel="guntamatic:biostar:mybiostar:bExtraWw2" } -Switch Biostar_AuxiliaryPump0 "Auxiliary pump 0" { channel="guntamatic:biostar:mybiostar:auxiliaryPump0" } -Switch Biostar_AuxiliaryPump1 "Auxiliary pump 1" { channel="guntamatic:biostar:mybiostar:auxiliaryPump1" } -Switch Biostar_AuxiliaryPump2 "Auxiliary pump 2" { channel="guntamatic:biostar:mybiostar:auxiliaryPump2" } -String Biostar_BoilersConditionNo "Boiler´s condition no." { channel="guntamatic:biostar:mybiostar:boilersConditionNo" } -Number:Temperature Biostar_BufferT5 "Buffer T5" { channel="guntamatic:biostar:mybiostar:bufferT5" } -Number:Temperature Biostar_BufferT6 "Buffer T6" { channel="guntamatic:biostar:mybiostar:bufferT6" } -Number:Temperature Biostar_BufferT7 "Buffer T7" { channel="guntamatic:biostar:mybiostar:bufferT7" } -Number:Temperature Biostar_ExtraWw0 "Extra-WW. 0" { channel="guntamatic:biostar:mybiostar:extraWw0" } -Number:Temperature Biostar_ExtraWw1 "Extra-WW. 1" { channel="guntamatic:biostar:mybiostar:extraWw1" } -Number:Temperature Biostar_ExtraWw2 "Extra-WW. 2" { channel="guntamatic:biostar:mybiostar:extraWw2" } -Number:Dimensionless Biostar_Grate "Grate" { channel="guntamatic:biostar:mybiostar:grate" } +String               Biostar_Running                 "Running"                            { channel="guntamatic:biostar:mybiostar:000_running" } +Number:Temperature   Biostar_OutsideTemp             "Outside Temp."                      { channel="guntamatic:biostar:mybiostar:001_outsideTemp" } +Number:Temperature   Biostar_BlrTargetTemp           "Blr.Target Temp"                    { channel="guntamatic:biostar:mybiostar:002_blrTargetTemp" } +Number:Temperature   Biostar_BoilerTemperature       "Boiler Temperature"                 { channel="guntamatic:biostar:mybiostar:003_boilerTemperature" } +Number:Dimensionless Biostar_FlueGasUtilisation      "Flue gas utilisation"               { channel="guntamatic:biostar:mybiostar:004_flueGasUtilisation" } +Number:Dimensionless Biostar_Output                  "Output"                             { channel="guntamatic:biostar:mybiostar:005_output" } +Number:Temperature   Biostar_ReturnTemp              "Return temp"                        { channel="guntamatic:biostar:mybiostar:006_returnTemp" } +Number:Dimensionless Biostar_Co2Target               "CO2 Target"                         { channel="guntamatic:biostar:mybiostar:007_co2Target" } +Number:Dimensionless Biostar_Co2Content              "CO2 Content"                        { channel="guntamatic:biostar:mybiostar:008_co2Content" } +Number:Temperature   Biostar_ReturnTempTarget        "Return temp target"                 { channel="guntamatic:biostar:mybiostar:009_returnTempTarget" } +Number               Biostar_StatusCode              "Status code"                        { channel="guntamatic:biostar:mybiostar:010_statusCode" } +Number:Dimensionless Biostar_Efficiency              "Efficiency"                         { channel="guntamatic:biostar:mybiostar:011_efficiency" } +Number:Dimensionless Biostar_Output2                 "Output"                             { channel="guntamatic:biostar:mybiostar:012_output" } +Number:Dimensionless Biostar_ExtractorSystem         "Extractor System"                   { channel="guntamatic:biostar:mybiostar:013_extractorSystem" } +String               Biostar_FeedTurbine             "Feed Turbine"                       { channel="guntamatic:biostar:mybiostar:014_feedTurbine" } +Number:Dimensionless Biostar_DischargeMotor          "Discharge motor"                    { channel="guntamatic:biostar:mybiostar:015_dischargeMotor" } +Number:Dimensionless Biostar_G1Target                "G1 Target"                          { channel="guntamatic:biostar:mybiostar:016_g1Target" } +Number:Temperature   Biostar_BufferTop               "Buffer Top"                         { channel="guntamatic:biostar:mybiostar:017_bufferTop" } +Number:Temperature   Biostar_BufferMid               "Buffer Mid"                         { channel="guntamatic:biostar:mybiostar:018_bufferMid" } +Number:Temperature   Biostar_BufferBtm               "Buffer Btm"                         { channel="guntamatic:biostar:mybiostar:019_bufferBtm" } +Switch               Biostar_PumpHp0                 "Pump HP0"                           { channel="guntamatic:biostar:mybiostar:020_pumpHp0" } +Number:Temperature   Biostar_Dhw0                    "DHW 0"                              { channel="guntamatic:biostar:mybiostar:021_dhw0" } +Switch               Biostar_BDhw0                   "B DHW 0"                            { channel="guntamatic:biostar:mybiostar:022_bDhw0" } +Number:Temperature   Biostar_Dhw1                    "DHW 1"                              { channel="guntamatic:biostar:mybiostar:023_dhw1" } +Switch               Biostar_BDhw1                   "B DHW 1"                            { channel="guntamatic:biostar:mybiostar:024_bDhw1" } +Number:Temperature   Biostar_Dhw2                    "DHW 2"                              { channel="guntamatic:biostar:mybiostar:025_dhw2" } +Switch               Biostar_BDhw2                   "B DHW 2"                            { channel="guntamatic:biostar:mybiostar:026_bDhw2" } +Number:Temperature   Biostar_RoomTempHc0             "Room Temp:HC 0"                     { channel="guntamatic:biostar:mybiostar:027_roomTempHc0" } +Switch               Biostar_HeatCirc0               "Heat Circ. 0"                       { channel="guntamatic:biostar:mybiostar:028_heatCirc0" } +Number:Temperature   Biostar_RoomTempHc1             "Room Temp:HC 1"                     { channel="guntamatic:biostar:mybiostar:029_roomTempHc1" } +Number:Temperature   Biostar_FlowTarget1             "Flow Target 1"                      { channel="guntamatic:biostar:mybiostar:030_flowTarget1" } +Number:Temperature   Biostar_FlowIs1                 "Flow is 1"                          { channel="guntamatic:biostar:mybiostar:031_flowIs1" } +String               Biostar_Mixer1                  "Mixer 1"                            { channel="guntamatic:biostar:mybiostar:032_mixer1" } +Switch               Biostar_HeatCirc1               "Heat Circ. 1"                       { channel="guntamatic:biostar:mybiostar:033_heatCirc1" } +Number:Temperature   Biostar_RoomTempHc2             "Room Temp:HC 2"                     { channel="guntamatic:biostar:mybiostar:034_roomTempHc2" } +Number:Temperature   Biostar_FlowTarget2             "Flow Target 2"                      { channel="guntamatic:biostar:mybiostar:035_flowTarget2" } +Number:Temperature   Biostar_FlowIs2                 "Flow is 2"                          { channel="guntamatic:biostar:mybiostar:036_flowIs2" } +String               Biostar_Mixer2                  "Mixer 2"                            { channel="guntamatic:biostar:mybiostar:037_mixer2" } +Switch               Biostar_HeatCirc2               "Heat Circ. 2"                       { channel="guntamatic:biostar:mybiostar:038_heatCirc2" } +Number:Temperature   Biostar_RoomTempHc3             "Room Temp:HC 3"                     { channel="guntamatic:biostar:mybiostar:039_roomTempHc3" } +Switch               Biostar_HeatCirc3               "Heat Circ. 3"                       { channel="guntamatic:biostar:mybiostar:040_heatCirc3" } +Number:Temperature   Biostar_RoomTempHc4             "Room Temp:HC 4"                     { channel="guntamatic:biostar:mybiostar:041_roomTempHc4" } +Number:Temperature   Biostar_FlowTarget4             "Flow Target 4"                      { channel="guntamatic:biostar:mybiostar:042_flowTarget4" } +Number:Temperature   Biostar_FlowIs4                 "Flow is 4"                          { channel="guntamatic:biostar:mybiostar:043_flowIs4" } +String               Biostar_Mixer4                  "Mixer 4"                            { channel="guntamatic:biostar:mybiostar:044_mixer4" } +Switch               Biostar_HeatCirc4               "Heat Circ. 4"                       { channel="guntamatic:biostar:mybiostar:045_heatCirc4" } +Number:Temperature   Biostar_RoomTempHc5             "Room Temp:HC 5"                     { channel="guntamatic:biostar:mybiostar:046_roomTempHc5" } +Number:Temperature   Biostar_FlowTarget5             "Flow Target 5"                      { channel="guntamatic:biostar:mybiostar:047_flowTarget5" } +Number:Temperature   Biostar_FlowIs5                 "Flow is 5"                          { channel="guntamatic:biostar:mybiostar:048_flowIs5" } +String               Biostar_Mixer5                  "Mixer 5"                            { channel="guntamatic:biostar:mybiostar:049_mixer5" } +Switch               Biostar_HeatCirc5               "Heat Circ. 5"                       { channel="guntamatic:biostar:mybiostar:050_heatCirc5" } +Number:Temperature   Biostar_RoomTempHc6             "Room Temp:HC 6"                     { channel="guntamatic:biostar:mybiostar:051_roomTempHc6" } +Switch               Biostar_HeatCirc6               "Heat Circ. 6"                       { channel="guntamatic:biostar:mybiostar:052_heatCirc6" } +Number:Temperature   Biostar_RoomTempHc7             "Room Temp:HC 7"                     { channel="guntamatic:biostar:mybiostar:053_roomTempHc7" } +Number:Temperature   Biostar_FlowTarget7             "Flow Target 7"                      { channel="guntamatic:biostar:mybiostar:054_flowTarget7" } +Number:Temperature   Biostar_FlowIs7                 "Flow is 7"                          { channel="guntamatic:biostar:mybiostar:055_flowIs7" } +String               Biostar_Mixer7                  "Mixer 7"                            { channel="guntamatic:biostar:mybiostar:056_mixer7" } +Switch               Biostar_HeatCirc7               "Heat Circ. 7"                       { channel="guntamatic:biostar:mybiostar:057_heatCirc7" } +Number:Temperature   Biostar_RoomTempHc8             "Room Temp:HC 8"                     { channel="guntamatic:biostar:mybiostar:058_roomTempHc8" } +Number:Temperature   Biostar_FlowTarget8             "Flow Target 8"                      { channel="guntamatic:biostar:mybiostar:059_flowTarget8" } +Number:Temperature   Biostar_FlowIs8                 "Flow is 8"                          { channel="guntamatic:biostar:mybiostar:060_flowIs8" } +String               Biostar_Mixer8                  "Mixer 8"                            { channel="guntamatic:biostar:mybiostar:061_mixer8" } +Switch               Biostar_HeatCirc8               "Heat Circ. 8"                       { channel="guntamatic:biostar:mybiostar:062_heatCirc8" } +String               Biostar_FuelLevel               "Fuel Level"                         { channel="guntamatic:biostar:mybiostar:065_fuelLevel" } +String               Biostar_Stb                     "STB"                                { channel="guntamatic:biostar:mybiostar:066_stb" } +String               Biostar_Tks                     "TKS"                                { channel="guntamatic:biostar:mybiostar:067_tks" } +Switch               Biostar_BoilerApproval          "Boiler approval"                    { channel="guntamatic:biostar:mybiostar:068_boilerApproval" } +String               Biostar_Programme               "Programme"                          { channel="guntamatic:biostar:mybiostar:069_programme" } +String               Biostar_ProgramHc0              "Program HC0"                        { channel="guntamatic:biostar:mybiostar:070_programHc0" } +String               Biostar_ProgramHc1              "Program HC1"                        { channel="guntamatic:biostar:mybiostar:071_programHc1" } +String               Biostar_ProgramHc2              "Program HC2"                        { channel="guntamatic:biostar:mybiostar:072_programHc2" } +String               Biostar_ProgramHc3              "Program HC3"                        { channel="guntamatic:biostar:mybiostar:073_programHc3" } +String               Biostar_ProgramHc4              "Program HC4"                        { channel="guntamatic:biostar:mybiostar:074_programHc4" } +String               Biostar_ProgramHc5              "Program HC5"                        { channel="guntamatic:biostar:mybiostar:075_programHc5" } +String               Biostar_ProgramHc6              "Program HC6"                        { channel="guntamatic:biostar:mybiostar:076_programHc6" } +String               Biostar_ProgramHc7              "Program HC7"                        { channel="guntamatic:biostar:mybiostar:077_programHc7" } +String               Biostar_ProgramHc8              "Program HC8"                        { channel="guntamatic:biostar:mybiostar:078_programHc8" } +String               Biostar_Interuption0            "Interuption 0"                      { channel="guntamatic:biostar:mybiostar:079_interuption0" } +String               Biostar_Interuption1            "Interuption 1"                      { channel="guntamatic:biostar:mybiostar:080_interuption1" } +Number               Biostar_Serial                  "Serial"                             { channel="guntamatic:biostar:mybiostar:081_serial" } +String               Biostar_Version                 "Version"                            { channel="guntamatic:biostar:mybiostar:082_version" } +Number:Time          Biostar_RunningTime             "Running Time"                       { channel="guntamatic:biostar:mybiostar:083_runningTime" } +Number:Time          Biostar_ServiceHrs              "Service Hrs"                        { channel="guntamatic:biostar:mybiostar:084_serviceHrs" } +Number:Time          Biostar_EmptyAshIn              "Empty ash in"                       { channel="guntamatic:biostar:mybiostar:085_emptyAshIn" } +Number:Temperature   Biostar_FlowIs0                 "Flow is 0"                          { channel="guntamatic:biostar:mybiostar:086_flowIs0" } +Number:Temperature   Biostar_FlowIs3                 "Flow is 3"                          { channel="guntamatic:biostar:mybiostar:087_flowIs3" } +Number:Temperature   Biostar_FlowIs6                 "Flow is 6"                          { channel="guntamatic:biostar:mybiostar:088_flowIs6" } +Number:Volume        Biostar_FuelCounter             "Fuel counter"                       { channel="guntamatic:biostar:mybiostar:089_fuelCounter" } +Number:Dimensionless Biostar_BufferLoad              "Buffer load."                       { channel="guntamatic:biostar:mybiostar:090_bufferLoad" } +Number:Temperature   Biostar_BufferTop0              "Buffer Top 0"                       { channel="guntamatic:biostar:mybiostar:091_bufferTop0" } +Number:Temperature   Biostar_BufferBtm0              "Buffer Btm 0"                       { channel="guntamatic:biostar:mybiostar:092_bufferBtm0" } +Number:Temperature   Biostar_BufferTop1              "Buffer Top 1"                       { channel="guntamatic:biostar:mybiostar:093_bufferTop1" } +Number:Temperature   Biostar_BufferBtm1              "Buffer Btm 1"                       { channel="guntamatic:biostar:mybiostar:094_bufferBtm1" } +Number:Temperature   Biostar_BufferTop2              "Buffer Top 2"                       { channel="guntamatic:biostar:mybiostar:095_bufferTop2" } +Number:Temperature   Biostar_BufferBtm2              "Buffer Btm 2"                       { channel="guntamatic:biostar:mybiostar:096_bufferBtm2" } +Switch               Biostar_BExtraWw0               "B extra-WW. 0"                      { channel="guntamatic:biostar:mybiostar:097_bExtraWw0" } +Switch               Biostar_BExtraWw1               "B extra-WW. 1"                      { channel="guntamatic:biostar:mybiostar:098_bExtraWw1" } +Switch               Biostar_BExtraWw2               "B extra-WW. 2"                      { channel="guntamatic:biostar:mybiostar:099_bExtraWw2" } +Switch               Biostar_AuxiliaryPump0          "Auxiliary pump 0"                   { channel="guntamatic:biostar:mybiostar:100_auxiliaryPump0" } +Switch               Biostar_AuxiliaryPump1          "Auxiliary pump 1"                   { channel="guntamatic:biostar:mybiostar:101_auxiliaryPump1" } +Switch               Biostar_AuxiliaryPump2          "Auxiliary pump 2"                   { channel="guntamatic:biostar:mybiostar:102_auxiliaryPump2" } +String               Biostar_BoilersConditionNo      "Boiler´s condition no."             { channel="guntamatic:biostar:mybiostar:104_boilersConditionNo" } +Number:Temperature   Biostar_BufferT5                "Buffer T5"                          { channel="guntamatic:biostar:mybiostar:108_bufferT5" } +Number:Temperature   Biostar_BufferT6                "Buffer T6"                          { channel="guntamatic:biostar:mybiostar:109_bufferT6" } +Number:Temperature   Biostar_BufferT7                "Buffer T7"                          { channel="guntamatic:biostar:mybiostar:110_bufferT7" } +Number:Temperature   Biostar_ExtraWw0                "Extra-WW. 0"                        { channel="guntamatic:biostar:mybiostar:111_extraWw0" } +Number:Temperature   Biostar_ExtraWw1                "Extra-WW. 1"                        { channel="guntamatic:biostar:mybiostar:112_extraWw1" } +Number:Temperature   Biostar_ExtraWw2                "Extra-WW. 2"                        { channel="guntamatic:biostar:mybiostar:113_extraWw2" } +Number:Dimensionless Biostar_Grate                   "Grate"                              { channel="guntamatic:biostar:mybiostar:114_grate" } ``` ### Rule @@ -360,7 +345,7 @@ end ## Your feedback is required -The Guntamatic Binding was developed and tested using Guntamatic Biostar 15kW Pellets Heating System, running Firmware 3.2d. +The Guntamatic Binding was developed and tested using Guntamatic Biostar 15kW Pellets Heating System, running Firmware 3.3d. Please provide feedback (👍 as well as 👎) when using the Binding for other Guntamatic Heating Systems. Forum topic for feedback: diff --git a/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandler.java b/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandler.java index 8ede496ea7ef7..5da5dd834bfb0 100644 --- a/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandler.java +++ b/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandler.java @@ -137,7 +137,6 @@ public void handleCommand(ChannelUID channelUID, Command command) { } else { map = MAP_COMMAND_PARAM_PROG_WOMANU; } - break; case CHANNEL_CONTROLHEATCIRCPROGRAM0: case CHANNEL_CONTROLHEATCIRCPROGRAM1: @@ -197,8 +196,9 @@ private void parseAndUpdate(String html) { String channel = channels.get(i); Unit unit = units.get(i); if ((channel != null) && (i < daqdata.length)) { + String channelId = String.format("%03d", i) + "_" + channel; String value = daqdata[i]; - Channel chn = thing.getChannel(channel); + Channel chn = thing.getChannel(channelId); if ((chn != null) && (value != null)) { value = value.trim(); String typeName = chn.getAcceptedItemType(); @@ -234,7 +234,7 @@ private void parseAndUpdate(String html) { } } if (newState != null) { - updateState(channel, newState); + updateState(channelId, newState); } else { logger.warn("Data for unknown typeName '{}' or unknown unit received", typeName); } @@ -291,61 +291,59 @@ private void parseAndInit(String html) { String unitStr = ((param.length == 1) || param[1].isBlank()) ? "" : param[1].trim(); Unit unit = guessUnit(unitStr); - boolean channelInitialized = channels.containsValue(channel); - if (!channelInitialized) { - String itemType; - String pattern; - String type = types.get(i); - if (type == null) { - type = ""; - } + String itemType; + String pattern; + String type = types.get(i); + if (type == null) { + type = ""; + } - if ("boolean".equals(type)) { - itemType = CoreItemFactory.SWITCH; - pattern = ""; - } else if ("integer".equals(type)) { - itemType = guessItemType(unit); - pattern = "%d"; - if (unit != null) { - pattern += " %unit%"; - } - } else if ("float".equals(type)) { + if ("boolean".equals(type)) { + itemType = CoreItemFactory.SWITCH; + pattern = ""; + } else if ("integer".equals(type)) { + itemType = guessItemType(unit); + pattern = "%d"; + if (unit != null) { + pattern += " %unit%"; + } + } else if ("float".equals(type)) { + itemType = guessItemType(unit); + pattern = "%.2f"; + if (unit != null) { + pattern += " %unit%"; + } + } else if ("string".equals(type)) { + itemType = CoreItemFactory.STRING; + pattern = "%s"; + } else { + if (unitStr.isBlank()) { + itemType = CoreItemFactory.STRING; + pattern = "%s"; + } else { itemType = guessItemType(unit); pattern = "%.2f"; if (unit != null) { pattern += " %unit%"; } - } else if ("string".equals(type)) { - itemType = CoreItemFactory.STRING; - pattern = "%s"; - } else { - if (unitStr.isBlank()) { - itemType = CoreItemFactory.STRING; - pattern = "%s"; - } else { - itemType = guessItemType(unit); - pattern = "%.2f"; - if (unit != null) { - pattern += " %unit%"; - } - } - } - - ChannelTypeUID channelTypeUID = new ChannelTypeUID(BINDING_ID, channel); - guntamaticChannelTypeProvider.addChannelType(channelTypeUID, channel, itemType, - "Guntamatic " + label, false, pattern); - Channel newChannel = ChannelBuilder.create(new ChannelUID(thing.getUID(), channel), itemType) - .withType(channelTypeUID).withKind(ChannelKind.STATE).withLabel(label).build(); - channelList.add(newChannel); - channels.put(i, channel); - if (unit != null) { - units.put(i, unit); } + } - logger.debug( - "Supported Channel: Idx: '{}', Name: '{}'/'{}', Type: '{}'/'{}', Unit: '{}', Pattern '{}' ", - String.format("%03d", i), label, channel, type, itemType, unitStr, pattern); + String channelId = String.format("%03d", i) + "_" + channel; + ChannelTypeUID channelTypeUID = new ChannelTypeUID(BINDING_ID, channelId); + guntamaticChannelTypeProvider.addChannelType(channelTypeUID, channel, itemType, "Guntamatic " + label, + false, pattern); + Channel newChannel = ChannelBuilder.create(new ChannelUID(thing.getUID(), channelId), itemType) + .withType(channelTypeUID).withKind(ChannelKind.STATE).withLabel(label).build(); + channelList.add(newChannel); + channels.put(i, channel); + if (unit != null) { + units.put(i, unit); } + + logger.debug( + "Supported Channel: Idx: '{}', Name: '{}'/'{}', Type: '{}'/'{}', Unit: '{}', Pattern '{}' ", + String.format("%03d", i), label, channelId, type, itemType, unitStr, pattern); } } ThingBuilder thingBuilder = editThing(); From 353face3d02c54600c7493b4f54d52b50803b8c1 Mon Sep 17 00:00:00 2001 From: Michael Weger Date: Mon, 16 Dec 2024 12:51:38 +0100 Subject: [PATCH 2/8] improved intial init by one cycle Signed-off-by: Michael Weger --- .../guntamatic/internal/GuntamaticHandler.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandler.java b/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandler.java index 5da5dd834bfb0..514ec017ad31d 100644 --- a/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandler.java +++ b/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandler.java @@ -405,6 +405,8 @@ private String toLowerCamelCase(String input) { } private @Nullable String sendGetRequest(String url, String... params) { + logger.trace("sendGetRequest '{}'", url); + String errorReason = ""; String req = "http://" + config.hostname + url; @@ -434,10 +436,10 @@ private String toLowerCamelCase(String input) { String response = new String(contentResponse.getContent(), Charset.forName(config.encoding)); if (url.equals(DAQEXTDESC_URL)) { parseAndJsonInit(response); - } else if (url.equals(DAQDATA_URL)) { - parseAndUpdate(response); } else if (url.equals(DAQDESC_URL)) { parseAndInit(response); + } else if (url.equals(DAQDATA_URL)) { + parseAndUpdate(response); } else { logger.debug(req); // PARSET_URL via return @@ -469,7 +471,10 @@ private void pollGuntamatic() { sendGetRequest(DAQEXTDESC_URL); } sendGetRequest(DAQDESC_URL); - } else { + } + + // above intialization usually changes channelsInitialized to TRUE + if (channelsInitialized) { sendGetRequest(DAQDATA_URL); } } @@ -481,6 +486,7 @@ public void initialize() { updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, "Invalid hostname configuration"); } else { updateStatus(ThingStatus.UNKNOWN); + logger.trace("scheduleWithFixedDelay(pollGuntamatic, 1, {}, TimeUnit.SECONDS)", config.refreshInterval); pollingFuture = scheduler.scheduleWithFixedDelay(this::pollGuntamatic, 1, config.refreshInterval, TimeUnit.SECONDS); } From eb73c3a3b1c4bfa035b0c9ae1f3215b0e4250063 Mon Sep 17 00:00:00 2001 From: Michael Weger Date: Tue, 17 Dec 2024 19:30:07 +0100 Subject: [PATCH 3/8] use AbstractStorageBasedTypeProvider Signed-off-by: Michael Weger --- .../GuntamaticChannelTypeProvider.java | 62 ------------------- .../GuntamaticDynamicTypeProvider.java | 45 ++++++++++++++ .../internal/GuntamaticHandler.java | 31 ++++++++-- .../internal/GuntamaticHandlerFactory.java | 8 +-- 4 files changed, 74 insertions(+), 72 deletions(-) delete mode 100644 bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticChannelTypeProvider.java create mode 100644 bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticDynamicTypeProvider.java diff --git a/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticChannelTypeProvider.java b/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticChannelTypeProvider.java deleted file mode 100644 index 889bd2005ee72..0000000000000 --- a/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticChannelTypeProvider.java +++ /dev/null @@ -1,62 +0,0 @@ -/** - * Copyright (c) 2010-2024 Contributors to the openHAB project - * - * See the NOTICE file(s) distributed with this work for additional - * information. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * http://www.eclipse.org/legal/epl-2.0 - * - * SPDX-License-Identifier: EPL-2.0 - */ -package org.openhab.binding.guntamatic.internal; - -import java.util.Collection; -import java.util.Locale; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.jdt.annotation.Nullable; -import org.openhab.core.thing.type.ChannelType; -import org.openhab.core.thing.type.ChannelTypeBuilder; -import org.openhab.core.thing.type.ChannelTypeProvider; -import org.openhab.core.thing.type.ChannelTypeUID; -import org.openhab.core.thing.type.StateChannelTypeBuilder; -import org.openhab.core.types.StateDescriptionFragmentBuilder; -import org.osgi.service.component.annotations.Component; - -/** - * Provide channelTypes for Guntamatic Heating Systems - * - * @author Weger Michael - Initial contribution - */ -@Component(service = { ChannelTypeProvider.class, GuntamaticChannelTypeProvider.class }) -@NonNullByDefault -public class GuntamaticChannelTypeProvider implements ChannelTypeProvider { - private final Map channelTypes = new ConcurrentHashMap<>(); - - @Override - public Collection getChannelTypes(@Nullable Locale locale) { - return channelTypes.values(); - } - - @Override - public @Nullable ChannelType getChannelType(ChannelTypeUID channelTypeUID, @Nullable Locale locale) { - return channelTypes.get(channelTypeUID.getAsString()); // returns null if not found - } - - public void addChannelType(ChannelTypeUID channelTypeUID, String label, String itemType, String description, - boolean advanced, String pattern) { - StateDescriptionFragmentBuilder stateDescriptionFragmentBuilder = StateDescriptionFragmentBuilder.create() - .withReadOnly(true); - if (!pattern.isEmpty()) { - stateDescriptionFragmentBuilder.withPattern(pattern); - } - StateChannelTypeBuilder stateChannelTypeBuilder = ChannelTypeBuilder.state(channelTypeUID, label, itemType) - .withDescription(description).isAdvanced(advanced) - .withStateDescriptionFragment(stateDescriptionFragmentBuilder.build()); - channelTypes.put(channelTypeUID.getAsString(), stateChannelTypeBuilder.build()); - } -} diff --git a/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticDynamicTypeProvider.java b/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticDynamicTypeProvider.java new file mode 100644 index 0000000000000..4c8d3a7284727 --- /dev/null +++ b/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticDynamicTypeProvider.java @@ -0,0 +1,45 @@ +/** + * Copyright (c) 2010-2024 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.guntamatic.internal; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.openhab.core.storage.StorageService; +import org.openhab.core.thing.ThingUID; +import org.openhab.core.thing.binding.AbstractStorageBasedTypeProvider; +import org.openhab.core.thing.type.ChannelType; +import org.openhab.core.thing.type.ChannelTypeProvider; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Reference; + +/** + * The {@link GuntamaticDynamicTypeProvider} is an instance of a {@link AbstractStorageBasedTypeProvider} for the + * Guntamatic Binding + * + * @author Weger Michael - Initial contribution + */ +@Component(service = { GuntamaticDynamicTypeProvider.class, ChannelTypeProvider.class }) +@NonNullByDefault +public class GuntamaticDynamicTypeProvider extends AbstractStorageBasedTypeProvider { + + @Activate + public GuntamaticDynamicTypeProvider(@Reference StorageService storageService) { + super(storageService); + } + + public void removeChannelTypesForThing(ThingUID uid) { + String thingUid = uid.getAsString() + ":"; + getChannelTypes(null).stream().map(ChannelType::getUID).filter(c -> c.getAsString().startsWith(thingUid)) + .forEach(this::removeChannelType); + } +} diff --git a/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandler.java b/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandler.java index 514ec017ad31d..54d7ee472ad07 100644 --- a/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandler.java +++ b/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandler.java @@ -52,10 +52,13 @@ import org.openhab.core.thing.binding.builder.ChannelBuilder; import org.openhab.core.thing.binding.builder.ThingBuilder; import org.openhab.core.thing.type.ChannelKind; +import org.openhab.core.thing.type.ChannelType; +import org.openhab.core.thing.type.ChannelTypeBuilder; import org.openhab.core.thing.type.ChannelTypeUID; import org.openhab.core.types.Command; import org.openhab.core.types.RefreshType; import org.openhab.core.types.State; +import org.openhab.core.types.StateDescriptionFragmentBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -101,16 +104,16 @@ public class GuntamaticHandler extends BaseThingHandler { private List staticChannelIDs; private GuntamaticConfiguration config = new GuntamaticConfiguration(); private Boolean channelsInitialized = false; - private GuntamaticChannelTypeProvider guntamaticChannelTypeProvider; + private GuntamaticDynamicTypeProvider typeProvider; private Map channels = new HashMap<>(); private Map types = new HashMap<>(); private Map> units = new HashMap<>(); - public GuntamaticHandler(Thing thing, HttpClient httpClient, - GuntamaticChannelTypeProvider guntamaticChannelTypeProvider, List staticChannelIDs) { + public GuntamaticHandler(Thing thing, HttpClient httpClient, GuntamaticDynamicTypeProvider typeProvider, + List staticChannelIDs) { super(thing); this.httpClient = httpClient; - this.guntamaticChannelTypeProvider = guntamaticChannelTypeProvider; + this.typeProvider = typeProvider; this.staticChannelIDs = staticChannelIDs; } @@ -331,8 +334,18 @@ private void parseAndInit(String html) { String channelId = String.format("%03d", i) + "_" + channel; ChannelTypeUID channelTypeUID = new ChannelTypeUID(BINDING_ID, channelId); - guntamaticChannelTypeProvider.addChannelType(channelTypeUID, channel, itemType, "Guntamatic " + label, - false, pattern); + StateDescriptionFragmentBuilder stateDescriptionFragmentBuilder = StateDescriptionFragmentBuilder + .create().withReadOnly(true); + if (!pattern.isEmpty()) { + stateDescriptionFragmentBuilder.withPattern(pattern); + } + + ChannelType channelType = ChannelTypeBuilder.state(channelTypeUID, label, itemType) + .withDescription("Guntamatic " + label) + .withStateDescriptionFragment(stateDescriptionFragmentBuilder.build()).build(); + + typeProvider.putChannelType(channelType); + Channel newChannel = ChannelBuilder.create(new ChannelUID(thing.getUID(), channelId), itemType) .withType(channelTypeUID).withKind(ChannelKind.STATE).withLabel(label).build(); channelList.add(newChannel); @@ -501,4 +514,10 @@ public void dispose() { } channelsInitialized = false; } + + @Override + public void handleRemoval() { + typeProvider.removeChannelTypesForThing(getThing().getUID()); + super.handleRemoval(); + } } diff --git a/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandlerFactory.java b/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandlerFactory.java index 95d657361e256..c822900a69672 100644 --- a/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandlerFactory.java +++ b/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandlerFactory.java @@ -45,13 +45,13 @@ public class GuntamaticHandlerFactory extends BaseThingHandlerFactory { THING_TYPE_GENERIC); private final HttpClient httpClient; - private GuntamaticChannelTypeProvider guntamaticChannelTypeProvider; + private GuntamaticDynamicTypeProvider dynamicTypeProvider; @Activate public GuntamaticHandlerFactory(@Reference HttpClientFactory httpClientFactory, - @Reference GuntamaticChannelTypeProvider guntamaticChannelTypeProvider) { + @Reference GuntamaticDynamicTypeProvider dynamicTypeProvider) { this.httpClient = httpClientFactory.getCommonHttpClient(); - this.guntamaticChannelTypeProvider = guntamaticChannelTypeProvider; + this.dynamicTypeProvider = dynamicTypeProvider; } @Override @@ -73,7 +73,7 @@ public boolean supportsThingType(ThingTypeUID thingTypeUID) { } if (supportsThingType(thingTypeUID)) { - return new GuntamaticHandler(thing, httpClient, guntamaticChannelTypeProvider, staticChannelIDs); + return new GuntamaticHandler(thing, httpClient, dynamicTypeProvider, staticChannelIDs); } return null; From ee908a7ef3ad1eb40d8c0ff6d500808dbdb740b0 Mon Sep 17 00:00:00 2001 From: Michael Weger Date: Wed, 18 Dec 2024 12:18:06 +0100 Subject: [PATCH 4/8] implemented channel groups Signed-off-by: Michael Weger --- .../org.openhab.binding.guntamatic/README.md | 265 ++++---- .../internal/GuntamaticBindingConstants.java | 38 +- .../internal/GuntamaticHandler.java | 10 +- .../resources/OH-INF/thing/thing-types.xml | 498 ++++----------- .../main/resources/OH-INF/update/update.xml | 589 ++++++++++++++++++ 5 files changed, 872 insertions(+), 528 deletions(-) create mode 100644 bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/update/update.xml diff --git a/bundles/org.openhab.binding.guntamatic/README.md b/bundles/org.openhab.binding.guntamatic/README.md index dfd765455b5f6..9c866acb5169c 100644 --- a/bundles/org.openhab.binding.guntamatic/README.md +++ b/bundles/org.openhab.binding.guntamatic/README.md @@ -47,27 +47,28 @@ Guntamatic Heating Systems supported as Thing Types: The Guntamatic Heating System can be controlled using the following channels: -| Channel | Description | Type | Unit | Security Access Level | ReadOnly | Advanced | -| ------------------------- | ------------------------------------------------------------------------------- | -------- | :--: | :-------------------: | :------: | :------: | -| `controlBoilerApproval` | Set Boiler Approval (`AUTO`, `OFF`, `ON`) | `String` | | 🔐 W1 | R/W | true | -| `controlProgram` | Set Program (`OFF`, `NORMAL`, `WARMWATER`, `MANUAL`[1](#f1)) | `String` | | 🔐 W1 | R/W | false | -| `controlHeatCircProgram0` | Set Heat Circle 0 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `controlHeatCircProgram1` | Set Heat Circle 1 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `controlHeatCircProgram2` | Set Heat Circle 2 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `controlHeatCircProgram3` | Set Heat Circle 3 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `controlHeatCircProgram4` | Set Heat Circle 4 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `controlHeatCircProgram5` | Set Heat Circle 5 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `controlHeatCircProgram6` | Set Heat Circle 6 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `controlHeatCircProgram7` | Set Heat Circle 7 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `controlHeatCircProgram8` | Set Heat Circle 8 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `controlWwHeat0` | Trigger Warm Water Circle 0 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | -| `controlWwHeat1` | Trigger Warm Water Circle 1 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | -| `controlWwHeat2` | Trigger Warm Water Circle 2 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | -| `controlExtraWwHeat0` | Trigger Extra Warm Water Circle 0 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | -| `controlExtraWwHeat1` | Trigger Extra Warm Water Circle 1 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | -| `controlExtraWwHeat2` | Trigger Extra Warm Water Circle 2 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | - -- 1) ... `MANUAL` is supported by Biostar, Powerchip, Powercorn, Biocom, Pro as well as Therm only [↩](#a1) +| Channel | Description | Type | Unit | Security Access Level | ReadOnly | Advanced | +| ------------------ | ------------------------------------------------------------------------------- | -------- | :--: | :-------------------: | :------: | :------: | +| `boilerApproval` | Set Boiler Approval (`AUTO`, `OFF`, `ON`)[1](#f1)) | `String` | | 🔐 W1 | R/W | true | +| `program` | Set Program (`OFF`, `NORMAL`, `WARMWATER`, `MANUAL`[2](#f2)) | `String` | | 🔐 W1 | R/W | false | +| `heatCircProgram0` | Set Heat Circle 0 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `heatCircProgram1` | Set Heat Circle 1 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `heatCircProgram2` | Set Heat Circle 2 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `heatCircProgram3` | Set Heat Circle 3 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `heatCircProgram4` | Set Heat Circle 4 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `heatCircProgram5` | Set Heat Circle 5 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `heatCircProgram6` | Set Heat Circle 6 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `heatCircProgram7` | Set Heat Circle 7 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `heatCircProgram8` | Set Heat Circle 8 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `wwHeat0` | Trigger Warm Water Circle 0 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | +| `wwHeat1` | Trigger Warm Water Circle 1 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | +| `wwHeat2` | Trigger Warm Water Circle 2 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | +| `extraWwHeat0` | Trigger Extra Warm Water Circle 0 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | +| `extraWwHeat1` | Trigger Extra Warm Water Circle 1 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | +| `extraWwHeat2` | Trigger Extra Warm Water Circle 2 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | + +- 1) ... Channel is supported by Biostar, Powerchip, Powercorn, Biocom, Pro as well as Therm only [↩](#a1) +- 2) ... `MANUAL` is supported by Biostar, Powerchip, Powercorn, Biocom, Pro as well as Therm only [↩](#a2) #### Response of Control Channels @@ -76,7 +77,7 @@ The Guntamatic Heating System can be controlled using the following channels: The reaction of the Guntamatic Heating System can be monitored via the corresponding data channel. E.g. `programHc1` if you triggered `controlHeatCircProgram1`. The data channel gets updated with the next cyclic update (according to the `refreshInterval` configuration). -### Monitoring Channels +### Status Channels The Binding dynamically generates Channels, derived from the data provided from the actual Guntamatic Heating System. @@ -211,115 +212,117 @@ Thing guntamatic:biostar:mybiostar "Guntamatic Biostar" [ hostname="192.1 ### Item File ```java -String               Biostar_Running                 "Running"                            { channel="guntamatic:biostar:mybiostar:000_running" } -Number:Temperature   Biostar_OutsideTemp             "Outside Temp."                      { channel="guntamatic:biostar:mybiostar:001_outsideTemp" } -Number:Temperature   Biostar_BlrTargetTemp           "Blr.Target Temp"                    { channel="guntamatic:biostar:mybiostar:002_blrTargetTemp" } -Number:Temperature   Biostar_BoilerTemperature       "Boiler Temperature"                 { channel="guntamatic:biostar:mybiostar:003_boilerTemperature" } -Number:Dimensionless Biostar_FlueGasUtilisation      "Flue gas utilisation"               { channel="guntamatic:biostar:mybiostar:004_flueGasUtilisation" } -Number:Dimensionless Biostar_Output                  "Output"                             { channel="guntamatic:biostar:mybiostar:005_output" } -Number:Temperature   Biostar_ReturnTemp              "Return temp"                        { channel="guntamatic:biostar:mybiostar:006_returnTemp" } -Number:Dimensionless Biostar_Co2Target               "CO2 Target"                         { channel="guntamatic:biostar:mybiostar:007_co2Target" } -Number:Dimensionless Biostar_Co2Content              "CO2 Content"                        { channel="guntamatic:biostar:mybiostar:008_co2Content" } -Number:Temperature   Biostar_ReturnTempTarget        "Return temp target"                 { channel="guntamatic:biostar:mybiostar:009_returnTempTarget" } -Number               Biostar_StatusCode              "Status code"                        { channel="guntamatic:biostar:mybiostar:010_statusCode" } -Number:Dimensionless Biostar_Efficiency              "Efficiency"                         { channel="guntamatic:biostar:mybiostar:011_efficiency" } -Number:Dimensionless Biostar_Output2                 "Output"                             { channel="guntamatic:biostar:mybiostar:012_output" } -Number:Dimensionless Biostar_ExtractorSystem         "Extractor System"                   { channel="guntamatic:biostar:mybiostar:013_extractorSystem" } -String               Biostar_FeedTurbine             "Feed Turbine"                       { channel="guntamatic:biostar:mybiostar:014_feedTurbine" } -Number:Dimensionless Biostar_DischargeMotor          "Discharge motor"                    { channel="guntamatic:biostar:mybiostar:015_dischargeMotor" } -Number:Dimensionless Biostar_G1Target                "G1 Target"                          { channel="guntamatic:biostar:mybiostar:016_g1Target" } -Number:Temperature   Biostar_BufferTop               "Buffer Top"                         { channel="guntamatic:biostar:mybiostar:017_bufferTop" } -Number:Temperature   Biostar_BufferMid               "Buffer Mid"                         { channel="guntamatic:biostar:mybiostar:018_bufferMid" } -Number:Temperature   Biostar_BufferBtm               "Buffer Btm"                         { channel="guntamatic:biostar:mybiostar:019_bufferBtm" } -Switch               Biostar_PumpHp0                 "Pump HP0"                           { channel="guntamatic:biostar:mybiostar:020_pumpHp0" } -Number:Temperature   Biostar_Dhw0                    "DHW 0"                              { channel="guntamatic:biostar:mybiostar:021_dhw0" } -Switch               Biostar_BDhw0                   "B DHW 0"                            { channel="guntamatic:biostar:mybiostar:022_bDhw0" } -Number:Temperature   Biostar_Dhw1                    "DHW 1"                              { channel="guntamatic:biostar:mybiostar:023_dhw1" } -Switch               Biostar_BDhw1                   "B DHW 1"                            { channel="guntamatic:biostar:mybiostar:024_bDhw1" } -Number:Temperature   Biostar_Dhw2                    "DHW 2"                              { channel="guntamatic:biostar:mybiostar:025_dhw2" } -Switch               Biostar_BDhw2                   "B DHW 2"                            { channel="guntamatic:biostar:mybiostar:026_bDhw2" } -Number:Temperature   Biostar_RoomTempHc0             "Room Temp:HC 0"                     { channel="guntamatic:biostar:mybiostar:027_roomTempHc0" } -Switch               Biostar_HeatCirc0               "Heat Circ. 0"                       { channel="guntamatic:biostar:mybiostar:028_heatCirc0" } -Number:Temperature   Biostar_RoomTempHc1             "Room Temp:HC 1"                     { channel="guntamatic:biostar:mybiostar:029_roomTempHc1" } -Number:Temperature   Biostar_FlowTarget1             "Flow Target 1"                      { channel="guntamatic:biostar:mybiostar:030_flowTarget1" } -Number:Temperature   Biostar_FlowIs1                 "Flow is 1"                          { channel="guntamatic:biostar:mybiostar:031_flowIs1" } -String               Biostar_Mixer1                  "Mixer 1"                            { channel="guntamatic:biostar:mybiostar:032_mixer1" } -Switch               Biostar_HeatCirc1               "Heat Circ. 1"                       { channel="guntamatic:biostar:mybiostar:033_heatCirc1" } -Number:Temperature   Biostar_RoomTempHc2             "Room Temp:HC 2"                     { channel="guntamatic:biostar:mybiostar:034_roomTempHc2" } -Number:Temperature   Biostar_FlowTarget2             "Flow Target 2"                      { channel="guntamatic:biostar:mybiostar:035_flowTarget2" } -Number:Temperature   Biostar_FlowIs2                 "Flow is 2"                          { channel="guntamatic:biostar:mybiostar:036_flowIs2" } -String               Biostar_Mixer2                  "Mixer 2"                            { channel="guntamatic:biostar:mybiostar:037_mixer2" } -Switch               Biostar_HeatCirc2               "Heat Circ. 2"                       { channel="guntamatic:biostar:mybiostar:038_heatCirc2" } -Number:Temperature   Biostar_RoomTempHc3             "Room Temp:HC 3"                     { channel="guntamatic:biostar:mybiostar:039_roomTempHc3" } -Switch               Biostar_HeatCirc3               "Heat Circ. 3"                       { channel="guntamatic:biostar:mybiostar:040_heatCirc3" } -Number:Temperature   Biostar_RoomTempHc4             "Room Temp:HC 4"                     { channel="guntamatic:biostar:mybiostar:041_roomTempHc4" } -Number:Temperature   Biostar_FlowTarget4             "Flow Target 4"                      { channel="guntamatic:biostar:mybiostar:042_flowTarget4" } -Number:Temperature   Biostar_FlowIs4                 "Flow is 4"                          { channel="guntamatic:biostar:mybiostar:043_flowIs4" } -String               Biostar_Mixer4                  "Mixer 4"                            { channel="guntamatic:biostar:mybiostar:044_mixer4" } -Switch               Biostar_HeatCirc4               "Heat Circ. 4"                       { channel="guntamatic:biostar:mybiostar:045_heatCirc4" } -Number:Temperature   Biostar_RoomTempHc5             "Room Temp:HC 5"                     { channel="guntamatic:biostar:mybiostar:046_roomTempHc5" } -Number:Temperature   Biostar_FlowTarget5             "Flow Target 5"                      { channel="guntamatic:biostar:mybiostar:047_flowTarget5" } -Number:Temperature   Biostar_FlowIs5                 "Flow is 5"                          { channel="guntamatic:biostar:mybiostar:048_flowIs5" } -String               Biostar_Mixer5                  "Mixer 5"                            { channel="guntamatic:biostar:mybiostar:049_mixer5" } -Switch               Biostar_HeatCirc5               "Heat Circ. 5"                       { channel="guntamatic:biostar:mybiostar:050_heatCirc5" } -Number:Temperature   Biostar_RoomTempHc6             "Room Temp:HC 6"                     { channel="guntamatic:biostar:mybiostar:051_roomTempHc6" } -Switch               Biostar_HeatCirc6               "Heat Circ. 6"                       { channel="guntamatic:biostar:mybiostar:052_heatCirc6" } -Number:Temperature   Biostar_RoomTempHc7             "Room Temp:HC 7"                     { channel="guntamatic:biostar:mybiostar:053_roomTempHc7" } -Number:Temperature   Biostar_FlowTarget7             "Flow Target 7"                      { channel="guntamatic:biostar:mybiostar:054_flowTarget7" } -Number:Temperature   Biostar_FlowIs7                 "Flow is 7"                          { channel="guntamatic:biostar:mybiostar:055_flowIs7" } -String               Biostar_Mixer7                  "Mixer 7"                            { channel="guntamatic:biostar:mybiostar:056_mixer7" } -Switch               Biostar_HeatCirc7               "Heat Circ. 7"                       { channel="guntamatic:biostar:mybiostar:057_heatCirc7" } -Number:Temperature   Biostar_RoomTempHc8             "Room Temp:HC 8"                     { channel="guntamatic:biostar:mybiostar:058_roomTempHc8" } -Number:Temperature   Biostar_FlowTarget8             "Flow Target 8"                      { channel="guntamatic:biostar:mybiostar:059_flowTarget8" } -Number:Temperature   Biostar_FlowIs8                 "Flow is 8"                          { channel="guntamatic:biostar:mybiostar:060_flowIs8" } -String               Biostar_Mixer8                  "Mixer 8"                            { channel="guntamatic:biostar:mybiostar:061_mixer8" } -Switch               Biostar_HeatCirc8               "Heat Circ. 8"                       { channel="guntamatic:biostar:mybiostar:062_heatCirc8" } -String               Biostar_FuelLevel               "Fuel Level"                         { channel="guntamatic:biostar:mybiostar:065_fuelLevel" } -String               Biostar_Stb                     "STB"                                { channel="guntamatic:biostar:mybiostar:066_stb" } -String               Biostar_Tks                     "TKS"                                { channel="guntamatic:biostar:mybiostar:067_tks" } -Switch               Biostar_BoilerApproval          "Boiler approval"                    { channel="guntamatic:biostar:mybiostar:068_boilerApproval" } -String               Biostar_Programme               "Programme"                          { channel="guntamatic:biostar:mybiostar:069_programme" } -String               Biostar_ProgramHc0              "Program HC0"                        { channel="guntamatic:biostar:mybiostar:070_programHc0" } -String               Biostar_ProgramHc1              "Program HC1"                        { channel="guntamatic:biostar:mybiostar:071_programHc1" } -String               Biostar_ProgramHc2              "Program HC2"                        { channel="guntamatic:biostar:mybiostar:072_programHc2" } -String               Biostar_ProgramHc3              "Program HC3"                        { channel="guntamatic:biostar:mybiostar:073_programHc3" } -String               Biostar_ProgramHc4              "Program HC4"                        { channel="guntamatic:biostar:mybiostar:074_programHc4" } -String               Biostar_ProgramHc5              "Program HC5"                        { channel="guntamatic:biostar:mybiostar:075_programHc5" } -String               Biostar_ProgramHc6              "Program HC6"                        { channel="guntamatic:biostar:mybiostar:076_programHc6" } -String               Biostar_ProgramHc7              "Program HC7"                        { channel="guntamatic:biostar:mybiostar:077_programHc7" } -String               Biostar_ProgramHc8              "Program HC8"                        { channel="guntamatic:biostar:mybiostar:078_programHc8" } -String               Biostar_Interuption0            "Interuption 0"                      { channel="guntamatic:biostar:mybiostar:079_interuption0" } -String               Biostar_Interuption1            "Interuption 1"                      { channel="guntamatic:biostar:mybiostar:080_interuption1" } -Number               Biostar_Serial                  "Serial"                             { channel="guntamatic:biostar:mybiostar:081_serial" } -String               Biostar_Version                 "Version"                            { channel="guntamatic:biostar:mybiostar:082_version" } -Number:Time          Biostar_RunningTime             "Running Time"                       { channel="guntamatic:biostar:mybiostar:083_runningTime" } -Number:Time          Biostar_ServiceHrs              "Service Hrs"                        { channel="guntamatic:biostar:mybiostar:084_serviceHrs" } -Number:Time          Biostar_EmptyAshIn              "Empty ash in"                       { channel="guntamatic:biostar:mybiostar:085_emptyAshIn" } -Number:Temperature   Biostar_FlowIs0                 "Flow is 0"                          { channel="guntamatic:biostar:mybiostar:086_flowIs0" } -Number:Temperature   Biostar_FlowIs3                 "Flow is 3"                          { channel="guntamatic:biostar:mybiostar:087_flowIs3" } -Number:Temperature   Biostar_FlowIs6                 "Flow is 6"                          { channel="guntamatic:biostar:mybiostar:088_flowIs6" } -Number:Volume        Biostar_FuelCounter             "Fuel counter"                       { channel="guntamatic:biostar:mybiostar:089_fuelCounter" } -Number:Dimensionless Biostar_BufferLoad              "Buffer load."                       { channel="guntamatic:biostar:mybiostar:090_bufferLoad" } -Number:Temperature   Biostar_BufferTop0              "Buffer Top 0"                       { channel="guntamatic:biostar:mybiostar:091_bufferTop0" } -Number:Temperature   Biostar_BufferBtm0              "Buffer Btm 0"                       { channel="guntamatic:biostar:mybiostar:092_bufferBtm0" } -Number:Temperature   Biostar_BufferTop1              "Buffer Top 1"                       { channel="guntamatic:biostar:mybiostar:093_bufferTop1" } -Number:Temperature   Biostar_BufferBtm1              "Buffer Btm 1"                       { channel="guntamatic:biostar:mybiostar:094_bufferBtm1" } -Number:Temperature   Biostar_BufferTop2              "Buffer Top 2"                       { channel="guntamatic:biostar:mybiostar:095_bufferTop2" } -Number:Temperature   Biostar_BufferBtm2              "Buffer Btm 2"                       { channel="guntamatic:biostar:mybiostar:096_bufferBtm2" } -Switch               Biostar_BExtraWw0               "B extra-WW. 0"                      { channel="guntamatic:biostar:mybiostar:097_bExtraWw0" } -Switch               Biostar_BExtraWw1               "B extra-WW. 1"                      { channel="guntamatic:biostar:mybiostar:098_bExtraWw1" } -Switch               Biostar_BExtraWw2               "B extra-WW. 2"                      { channel="guntamatic:biostar:mybiostar:099_bExtraWw2" } -Switch               Biostar_AuxiliaryPump0          "Auxiliary pump 0"                   { channel="guntamatic:biostar:mybiostar:100_auxiliaryPump0" } -Switch               Biostar_AuxiliaryPump1          "Auxiliary pump 1"                   { channel="guntamatic:biostar:mybiostar:101_auxiliaryPump1" } -Switch               Biostar_AuxiliaryPump2          "Auxiliary pump 2"                   { channel="guntamatic:biostar:mybiostar:102_auxiliaryPump2" } -String               Biostar_BoilersConditionNo      "Boiler´s condition no."             { channel="guntamatic:biostar:mybiostar:104_boilersConditionNo" } -Number:Temperature   Biostar_BufferT5                "Buffer T5"                          { channel="guntamatic:biostar:mybiostar:108_bufferT5" } -Number:Temperature   Biostar_BufferT6                "Buffer T6"                          { channel="guntamatic:biostar:mybiostar:109_bufferT6" } -Number:Temperature   Biostar_BufferT7                "Buffer T7"                          { channel="guntamatic:biostar:mybiostar:110_bufferT7" } -Number:Temperature   Biostar_ExtraWw0                "Extra-WW. 0"                        { channel="guntamatic:biostar:mybiostar:111_extraWw0" } -Number:Temperature   Biostar_ExtraWw1                "Extra-WW. 1"                        { channel="guntamatic:biostar:mybiostar:112_extraWw1" } -Number:Temperature   Biostar_ExtraWw2                "Extra-WW. 2"                        { channel="guntamatic:biostar:mybiostar:113_extraWw2" } -Number:Dimensionless Biostar_Grate                   "Grate"                              { channel="guntamatic:biostar:mybiostar:114_grate" } +String Biostar_ControlProgram "Control Program" { channel="guntamatic:biostar:mybiostar:control#program" } + +String               Biostar_Running                 "Running"                            { channel="guntamatic:biostar:mybiostar:status#000_running" } +Number:Temperature   Biostar_OutsideTemp             "Outside Temp."                      { channel="guntamatic:biostar:mybiostar:status#001_outsideTemp" } +Number:Temperature   Biostar_BlrTargetTemp           "Blr.Target Temp"                    { channel="guntamatic:biostar:mybiostar:status#002_blrTargetTemp" } +Number:Temperature   Biostar_BoilerTemperature       "Boiler Temperature"                 { channel="guntamatic:biostar:mybiostar:status#003_boilerTemperature" } +Number:Dimensionless Biostar_FlueGasUtilisation      "Flue gas utilisation"               { channel="guntamatic:biostar:mybiostar:status#004_flueGasUtilisation" } +Number:Dimensionless Biostar_Output                  "Output"                             { channel="guntamatic:biostar:mybiostar:status#005_output" } +Number:Temperature   Biostar_ReturnTemp              "Return temp"                        { channel="guntamatic:biostar:mybiostar:status#006_returnTemp" } +Number:Dimensionless Biostar_Co2Target               "CO2 Target"                         { channel="guntamatic:biostar:mybiostar:status#007_co2Target" } +Number:Dimensionless Biostar_Co2Content              "CO2 Content"                        { channel="guntamatic:biostar:mybiostar:status#008_co2Content" } +Number:Temperature   Biostar_ReturnTempTarget        "Return temp target"                 { channel="guntamatic:biostar:mybiostar:status#009_returnTempTarget" } +Number               Biostar_StatusCode              "Status code"                        { channel="guntamatic:biostar:mybiostar:status#010_statusCode" } +Number:Dimensionless Biostar_Efficiency              "Efficiency"                         { channel="guntamatic:biostar:mybiostar:status#011_efficiency" } +Number:Dimensionless Biostar_Output2                 "Output"                             { channel="guntamatic:biostar:mybiostar:status#012_output" } +Number:Dimensionless Biostar_ExtractorSystem         "Extractor System"                   { channel="guntamatic:biostar:mybiostar:status#013_extractorSystem" } +String               Biostar_FeedTurbine             "Feed Turbine"                       { channel="guntamatic:biostar:mybiostar:status#014_feedTurbine" } +Number:Dimensionless Biostar_DischargeMotor          "Discharge motor"                    { channel="guntamatic:biostar:mybiostar:status#015_dischargeMotor" } +Number:Dimensionless Biostar_G1Target                "G1 Target"                          { channel="guntamatic:biostar:mybiostar:status#016_g1Target" } +Number:Temperature   Biostar_BufferTop               "Buffer Top"                         { channel="guntamatic:biostar:mybiostar:status#017_bufferTop" } +Number:Temperature   Biostar_BufferMid               "Buffer Mid"                         { channel="guntamatic:biostar:mybiostar:status#018_bufferMid" } +Number:Temperature   Biostar_BufferBtm               "Buffer Btm"                         { channel="guntamatic:biostar:mybiostar:status#019_bufferBtm" } +Switch               Biostar_PumpHp0                 "Pump HP0"                           { channel="guntamatic:biostar:mybiostar:status#020_pumpHp0" } +Number:Temperature   Biostar_Dhw0                    "DHW 0"                              { channel="guntamatic:biostar:mybiostar:status#021_dhw0" } +Switch               Biostar_BDhw0                   "B DHW 0"                            { channel="guntamatic:biostar:mybiostar:status#022_bDhw0" } +Number:Temperature   Biostar_Dhw1                    "DHW 1"                              { channel="guntamatic:biostar:mybiostar:status#023_dhw1" } +Switch               Biostar_BDhw1                   "B DHW 1"                            { channel="guntamatic:biostar:mybiostar:status#024_bDhw1" } +Number:Temperature   Biostar_Dhw2                    "DHW 2"                              { channel="guntamatic:biostar:mybiostar:status#025_dhw2" } +Switch               Biostar_BDhw2                   "B DHW 2"                            { channel="guntamatic:biostar:mybiostar:status#026_bDhw2" } +Number:Temperature   Biostar_RoomTempHc0             "Room Temp:HC 0"                     { channel="guntamatic:biostar:mybiostar:status#027_roomTempHc0" } +Switch               Biostar_HeatCirc0               "Heat Circ. 0"                       { channel="guntamatic:biostar:mybiostar:status#028_heatCirc0" } +Number:Temperature   Biostar_RoomTempHc1             "Room Temp:HC 1"                     { channel="guntamatic:biostar:mybiostar:status#029_roomTempHc1" } +Number:Temperature   Biostar_FlowTarget1             "Flow Target 1"                      { channel="guntamatic:biostar:mybiostar:status#030_flowTarget1" } +Number:Temperature   Biostar_FlowIs1                 "Flow is 1"                          { channel="guntamatic:biostar:mybiostar:status#031_flowIs1" } +String               Biostar_Mixer1                  "Mixer 1"                            { channel="guntamatic:biostar:mybiostar:status#032_mixer1" } +Switch               Biostar_HeatCirc1               "Heat Circ. 1"                       { channel="guntamatic:biostar:mybiostar:status#033_heatCirc1" } +Number:Temperature   Biostar_RoomTempHc2             "Room Temp:HC 2"                     { channel="guntamatic:biostar:mybiostar:status#034_roomTempHc2" } +Number:Temperature   Biostar_FlowTarget2             "Flow Target 2"                      { channel="guntamatic:biostar:mybiostar:status#035_flowTarget2" } +Number:Temperature   Biostar_FlowIs2                 "Flow is 2"                          { channel="guntamatic:biostar:mybiostar:status#036_flowIs2" } +String               Biostar_Mixer2                  "Mixer 2"                            { channel="guntamatic:biostar:mybiostar:status#037_mixer2" } +Switch               Biostar_HeatCirc2               "Heat Circ. 2"                       { channel="guntamatic:biostar:mybiostar:status#038_heatCirc2" } +Number:Temperature   Biostar_RoomTempHc3             "Room Temp:HC 3"                     { channel="guntamatic:biostar:mybiostar:status#039_roomTempHc3" } +Switch               Biostar_HeatCirc3               "Heat Circ. 3"                       { channel="guntamatic:biostar:mybiostar:status#040_heatCirc3" } +Number:Temperature   Biostar_RoomTempHc4             "Room Temp:HC 4"                     { channel="guntamatic:biostar:mybiostar:status#041_roomTempHc4" } +Number:Temperature   Biostar_FlowTarget4             "Flow Target 4"                      { channel="guntamatic:biostar:mybiostar:status#042_flowTarget4" } +Number:Temperature   Biostar_FlowIs4                 "Flow is 4"                          { channel="guntamatic:biostar:mybiostar:status#043_flowIs4" } +String               Biostar_Mixer4                  "Mixer 4"                            { channel="guntamatic:biostar:mybiostar:status#044_mixer4" } +Switch               Biostar_HeatCirc4               "Heat Circ. 4"                       { channel="guntamatic:biostar:mybiostar:status#045_heatCirc4" } +Number:Temperature   Biostar_RoomTempHc5             "Room Temp:HC 5"                     { channel="guntamatic:biostar:mybiostar:status#046_roomTempHc5" } +Number:Temperature   Biostar_FlowTarget5             "Flow Target 5"                      { channel="guntamatic:biostar:mybiostar:status#047_flowTarget5" } +Number:Temperature   Biostar_FlowIs5                 "Flow is 5"                          { channel="guntamatic:biostar:mybiostar:status#048_flowIs5" } +String               Biostar_Mixer5                  "Mixer 5"                            { channel="guntamatic:biostar:mybiostar:status#049_mixer5" } +Switch               Biostar_HeatCirc5               "Heat Circ. 5"                       { channel="guntamatic:biostar:mybiostar:status#050_heatCirc5" } +Number:Temperature   Biostar_RoomTempHc6             "Room Temp:HC 6"                     { channel="guntamatic:biostar:mybiostar:status#051_roomTempHc6" } +Switch               Biostar_HeatCirc6               "Heat Circ. 6"                       { channel="guntamatic:biostar:mybiostar:status#052_heatCirc6" } +Number:Temperature   Biostar_RoomTempHc7             "Room Temp:HC 7"                     { channel="guntamatic:biostar:mybiostar:status#053_roomTempHc7" } +Number:Temperature   Biostar_FlowTarget7             "Flow Target 7"                      { channel="guntamatic:biostar:mybiostar:status#054_flowTarget7" } +Number:Temperature   Biostar_FlowIs7                 "Flow is 7"                          { channel="guntamatic:biostar:mybiostar:status#055_flowIs7" } +String               Biostar_Mixer7                  "Mixer 7"                            { channel="guntamatic:biostar:mybiostar:status#056_mixer7" } +Switch               Biostar_HeatCirc7               "Heat Circ. 7"                       { channel="guntamatic:biostar:mybiostar:status#057_heatCirc7" } +Number:Temperature   Biostar_RoomTempHc8             "Room Temp:HC 8"                     { channel="guntamatic:biostar:mybiostar:status#058_roomTempHc8" } +Number:Temperature   Biostar_FlowTarget8             "Flow Target 8"                      { channel="guntamatic:biostar:mybiostar:status#059_flowTarget8" } +Number:Temperature   Biostar_FlowIs8                 "Flow is 8"                          { channel="guntamatic:biostar:mybiostar:status#060_flowIs8" } +String               Biostar_Mixer8                  "Mixer 8"                            { channel="guntamatic:biostar:mybiostar:status#061_mixer8" } +Switch               Biostar_HeatCirc8               "Heat Circ. 8"                       { channel="guntamatic:biostar:mybiostar:status#062_heatCirc8" } +String               Biostar_FuelLevel               "Fuel Level"                         { channel="guntamatic:biostar:mybiostar:status#065_fuelLevel" } +String               Biostar_Stb                     "STB"                                { channel="guntamatic:biostar:mybiostar:status#066_stb" } +String               Biostar_Tks                     "TKS"                                { channel="guntamatic:biostar:mybiostar:status#067_tks" } +Switch               Biostar_BoilerApproval          "Boiler approval"                    { channel="guntamatic:biostar:mybiostar:status#068_boilerApproval" } +String               Biostar_Programme               "Programme"                          { channel="guntamatic:biostar:mybiostar:status#069_programme" } +String               Biostar_ProgramHc0              "Program HC0"                        { channel="guntamatic:biostar:mybiostar:status#070_programHc0" } +String               Biostar_ProgramHc1              "Program HC1"                        { channel="guntamatic:biostar:mybiostar:status#071_programHc1" } +String               Biostar_ProgramHc2              "Program HC2"                        { channel="guntamatic:biostar:mybiostar:status#072_programHc2" } +String               Biostar_ProgramHc3              "Program HC3"                        { channel="guntamatic:biostar:mybiostar:status#073_programHc3" } +String               Biostar_ProgramHc4              "Program HC4"                        { channel="guntamatic:biostar:mybiostar:status#074_programHc4" } +String               Biostar_ProgramHc5              "Program HC5"                        { channel="guntamatic:biostar:mybiostar:status#075_programHc5" } +String               Biostar_ProgramHc6              "Program HC6"                        { channel="guntamatic:biostar:mybiostar:status#076_programHc6" } +String               Biostar_ProgramHc7              "Program HC7"                        { channel="guntamatic:biostar:mybiostar:status#077_programHc7" } +String               Biostar_ProgramHc8              "Program HC8"                        { channel="guntamatic:biostar:mybiostar:status#078_programHc8" } +String               Biostar_Interuption0            "Interuption 0"                      { channel="guntamatic:biostar:mybiostar:status#079_interuption0" } +String               Biostar_Interuption1            "Interuption 1"                      { channel="guntamatic:biostar:mybiostar:status#080_interuption1" } +Number               Biostar_Serial                  "Serial"                             { channel="guntamatic:biostar:mybiostar:status#081_serial" } +String               Biostar_Version                 "Version"                            { channel="guntamatic:biostar:mybiostar:status#082_version" } +Number:Time          Biostar_RunningTime             "Running Time"                       { channel="guntamatic:biostar:mybiostar:status#083_runningTime" } +Number:Time          Biostar_ServiceHrs              "Service Hrs"                        { channel="guntamatic:biostar:mybiostar:status#084_serviceHrs" } +Number:Time          Biostar_EmptyAshIn              "Empty ash in"                       { channel="guntamatic:biostar:mybiostar:status#085_emptyAshIn" } +Number:Temperature   Biostar_FlowIs0                 "Flow is 0"                          { channel="guntamatic:biostar:mybiostar:status#086_flowIs0" } +Number:Temperature   Biostar_FlowIs3                 "Flow is 3"                          { channel="guntamatic:biostar:mybiostar:status#087_flowIs3" } +Number:Temperature   Biostar_FlowIs6                 "Flow is 6"                          { channel="guntamatic:biostar:mybiostar:status#088_flowIs6" } +Number:Volume        Biostar_FuelCounter             "Fuel counter"                       { channel="guntamatic:biostar:mybiostar:status#089_fuelCounter" } +Number:Dimensionless Biostar_BufferLoad              "Buffer load."                       { channel="guntamatic:biostar:mybiostar:status#090_bufferLoad" } +Number:Temperature   Biostar_BufferTop0              "Buffer Top 0"                       { channel="guntamatic:biostar:mybiostar:status#091_bufferTop0" } +Number:Temperature   Biostar_BufferBtm0              "Buffer Btm 0"                       { channel="guntamatic:biostar:mybiostar:status#092_bufferBtm0" } +Number:Temperature   Biostar_BufferTop1              "Buffer Top 1"                       { channel="guntamatic:biostar:mybiostar:status#093_bufferTop1" } +Number:Temperature   Biostar_BufferBtm1              "Buffer Btm 1"                       { channel="guntamatic:biostar:mybiostar:status#094_bufferBtm1" } +Number:Temperature   Biostar_BufferTop2              "Buffer Top 2"                       { channel="guntamatic:biostar:mybiostar:status#095_bufferTop2" } +Number:Temperature   Biostar_BufferBtm2              "Buffer Btm 2"                       { channel="guntamatic:biostar:mybiostar:status#096_bufferBtm2" } +Switch               Biostar_BExtraWw0               "B extra-WW. 0"                      { channel="guntamatic:biostar:mybiostar:status#097_bExtraWw0" } +Switch               Biostar_BExtraWw1               "B extra-WW. 1"                      { channel="guntamatic:biostar:mybiostar:status#098_bExtraWw1" } +Switch               Biostar_BExtraWw2               "B extra-WW. 2"                      { channel="guntamatic:biostar:mybiostar:status#099_bExtraWw2" } +Switch               Biostar_AuxiliaryPump0          "Auxiliary pump 0"                   { channel="guntamatic:biostar:mybiostar:status#100_auxiliaryPump0" } +Switch               Biostar_AuxiliaryPump1          "Auxiliary pump 1"                   { channel="guntamatic:biostar:mybiostar:status#101_auxiliaryPump1" } +Switch               Biostar_AuxiliaryPump2          "Auxiliary pump 2"                   { channel="guntamatic:biostar:mybiostar:status#102_auxiliaryPump2" } +String               Biostar_BoilersConditionNo      "Boiler´s condition no."             { channel="guntamatic:biostar:mybiostar:status#104_boilersConditionNo" } +Number:Temperature   Biostar_BufferT5                "Buffer T5"                          { channel="guntamatic:biostar:mybiostar:status#108_bufferT5" } +Number:Temperature   Biostar_BufferT6                "Buffer T6"                          { channel="guntamatic:biostar:mybiostar:status#109_bufferT6" } +Number:Temperature   Biostar_BufferT7                "Buffer T7"                          { channel="guntamatic:biostar:mybiostar:status#110_bufferT7" } +Number:Temperature   Biostar_ExtraWw0                "Extra-WW. 0"                        { channel="guntamatic:biostar:mybiostar:status#111_extraWw0" } +Number:Temperature   Biostar_ExtraWw1                "Extra-WW. 1"                        { channel="guntamatic:biostar:mybiostar:status#112_extraWw1" } +Number:Temperature   Biostar_ExtraWw2                "Extra-WW. 2"                        { channel="guntamatic:biostar:mybiostar:status#113_extraWw2" } +Number:Dimensionless Biostar_Grate                   "Grate"                              { channel="guntamatic:biostar:mybiostar:status#114_grate" } ``` ### Rule diff --git a/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticBindingConstants.java b/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticBindingConstants.java index 912f8bf07128b..8e8bbbe5c8ecc 100644 --- a/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticBindingConstants.java +++ b/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticBindingConstants.java @@ -39,24 +39,26 @@ public class GuntamaticBindingConstants { public static final ThingTypeUID THING_TYPE_THERM = new ThingTypeUID(BINDING_ID, "therm"); public static final ThingTypeUID THING_TYPE_GENERIC = new ThingTypeUID(BINDING_ID, "generic"); + public static final String GROUP_CONTROL = "control#"; + // List of all Channel ids - public static final String CHANNEL_CONTROLBOILERAPPROVAL = "controlBoilerApproval"; - public static final String CHANNEL_CONTROLPROGRAM = "controlProgram"; - public static final String CHANNEL_CONTROLHEATCIRCPROGRAM0 = "controlHeatCircProgram0"; - public static final String CHANNEL_CONTROLHEATCIRCPROGRAM1 = "controlHeatCircProgram1"; - public static final String CHANNEL_CONTROLHEATCIRCPROGRAM2 = "controlHeatCircProgram2"; - public static final String CHANNEL_CONTROLHEATCIRCPROGRAM3 = "controlHeatCircProgram3"; - public static final String CHANNEL_CONTROLHEATCIRCPROGRAM4 = "controlHeatCircProgram4"; - public static final String CHANNEL_CONTROLHEATCIRCPROGRAM5 = "controlHeatCircProgram5"; - public static final String CHANNEL_CONTROLHEATCIRCPROGRAM6 = "controlHeatCircProgram6"; - public static final String CHANNEL_CONTROLHEATCIRCPROGRAM7 = "controlHeatCircProgram7"; - public static final String CHANNEL_CONTROLHEATCIRCPROGRAM8 = "controlHeatCircProgram8"; - public static final String CHANNEL_CONTROLWWHEAT0 = "controlWwHeat0"; - public static final String CHANNEL_CONTROLWWHEAT1 = "controlWwHeat1"; - public static final String CHANNEL_CONTROLWWHEAT2 = "controlWwHeat2"; - public static final String CHANNEL_CONTROLEXTRAWWHEAT0 = "controlExtraWwHeat0"; - public static final String CHANNEL_CONTROLEXTRAWWHEAT1 = "controlExtraWwHeat1"; - public static final String CHANNEL_CONTROLEXTRAWWHEAT2 = "controlExtraWwHeat2"; + public static final String CHANNEL_CONTROLBOILERAPPROVAL = GROUP_CONTROL + "boilerApproval"; + public static final String CHANNEL_CONTROLPROGRAM = GROUP_CONTROL + "program"; + public static final String CHANNEL_CONTROLHEATCIRCPROGRAM0 = GROUP_CONTROL + "heatCircProgram0"; + public static final String CHANNEL_CONTROLHEATCIRCPROGRAM1 = GROUP_CONTROL + "heatCircProgram1"; + public static final String CHANNEL_CONTROLHEATCIRCPROGRAM2 = GROUP_CONTROL + "heatCircProgram2"; + public static final String CHANNEL_CONTROLHEATCIRCPROGRAM3 = GROUP_CONTROL + "heatCircProgram3"; + public static final String CHANNEL_CONTROLHEATCIRCPROGRAM4 = GROUP_CONTROL + "heatCircProgram4"; + public static final String CHANNEL_CONTROLHEATCIRCPROGRAM5 = GROUP_CONTROL + "heatCircProgram5"; + public static final String CHANNEL_CONTROLHEATCIRCPROGRAM6 = GROUP_CONTROL + "heatCircProgram6"; + public static final String CHANNEL_CONTROLHEATCIRCPROGRAM7 = GROUP_CONTROL + "heatCircProgram7"; + public static final String CHANNEL_CONTROLHEATCIRCPROGRAM8 = GROUP_CONTROL + "heatCircProgram8"; + public static final String CHANNEL_CONTROLWWHEAT0 = GROUP_CONTROL + "wwHeat0"; + public static final String CHANNEL_CONTROLWWHEAT1 = GROUP_CONTROL + "wwHeat1"; + public static final String CHANNEL_CONTROLWWHEAT2 = GROUP_CONTROL + "wwHeat2"; + public static final String CHANNEL_CONTROLEXTRAWWHEAT0 = GROUP_CONTROL + "extraWwHeat0"; + public static final String CHANNEL_CONTROLEXTRAWWHEAT1 = GROUP_CONTROL + "extraWwHeat1"; + public static final String CHANNEL_CONTROLEXTRAWWHEAT2 = GROUP_CONTROL + "extraWwHeat2"; public static final List STATIC_CHANNEL_IDS = Arrays.asList(CHANNEL_CONTROLBOILERAPPROVAL, CHANNEL_CONTROLPROGRAM, CHANNEL_CONTROLHEATCIRCPROGRAM0, CHANNEL_CONTROLHEATCIRCPROGRAM1, @@ -72,6 +74,8 @@ public class GuntamaticBindingConstants { CHANNEL_CONTROLWWHEAT0, CHANNEL_CONTROLWWHEAT1, CHANNEL_CONTROLWWHEAT2, CHANNEL_CONTROLEXTRAWWHEAT0, CHANNEL_CONTROLEXTRAWWHEAT1, CHANNEL_CONTROLEXTRAWWHEAT2); + public static final String GROUP_STATUS = "status#"; + public static final String PARAMETER_BOILERAPPROVAL = "boilerApproval"; public static final String PARAMETER_PROGRAM = "program"; public static final String PARAMETER_HEATCIRCPROGRAM = "heatCircProgram"; diff --git a/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandler.java b/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandler.java index 54d7ee472ad07..85afcb4e9726f 100644 --- a/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandler.java +++ b/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandler.java @@ -199,7 +199,7 @@ private void parseAndUpdate(String html) { String channel = channels.get(i); Unit unit = units.get(i); if ((channel != null) && (i < daqdata.length)) { - String channelId = String.format("%03d", i) + "_" + channel; + String channelId = GROUP_STATUS + String.format("%03d", i) + "_" + channel; String value = daqdata[i]; Channel chn = thing.getChannel(channelId); if ((chn != null) && (value != null)) { @@ -271,6 +271,9 @@ private void parseAndJsonInit(String html) { private void parseAndInit(String html) { String[] daqdesc = html.split("\\n"); List channelList = new ArrayList<>(); + for (Channel chn : thing.getChannels()) { + logger.trace("Static Channel '{}' present", chn.getUID()); + } // make sure that static channels are present for (String channelID : staticChannelIDs) { @@ -346,7 +349,8 @@ private void parseAndInit(String html) { typeProvider.putChannelType(channelType); - Channel newChannel = ChannelBuilder.create(new ChannelUID(thing.getUID(), channelId), itemType) + Channel newChannel = ChannelBuilder + .create(new ChannelUID(thing.getUID(), GROUP_STATUS + channelId), itemType) .withType(channelTypeUID).withKind(ChannelKind.STATE).withLabel(label).build(); channelList.add(newChannel); channels.put(i, channel); @@ -356,7 +360,7 @@ private void parseAndInit(String html) { logger.debug( "Supported Channel: Idx: '{}', Name: '{}'/'{}', Type: '{}'/'{}', Unit: '{}', Pattern '{}' ", - String.format("%03d", i), label, channelId, type, itemType, unitStr, pattern); + String.format("%03d", i), label, GROUP_STATUS + channelId, type, itemType, unitStr, pattern); } } ThingBuilder thingBuilder = editThing(); diff --git a/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/thing/thing-types.xml b/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/thing/thing-types.xml index 676cb34deb504..e8d3483a44413 100644 --- a/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/thing/thing-types.xml +++ b/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/thing/thing-types.xml @@ -5,534 +5,278 @@ xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd"> - Guntamatic Biostar Pellets Heating System - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + K0010 PR001 HKx01 BKx06 ZKx06 + 1 - + Guntamatic Biosmart Log Heating System - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + PR001 HKx01 BKx06 ZKx06 + 1 - + Guntamatic Powerchip WoodChip Heating System - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + PK002 PR001 HKx01 BKx06 ZKx06 + 1 - + Guntamatic Powercorn EnergyGrain Heating System. Untested! Please provide Feedback! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + PK002 PR001 HKx01 BKx06 ZKx06 + 1 - + Guntamatic Biocom Pellets Heating System. Untested! Please provide Feedback! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + PK002 PR001 HKx01 BKx06 ZKx06 + 1 - + Guntamatic Pro Pellets or WoodChip Heating System. Untested! Please provide Feedback! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + PK002 PR001 HKx01 BKx06 ZKx06 + 1 - + Guntamatic Therm Pellets Heating System. Untested! Please provide Feedback! + + + + + + + K0010 + PR001 + HKx01 + BKx06 + ZKx06 + 1 + + + + + + + Generic Guntamatic Heating System. Use this type, if your Heating System is none of the others. Please + provide Feedback! + + + + + + + + PR001 + HKx01 + BKx06 + ZKx06 + 1 + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - K0010 - PR001 - HKx01 - BKx06 - ZKx06 - - - - - - - Generic Guntamatic Heating System. Use this type, if your Heating System is none of the others. Please - provide Feedback! + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - PR001 - HKx01 - BKx06 - ZKx06 - - - + + + + + String diff --git a/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/update/update.xml b/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/update/update.xml new file mode 100644 index 0000000000000..a525d19e4c022 --- /dev/null +++ b/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/update/update.xml @@ -0,0 +1,589 @@ + + + + + + + + + + + + + + + + + + + + + + + + + guntamatic:controlBoilerApproval + + + guntamatic:controlProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlWwHeat + + + guntamatic:controlWwHeat + + + guntamatic:controlWwHeat + + + guntamatic:controlExtraWwHeat + + + guntamatic:controlExtraWwHeat + + + guntamatic:controlExtraWwHeat + + + + + + + + + + + + + + + + + + + + + + + + + guntamatic:controlProgramWOManu + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlWwHeat + + + guntamatic:controlWwHeat + + + guntamatic:controlWwHeat + + + guntamatic:controlExtraWwHeat + + + guntamatic:controlExtraWwHeat + + + guntamatic:controlExtraWwHeat + + + + + + + + + + + + + + + + + + + + + + + + + + guntamatic:controlBoilerApproval + + + guntamatic:controlProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlWwHeat + + + guntamatic:controlWwHeat + + + guntamatic:controlWwHeat + + + guntamatic:controlExtraWwHeat + + + guntamatic:controlExtraWwHeat + + + guntamatic:controlExtraWwHeat + + + + + + + + + + + + + + + + + + + + + + + + + + guntamatic:controlBoilerApproval + + + guntamatic:controlProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlWwHeat + + + guntamatic:controlWwHeat + + + guntamatic:controlWwHeat + + + guntamatic:controlExtraWwHeat + + + guntamatic:controlExtraWwHeat + + + guntamatic:controlExtraWwHeat + + + + + + + + + + + + + + + + + + + + + + + + + + guntamatic:controlBoilerApproval + + + guntamatic:controlProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlWwHeat + + + guntamatic:controlWwHeat + + + guntamatic:controlWwHeat + + + guntamatic:controlExtraWwHeat + + + guntamatic:controlExtraWwHeat + + + guntamatic:controlExtraWwHeat + + + + + + + + + + + + + + + + + + + + + + + + + + guntamatic:controlBoilerApproval + + + guntamatic:controlProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlWwHeat + + + guntamatic:controlWwHeat + + + guntamatic:controlWwHeat + + + guntamatic:controlExtraWwHeat + + + guntamatic:controlExtraWwHeat + + + guntamatic:controlExtraWwHeat + + + + + + + + + + + + + + + + + + + + + + + + + + guntamatic:controlBoilerApproval + + + guntamatic:controlProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlWwHeat + + + guntamatic:controlWwHeat + + + guntamatic:controlWwHeat + + + guntamatic:controlExtraWwHeat + + + guntamatic:controlExtraWwHeat + + + guntamatic:controlExtraWwHeat + + + + + + + + + + + + + + + + + + + + + + + + + guntamatic:controlProgramWOManu + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlHeatCircProgram + + + guntamatic:controlWwHeat + + + guntamatic:controlWwHeat + + + guntamatic:controlWwHeat + + + guntamatic:controlExtraWwHeat + + + guntamatic:controlExtraWwHeat + + + guntamatic:controlExtraWwHeat + + + + From 18cfbe3c845b6d0639d5f4de6feccbd30d332cda Mon Sep 17 00:00:00 2001 From: Michael Weger Date: Wed, 18 Dec 2024 15:34:40 +0100 Subject: [PATCH 5/8] mvn i18n:generate-default-translations Signed-off-by: Michael Weger --- .../internal/GuntamaticHandler.java | 10 +- .../OH-INF/i18n/guntamatic.properties | 154 +++++++++++------- 2 files changed, 103 insertions(+), 61 deletions(-) diff --git a/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandler.java b/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandler.java index 85afcb4e9726f..ee68395ec1398 100644 --- a/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandler.java +++ b/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandler.java @@ -272,7 +272,7 @@ private void parseAndInit(String html) { String[] daqdesc = html.split("\\n"); List channelList = new ArrayList<>(); for (Channel chn : thing.getChannels()) { - logger.trace("Static Channel '{}' present", chn.getUID()); + logger.debug("Static Channel '{}' present", chn.getUID()); } // make sure that static channels are present @@ -422,7 +422,7 @@ private String toLowerCamelCase(String input) { } private @Nullable String sendGetRequest(String url, String... params) { - logger.trace("sendGetRequest '{}'", url); + logger.debug("sendGetRequest '{}'", url); String errorReason = ""; String req = "http://" + config.hostname + url; @@ -458,8 +458,8 @@ private String toLowerCamelCase(String input) { } else if (url.equals(DAQDATA_URL)) { parseAndUpdate(response); } else { - logger.debug(req); - // PARSET_URL via return + logger.debug("parset request: {}", req); + // PARSET_URL request is handled via return value only } return response; } catch (IllegalArgumentException e) { @@ -503,7 +503,7 @@ public void initialize() { updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, "Invalid hostname configuration"); } else { updateStatus(ThingStatus.UNKNOWN); - logger.trace("scheduleWithFixedDelay(pollGuntamatic, 1, {}, TimeUnit.SECONDS)", config.refreshInterval); + logger.debug("scheduleWithFixedDelay(pollGuntamatic, 1, {}, TimeUnit.SECONDS)", config.refreshInterval); pollingFuture = scheduler.scheduleWithFixedDelay(this::pollGuntamatic, 1, config.refreshInterval, TimeUnit.SECONDS); } diff --git a/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/i18n/guntamatic.properties b/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/i18n/guntamatic.properties index e7ea9ea912209..1e1e6621c091e 100644 --- a/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/i18n/guntamatic.properties +++ b/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/i18n/guntamatic.properties @@ -7,6 +7,104 @@ addon.guntamatic.description = Binding for Guntamatic Heating Systems. thing-type.guntamatic.biocom.label = Guntamatic Biocom thing-type.guntamatic.biocom.description = Guntamatic Biocom Pellets Heating System. Untested! Please provide Feedback! +thing-type.guntamatic.biosmart.label = Guntamatic Biosmart +thing-type.guntamatic.biosmart.description = Guntamatic Biosmart Log Heating System +thing-type.guntamatic.biostar.label = Guntamatic Biostar +thing-type.guntamatic.biostar.description = Guntamatic Biostar Pellets Heating System +thing-type.guntamatic.generic.label = Guntamatic Generic +thing-type.guntamatic.generic.description = Generic Guntamatic Heating System. Use this type, if your Heating System is none of the others. Please provide Feedback! +thing-type.guntamatic.powerchip.label = Guntamatic Powerchip +thing-type.guntamatic.powerchip.description = Guntamatic Powerchip WoodChip Heating System +thing-type.guntamatic.powercorn.label = Guntamatic Powercorn +thing-type.guntamatic.powercorn.description = Guntamatic Powercorn EnergyGrain Heating System. Untested! Please provide Feedback! +thing-type.guntamatic.pro.label = Guntamatic Pro +thing-type.guntamatic.pro.description = Guntamatic Pro Pellets or WoodChip Heating System. Untested! Please provide Feedback! +thing-type.guntamatic.therm.label = Guntamatic Therm +thing-type.guntamatic.therm.description = Guntamatic Therm Pellets Heating System. Untested! Please provide Feedback! + +# thing types config + +thing-type.config.guntamatic.heatingsystem.encoding.label = Encoding +thing-type.config.guntamatic.heatingsystem.encoding.description = Code page used by the Guntamatic Heating System. Default: 'windows-1252' +thing-type.config.guntamatic.heatingsystem.hostname.label = Hostname +thing-type.config.guntamatic.heatingsystem.hostname.description = Hostname or IP address of the Guntamatic Heating System +thing-type.config.guntamatic.heatingsystem.key.label = Key +thing-type.config.guntamatic.heatingsystem.key.description = Optional, but required to read protected parameters and to control the Guntamatic Heating System. The key needs to be reqested from Guntamatic support. +thing-type.config.guntamatic.heatingsystem.refreshInterval.label = Refresh Interval +thing-type.config.guntamatic.heatingsystem.refreshInterval.description = Interval the Guntamatic Heating System is polled in seconds. Default: 60s + +# channel group types + +channel-group-type.guntamatic.controlGroupType.label = Control +channel-group-type.guntamatic.controlGroupType.channel.boilerApproval.label = Set Boiler Approval +channel-group-type.guntamatic.controlGroupType.channel.extraWwHeat0.label = Trigger Extra Warm Water Circle 0 +channel-group-type.guntamatic.controlGroupType.channel.extraWwHeat1.label = Trigger Extra Warm Water Circle 1 +channel-group-type.guntamatic.controlGroupType.channel.extraWwHeat2.label = Trigger Extra Warm Water Circle 2 +channel-group-type.guntamatic.controlGroupType.channel.heatCircProgram0.label = Set Heat Circle 0 Program +channel-group-type.guntamatic.controlGroupType.channel.heatCircProgram1.label = Set Heat Circle 1 Program +channel-group-type.guntamatic.controlGroupType.channel.heatCircProgram2.label = Set Heat Circle 2 Program +channel-group-type.guntamatic.controlGroupType.channel.heatCircProgram3.label = Set Heat Circle 3 Program +channel-group-type.guntamatic.controlGroupType.channel.heatCircProgram4.label = Set Heat Circle 4 Program +channel-group-type.guntamatic.controlGroupType.channel.heatCircProgram5.label = Set Heat Circle 5 Program +channel-group-type.guntamatic.controlGroupType.channel.heatCircProgram6.label = Set Heat Circle 6 Program +channel-group-type.guntamatic.controlGroupType.channel.heatCircProgram7.label = Set Heat Circle 7 Program +channel-group-type.guntamatic.controlGroupType.channel.heatCircProgram8.label = Set Heat Circle 8 Program +channel-group-type.guntamatic.controlGroupType.channel.program.label = Set Program +channel-group-type.guntamatic.controlGroupType.channel.wwHeat0.label = Trigger Warm Water Circle 0 +channel-group-type.guntamatic.controlGroupType.channel.wwHeat1.label = Trigger Warm Water Circle 1 +channel-group-type.guntamatic.controlGroupType.channel.wwHeat2.label = Trigger Warm Water Circle 2 +channel-group-type.guntamatic.controlGroupTypeWOBoilerApp.label = Control +channel-group-type.guntamatic.controlGroupTypeWOBoilerApp.channel.extraWwHeat0.label = Trigger Extra Warm Water Circle 0 +channel-group-type.guntamatic.controlGroupTypeWOBoilerApp.channel.extraWwHeat1.label = Trigger Extra Warm Water Circle 1 +channel-group-type.guntamatic.controlGroupTypeWOBoilerApp.channel.extraWwHeat2.label = Trigger Extra Warm Water Circle 2 +channel-group-type.guntamatic.controlGroupTypeWOBoilerApp.channel.heatCircProgram0.label = Set Heat Circle 0 Program +channel-group-type.guntamatic.controlGroupTypeWOBoilerApp.channel.heatCircProgram1.label = Set Heat Circle 1 Program +channel-group-type.guntamatic.controlGroupTypeWOBoilerApp.channel.heatCircProgram2.label = Set Heat Circle 2 Program +channel-group-type.guntamatic.controlGroupTypeWOBoilerApp.channel.heatCircProgram3.label = Set Heat Circle 3 Program +channel-group-type.guntamatic.controlGroupTypeWOBoilerApp.channel.heatCircProgram4.label = Set Heat Circle 4 Program +channel-group-type.guntamatic.controlGroupTypeWOBoilerApp.channel.heatCircProgram5.label = Set Heat Circle 5 Program +channel-group-type.guntamatic.controlGroupTypeWOBoilerApp.channel.heatCircProgram6.label = Set Heat Circle 6 Program +channel-group-type.guntamatic.controlGroupTypeWOBoilerApp.channel.heatCircProgram7.label = Set Heat Circle 7 Program +channel-group-type.guntamatic.controlGroupTypeWOBoilerApp.channel.heatCircProgram8.label = Set Heat Circle 8 Program +channel-group-type.guntamatic.controlGroupTypeWOBoilerApp.channel.program.label = Set Program +channel-group-type.guntamatic.controlGroupTypeWOBoilerApp.channel.wwHeat0.label = Trigger Warm Water Circle 0 +channel-group-type.guntamatic.controlGroupTypeWOBoilerApp.channel.wwHeat1.label = Trigger Warm Water Circle 1 +channel-group-type.guntamatic.controlGroupTypeWOBoilerApp.channel.wwHeat2.label = Trigger Warm Water Circle 2 +channel-group-type.guntamatic.statusGroupType.label = Status + +# channel types + +channel-type.guntamatic.controlBoilerApproval.label = Set Boiler Approval +channel-type.guntamatic.controlBoilerApproval.description = Set Boiler Approval of the Guntamatic Heating System (AUTO, OFF, ON) +channel-type.guntamatic.controlBoilerApproval.state.option.0 = AUTO +channel-type.guntamatic.controlBoilerApproval.state.option.1 = OFF +channel-type.guntamatic.controlBoilerApproval.state.option.2 = ON +channel-type.guntamatic.controlExtraWwHeat.label = Trigger Extra Warm Water Circle +channel-type.guntamatic.controlExtraWwHeat.description = Trigger Extra Warm Water Circle of the Guntamatic Heating System (RECHARGE) +channel-type.guntamatic.controlExtraWwHeat.state.option.0 = RECHARGE +channel-type.guntamatic.controlHeatCircProgram.label = Set Heat Circle Program +channel-type.guntamatic.controlHeatCircProgram.description = Set Heat Circle of the Guntamatic Heating System (OFF, NORMAL, HEAT, LOWER) +channel-type.guntamatic.controlHeatCircProgram.state.option.0 = OFF +channel-type.guntamatic.controlHeatCircProgram.state.option.1 = NORMAL +channel-type.guntamatic.controlHeatCircProgram.state.option.2 = HEAT +channel-type.guntamatic.controlHeatCircProgram.state.option.3 = LOWER +channel-type.guntamatic.controlProgram.label = Set Program +channel-type.guntamatic.controlProgram.description = Set Program of the Guntamatic Heating System (OFF, NORMAL, WARMWATER, MANUAL) +channel-type.guntamatic.controlProgram.state.option.0 = OFF +channel-type.guntamatic.controlProgram.state.option.1 = NORMAL +channel-type.guntamatic.controlProgram.state.option.2 = WARMWATER +channel-type.guntamatic.controlProgram.state.option.8 = MANUAL +channel-type.guntamatic.controlProgramWOManu.label = Set Program +channel-type.guntamatic.controlProgramWOManu.description = Set Program of the Guntamatic Heating System (OFF, NORMAL, WARMWATER) +channel-type.guntamatic.controlProgramWOManu.state.option.0 = OFF +channel-type.guntamatic.controlProgramWOManu.state.option.1 = NORMAL +channel-type.guntamatic.controlProgramWOManu.state.option.2 = WARMWATER +channel-type.guntamatic.controlWwHeat.label = Trigger Warm Water Circle +channel-type.guntamatic.controlWwHeat.description = Trigger Warm Water Circle of the Guntamatic Heating System (RECHARGE) +channel-type.guntamatic.controlWwHeat.state.option.0 = RECHARGE + +# thing types + thing-type.guntamatic.biocom.channel.controlBoilerApproval.label = Set Boiler Approval thing-type.guntamatic.biocom.channel.controlExtraWwHeat0.label = Trigger Extra Warm Water Circle 0 thing-type.guntamatic.biocom.channel.controlExtraWwHeat1.label = Trigger Extra Warm Water Circle 1 @@ -24,8 +122,6 @@ thing-type.guntamatic.biocom.channel.controlProgram.label = Set Program thing-type.guntamatic.biocom.channel.controlWwHeat0.label = Trigger Warm Water Circle 0 thing-type.guntamatic.biocom.channel.controlWwHeat1.label = Trigger Warm Water Circle 1 thing-type.guntamatic.biocom.channel.controlWwHeat2.label = Trigger Warm Water Circle 2 -thing-type.guntamatic.biosmart.label = Guntamatic Biosmart -thing-type.guntamatic.biosmart.description = Guntamatic Biosmart Log Heating System thing-type.guntamatic.biosmart.channel.controlExtraWwHeat0.label = Trigger Extra Warm Water Circle 0 thing-type.guntamatic.biosmart.channel.controlExtraWwHeat1.label = Trigger Extra Warm Water Circle 1 thing-type.guntamatic.biosmart.channel.controlExtraWwHeat2.label = Trigger Extra Warm Water Circle 2 @@ -42,8 +138,6 @@ thing-type.guntamatic.biosmart.channel.controlProgram.label = Set Program thing-type.guntamatic.biosmart.channel.controlWwHeat0.label = Trigger Warm Water Circle 0 thing-type.guntamatic.biosmart.channel.controlWwHeat1.label = Trigger Warm Water Circle 1 thing-type.guntamatic.biosmart.channel.controlWwHeat2.label = Trigger Warm Water Circle 2 -thing-type.guntamatic.biostar.label = Guntamatic Biostar -thing-type.guntamatic.biostar.description = Guntamatic Biostar Pellets Heating System thing-type.guntamatic.biostar.channel.controlBoilerApproval.label = Set Boiler Approval thing-type.guntamatic.biostar.channel.controlExtraWwHeat0.label = Trigger Extra Warm Water Circle 0 thing-type.guntamatic.biostar.channel.controlExtraWwHeat1.label = Trigger Extra Warm Water Circle 1 @@ -61,8 +155,6 @@ thing-type.guntamatic.biostar.channel.controlProgram.label = Set Program thing-type.guntamatic.biostar.channel.controlWwHeat0.label = Trigger Warm Water Circle 0 thing-type.guntamatic.biostar.channel.controlWwHeat1.label = Trigger Warm Water Circle 1 thing-type.guntamatic.biostar.channel.controlWwHeat2.label = Trigger Warm Water Circle 2 -thing-type.guntamatic.generic.label = Guntamatic Generic -thing-type.guntamatic.generic.description = Generic Guntamatic Heating System. Use this type, if your Heating System is none of the others. Please provide Feedback! thing-type.guntamatic.generic.channel.controlExtraWwHeat0.label = Trigger Extra Warm Water Circle 0 thing-type.guntamatic.generic.channel.controlExtraWwHeat1.label = Trigger Extra Warm Water Circle 1 thing-type.guntamatic.generic.channel.controlExtraWwHeat2.label = Trigger Extra Warm Water Circle 2 @@ -79,8 +171,6 @@ thing-type.guntamatic.generic.channel.controlProgram.label = Set Program thing-type.guntamatic.generic.channel.controlWwHeat0.label = Trigger Warm Water Circle 0 thing-type.guntamatic.generic.channel.controlWwHeat1.label = Trigger Warm Water Circle 1 thing-type.guntamatic.generic.channel.controlWwHeat2.label = Trigger Warm Water Circle 2 -thing-type.guntamatic.powerchip.label = Guntamatic Powerchip -thing-type.guntamatic.powerchip.description = Guntamatic Powerchip WoodChip Heating System thing-type.guntamatic.powerchip.channel.controlBoilerApproval.label = Set Boiler Approval thing-type.guntamatic.powerchip.channel.controlExtraWwHeat0.label = Trigger Extra Warm Water Circle 0 thing-type.guntamatic.powerchip.channel.controlExtraWwHeat1.label = Trigger Extra Warm Water Circle 1 @@ -98,8 +188,6 @@ thing-type.guntamatic.powerchip.channel.controlProgram.label = Set Program thing-type.guntamatic.powerchip.channel.controlWwHeat0.label = Trigger Warm Water Circle 0 thing-type.guntamatic.powerchip.channel.controlWwHeat1.label = Trigger Warm Water Circle 1 thing-type.guntamatic.powerchip.channel.controlWwHeat2.label = Trigger Warm Water Circle 2 -thing-type.guntamatic.powercorn.label = Guntamatic Powercorn -thing-type.guntamatic.powercorn.description = Guntamatic Powercorn EnergyGrain Heating System. Untested! Please provide Feedback! thing-type.guntamatic.powercorn.channel.controlBoilerApproval.label = Set Boiler Approval thing-type.guntamatic.powercorn.channel.controlExtraWwHeat0.label = Trigger Extra Warm Water Circle 0 thing-type.guntamatic.powercorn.channel.controlExtraWwHeat1.label = Trigger Extra Warm Water Circle 1 @@ -117,8 +205,6 @@ thing-type.guntamatic.powercorn.channel.controlProgram.label = Set Program thing-type.guntamatic.powercorn.channel.controlWwHeat0.label = Trigger Warm Water Circle 0 thing-type.guntamatic.powercorn.channel.controlWwHeat1.label = Trigger Warm Water Circle 1 thing-type.guntamatic.powercorn.channel.controlWwHeat2.label = Trigger Warm Water Circle 2 -thing-type.guntamatic.pro.label = Guntamatic Pro -thing-type.guntamatic.pro.description = Guntamatic Pro Pellets or WoodChip Heating System. Untested! Please provide Feedback! thing-type.guntamatic.pro.channel.controlBoilerApproval.label = Set Boiler Approval thing-type.guntamatic.pro.channel.controlExtraWwHeat0.label = Trigger Extra Warm Water Circle 0 thing-type.guntamatic.pro.channel.controlExtraWwHeat1.label = Trigger Extra Warm Water Circle 1 @@ -136,8 +222,6 @@ thing-type.guntamatic.pro.channel.controlProgram.label = Set Program thing-type.guntamatic.pro.channel.controlWwHeat0.label = Trigger Warm Water Circle 0 thing-type.guntamatic.pro.channel.controlWwHeat1.label = Trigger Warm Water Circle 1 thing-type.guntamatic.pro.channel.controlWwHeat2.label = Trigger Warm Water Circle 2 -thing-type.guntamatic.therm.label = Guntamatic Therm -thing-type.guntamatic.therm.description = Guntamatic Therm Pellets Heating System. Untested! Please provide Feedback! thing-type.guntamatic.therm.channel.controlBoilerApproval.label = Set Boiler Approval thing-type.guntamatic.therm.channel.controlExtraWwHeat0.label = Trigger Extra Warm Water Circle 0 thing-type.guntamatic.therm.channel.controlExtraWwHeat1.label = Trigger Extra Warm Water Circle 1 @@ -155,45 +239,3 @@ thing-type.guntamatic.therm.channel.controlProgram.label = Set Program thing-type.guntamatic.therm.channel.controlWwHeat0.label = Trigger Warm Water Circle 0 thing-type.guntamatic.therm.channel.controlWwHeat1.label = Trigger Warm Water Circle 1 thing-type.guntamatic.therm.channel.controlWwHeat2.label = Trigger Warm Water Circle 2 - -# thing types config - -thing-type.config.guntamatic.heatingsystem.encoding.label = Encoding -thing-type.config.guntamatic.heatingsystem.encoding.description = Code page used by the Guntamatic Heating System. Default: 'windows-1252' -thing-type.config.guntamatic.heatingsystem.hostname.label = Hostname -thing-type.config.guntamatic.heatingsystem.hostname.description = Hostname or IP address of the Guntamatic Heating System -thing-type.config.guntamatic.heatingsystem.key.label = Key -thing-type.config.guntamatic.heatingsystem.key.description = Optional, but required to read protected parameters and to control the Guntamatic Heating System. The key needs to be reqested from Guntamatic support. -thing-type.config.guntamatic.heatingsystem.refreshInterval.label = Refresh Interval -thing-type.config.guntamatic.heatingsystem.refreshInterval.description = Interval the Guntamatic Heating System is polled in seconds. Default: 60s - -# channel types - -channel-type.guntamatic.controlBoilerApproval.label = Set Boiler Approval -channel-type.guntamatic.controlBoilerApproval.description = Set Boiler Approval of the Guntamatic Heating System (AUTO, OFF, ON) -channel-type.guntamatic.controlBoilerApproval.state.option.0 = AUTO -channel-type.guntamatic.controlBoilerApproval.state.option.1 = OFF -channel-type.guntamatic.controlBoilerApproval.state.option.2 = ON -channel-type.guntamatic.controlExtraWwHeat.label = Trigger Extra Warm Water Circle -channel-type.guntamatic.controlExtraWwHeat.description = Trigger Extra Warm Water Circle of the Guntamatic Heating System (RECHARGE) -channel-type.guntamatic.controlExtraWwHeat.state.option.0 = RECHARGE -channel-type.guntamatic.controlHeatCircProgram.label = Set Heat Circle Program -channel-type.guntamatic.controlHeatCircProgram.description = Set Heat Circle of the Guntamatic Heating System (OFF, NORMAL, HEAT, LOWER) -channel-type.guntamatic.controlHeatCircProgram.state.option.0 = OFF -channel-type.guntamatic.controlHeatCircProgram.state.option.1 = NORMAL -channel-type.guntamatic.controlHeatCircProgram.state.option.2 = HEAT -channel-type.guntamatic.controlHeatCircProgram.state.option.3 = LOWER -channel-type.guntamatic.controlProgram.label = Set Program -channel-type.guntamatic.controlProgram.description = Set Program of the Guntamatic Heating System (OFF, NORMAL, WARMWATER, MANUAL) -channel-type.guntamatic.controlProgram.state.option.0 = OFF -channel-type.guntamatic.controlProgram.state.option.1 = NORMAL -channel-type.guntamatic.controlProgram.state.option.2 = WARMWATER -channel-type.guntamatic.controlProgram.state.option.8 = MANUAL -channel-type.guntamatic.controlProgramWOManu.label = Set Program -channel-type.guntamatic.controlProgramWOManu.description = Set Program of the Guntamatic Heating System (OFF, NORMAL, WARMWATER) -channel-type.guntamatic.controlProgramWOManu.state.option.0 = OFF -channel-type.guntamatic.controlProgramWOManu.state.option.1 = NORMAL -channel-type.guntamatic.controlProgramWOManu.state.option.2 = WARMWATER -channel-type.guntamatic.controlWwHeat.label = Trigger Warm Water Circle -channel-type.guntamatic.controlWwHeat.description = Trigger Warm Water Circle of the Guntamatic Heating System (RECHARGE) -channel-type.guntamatic.controlWwHeat.state.option.0 = RECHARGE From 9eb7616c70ea96d478aa1004f29590fb4f07c02d Mon Sep 17 00:00:00 2001 From: Michael Weger Date: Thu, 19 Dec 2024 09:53:47 +0100 Subject: [PATCH 6/8] implemented review fdings (lower-case-hyphen) Signed-off-by: Michael Weger --- .../org.openhab.binding.guntamatic/README.md | 494 +++++++++--------- .../internal/GuntamaticBindingConstants.java | 58 +- .../internal/GuntamaticHandler.java | 63 +-- .../resources/OH-INF/thing/thing-types.xml | 62 +-- .../main/resources/OH-INF/update/update.xml | 252 ++++----- 5 files changed, 456 insertions(+), 473 deletions(-) diff --git a/bundles/org.openhab.binding.guntamatic/README.md b/bundles/org.openhab.binding.guntamatic/README.md index 9c866acb5169c..0a7346a00566e 100644 --- a/bundles/org.openhab.binding.guntamatic/README.md +++ b/bundles/org.openhab.binding.guntamatic/README.md @@ -33,13 +33,13 @@ Guntamatic Heating Systems supported as Thing Types: ### Properties -| Property | Description | Supported | -| ----------------- | --------------------------------------------------- | ------------------------------------------------- | -| `extraWwHeat` | Parameter used by `controlExtraWwHeat` channels | all | -| `boilerApproval` | Parameter used by `controlBoilerApproval` channel | Biostar, Powerchip, Powercorn, Biocom, Pro, Therm | -| `heatCircProgram` | Parameter used by `controlHeatCircProgram` channels | all | -| `program` | Parameter used by `controlProgram` channel | all | -| `wwHeat` | Parameter used by `controlWwHeat` channels | all | +| Property | Description | Supported | +| ----------------- | ---------------------------------------------- | ------------------------------------------------- | +| `extraWwHeat` | Parameter used by `extra-ww-heat` channels | all | +| `boilerApproval` | Parameter used by `boiler-approval` channel | Biostar, Powerchip, Powercorn, Biocom, Pro, Therm | +| `heatCircProgram` | Parameter used by `heat-circ-program` channels | all | +| `program` | Parameter used by `program` channel | all | +| `wwHeat` | Parameter used by `ww-heat` channels | all | ## Channels @@ -47,25 +47,25 @@ Guntamatic Heating Systems supported as Thing Types: The Guntamatic Heating System can be controlled using the following channels: -| Channel | Description | Type | Unit | Security Access Level | ReadOnly | Advanced | -| ------------------ | ------------------------------------------------------------------------------- | -------- | :--: | :-------------------: | :------: | :------: | -| `boilerApproval` | Set Boiler Approval (`AUTO`, `OFF`, `ON`)[1](#f1)) | `String` | | 🔐 W1 | R/W | true | -| `program` | Set Program (`OFF`, `NORMAL`, `WARMWATER`, `MANUAL`[2](#f2)) | `String` | | 🔐 W1 | R/W | false | -| `heatCircProgram0` | Set Heat Circle 0 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `heatCircProgram1` | Set Heat Circle 1 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `heatCircProgram2` | Set Heat Circle 2 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `heatCircProgram3` | Set Heat Circle 3 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `heatCircProgram4` | Set Heat Circle 4 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `heatCircProgram5` | Set Heat Circle 5 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `heatCircProgram6` | Set Heat Circle 6 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `heatCircProgram7` | Set Heat Circle 7 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `heatCircProgram8` | Set Heat Circle 8 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `wwHeat0` | Trigger Warm Water Circle 0 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | -| `wwHeat1` | Trigger Warm Water Circle 1 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | -| `wwHeat2` | Trigger Warm Water Circle 2 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | -| `extraWwHeat0` | Trigger Extra Warm Water Circle 0 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | -| `extraWwHeat1` | Trigger Extra Warm Water Circle 1 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | -| `extraWwHeat2` | Trigger Extra Warm Water Circle 2 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | +| Channel | Description | Type | Unit | Security Access Level | ReadOnly | Advanced | +| --------------------- | ------------------------------------------------------------------------------- | -------- | :--: | :-------------------: | :------: | :------: | +| `boiler-approval` | Set Boiler Approval (`AUTO`, `OFF`, `ON`)[1](#f1)) | `String` | | 🔐 W1 | R/W | true | +| `program` | Set Program (`OFF`, `NORMAL`, `WARMWATER`, `MANUAL`[2](#f2)) | `String` | | 🔐 W1 | R/W | false | +| `heat-circ-program-0` | Set Heat Circle 0 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `heat-circ-program-1` | Set Heat Circle 1 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `heat-circ-program-2` | Set Heat Circle 2 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `heat-circ-program-3` | Set Heat Circle 3 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `heat-circ-program-4` | Set Heat Circle 4 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `heat-circ-program-5` | Set Heat Circle 5 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `heat-circ-program-6` | Set Heat Circle 6 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `heat-circ-program-7` | Set Heat Circle 7 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `heat-circ-program-8` | Set Heat Circle 8 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `ww-heat-0` | Trigger Warm Water Circle 0 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | +| `ww-heat-1` | Trigger Warm Water Circle 1 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | +| `ww-heat-2` | Trigger Warm Water Circle 2 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | +| `extra-ww-heat-0` | Trigger Extra Warm Water Circle 0 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | +| `extra-ww-heat-1` | Trigger Extra Warm Water Circle 1 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | +| `extra-ww-heat-2` | Trigger Extra Warm Water Circle 2 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | - 1) ... Channel is supported by Biostar, Powerchip, Powercorn, Biocom, Pro as well as Therm only [↩](#a1) - 2) ... `MANUAL` is supported by Biostar, Powerchip, Powercorn, Biocom, Pro as well as Therm only [↩](#a2) @@ -75,7 +75,7 @@ The Guntamatic Heating System can be controlled using the following channels: - `{"ack":"confirmation message"}` ... in case of success - `{"err":"error message"}` ... in case of error -The reaction of the Guntamatic Heating System can be monitored via the corresponding data channel. E.g. `programHc1` if you triggered `controlHeatCircProgram1`. The data channel gets updated with the next cyclic update (according to the `refreshInterval` configuration). +The reaction of the Guntamatic Heating System can be monitored via the corresponding data channel. E.g. `program-hc-1` if you triggered `heat-circ-program-1`. The data channel gets updated with the next cyclic update (according to the `refreshInterval` configuration). ### Status Channels @@ -83,117 +83,117 @@ The Binding dynamically generates Channels, derived from the data provided from Example list of Channels using a Guntamatic Biostar 15kW Pellets Heating System running firmware 3.2d and Guntamatic System Language configured to English: -| Channel | Description | Type | Unit | Security Access Level | ReadOnly | Advanced | -| ------------------------ | ---------------------- | ---------------------- | :--: | :-------------------: | :------: | -------: | -| `000_running` | Running | `String` | | 🔓 W0 | R/O | false | -| `001_outsideTemp` | Outside Temp. | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `002_blrTargetTemp` | Blr.Target Temp | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `003_boilerTemperature` | Boiler Temperature | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `004_flueGasUtilisation` | Flue gas utilisation | `Number:Dimensionless` | `%` | 🔐 W1 | R/O | false | -| `005_output` | Output | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | -| `006_returnTemp` | Return temp | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `007_co2Target` | CO2 Target | `Number:Dimensionless` | `%` | 🔐 W1 | R/O | false | -| `008_co2Content` | CO2 Content | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | -| `009_returnTempTarget` | Return temp target | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `010_statusCode` | Status code | `Number` | | 🔐 W1 | R/O | false | -| `011_efficiency` | Efficiency | `Number:Dimensionless` | `%` | 🔐 W1 | R/O | false | -| `012_output` | Output | `Number:Dimensionless` | `%` | 🔐 W1 | R/O | false | -| `013_extractorSystem` | Extractor System | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | -| `014_feedTurbine` | Feed Turbine | `String` | | 🔐 W1 | R/O | false | -| `015_dischargeMotor` | Discharge motor | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | -| `016_g1Target` | G1 Target | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | -| `017_bufferTop` | Buffer Top | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `018_bufferMid` | Buffer Mid | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `019_bufferBtm` | Buffer Btm | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `020_pumpHp0` | Pump HP0 | `Switch` | | 🔓 W0 | R/O | false | -| `021_dhw0` | DHW 0 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `022_bDhw0` | B DHW 0 | `Switch` | | 🔓 W0 | R/O | false | -| `023_dhw1` | DHW 1 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `024_bDhw1` | B DHW 1 | `Switch` | | 🔓 W0 | R/O | false | -| `025_dhw2` | DHW 2 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `026_bDhw2` | B DHW 2 | `Switch` | | 🔓 W0 | R/O | false | -| `027_roomTempHc0` | Room Temp:HC 0 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `028_heatCirc0` | Heat Circ. 0 | `Switch` | | 🔓 W0 | R/O | false | -| `029_roomTempHc1` | Room Temp:HC 1 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `030_flowTarget1` | Flow Target 1 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `031_flowIs1` | Flow is 1 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `032_mixer1` | Mixer 1 | `String` | | 🔐 W1 | R/O | false | -| `033_heatCirc1` | Heat Circ. 1 | `Switch` | | 🔐 W1 | R/O | false | -| `034_roomTempHc2` | Room Temp:HC 2 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `035_flowTarget2` | Flow Target 2 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `036_flowIs2` | Flow is 2 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `037_mixer2` | Mixer 2 | `String` | | 🔐 W1 | R/O | false | -| `038_heatCirc2` | Heat Circ. 2 | `Switch` | | 🔓 W0 | R/O | false | -| `039_roomTempHc3` | Room Temp:HC 3 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `040_heatCirc3` | Heat Circ. 3 | `Switch` | | 🔓 W0 | R/O | false | -| `041_roomTempHc4` | Room Temp:HC 4 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `042_flowTarget4` | Flow Target 4 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `043_flowIs4` | Flow is 4 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `044_mixer4` | Mixer 4 | `String` | | 🔐 W1 | R/O | false | -| `045_heatCirc4` | Heat Circ. 4 | `Switch` | | 🔓 W0 | R/O | false | -| `046_roomTempHc5` | Room Temp:HC 5 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `047_flowTarget5` | Flow Target 5 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `048_flowIs5` | Flow is 5 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `049_mixer5` | Mixer 5 | `String` | | 🔐 W1 | R/O | false | -| `050_heatCirc5` | Heat Circ. 5 | `Switch` | | 🔓 W0 | R/O | false | -| `051_roomTempHc6` | Room Temp:HC 6 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `052_heatCirc6` | Heat Circ. 6 | `Switch` | | 🔓 W0 | R/O | false | -| `053_roomTempHc7` | Room Temp:HC 7 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `054_flowTarget7` | Flow Target 7 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `055_flowIs7` | Flow is 7 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `056_mixer7` | Mixer 7 | `String` | | 🔐 W1 | R/O | false | -| `057_heatCirc7` | Heat Circ. 7 | `Switch` | | 🔓 W0 | R/O | false | -| `058_roomTempHc8` | Room Temp:HC 8 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `059_flowTarget8` | Flow Target 8 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `060_flowIs8` | Flow is 8 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `061_mixer8` | Mixer 8 | `String` | | 🔐 W1 | R/O | false | -| `062_heatCirc8` | Heat Circ. 8 | `Switch` | | 🔓 W0 | R/O | false | -| `065_fuelLevel` | Fuel Level | `String` | | 🔐 W1 | R/O | false | -| `066_stb` | STB | `String` | | 🔐 W1 | R/O | false | -| `067_tks` | TKS | `String` | | 🔐 W1 | R/O | false | -| `068_boilerApproval` | Boiler approval | `Switch` | | 🔐 W1 | R/O | false | -| `069_programme` | Programme | `String` | | 🔓 W0 | R/O | false | -| `070_programHc0` | Program HC0 | `String` | | 🔓 W0 | R/O | false | -| `071_programHc1` | Program HC1 | `String` | | 🔓 W0 | R/O | false | -| `072_programHc2` | Program HC2 | `String` | | 🔓 W0 | R/O | false | -| `073_programHc3` | Program HC3 | `String` | | 🔓 W0 | R/O | false | -| `074_programHc4` | Program HC4 | `String` | | 🔓 W0 | R/O | false | -| `075_programHc5` | Program HC5 | `String` | | 🔓 W0 | R/O | false | -| `076_programHc6` | Program HC6 | `String` | | 🔓 W0 | R/O | false | -| `077_programHc7` | Program HC7 | `String` | | 🔓 W0 | R/O | false | -| `078_programHc8` | Program HC8 | `String` | | 🔓 W0 | R/O | false | -| `079_interuption0` | Interuption 0 | `String` | | 🔓 W0 | R/O | false | -| `080_interuption1` | Interuption 1 | `String` | | 🔓 W0 | R/O | false | -| `081_serial` | Serial | `Number` | | 🔓 W0 | R/O | false | -| `082_version` | Version | `String` | | 🔓 W0 | R/O | false | -| `083_runningTime` | Running Time | `Number:Time` | `h` | 🔓 W0 | R/O | false | -| `084_serviceHrs` | Service Hrs | `Number:Time` | `d` | 🔓 W0 | R/O | false | -| `085_emptyAshIn` | Empty ash in | `Number:Time` | `h` | 🔓 W0 | R/O | false | -| `086_flowIs0` | Flow is 0 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `087_flowIs3` | Flow is 3 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `088_flowIs6` | Flow is 6 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `089_fuelCounter` | Fuel counter | `Number:Volume` | `m³` | 🔐 W1 | R/O | false | -| `090_bufferLoad` | Buffer load. | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | -| `091_bufferTop0` | Buffer Top 0 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `092_bufferBtm0` | Buffer Btm 0 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `093_bufferTop1` | Buffer Top 1 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `094_bufferBtm1` | Buffer Btm 1 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `095_bufferTop2` | Buffer Top 2 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `096_bufferBtm2` | Buffer Btm 2 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | -| `097_bExtraWw0` | B extra-WW. 0 | `Switch` | | 🔐 W1 | R/O | false | -| `098_bExtraWw1` | B extra-WW. 1 | `Switch` | | 🔐 W1 | R/O | false | -| `099_bExtraWw2` | B extra-WW. 2 | `Switch` | | 🔐 W1 | R/O | false | -| `100_auxiliaryPump0` | Auxiliary pump 0 | `Switch` | | 🔐 W1 | R/O | false | -| `101_auxiliaryPump1` | Auxiliary pump 1 | `Switch` | | 🔐 W1 | R/O | false | -| `102_auxiliaryPump2` | Auxiliary pump 2 | `Switch` | | 🔐 W1 | R/O | false | -| `104_boilersConditionNo` | Boiler´s condition no. | `String` | | 🔐 W1 | R/O | false | -| `108_bufferT5` | Buffer T5 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `109_bufferT6` | Buffer T6 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `110_bufferT7` | Buffer T7 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `111_extraWw0` | Extra-WW. 0 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `112_extraWw1` | Extra-WW. 1 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `113_extraWw2` | Extra-WW. 2 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | -| `114_grate` | Grate | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | +| Channel | Description | Type | Unit | Security Access Level | ReadOnly | Advanced | +|----------------------------|------------------------|------------------------|-:--:-|-:-------------------:-|-:------:-|-:------:-| +| `000-running` | Running | `String` | | 🔓 W0 | R/O | false | +| `001-outside-temp` | Outside Temp. | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `002-blr-target-temp` | Blr.Target Temp | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `003-boiler-temperature` | Boiler Temperature | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `004-flue-gas-utilisation` | Flue gas utilisation | `Number:Dimensionless` | `%` | 🔐 W1 | R/O | false | +| `005-output` | Output | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | +| `006-return-temp` | Return temp | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `007-co2-target` | CO2 Target | `Number:Dimensionless` | `%` | 🔐 W1 | R/O | false | +| `008-co2-content` | CO2 Content | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | +| `009-return-temp-target` | Return temp target | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `010-status-code` | Status code | `Number` | | 🔐 W1 | R/O | false | +| `011-efficiency` | Efficiency | `Number:Dimensionless` | `%` | 🔐 W1 | R/O | false | +| `012-output` | Output | `Number:Dimensionless` | `%` | 🔐 W1 | R/O | false | +| `013-extractor-system` | Extractor System | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | +| `014-feed-turbine` | Feed Turbine | `String` | | 🔐 W1 | R/O | false | +| `015-discharge-motor` | Discharge motor | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | +| `016-g1-target` | G1 Target | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | +| `017-buffer-top` | Buffer Top | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `018-buffer-mid` | Buffer Mid | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `019-buffer-btm` | Buffer Btm | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `020-pump-hp0` | Pump HP0 | `Switch` | | 🔓 W0 | R/O | false | +| `021-dhw-0` | DHW 0 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `022-b-dhw-0` | B DHW 0 | `Switch` | | 🔓 W0 | R/O | false | +| `023-dhw-1` | DHW 1 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `024-b-dhw-1` | B DHW 1 | `Switch` | | 🔓 W0 | R/O | false | +| `025-dhw-2` | DHW 2 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `026-b-dhw-2` | B DHW 2 | `Switch` | | 🔓 W0 | R/O | false | +| `027-room-temp-hc-0` | Room Temp:HC 0 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `028-heat-circ-0` | Heat Circ. 0 | `Switch` | | 🔓 W0 | R/O | false | +| `029-room-temp-hc-1` | Room Temp:HC 1 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `030-flow-target-1` | Flow Target 1 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `031-flow-is-1` | Flow is 1 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `032-mixer-1` | Mixer 1 | `String` | | 🔐 W1 | R/O | false | +| `033-heat-circ-1` | Heat Circ. 1 | `Switch` | | 🔐 W1 | R/O | false | +| `034-room-temp-hc-2` | Room Temp:HC 2 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `035-flow-target-2` | Flow Target 2 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `036-flow-is-2` | Flow is 2 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `037-mixer-2` | Mixer 2 | `String` | | 🔐 W1 | R/O | false | +| `038-heat-circ-2` | Heat Circ. 2 | `Switch` | | 🔓 W0 | R/O | false | +| `039-room-temp-hc-3` | Room Temp:HC 3 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `040-heat-circ-3` | Heat Circ. 3 | `Switch` | | 🔓 W0 | R/O | false | +| `041-room-temp-hc-4` | Room Temp:HC 4 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `042-flow-target-4` | Flow Target 4 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `043-flow-is-4` | Flow is 4 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `044-mixer-4` | Mixer 4 | `String` | | 🔐 W1 | R/O | false | +| `045-heat-circ-4` | Heat Circ. 4 | `Switch` | | 🔓 W0 | R/O | false | +| `046-room-temp-hc-5` | Room Temp:HC 5 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `047-flow-target-5` | Flow Target 5 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `048-flow-is-5` | Flow is 5 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `049-mixer-5` | Mixer 5 | `String` | | 🔐 W1 | R/O | false | +| `050-heat-circ-5` | Heat Circ. 5 | `Switch` | | 🔓 W0 | R/O | false | +| `051-room-temp-hc-6` | Room Temp:HC 6 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `052-heat-circ-6` | Heat Circ. 6 | `Switch` | | 🔓 W0 | R/O | false | +| `053-room-temp-hc-7` | Room Temp:HC 7 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `054-flow-target-7` | Flow Target 7 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `055-flow-is-7` | Flow is 7 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `056-mixer-7` | Mixer 7 | `String` | | 🔐 W1 | R/O | false | +| `057-heat-circ-7` | Heat Circ. 7 | `Switch` | | 🔓 W0 | R/O | false | +| `058-room-temp-hc-8` | Room Temp:HC 8 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `059-flow-target-8` | Flow Target 8 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `060-flow-is-8` | Flow is 8 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `061-mixer-8` | Mixer 8 | `String` | | 🔐 W1 | R/O | false | +| `062-heat-circ-8` | Heat Circ. 8 | `Switch` | | 🔓 W0 | R/O | false | +| `065-fuel-level` | Fuel Level | `String` | | 🔐 W1 | R/O | false | +| `066-stb` | STB | `String` | | 🔐 W1 | R/O | false | +| `067-tks` | TKS | `String` | | 🔐 W1 | R/O | false | +| `068-boiler-approval` | Boiler approval | `Switch` | | 🔐 W1 | R/O | false | +| `069-programme` | Programme | `String` | | 🔓 W0 | R/O | false | +| `070-program-hc0` | Program HC0 | `String` | | 🔓 W0 | R/O | false | +| `071-program-hc1` | Program HC1 | `String` | | 🔓 W0 | R/O | false | +| `072-program-hc2` | Program HC2 | `String` | | 🔓 W0 | R/O | false | +| `073-program-hc3` | Program HC3 | `String` | | 🔓 W0 | R/O | false | +| `074-program-hc4` | Program HC4 | `String` | | 🔓 W0 | R/O | false | +| `075-program-hc5` | Program HC5 | `String` | | 🔓 W0 | R/O | false | +| `076-program-hc6` | Program HC6 | `String` | | 🔓 W0 | R/O | false | +| `077-program-hc7` | Program HC7 | `String` | | 🔓 W0 | R/O | false | +| `078-program-hc8` | Program HC8 | `String` | | 🔓 W0 | R/O | false | +| `079-interuption-0` | Interuption 0 | `String` | | 🔓 W0 | R/O | false | +| `080-interuption-1` | Interuption 1 | `String` | | 🔓 W0 | R/O | false | +| `081-serial` | Serial | `Number` | | 🔓 W0 | R/O | false | +| `082-version` | Version | `String` | | 🔓 W0 | R/O | false | +| `083-running-time` | Running Time | `Number:Time` | `h` | 🔓 W0 | R/O | false | +| `084-service-hrs` | Service Hrs | `Number:Time` | `d` | 🔓 W0 | R/O | false | +| `085-empty-ash-in` | Empty ash in | `Number:Time` | `h` | 🔓 W0 | R/O | false | +| `086-flow-is-0` | Flow is 0 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `087-flow-is-3` | Flow is 3 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `088-flow-is-6` | Flow is 6 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `089-fuel-counter` | Fuel counter | `Number:Volume` | `m³` | 🔐 W1 | R/O | false | +| `090-buffer-load` | Buffer load. | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | +| `091-buffer-top-0` | Buffer Top 0 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `092-buffer-btm-0` | Buffer Btm 0 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `093-buffer-top-1` | Buffer Top 1 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `094-buffer-btm-1` | Buffer Btm 1 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `095-buffer-top-2` | Buffer Top 2 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `096-buffer-btm-2` | Buffer Btm 2 | `Number:Temperature` | `°C` | 🔐 W1 | R/O | false | +| `097-b-extra-ww-0` | B extra-WW. 0 | `Switch` | | 🔐 W1 | R/O | false | +| `098-b-extra-ww-1` | B extra-WW. 1 | `Switch` | | 🔐 W1 | R/O | false | +| `099-b-extra-ww-2` | B extra-WW. 2 | `Switch` | | 🔐 W1 | R/O | false | +| `100-auxiliary-pump-0` | Auxiliary pump 0 | `Switch` | | 🔐 W1 | R/O | false | +| `101-auxiliary-pump-1` | Auxiliary pump 1 | `Switch` | | 🔐 W1 | R/O | false | +| `102-auxiliary-pump-2` | Auxiliary pump 2 | `Switch` | | 🔐 W1 | R/O | false | +| `104-boilers-condition-no` | Boiler´s condition no. | `String` | | 🔐 W1 | R/O | false | +| `108-buffer-t5` | Buffer T5 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `109-buffer-t6` | Buffer T6 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `110-buffer-t7` | Buffer T7 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `111-extra-ww-0` | Extra-WW. 0 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `112-extra-ww-1` | Extra-WW. 1 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `113-extra-ww-2` | Extra-WW. 2 | `Number:Temperature` | `°C` | 🔓 W0 | R/O | false | +| `114-grate` | Grate | `Number:Dimensionless` | `%` | 🔓 W0 | R/O | false | #### Security Access Levels @@ -214,115 +214,115 @@ Thing guntamatic:biostar:mybiostar "Guntamatic Biostar" [ hostname="192.1 ```java String Biostar_ControlProgram "Control Program" { channel="guntamatic:biostar:mybiostar:control#program" } -String               Biostar_Running                 "Running"                            { channel="guntamatic:biostar:mybiostar:status#000_running" } -Number:Temperature   Biostar_OutsideTemp             "Outside Temp."                      { channel="guntamatic:biostar:mybiostar:status#001_outsideTemp" } -Number:Temperature   Biostar_BlrTargetTemp           "Blr.Target Temp"                    { channel="guntamatic:biostar:mybiostar:status#002_blrTargetTemp" } -Number:Temperature   Biostar_BoilerTemperature       "Boiler Temperature"                 { channel="guntamatic:biostar:mybiostar:status#003_boilerTemperature" } -Number:Dimensionless Biostar_FlueGasUtilisation      "Flue gas utilisation"               { channel="guntamatic:biostar:mybiostar:status#004_flueGasUtilisation" } -Number:Dimensionless Biostar_Output                  "Output"                             { channel="guntamatic:biostar:mybiostar:status#005_output" } -Number:Temperature   Biostar_ReturnTemp              "Return temp"                        { channel="guntamatic:biostar:mybiostar:status#006_returnTemp" } -Number:Dimensionless Biostar_Co2Target               "CO2 Target"                         { channel="guntamatic:biostar:mybiostar:status#007_co2Target" } -Number:Dimensionless Biostar_Co2Content              "CO2 Content"                        { channel="guntamatic:biostar:mybiostar:status#008_co2Content" } -Number:Temperature   Biostar_ReturnTempTarget        "Return temp target"                 { channel="guntamatic:biostar:mybiostar:status#009_returnTempTarget" } -Number               Biostar_StatusCode              "Status code"                        { channel="guntamatic:biostar:mybiostar:status#010_statusCode" } -Number:Dimensionless Biostar_Efficiency              "Efficiency"                         { channel="guntamatic:biostar:mybiostar:status#011_efficiency" } -Number:Dimensionless Biostar_Output2                 "Output"                             { channel="guntamatic:biostar:mybiostar:status#012_output" } -Number:Dimensionless Biostar_ExtractorSystem         "Extractor System"                   { channel="guntamatic:biostar:mybiostar:status#013_extractorSystem" } -String               Biostar_FeedTurbine             "Feed Turbine"                       { channel="guntamatic:biostar:mybiostar:status#014_feedTurbine" } -Number:Dimensionless Biostar_DischargeMotor          "Discharge motor"                    { channel="guntamatic:biostar:mybiostar:status#015_dischargeMotor" } -Number:Dimensionless Biostar_G1Target                "G1 Target"                          { channel="guntamatic:biostar:mybiostar:status#016_g1Target" } -Number:Temperature   Biostar_BufferTop               "Buffer Top"                         { channel="guntamatic:biostar:mybiostar:status#017_bufferTop" } -Number:Temperature   Biostar_BufferMid               "Buffer Mid"                         { channel="guntamatic:biostar:mybiostar:status#018_bufferMid" } -Number:Temperature   Biostar_BufferBtm               "Buffer Btm"                         { channel="guntamatic:biostar:mybiostar:status#019_bufferBtm" } -Switch               Biostar_PumpHp0                 "Pump HP0"                           { channel="guntamatic:biostar:mybiostar:status#020_pumpHp0" } -Number:Temperature   Biostar_Dhw0                    "DHW 0"                              { channel="guntamatic:biostar:mybiostar:status#021_dhw0" } -Switch               Biostar_BDhw0                   "B DHW 0"                            { channel="guntamatic:biostar:mybiostar:status#022_bDhw0" } -Number:Temperature   Biostar_Dhw1                    "DHW 1"                              { channel="guntamatic:biostar:mybiostar:status#023_dhw1" } -Switch               Biostar_BDhw1                   "B DHW 1"                            { channel="guntamatic:biostar:mybiostar:status#024_bDhw1" } -Number:Temperature   Biostar_Dhw2                    "DHW 2"                              { channel="guntamatic:biostar:mybiostar:status#025_dhw2" } -Switch               Biostar_BDhw2                   "B DHW 2"                            { channel="guntamatic:biostar:mybiostar:status#026_bDhw2" } -Number:Temperature   Biostar_RoomTempHc0             "Room Temp:HC 0"                     { channel="guntamatic:biostar:mybiostar:status#027_roomTempHc0" } -Switch               Biostar_HeatCirc0               "Heat Circ. 0"                       { channel="guntamatic:biostar:mybiostar:status#028_heatCirc0" } -Number:Temperature   Biostar_RoomTempHc1             "Room Temp:HC 1"                     { channel="guntamatic:biostar:mybiostar:status#029_roomTempHc1" } -Number:Temperature   Biostar_FlowTarget1             "Flow Target 1"                      { channel="guntamatic:biostar:mybiostar:status#030_flowTarget1" } -Number:Temperature   Biostar_FlowIs1                 "Flow is 1"                          { channel="guntamatic:biostar:mybiostar:status#031_flowIs1" } -String               Biostar_Mixer1                  "Mixer 1"                            { channel="guntamatic:biostar:mybiostar:status#032_mixer1" } -Switch               Biostar_HeatCirc1               "Heat Circ. 1"                       { channel="guntamatic:biostar:mybiostar:status#033_heatCirc1" } -Number:Temperature   Biostar_RoomTempHc2             "Room Temp:HC 2"                     { channel="guntamatic:biostar:mybiostar:status#034_roomTempHc2" } -Number:Temperature   Biostar_FlowTarget2             "Flow Target 2"                      { channel="guntamatic:biostar:mybiostar:status#035_flowTarget2" } -Number:Temperature   Biostar_FlowIs2                 "Flow is 2"                          { channel="guntamatic:biostar:mybiostar:status#036_flowIs2" } -String               Biostar_Mixer2                  "Mixer 2"                            { channel="guntamatic:biostar:mybiostar:status#037_mixer2" } -Switch               Biostar_HeatCirc2               "Heat Circ. 2"                       { channel="guntamatic:biostar:mybiostar:status#038_heatCirc2" } -Number:Temperature   Biostar_RoomTempHc3             "Room Temp:HC 3"                     { channel="guntamatic:biostar:mybiostar:status#039_roomTempHc3" } -Switch               Biostar_HeatCirc3               "Heat Circ. 3"                       { channel="guntamatic:biostar:mybiostar:status#040_heatCirc3" } -Number:Temperature   Biostar_RoomTempHc4             "Room Temp:HC 4"                     { channel="guntamatic:biostar:mybiostar:status#041_roomTempHc4" } -Number:Temperature   Biostar_FlowTarget4             "Flow Target 4"                      { channel="guntamatic:biostar:mybiostar:status#042_flowTarget4" } -Number:Temperature   Biostar_FlowIs4                 "Flow is 4"                          { channel="guntamatic:biostar:mybiostar:status#043_flowIs4" } -String               Biostar_Mixer4                  "Mixer 4"                            { channel="guntamatic:biostar:mybiostar:status#044_mixer4" } -Switch               Biostar_HeatCirc4               "Heat Circ. 4"                       { channel="guntamatic:biostar:mybiostar:status#045_heatCirc4" } -Number:Temperature   Biostar_RoomTempHc5             "Room Temp:HC 5"                     { channel="guntamatic:biostar:mybiostar:status#046_roomTempHc5" } -Number:Temperature   Biostar_FlowTarget5             "Flow Target 5"                      { channel="guntamatic:biostar:mybiostar:status#047_flowTarget5" } -Number:Temperature   Biostar_FlowIs5                 "Flow is 5"                          { channel="guntamatic:biostar:mybiostar:status#048_flowIs5" } -String               Biostar_Mixer5                  "Mixer 5"                            { channel="guntamatic:biostar:mybiostar:status#049_mixer5" } -Switch               Biostar_HeatCirc5               "Heat Circ. 5"                       { channel="guntamatic:biostar:mybiostar:status#050_heatCirc5" } -Number:Temperature   Biostar_RoomTempHc6             "Room Temp:HC 6"                     { channel="guntamatic:biostar:mybiostar:status#051_roomTempHc6" } -Switch               Biostar_HeatCirc6               "Heat Circ. 6"                       { channel="guntamatic:biostar:mybiostar:status#052_heatCirc6" } -Number:Temperature   Biostar_RoomTempHc7             "Room Temp:HC 7"                     { channel="guntamatic:biostar:mybiostar:status#053_roomTempHc7" } -Number:Temperature   Biostar_FlowTarget7             "Flow Target 7"                      { channel="guntamatic:biostar:mybiostar:status#054_flowTarget7" } -Number:Temperature   Biostar_FlowIs7                 "Flow is 7"                          { channel="guntamatic:biostar:mybiostar:status#055_flowIs7" } -String               Biostar_Mixer7                  "Mixer 7"                            { channel="guntamatic:biostar:mybiostar:status#056_mixer7" } -Switch               Biostar_HeatCirc7               "Heat Circ. 7"                       { channel="guntamatic:biostar:mybiostar:status#057_heatCirc7" } -Number:Temperature   Biostar_RoomTempHc8             "Room Temp:HC 8"                     { channel="guntamatic:biostar:mybiostar:status#058_roomTempHc8" } -Number:Temperature   Biostar_FlowTarget8             "Flow Target 8"                      { channel="guntamatic:biostar:mybiostar:status#059_flowTarget8" } -Number:Temperature   Biostar_FlowIs8                 "Flow is 8"                          { channel="guntamatic:biostar:mybiostar:status#060_flowIs8" } -String               Biostar_Mixer8                  "Mixer 8"                            { channel="guntamatic:biostar:mybiostar:status#061_mixer8" } -Switch               Biostar_HeatCirc8               "Heat Circ. 8"                       { channel="guntamatic:biostar:mybiostar:status#062_heatCirc8" } -String               Biostar_FuelLevel               "Fuel Level"                         { channel="guntamatic:biostar:mybiostar:status#065_fuelLevel" } -String               Biostar_Stb                     "STB"                                { channel="guntamatic:biostar:mybiostar:status#066_stb" } -String               Biostar_Tks                     "TKS"                                { channel="guntamatic:biostar:mybiostar:status#067_tks" } -Switch               Biostar_BoilerApproval          "Boiler approval"                    { channel="guntamatic:biostar:mybiostar:status#068_boilerApproval" } -String               Biostar_Programme               "Programme"                          { channel="guntamatic:biostar:mybiostar:status#069_programme" } -String               Biostar_ProgramHc0              "Program HC0"                        { channel="guntamatic:biostar:mybiostar:status#070_programHc0" } -String               Biostar_ProgramHc1              "Program HC1"                        { channel="guntamatic:biostar:mybiostar:status#071_programHc1" } -String               Biostar_ProgramHc2              "Program HC2"                        { channel="guntamatic:biostar:mybiostar:status#072_programHc2" } -String               Biostar_ProgramHc3              "Program HC3"                        { channel="guntamatic:biostar:mybiostar:status#073_programHc3" } -String               Biostar_ProgramHc4              "Program HC4"                        { channel="guntamatic:biostar:mybiostar:status#074_programHc4" } -String               Biostar_ProgramHc5              "Program HC5"                        { channel="guntamatic:biostar:mybiostar:status#075_programHc5" } -String               Biostar_ProgramHc6              "Program HC6"                        { channel="guntamatic:biostar:mybiostar:status#076_programHc6" } -String               Biostar_ProgramHc7              "Program HC7"                        { channel="guntamatic:biostar:mybiostar:status#077_programHc7" } -String               Biostar_ProgramHc8              "Program HC8"                        { channel="guntamatic:biostar:mybiostar:status#078_programHc8" } -String               Biostar_Interuption0            "Interuption 0"                      { channel="guntamatic:biostar:mybiostar:status#079_interuption0" } -String               Biostar_Interuption1            "Interuption 1"                      { channel="guntamatic:biostar:mybiostar:status#080_interuption1" } -Number               Biostar_Serial                  "Serial"                             { channel="guntamatic:biostar:mybiostar:status#081_serial" } -String               Biostar_Version                 "Version"                            { channel="guntamatic:biostar:mybiostar:status#082_version" } -Number:Time          Biostar_RunningTime             "Running Time"                       { channel="guntamatic:biostar:mybiostar:status#083_runningTime" } -Number:Time          Biostar_ServiceHrs              "Service Hrs"                        { channel="guntamatic:biostar:mybiostar:status#084_serviceHrs" } -Number:Time          Biostar_EmptyAshIn              "Empty ash in"                       { channel="guntamatic:biostar:mybiostar:status#085_emptyAshIn" } -Number:Temperature   Biostar_FlowIs0                 "Flow is 0"                          { channel="guntamatic:biostar:mybiostar:status#086_flowIs0" } -Number:Temperature   Biostar_FlowIs3                 "Flow is 3"                          { channel="guntamatic:biostar:mybiostar:status#087_flowIs3" } -Number:Temperature   Biostar_FlowIs6                 "Flow is 6"                          { channel="guntamatic:biostar:mybiostar:status#088_flowIs6" } -Number:Volume        Biostar_FuelCounter             "Fuel counter"                       { channel="guntamatic:biostar:mybiostar:status#089_fuelCounter" } -Number:Dimensionless Biostar_BufferLoad              "Buffer load."                       { channel="guntamatic:biostar:mybiostar:status#090_bufferLoad" } -Number:Temperature   Biostar_BufferTop0              "Buffer Top 0"                       { channel="guntamatic:biostar:mybiostar:status#091_bufferTop0" } -Number:Temperature   Biostar_BufferBtm0              "Buffer Btm 0"                       { channel="guntamatic:biostar:mybiostar:status#092_bufferBtm0" } -Number:Temperature   Biostar_BufferTop1              "Buffer Top 1"                       { channel="guntamatic:biostar:mybiostar:status#093_bufferTop1" } -Number:Temperature   Biostar_BufferBtm1              "Buffer Btm 1"                       { channel="guntamatic:biostar:mybiostar:status#094_bufferBtm1" } -Number:Temperature   Biostar_BufferTop2              "Buffer Top 2"                       { channel="guntamatic:biostar:mybiostar:status#095_bufferTop2" } -Number:Temperature   Biostar_BufferBtm2              "Buffer Btm 2"                       { channel="guntamatic:biostar:mybiostar:status#096_bufferBtm2" } -Switch               Biostar_BExtraWw0               "B extra-WW. 0"                      { channel="guntamatic:biostar:mybiostar:status#097_bExtraWw0" } -Switch               Biostar_BExtraWw1               "B extra-WW. 1"                      { channel="guntamatic:biostar:mybiostar:status#098_bExtraWw1" } -Switch               Biostar_BExtraWw2               "B extra-WW. 2"                      { channel="guntamatic:biostar:mybiostar:status#099_bExtraWw2" } -Switch               Biostar_AuxiliaryPump0          "Auxiliary pump 0"                   { channel="guntamatic:biostar:mybiostar:status#100_auxiliaryPump0" } -Switch               Biostar_AuxiliaryPump1          "Auxiliary pump 1"                   { channel="guntamatic:biostar:mybiostar:status#101_auxiliaryPump1" } -Switch               Biostar_AuxiliaryPump2          "Auxiliary pump 2"                   { channel="guntamatic:biostar:mybiostar:status#102_auxiliaryPump2" } -String               Biostar_BoilersConditionNo      "Boiler´s condition no."             { channel="guntamatic:biostar:mybiostar:status#104_boilersConditionNo" } -Number:Temperature   Biostar_BufferT5                "Buffer T5"                          { channel="guntamatic:biostar:mybiostar:status#108_bufferT5" } -Number:Temperature   Biostar_BufferT6                "Buffer T6"                          { channel="guntamatic:biostar:mybiostar:status#109_bufferT6" } -Number:Temperature   Biostar_BufferT7                "Buffer T7"                          { channel="guntamatic:biostar:mybiostar:status#110_bufferT7" } -Number:Temperature   Biostar_ExtraWw0                "Extra-WW. 0"                        { channel="guntamatic:biostar:mybiostar:status#111_extraWw0" } -Number:Temperature   Biostar_ExtraWw1                "Extra-WW. 1"                        { channel="guntamatic:biostar:mybiostar:status#112_extraWw1" } -Number:Temperature   Biostar_ExtraWw2                "Extra-WW. 2"                        { channel="guntamatic:biostar:mybiostar:status#113_extraWw2" } -Number:Dimensionless Biostar_Grate                   "Grate"                              { channel="guntamatic:biostar:mybiostar:status#114_grate" } +String               Biostar_Running                 "Running"                            { channel="guntamatic:biostar:mybiostar:status#000-running" } +Number:Temperature   Biostar_OutsideTemp             "Outside Temp."                      { channel="guntamatic:biostar:mybiostar:status#001-outside-temp" } +Number:Temperature   Biostar_BlrTargetTemp           "Blr.Target Temp"                    { channel="guntamatic:biostar:mybiostar:status#002-blr-target-temp" } +Number:Temperature   Biostar_BoilerTemperature       "Boiler Temperature"                 { channel="guntamatic:biostar:mybiostar:status#003-boiler-temperature" } +Number:Dimensionless Biostar_FlueGasUtilisation      "Flue gas utilisation"               { channel="guntamatic:biostar:mybiostar:status#004-flue-gas-utilisation" } +Number:Dimensionless Biostar_Output                  "Output"                             { channel="guntamatic:biostar:mybiostar:status#005-output" } +Number:Temperature   Biostar_ReturnTemp              "Return temp"                        { channel="guntamatic:biostar:mybiostar:status#006-return-temp" } +Number:Dimensionless Biostar_Co2Target               "CO2 Target"                         { channel="guntamatic:biostar:mybiostar:status#007-co2-target" } +Number:Dimensionless Biostar_Co2Content              "CO2 Content"                        { channel="guntamatic:biostar:mybiostar:status#008-co2-content" } +Number:Temperature   Biostar_ReturnTempTarget        "Return temp target"                 { channel="guntamatic:biostar:mybiostar:status#009-return-temp-target" } +Number               Biostar_StatusCode              "Status code"                        { channel="guntamatic:biostar:mybiostar:status#010-status-code" } +Number:Dimensionless Biostar_Efficiency              "Efficiency"                         { channel="guntamatic:biostar:mybiostar:status#011-efficiency" } +Number:Dimensionless Biostar_Output2                 "Output"                             { channel="guntamatic:biostar:mybiostar:status#012-output" } +Number:Dimensionless Biostar_ExtractorSystem         "Extractor System"                   { channel="guntamatic:biostar:mybiostar:status#013-extractor-system" } +String               Biostar_FeedTurbine             "Feed Turbine"                       { channel="guntamatic:biostar:mybiostar:status#014-feed-turbine" } +Number:Dimensionless Biostar_DischargeMotor          "Discharge motor"                    { channel="guntamatic:biostar:mybiostar:status#015-discharge-motor" } +Number:Dimensionless Biostar_G1Target                "G1 Target"                          { channel="guntamatic:biostar:mybiostar:status#016-g1-target" } +Number:Temperature   Biostar_BufferTop               "Buffer Top"                         { channel="guntamatic:biostar:mybiostar:status#017-buffer-top" } +Number:Temperature   Biostar_BufferMid               "Buffer Mid"                         { channel="guntamatic:biostar:mybiostar:status#018-buffer-mid" } +Number:Temperature   Biostar_BufferBtm               "Buffer Btm"                         { channel="guntamatic:biostar:mybiostar:status#019-buffer-btm" } +Switch               Biostar_PumpHp0                 "Pump HP0"                           { channel="guntamatic:biostar:mybiostar:status#020-pump-hp0" } +Number:Temperature   Biostar_Dhw0                    "DHW 0"                              { channel="guntamatic:biostar:mybiostar:status#021-dhw-0" } +Switch               Biostar_BDhw0                   "B DHW 0"                            { channel="guntamatic:biostar:mybiostar:status#022-b-dhw-0" } +Number:Temperature   Biostar_Dhw1                    "DHW 1"                              { channel="guntamatic:biostar:mybiostar:status#023-dhw-1" } +Switch               Biostar_BDhw1                   "B DHW 1"                            { channel="guntamatic:biostar:mybiostar:status#024-b-dhw-1" } +Number:Temperature   Biostar_Dhw2                    "DHW 2"                              { channel="guntamatic:biostar:mybiostar:status#025-dhw-2" } +Switch               Biostar_BDhw2                   "B DHW 2"                            { channel="guntamatic:biostar:mybiostar:status#026-b-dhw-2" } +Number:Temperature   Biostar_RoomTempHc0             "Room Temp:HC 0"                     { channel="guntamatic:biostar:mybiostar:status#027-room-temp-hc-0" } +Switch               Biostar_HeatCirc0               "Heat Circ. 0"                       { channel="guntamatic:biostar:mybiostar:status#028-heat-circ-0" } +Number:Temperature   Biostar_RoomTempHc1             "Room Temp:HC 1"                     { channel="guntamatic:biostar:mybiostar:status#029-room-temp-hc-1" } +Number:Temperature   Biostar_FlowTarget1             "Flow Target 1"                      { channel="guntamatic:biostar:mybiostar:status#030-flow-target-1" } +Number:Temperature   Biostar_FlowIs1                 "Flow is 1"                          { channel="guntamatic:biostar:mybiostar:status#031-flow-is-1" } +String               Biostar_Mixer1                  "Mixer 1"                            { channel="guntamatic:biostar:mybiostar:status#032-mixer-1" } +Switch               Biostar_HeatCirc1               "Heat Circ. 1"                       { channel="guntamatic:biostar:mybiostar:status#033-heat-circ-1" } +Number:Temperature   Biostar_RoomTempHc2             "Room Temp:HC 2"                     { channel="guntamatic:biostar:mybiostar:status#034-room-temp-hc-2" } +Number:Temperature   Biostar_FlowTarget2             "Flow Target 2"                      { channel="guntamatic:biostar:mybiostar:status#035-flow-target-2" } +Number:Temperature   Biostar_FlowIs2                 "Flow is 2"                          { channel="guntamatic:biostar:mybiostar:status#036-flow-is-2" } +String               Biostar_Mixer2                  "Mixer 2"                            { channel="guntamatic:biostar:mybiostar:status#037-mixer-2" } +Switch               Biostar_HeatCirc2               "Heat Circ. 2"                       { channel="guntamatic:biostar:mybiostar:status#038-heat-circ-2" } +Number:Temperature   Biostar_RoomTempHc3             "Room Temp:HC 3"                     { channel="guntamatic:biostar:mybiostar:status#039-room-temp-hc-3" } +Switch               Biostar_HeatCirc3               "Heat Circ. 3"                       { channel="guntamatic:biostar:mybiostar:status#040-heat-circ-3" } +Number:Temperature   Biostar_RoomTempHc4             "Room Temp:HC 4"                     { channel="guntamatic:biostar:mybiostar:status#041-room-temp-hc-4" } +Number:Temperature   Biostar_FlowTarget4             "Flow Target 4"                      { channel="guntamatic:biostar:mybiostar:status#042-flow-target-4" } +Number:Temperature   Biostar_FlowIs4                 "Flow is 4"                          { channel="guntamatic:biostar:mybiostar:status#043-flow-is-4" } +String               Biostar_Mixer4                  "Mixer 4"                            { channel="guntamatic:biostar:mybiostar:status#044-mixer-4" } +Switch               Biostar_HeatCirc4               "Heat Circ. 4"                       { channel="guntamatic:biostar:mybiostar:status#045-heat-circ-4" } +Number:Temperature   Biostar_RoomTempHc5             "Room Temp:HC 5"                     { channel="guntamatic:biostar:mybiostar:status#046-room-temp-hc-5" } +Number:Temperature   Biostar_FlowTarget5             "Flow Target 5"                      { channel="guntamatic:biostar:mybiostar:status#047-flow-target-5" } +Number:Temperature   Biostar_FlowIs5                 "Flow is 5"                          { channel="guntamatic:biostar:mybiostar:status#048-flow-is-5" } +String               Biostar_Mixer5                  "Mixer 5"                            { channel="guntamatic:biostar:mybiostar:status#049-mixer-5" } +Switch               Biostar_HeatCirc5               "Heat Circ. 5"                       { channel="guntamatic:biostar:mybiostar:status#050-heat-circ-5" } +Number:Temperature   Biostar_RoomTempHc6             "Room Temp:HC 6"                     { channel="guntamatic:biostar:mybiostar:status#051-room-temp-hc-6" } +Switch               Biostar_HeatCirc6               "Heat Circ. 6"                       { channel="guntamatic:biostar:mybiostar:status#052-heat-circ-6" } +Number:Temperature   Biostar_RoomTempHc7             "Room Temp:HC 7"                     { channel="guntamatic:biostar:mybiostar:status#053-room-temp-hc-7" } +Number:Temperature   Biostar_FlowTarget7             "Flow Target 7"                      { channel="guntamatic:biostar:mybiostar:status#054-flow-target-7" } +Number:Temperature   Biostar_FlowIs7                 "Flow is 7"                          { channel="guntamatic:biostar:mybiostar:status#055-flow-is-7" } +String               Biostar_Mixer7                  "Mixer 7"                            { channel="guntamatic:biostar:mybiostar:status#056-mixer-7" } +Switch               Biostar_HeatCirc7               "Heat Circ. 7"                       { channel="guntamatic:biostar:mybiostar:status#057-heat-circ-7" } +Number:Temperature   Biostar_RoomTempHc8             "Room Temp:HC 8"                     { channel="guntamatic:biostar:mybiostar:status#058-room-temp-hc-8" } +Number:Temperature   Biostar_FlowTarget8             "Flow Target 8"                      { channel="guntamatic:biostar:mybiostar:status#059-flow-target-8" } +Number:Temperature   Biostar_FlowIs8                 "Flow is 8"                          { channel="guntamatic:biostar:mybiostar:status#060-flow-is-8" } +String               Biostar_Mixer8                  "Mixer 8"                            { channel="guntamatic:biostar:mybiostar:status#061-mixer-8" } +Switch               Biostar_HeatCirc8               "Heat Circ. 8"                       { channel="guntamatic:biostar:mybiostar:status#062-heat-circ-8" } +String               Biostar_FuelLevel               "Fuel Level"                         { channel="guntamatic:biostar:mybiostar:status#065-fuel-level" } +String               Biostar_Stb                     "STB"                                { channel="guntamatic:biostar:mybiostar:status#066-stb" } +String               Biostar_Tks                     "TKS"                                { channel="guntamatic:biostar:mybiostar:status#067-tks" } +Switch               Biostar_BoilerApproval          "Boiler approval"                    { channel="guntamatic:biostar:mybiostar:status#068-boiler-approval" } +String               Biostar_Programme               "Programme"                          { channel="guntamatic:biostar:mybiostar:status#069-programme" } +String               Biostar_ProgramHc0              "Program HC0"                        { channel="guntamatic:biostar:mybiostar:status#070-program-hc0" } +String               Biostar_ProgramHc1              "Program HC1"                        { channel="guntamatic:biostar:mybiostar:status#071-program-hc1" } +String               Biostar_ProgramHc2              "Program HC2"                        { channel="guntamatic:biostar:mybiostar:status#072-program-hc2" } +String               Biostar_ProgramHc3              "Program HC3"                        { channel="guntamatic:biostar:mybiostar:status#073-program-hc3" } +String               Biostar_ProgramHc4              "Program HC4"                        { channel="guntamatic:biostar:mybiostar:status#074-program-hc4" } +String               Biostar_ProgramHc5              "Program HC5"                        { channel="guntamatic:biostar:mybiostar:status#075-program-hc5" } +String               Biostar_ProgramHc6              "Program HC6"                        { channel="guntamatic:biostar:mybiostar:status#076-program-hc6" } +String               Biostar_ProgramHc7              "Program HC7"                        { channel="guntamatic:biostar:mybiostar:status#077-program-hc7" } +String               Biostar_ProgramHc8              "Program HC8"                        { channel="guntamatic:biostar:mybiostar:status#078-program-hc8" } +String               Biostar_Interuption0            "Interuption 0"                      { channel="guntamatic:biostar:mybiostar:status#079-interuption-0" } +String               Biostar_Interuption1            "Interuption 1"                      { channel="guntamatic:biostar:mybiostar:status#080-interuption-1" } +Number               Biostar_Serial                  "Serial"                             { channel="guntamatic:biostar:mybiostar:status#081-serial" } +String               Biostar_Version                 "Version"                            { channel="guntamatic:biostar:mybiostar:status#082-version" } +Number:Time          Biostar_RunningTime             "Running Time"                       { channel="guntamatic:biostar:mybiostar:status#083-running-time" } +Number:Time          Biostar_ServiceHrs              "Service Hrs"                        { channel="guntamatic:biostar:mybiostar:status#084-service-hrs" } +Number:Time          Biostar_EmptyAshIn              "Empty ash in"                       { channel="guntamatic:biostar:mybiostar:status#085-empty-ash-in" } +Number:Temperature   Biostar_FlowIs0                 "Flow is 0"                          { channel="guntamatic:biostar:mybiostar:status#086-flow-is-0" } +Number:Temperature   Biostar_FlowIs3                 "Flow is 3"                          { channel="guntamatic:biostar:mybiostar:status#087-flow-is-3" } +Number:Temperature   Biostar_FlowIs6                 "Flow is 6"                          { channel="guntamatic:biostar:mybiostar:status#088-flow-is-6" } +Number:Volume        Biostar_FuelCounter             "Fuel counter"                       { channel="guntamatic:biostar:mybiostar:status#089-fuel-counter" } +Number:Dimensionless Biostar_BufferLoad              "Buffer load."                       { channel="guntamatic:biostar:mybiostar:status#090-buffer-load" } +Number:Temperature   Biostar_BufferTop0              "Buffer Top 0"                       { channel="guntamatic:biostar:mybiostar:status#091-buffer-top-0" } +Number:Temperature   Biostar_BufferBtm0              "Buffer Btm 0"                       { channel="guntamatic:biostar:mybiostar:status#092-buffer-btm-0" } +Number:Temperature   Biostar_BufferTop1              "Buffer Top 1"                       { channel="guntamatic:biostar:mybiostar:status#093-buffer-top-1" } +Number:Temperature   Biostar_BufferBtm1              "Buffer Btm 1"                       { channel="guntamatic:biostar:mybiostar:status#094-buffer-btm-1" } +Number:Temperature   Biostar_BufferTop2              "Buffer Top 2"                       { channel="guntamatic:biostar:mybiostar:status#095-buffer-top-2" } +Number:Temperature   Biostar_BufferBtm2              "Buffer Btm 2"                       { channel="guntamatic:biostar:mybiostar:status#096-buffer-btm-2" } +Switch               Biostar_BExtraWw0               "B extra-WW. 0"                      { channel="guntamatic:biostar:mybiostar:status#097-b-extra-ww-0" } +Switch               Biostar_BExtraWw1               "B extra-WW. 1"                      { channel="guntamatic:biostar:mybiostar:status#098-b-extra-ww-1" } +Switch               Biostar_BExtraWw2               "B extra-WW. 2"                      { channel="guntamatic:biostar:mybiostar:status#099-b-extra-ww-2" } +Switch               Biostar_AuxiliaryPump0          "Auxiliary pump 0"                   { channel="guntamatic:biostar:mybiostar:status#100-auxiliary-pump-0" } +Switch               Biostar_AuxiliaryPump1          "Auxiliary pump 1"                   { channel="guntamatic:biostar:mybiostar:status#101-auxiliary-pump-1" } +Switch               Biostar_AuxiliaryPump2          "Auxiliary pump 2"                   { channel="guntamatic:biostar:mybiostar:status#102-auxiliary-pump-2" } +String               Biostar_BoilersConditionNo      "Boiler´s condition no."             { channel="guntamatic:biostar:mybiostar:status#104-boilers-condition-no" } +Number:Temperature   Biostar_BufferT5                "Buffer T5"                          { channel="guntamatic:biostar:mybiostar:status#108-buffer-t5" } +Number:Temperature   Biostar_BufferT6                "Buffer T6"                          { channel="guntamatic:biostar:mybiostar:status#109-buffer-t6" } +Number:Temperature   Biostar_BufferT7                "Buffer T7"                          { channel="guntamatic:biostar:mybiostar:status#110-buffer-t7" } +Number:Temperature   Biostar_ExtraWw0                "Extra-WW. 0"                        { channel="guntamatic:biostar:mybiostar:status#111-extra-ww-0" } +Number:Temperature   Biostar_ExtraWw1                "Extra-WW. 1"                        { channel="guntamatic:biostar:mybiostar:status#112-extra-ww-1" } +Number:Temperature   Biostar_ExtraWw2                "Extra-WW. 2"                        { channel="guntamatic:biostar:mybiostar:status#113-extra-ww-2" } +Number:Dimensionless Biostar_Grate                   "Grate"                              { channel="guntamatic:biostar:mybiostar:status#114-grate" } ``` ### Rule diff --git a/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticBindingConstants.java b/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticBindingConstants.java index 8e8bbbe5c8ecc..30040284cb083 100644 --- a/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticBindingConstants.java +++ b/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticBindingConstants.java @@ -42,37 +42,37 @@ public class GuntamaticBindingConstants { public static final String GROUP_CONTROL = "control#"; // List of all Channel ids - public static final String CHANNEL_CONTROLBOILERAPPROVAL = GROUP_CONTROL + "boilerApproval"; - public static final String CHANNEL_CONTROLPROGRAM = GROUP_CONTROL + "program"; - public static final String CHANNEL_CONTROLHEATCIRCPROGRAM0 = GROUP_CONTROL + "heatCircProgram0"; - public static final String CHANNEL_CONTROLHEATCIRCPROGRAM1 = GROUP_CONTROL + "heatCircProgram1"; - public static final String CHANNEL_CONTROLHEATCIRCPROGRAM2 = GROUP_CONTROL + "heatCircProgram2"; - public static final String CHANNEL_CONTROLHEATCIRCPROGRAM3 = GROUP_CONTROL + "heatCircProgram3"; - public static final String CHANNEL_CONTROLHEATCIRCPROGRAM4 = GROUP_CONTROL + "heatCircProgram4"; - public static final String CHANNEL_CONTROLHEATCIRCPROGRAM5 = GROUP_CONTROL + "heatCircProgram5"; - public static final String CHANNEL_CONTROLHEATCIRCPROGRAM6 = GROUP_CONTROL + "heatCircProgram6"; - public static final String CHANNEL_CONTROLHEATCIRCPROGRAM7 = GROUP_CONTROL + "heatCircProgram7"; - public static final String CHANNEL_CONTROLHEATCIRCPROGRAM8 = GROUP_CONTROL + "heatCircProgram8"; - public static final String CHANNEL_CONTROLWWHEAT0 = GROUP_CONTROL + "wwHeat0"; - public static final String CHANNEL_CONTROLWWHEAT1 = GROUP_CONTROL + "wwHeat1"; - public static final String CHANNEL_CONTROLWWHEAT2 = GROUP_CONTROL + "wwHeat2"; - public static final String CHANNEL_CONTROLEXTRAWWHEAT0 = GROUP_CONTROL + "extraWwHeat0"; - public static final String CHANNEL_CONTROLEXTRAWWHEAT1 = GROUP_CONTROL + "extraWwHeat1"; - public static final String CHANNEL_CONTROLEXTRAWWHEAT2 = GROUP_CONTROL + "extraWwHeat2"; + public static final String CHANNEL_CONTROL_BOILERAPPROVAL = GROUP_CONTROL + "boiler-approval"; + public static final String CHANNEL_CONTROL_PROGRAM = GROUP_CONTROL + "program"; + public static final String CHANNEL_CONTROL_HEATCIRCPROGRAM0 = GROUP_CONTROL + "heat-circ-program-0"; + public static final String CHANNEL_CONTROL_HEATCIRCPROGRAM1 = GROUP_CONTROL + "heat-circ-program-1"; + public static final String CHANNEL_CONTROL_HEATCIRCPROGRAM2 = GROUP_CONTROL + "heat-circ-program-2"; + public static final String CHANNEL_CONTROL_HEATCIRCPROGRAM3 = GROUP_CONTROL + "heat-circ-program-3"; + public static final String CHANNEL_CONTROL_HEATCIRCPROGRAM4 = GROUP_CONTROL + "heat-circ-program-4"; + public static final String CHANNEL_CONTROL_HEATCIRCPROGRAM5 = GROUP_CONTROL + "heat-circ-program-5"; + public static final String CHANNEL_CONTROL_HEATCIRCPROGRAM6 = GROUP_CONTROL + "heat-circ-program-6"; + public static final String CHANNEL_CONTROL_HEATCIRCPROGRAM7 = GROUP_CONTROL + "heat-circ-program-7"; + public static final String CHANNEL_CONTROL_HEATCIRCPROGRAM8 = GROUP_CONTROL + "heat-circ-program-8"; + public static final String CHANNEL_CONTROL_WWHEAT0 = GROUP_CONTROL + "ww-heat-0"; + public static final String CHANNEL_CONTROL_WWHEAT1 = GROUP_CONTROL + "ww-heat-1"; + public static final String CHANNEL_CONTROL_WWHEAT2 = GROUP_CONTROL + "ww-heat-2"; + public static final String CHANNEL_CONTROL_EXTRAWWHEAT0 = GROUP_CONTROL + "extra-ww-heat-0"; + public static final String CHANNEL_CONTROL_EXTRAWWHEAT1 = GROUP_CONTROL + "extra-ww-heat-1"; + public static final String CHANNEL_CONTROL_EXTRAWWHEAT2 = GROUP_CONTROL + "extra-ww-heat-2"; - public static final List STATIC_CHANNEL_IDS = Arrays.asList(CHANNEL_CONTROLBOILERAPPROVAL, - CHANNEL_CONTROLPROGRAM, CHANNEL_CONTROLHEATCIRCPROGRAM0, CHANNEL_CONTROLHEATCIRCPROGRAM1, - CHANNEL_CONTROLHEATCIRCPROGRAM2, CHANNEL_CONTROLHEATCIRCPROGRAM3, CHANNEL_CONTROLHEATCIRCPROGRAM4, - CHANNEL_CONTROLHEATCIRCPROGRAM5, CHANNEL_CONTROLHEATCIRCPROGRAM6, CHANNEL_CONTROLHEATCIRCPROGRAM7, - CHANNEL_CONTROLHEATCIRCPROGRAM8, CHANNEL_CONTROLWWHEAT0, CHANNEL_CONTROLWWHEAT1, CHANNEL_CONTROLWWHEAT2, - CHANNEL_CONTROLEXTRAWWHEAT0, CHANNEL_CONTROLEXTRAWWHEAT1, CHANNEL_CONTROLEXTRAWWHEAT2); + public static final List STATIC_CHANNEL_IDS = Arrays.asList(CHANNEL_CONTROL_BOILERAPPROVAL, + CHANNEL_CONTROL_PROGRAM, CHANNEL_CONTROL_HEATCIRCPROGRAM0, CHANNEL_CONTROL_HEATCIRCPROGRAM1, + CHANNEL_CONTROL_HEATCIRCPROGRAM2, CHANNEL_CONTROL_HEATCIRCPROGRAM3, CHANNEL_CONTROL_HEATCIRCPROGRAM4, + CHANNEL_CONTROL_HEATCIRCPROGRAM5, CHANNEL_CONTROL_HEATCIRCPROGRAM6, CHANNEL_CONTROL_HEATCIRCPROGRAM7, + CHANNEL_CONTROL_HEATCIRCPROGRAM8, CHANNEL_CONTROL_WWHEAT0, CHANNEL_CONTROL_WWHEAT1, CHANNEL_CONTROL_WWHEAT2, + CHANNEL_CONTROL_EXTRAWWHEAT0, CHANNEL_CONTROL_EXTRAWWHEAT1, CHANNEL_CONTROL_EXTRAWWHEAT2); - public static final List STATIC_CHANNEL_IDS_WOBOILERAPP = Arrays.asList(CHANNEL_CONTROLPROGRAM, - CHANNEL_CONTROLHEATCIRCPROGRAM0, CHANNEL_CONTROLHEATCIRCPROGRAM1, CHANNEL_CONTROLHEATCIRCPROGRAM2, - CHANNEL_CONTROLHEATCIRCPROGRAM3, CHANNEL_CONTROLHEATCIRCPROGRAM4, CHANNEL_CONTROLHEATCIRCPROGRAM5, - CHANNEL_CONTROLHEATCIRCPROGRAM6, CHANNEL_CONTROLHEATCIRCPROGRAM7, CHANNEL_CONTROLHEATCIRCPROGRAM8, - CHANNEL_CONTROLWWHEAT0, CHANNEL_CONTROLWWHEAT1, CHANNEL_CONTROLWWHEAT2, CHANNEL_CONTROLEXTRAWWHEAT0, - CHANNEL_CONTROLEXTRAWWHEAT1, CHANNEL_CONTROLEXTRAWWHEAT2); + public static final List STATIC_CHANNEL_IDS_WOBOILERAPP = Arrays.asList(CHANNEL_CONTROL_PROGRAM, + CHANNEL_CONTROL_HEATCIRCPROGRAM0, CHANNEL_CONTROL_HEATCIRCPROGRAM1, CHANNEL_CONTROL_HEATCIRCPROGRAM2, + CHANNEL_CONTROL_HEATCIRCPROGRAM3, CHANNEL_CONTROL_HEATCIRCPROGRAM4, CHANNEL_CONTROL_HEATCIRCPROGRAM5, + CHANNEL_CONTROL_HEATCIRCPROGRAM6, CHANNEL_CONTROL_HEATCIRCPROGRAM7, CHANNEL_CONTROL_HEATCIRCPROGRAM8, + CHANNEL_CONTROL_WWHEAT0, CHANNEL_CONTROL_WWHEAT1, CHANNEL_CONTROL_WWHEAT2, CHANNEL_CONTROL_EXTRAWWHEAT0, + CHANNEL_CONTROL_EXTRAWWHEAT1, CHANNEL_CONTROL_EXTRAWWHEAT2); public static final String GROUP_STATUS = "status#"; diff --git a/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandler.java b/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandler.java index ee68395ec1398..0d4ee55eb0e28 100644 --- a/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandler.java +++ b/bundles/org.openhab.binding.guntamatic/src/main/java/org/openhab/binding/guntamatic/internal/GuntamaticHandler.java @@ -125,11 +125,11 @@ public void handleCommand(ChannelUID channelUID, Command command) { Map map; String channelID = channelUID.getId(); switch (channelID) { - case CHANNEL_CONTROLBOILERAPPROVAL: + case CHANNEL_CONTROL_BOILERAPPROVAL: param = getThing().getProperties().get(PARAMETER_BOILERAPPROVAL); map = MAP_COMMAND_PARAM_APPROVAL; break; - case CHANNEL_CONTROLPROGRAM: + case CHANNEL_CONTROL_PROGRAM: param = getThing().getProperties().get(PARAMETER_PROGRAM); ThingTypeUID thingTypeUID = getThing().getThingTypeUID(); @@ -141,29 +141,29 @@ public void handleCommand(ChannelUID channelUID, Command command) { map = MAP_COMMAND_PARAM_PROG_WOMANU; } break; - case CHANNEL_CONTROLHEATCIRCPROGRAM0: - case CHANNEL_CONTROLHEATCIRCPROGRAM1: - case CHANNEL_CONTROLHEATCIRCPROGRAM2: - case CHANNEL_CONTROLHEATCIRCPROGRAM3: - case CHANNEL_CONTROLHEATCIRCPROGRAM4: - case CHANNEL_CONTROLHEATCIRCPROGRAM5: - case CHANNEL_CONTROLHEATCIRCPROGRAM6: - case CHANNEL_CONTROLHEATCIRCPROGRAM7: - case CHANNEL_CONTROLHEATCIRCPROGRAM8: + case CHANNEL_CONTROL_HEATCIRCPROGRAM0: + case CHANNEL_CONTROL_HEATCIRCPROGRAM1: + case CHANNEL_CONTROL_HEATCIRCPROGRAM2: + case CHANNEL_CONTROL_HEATCIRCPROGRAM3: + case CHANNEL_CONTROL_HEATCIRCPROGRAM4: + case CHANNEL_CONTROL_HEATCIRCPROGRAM5: + case CHANNEL_CONTROL_HEATCIRCPROGRAM6: + case CHANNEL_CONTROL_HEATCIRCPROGRAM7: + case CHANNEL_CONTROL_HEATCIRCPROGRAM8: param = getThing().getProperties().get(PARAMETER_HEATCIRCPROGRAM).replace("x", channelID.substring(channelID.length() - 1)); map = MAP_COMMAND_PARAM_HC; break; - case CHANNEL_CONTROLWWHEAT0: - case CHANNEL_CONTROLWWHEAT1: - case CHANNEL_CONTROLWWHEAT2: + case CHANNEL_CONTROL_WWHEAT0: + case CHANNEL_CONTROL_WWHEAT1: + case CHANNEL_CONTROL_WWHEAT2: param = getThing().getProperties().get(PARAMETER_WWHEAT).replace("x", channelID.substring(channelID.length() - 1)); map = MAP_COMMAND_PARAM_WW; break; - case CHANNEL_CONTROLEXTRAWWHEAT0: - case CHANNEL_CONTROLEXTRAWWHEAT1: - case CHANNEL_CONTROLEXTRAWWHEAT2: + case CHANNEL_CONTROL_EXTRAWWHEAT0: + case CHANNEL_CONTROL_EXTRAWWHEAT1: + case CHANNEL_CONTROL_EXTRAWWHEAT2: param = getThing().getProperties().get(PARAMETER_EXTRAWWHEAT).replace("x", channelID.substring(channelID.length() - 1)); map = MAP_COMMAND_PARAM_WW; @@ -199,7 +199,7 @@ private void parseAndUpdate(String html) { String channel = channels.get(i); Unit unit = units.get(i); if ((channel != null) && (i < daqdata.length)) { - String channelId = GROUP_STATUS + String.format("%03d", i) + "_" + channel; + String channelId = GROUP_STATUS + String.format("%03d", i) + "-" + channel; String value = daqdata[i]; Channel chn = thing.getChannel(channelId); if ((chn != null) && (value != null)) { @@ -291,7 +291,7 @@ private void parseAndInit(String html) { String label = param[0].replace("C02", "CO2"); if (!"reserved".equals(label)) { - String channel = toLowerCamelCase(replaceUmlaut(label)); + String channel = toLowerCaseHyphen(replaceUmlaut(label)); label = label.substring(0, 1).toUpperCase() + label.substring(1); String unitStr = ((param.length == 1) || param[1].isBlank()) ? "" : param[1].trim(); @@ -335,7 +335,7 @@ private void parseAndInit(String html) { } } - String channelId = String.format("%03d", i) + "_" + channel; + String channelId = String.format("%03d", i) + "-" + channel; ChannelTypeUID channelTypeUID = new ChannelTypeUID(BINDING_ID, channelId); StateDescriptionFragmentBuilder stateDescriptionFragmentBuilder = StateDescriptionFragmentBuilder .create().withReadOnly(true); @@ -400,25 +400,9 @@ private static String replaceUmlaut(String input) { return output; } - private String toLowerCamelCase(String input) { - char delimiter = ' '; - String output = input.replace("´", "").replaceAll("[^\\w]", String.valueOf(delimiter)); - - StringBuilder builder = new StringBuilder(); - boolean nextCharLow = true; - - for (int i = 0; i < output.length(); i++) { - char currentChar = output.charAt(i); - if (delimiter == currentChar) { - nextCharLow = false; - } else if (nextCharLow) { - builder.append(Character.toLowerCase(currentChar)); - } else { - builder.append(Character.toUpperCase(currentChar)); - nextCharLow = true; - } - } - return builder.toString(); + private String toLowerCaseHyphen(String input) { + return input.replaceAll("[^a-zA-Z0-9\\s]", "").trim().replaceAll("([a-z])([A-Z0-9])", "$1-$2") + .replaceAll("\\s+", "-").toLowerCase(); } private @Nullable String sendGetRequest(String url, String... params) { @@ -503,7 +487,6 @@ public void initialize() { updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, "Invalid hostname configuration"); } else { updateStatus(ThingStatus.UNKNOWN); - logger.debug("scheduleWithFixedDelay(pollGuntamatic, 1, {}, TimeUnit.SECONDS)", config.refreshInterval); pollingFuture = scheduler.scheduleWithFixedDelay(this::pollGuntamatic, 1, config.refreshInterval, TimeUnit.SECONDS); } diff --git a/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/thing/thing-types.xml b/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/thing/thing-types.xml index e8d3483a44413..3877b4e35663b 100644 --- a/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/thing/thing-types.xml +++ b/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/thing/thing-types.xml @@ -166,55 +166,55 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -226,49 +226,49 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/update/update.xml b/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/update/update.xml index a525d19e4c022..c967e56ad4cf0 100644 --- a/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/update/update.xml +++ b/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/update/update.xml @@ -23,55 +23,55 @@ - + guntamatic:controlBoilerApproval guntamatic:controlProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlWwHeat - + guntamatic:controlWwHeat - + guntamatic:controlWwHeat - + guntamatic:controlExtraWwHeat - + guntamatic:controlExtraWwHeat - + guntamatic:controlExtraWwHeat @@ -99,49 +99,49 @@ guntamatic:controlProgramWOManu - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlWwHeat - + guntamatic:controlWwHeat - + guntamatic:controlWwHeat - + guntamatic:controlExtraWwHeat - + guntamatic:controlExtraWwHeat - + guntamatic:controlExtraWwHeat @@ -167,55 +167,55 @@ - + guntamatic:controlBoilerApproval guntamatic:controlProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlWwHeat - + guntamatic:controlWwHeat - + guntamatic:controlWwHeat - + guntamatic:controlExtraWwHeat - + guntamatic:controlExtraWwHeat - + guntamatic:controlExtraWwHeat @@ -241,55 +241,55 @@ - + guntamatic:controlBoilerApproval guntamatic:controlProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlWwHeat - + guntamatic:controlWwHeat - + guntamatic:controlWwHeat - + guntamatic:controlExtraWwHeat - + guntamatic:controlExtraWwHeat - + guntamatic:controlExtraWwHeat @@ -315,55 +315,55 @@ - + guntamatic:controlBoilerApproval guntamatic:controlProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlWwHeat - + guntamatic:controlWwHeat - + guntamatic:controlWwHeat - + guntamatic:controlExtraWwHeat - + guntamatic:controlExtraWwHeat - + guntamatic:controlExtraWwHeat @@ -389,55 +389,55 @@ - + guntamatic:controlBoilerApproval guntamatic:controlProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlWwHeat - + guntamatic:controlWwHeat - + guntamatic:controlWwHeat - + guntamatic:controlExtraWwHeat - + guntamatic:controlExtraWwHeat - + guntamatic:controlExtraWwHeat @@ -463,55 +463,55 @@ - + guntamatic:controlBoilerApproval guntamatic:controlProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlWwHeat - + guntamatic:controlWwHeat - + guntamatic:controlWwHeat - + guntamatic:controlExtraWwHeat - + guntamatic:controlExtraWwHeat - + guntamatic:controlExtraWwHeat @@ -539,49 +539,49 @@ guntamatic:controlProgramWOManu - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlHeatCircProgram - + guntamatic:controlWwHeat - + guntamatic:controlWwHeat - + guntamatic:controlWwHeat - + guntamatic:controlExtraWwHeat - + guntamatic:controlExtraWwHeat - + guntamatic:controlExtraWwHeat From c2e121970702892687211255dc28a8b1ddd02327 Mon Sep 17 00:00:00 2001 From: Michael Weger Date: Thu, 19 Dec 2024 09:57:27 +0100 Subject: [PATCH 7/8] rebuild Signed-off-by: Michael Weger From c54d9579509d07941a3b8f3575c492a5e6ed1489 Mon Sep 17 00:00:00 2001 From: Michael Weger Date: Thu, 19 Dec 2024 13:06:51 +0100 Subject: [PATCH 8/8] review findings, round #2 Signed-off-by: Michael Weger --- .../org.openhab.binding.guntamatic/README.md | 30 +- .../resources/OH-INF/thing/thing-types.xml | 188 ++++++------ .../main/resources/OH-INF/update/update.xml | 268 +++++++++--------- 3 files changed, 243 insertions(+), 243 deletions(-) diff --git a/bundles/org.openhab.binding.guntamatic/README.md b/bundles/org.openhab.binding.guntamatic/README.md index 0a7346a00566e..35ad6f124d7ae 100644 --- a/bundles/org.openhab.binding.guntamatic/README.md +++ b/bundles/org.openhab.binding.guntamatic/README.md @@ -51,21 +51,21 @@ The Guntamatic Heating System can be controlled using the following channels: | --------------------- | ------------------------------------------------------------------------------- | -------- | :--: | :-------------------: | :------: | :------: | | `boiler-approval` | Set Boiler Approval (`AUTO`, `OFF`, `ON`)[1](#f1)) | `String` | | 🔐 W1 | R/W | true | | `program` | Set Program (`OFF`, `NORMAL`, `WARMWATER`, `MANUAL`[2](#f2)) | `String` | | 🔐 W1 | R/W | false | -| `heat-circ-program-0` | Set Heat Circle 0 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `heat-circ-program-1` | Set Heat Circle 1 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `heat-circ-program-2` | Set Heat Circle 2 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `heat-circ-program-3` | Set Heat Circle 3 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `heat-circ-program-4` | Set Heat Circle 4 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `heat-circ-program-5` | Set Heat Circle 5 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `heat-circ-program-6` | Set Heat Circle 6 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `heat-circ-program-7` | Set Heat Circle 7 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `heat-circ-program-8` | Set Heat Circle 8 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | -| `ww-heat-0` | Trigger Warm Water Circle 0 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | -| `ww-heat-1` | Trigger Warm Water Circle 1 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | -| `ww-heat-2` | Trigger Warm Water Circle 2 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | -| `extra-ww-heat-0` | Trigger Extra Warm Water Circle 0 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | -| `extra-ww-heat-1` | Trigger Extra Warm Water Circle 1 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | -| `extra-ww-heat-2` | Trigger Extra Warm Water Circle 2 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | +| `heat-circ-program-0` | Set Heat Circuit 0 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `heat-circ-program-1` | Set Heat Circuit 1 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `heat-circ-program-2` | Set Heat Circuit 2 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `heat-circ-program-3` | Set Heat Circuit 3 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `heat-circ-program-4` | Set Heat Circuit 4 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `heat-circ-program-5` | Set Heat Circuit 5 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `heat-circ-program-6` | Set Heat Circuit 6 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `heat-circ-program-7` | Set Heat Circuit 7 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `heat-circ-program-8` | Set Heat Circuit 8 Program (`OFF`, `NORMAL`, `HEAT`, `LOWER`) | `String` | | 🔐 W1 | R/W | true | +| `ww-heat-0` | Trigger Warm Water Circuit 0 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | +| `ww-heat-1` | Trigger Warm Water Circuit 1 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | +| `ww-heat-2` | Trigger Warm Water Circuit 2 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | +| `extra-ww-heat-0` | Trigger Extra Warm Water Circuit 0 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | +| `extra-ww-heat-1` | Trigger Extra Warm Water Circuit 1 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | +| `extra-ww-heat-2` | Trigger Extra Warm Water Circuit 2 (`RECHARGE`) | `String` | | 🔐 W1 | R/W | true | - 1) ... Channel is supported by Biostar, Powerchip, Powercorn, Biocom, Pro as well as Therm only [↩](#a1) - 2) ... `MANUAL` is supported by Biostar, Powerchip, Powercorn, Biocom, Pro as well as Therm only [↩](#a2) diff --git a/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/thing/thing-types.xml b/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/thing/thing-types.xml index 3877b4e35663b..c717018341343 100644 --- a/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/thing/thing-types.xml +++ b/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/thing/thing-types.xml @@ -9,8 +9,8 @@ Guntamatic Biostar Pellets Heating System - - + + @@ -29,8 +29,8 @@ Guntamatic Biosmart Log Heating System - - + + @@ -48,8 +48,8 @@ Guntamatic Powerchip WoodChip Heating System - - + + @@ -68,8 +68,8 @@ Guntamatic Powercorn EnergyGrain Heating System. Untested! Please provide Feedback! - - + + @@ -88,8 +88,8 @@ Guntamatic Biocom Pellets Heating System. Untested! Please provide Feedback! - - + + @@ -108,8 +108,8 @@ Guntamatic Pro Pellets or WoodChip Heating System. Untested! Please provide Feedback! - - + + @@ -128,8 +128,8 @@ Guntamatic Therm Pellets Heating System. Untested! Please provide Feedback! - - + + @@ -149,8 +149,8 @@ provide Feedback! - - + + @@ -163,122 +163,122 @@ - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + String Set Program of the Guntamatic Heating System (OFF, NORMAL, WARMWATER, MANUAL) @@ -291,7 +291,7 @@ - + String Set Program of the Guntamatic Heating System (OFF, NORMAL, WARMWATER) @@ -303,7 +303,7 @@ - + String Set Boiler Approval of the Guntamatic Heating System (AUTO, OFF, ON) @@ -315,10 +315,10 @@ - + String - - Set Heat Circle of the Guntamatic Heating System (OFF, NORMAL, HEAT, LOWER) + + Set Heat Circuit of the Guntamatic Heating System (OFF, NORMAL, HEAT, LOWER) @@ -328,20 +328,20 @@ - + String - - Trigger Warm Water Circle of the Guntamatic Heating System (RECHARGE) + + Trigger Warm Water Circuit of the Guntamatic Heating System (RECHARGE) - + String - - Trigger Extra Warm Water Circle of the Guntamatic Heating System (RECHARGE) + + Trigger Extra Warm Water Circuit of the Guntamatic Heating System (RECHARGE) diff --git a/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/update/update.xml b/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/update/update.xml index c967e56ad4cf0..9bfa82a0fd392 100644 --- a/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/update/update.xml +++ b/bundles/org.openhab.binding.guntamatic/src/main/resources/OH-INF/update/update.xml @@ -24,55 +24,55 @@ - guntamatic:controlBoilerApproval + guntamatic:control-boiler-approval - guntamatic:controlProgram + guntamatic:control-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlWwHeat + guntamatic:control-ww-heat - guntamatic:controlWwHeat + guntamatic:control-ww-heat - guntamatic:controlWwHeat + guntamatic:control-ww-heat - guntamatic:controlExtraWwHeat + guntamatic:control-extra-ww-heat - guntamatic:controlExtraWwHeat + guntamatic:control-extra-ww-heat - guntamatic:controlExtraWwHeat + guntamatic:control-extra-ww-heat @@ -97,52 +97,52 @@ - guntamatic:controlProgramWOManu + guntamatic:control-program-wo-manu - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlWwHeat + guntamatic:control-ww-heat - guntamatic:controlWwHeat + guntamatic:control-ww-heat - guntamatic:controlWwHeat + guntamatic:control-ww-heat - guntamatic:controlExtraWwHeat + guntamatic:control-extra-ww-heat - guntamatic:controlExtraWwHeat + guntamatic:control-extra-ww-heat - guntamatic:controlExtraWwHeat + guntamatic:control-extra-ww-heat @@ -168,55 +168,55 @@ - guntamatic:controlBoilerApproval + guntamatic:control-boiler-approval - guntamatic:controlProgram + guntamatic:control-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlWwHeat + guntamatic:control-ww-heat - guntamatic:controlWwHeat + guntamatic:control-ww-heat - guntamatic:controlWwHeat + guntamatic:control-ww-heat - guntamatic:controlExtraWwHeat + guntamatic:control-extra-ww-heat - guntamatic:controlExtraWwHeat + guntamatic:control-extra-ww-heat - guntamatic:controlExtraWwHeat + guntamatic:control-extra-ww-heat @@ -242,55 +242,55 @@ - guntamatic:controlBoilerApproval + guntamatic:control-boiler-approval - guntamatic:controlProgram + guntamatic:control-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlWwHeat + guntamatic:control-ww-heat - guntamatic:controlWwHeat + guntamatic:control-ww-heat - guntamatic:controlWwHeat + guntamatic:control-ww-heat - guntamatic:controlExtraWwHeat + guntamatic:control-extra-ww-heat - guntamatic:controlExtraWwHeat + guntamatic:control-extra-ww-heat - guntamatic:controlExtraWwHeat + guntamatic:control-extra-ww-heat @@ -316,55 +316,55 @@ - guntamatic:controlBoilerApproval + guntamatic:control-boiler-approval - guntamatic:controlProgram + guntamatic:control-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlWwHeat + guntamatic:control-ww-heat - guntamatic:controlWwHeat + guntamatic:control-ww-heat - guntamatic:controlWwHeat + guntamatic:control-ww-heat - guntamatic:controlExtraWwHeat + guntamatic:control-extra-ww-heat - guntamatic:controlExtraWwHeat + guntamatic:control-extra-ww-heat - guntamatic:controlExtraWwHeat + guntamatic:control-extra-ww-heat @@ -390,55 +390,55 @@ - guntamatic:controlBoilerApproval + guntamatic:control-boiler-approval - guntamatic:controlProgram + guntamatic:control-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlWwHeat + guntamatic:control-ww-heat - guntamatic:controlWwHeat + guntamatic:control-ww-heat - guntamatic:controlWwHeat + guntamatic:control-ww-heat - guntamatic:controlExtraWwHeat + guntamatic:control-extra-ww-heat - guntamatic:controlExtraWwHeat + guntamatic:control-extra-ww-heat - guntamatic:controlExtraWwHeat + guntamatic:control-extra-ww-heat @@ -464,55 +464,55 @@ - guntamatic:controlBoilerApproval + guntamatic:control-boiler-approval - guntamatic:controlProgram + guntamatic:control-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlWwHeat + guntamatic:control-ww-heat - guntamatic:controlWwHeat + guntamatic:control-ww-heat - guntamatic:controlWwHeat + guntamatic:control-ww-heat - guntamatic:controlExtraWwHeat + guntamatic:control-extra-ww-heat - guntamatic:controlExtraWwHeat + guntamatic:control-extra-ww-heat - guntamatic:controlExtraWwHeat + guntamatic:control-extra-ww-heat @@ -537,52 +537,52 @@ - guntamatic:controlProgramWOManu + guntamatic:control-program-wo-manu - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlHeatCircProgram + guntamatic:control-heat-circ-program - guntamatic:controlWwHeat + guntamatic:control-ww-heat - guntamatic:controlWwHeat + guntamatic:control-ww-heat - guntamatic:controlWwHeat + guntamatic:control-ww-heat - guntamatic:controlExtraWwHeat + guntamatic:control-extra-ww-heat - guntamatic:controlExtraWwHeat + guntamatic:control-extra-ww-heat - guntamatic:controlExtraWwHeat + guntamatic:control-extra-ww-heat