From 5ace382c3f96fcf06ea321dcd8a414aba6559267 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Koco=C5=84?= Date: Mon, 23 Feb 2026 17:19:16 +0100 Subject: [PATCH] upload --- LICENSE | 21 + README.md | 12 + esphome.yaml | 680 ++++++ module_scrap.html | 5722 +++++++++++++++++++++++++++++++++++++++++++++ rejestry.ods | Bin 0 -> 13567 bytes 5 files changed, 6435 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 esphome.yaml create mode 100644 module_scrap.html create mode 100644 rejestry.ods diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..925c2e8 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 elgatho + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..d286fce --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ + +# Openkospel +Project for implementing kospel heater to Home Assistant using ESPHOME integration. +It is under heavy developement, you are using it at your own risk! + +# Wiring +Tested on modules HW-0519, +![hw-0519 wiring](https://github.com/user-attachments/assets/b32596c1-1ebe-492b-9a8d-2f6e50492b6a) + +HW-97 +![HW97_bb](https://github.com/user-attachments/assets/e09532f6-d848-43f7-8c6e-4e25ddc8e041) + diff --git a/esphome.yaml b/esphome.yaml new file mode 100644 index 0000000..3e41f55 --- /dev/null +++ b/esphome.yaml @@ -0,0 +1,680 @@ +logger: + baud_rate: 0 + +status_led: + pin: GPIO2 +uart: + id: mod_bus + tx_pin: TX + rx_pin: RX + baud_rate: 9600 + stop_bits: 1 + parity: NONE + +modbus: + id: modbus1 + +modbus_controller: + - id: kospel + address: 101 + modbus_id: modbus1 + setup_priority: -11 + update_interval: 20s + command_throttle: 1s + allow_duplicate_commands: true + + +select: + - platform: modbus_controller + id: tryb_pracy + name: "Tryb pracy" + address: 0x0b55 + value_type: U_WORD + entity_category: config + icon: "mdi:toggle-switch" + optionsmap: + "Wyłączony": 0 + "Lato": 1 + "Zima": 2 + "Wakacje": 3 + "Party": 4 + + lambda: |- + uint16_t value = int(id(wbrwf1).state); + int zima = ((value >> 13) & 1); + int lato = ((value >> 11) & 1); + int wakacje = ((value >> 15) & 1); + int party = ((value >> 14) & 1); + if (zima == 1 && lato == 0 && wakacje == 0 && party == 0) { + return std::string("Zima"); + } else if (lato == 1 && zima == 0 && wakacje == 0 && party == 0) { + return std::string("Lato"); + } else if (wakacje == 1) { + return std::string("Wakacje"); + } else if (party == 1) { + return std::string("Party"); + } else { + return std::string("Wyłączony"); + } + + write_lambda: |- + uint16_t reg = int(id(wbrwf1).state); + if (value == 0) { + reg &= ~(1 << 11); + reg &= ~(1 << 13); + reg &= ~(1 << 14); + reg &= ~(1 << 15); + } else if (value == 1) { + reg |= (1 << 11); + reg &= ~(1 << 13); + reg &= ~(1 << 14); + reg &= ~(1 << 15); + } else if (value == 2) { + reg &= ~(1 << 11); + reg |= (1 << 13); + reg &= ~(1 << 14); + reg &= ~(1 << 15); + } + else if (value == 3) { + reg |= (1 << 15); + reg &= ~(1 << 14); + } + else if (value == 4) { + reg &= ~(1 << 15); + reg |= (1 << 14); + } + return reg; + + - platform: modbus_controller + id: config_pump_lift + name: "Wysokość podnoszenia pompy" + address: 0x0b83 + value_type: U_WORD + entity_category: config + icon: "mdi:pump" + optionsmap: + "3m": 0 + "4m": 256 + "5m": 512 + "6m": 768 + "7m": 1024 + "7.5m": 1280 + +number: + - platform: modbus_controller + icon: mdi:water-boiler + id: config_temp_boil_komf + name: "Ustaw temp komfortowa boilera" + address: 0x0b67 + value_type: U_WORD + entity_category: config + min_value: 35 + max_value: 50 + lambda: |- + int value = data[3] << 8 | data[2]; + value = value / 10; + return value ; + write_lambda: |- + int int_value = static_cast(x * 10); + return (int_value << 8) | (int_value >> 8); + + - platform: modbus_controller + id: config_temp_boil_eko + icon: mdi:water-boiler + name: "Ustaw temp ekonomiczna boilera" + address: 0x0b66 + value_type: U_WORD + entity_category: config + min_value: 30 + max_value: 45 + lambda: |- + int value = data[1] << 8 | data[0]; + value = value / 10; + return value ; + write_lambda: |- + int int_value = static_cast(x * 10); + return (int_value << 8) | (int_value >> 8); + + - platform: modbus_controller + id: config_temp_co_manual + icon: mdi:heating-coil + name: "Ustaw temp CO ręczna" + address: 0x0b73 + value_type: U_WORD + entity_category: config + min_value: 30 + max_value: 55 + lambda: |- + int value = data[1] << 8 | data[0]; + value = value / 10; + return value ; + write_lambda: |- + int int_value = static_cast(x * 10); + return (int_value << 8) | (int_value >> 8); + +sensor: + - platform: total_daily_energy + name: "Kospel zużycie energii dzienne" + id: kospel_daily_power_usage + power_id: power_main + restore: true + unit_of_measurement: kWh + device_class: energy + icon: mdi:calendar-clock + + - platform: total_daily_energy + name: "Kospel zużycie energii dzienne CO" + id: kospel_daily_power_usage_co + power_id: power_co + restore: true + unit_of_measurement: kWh + icon: mdi:calendar-clock + device_class: energy + + - platform: total_daily_energy + name: "Kospel zużycie energii dzienne CWU" + id: kospel_daily_power_usage_cwu + power_id: power_cwu + restore: true + device_class: energy + unit_of_measurement: kWh + icon: mdi:calendar-clock + +################################### TIME + + + - platform: modbus_controller + modbus_controller_id: kospel + name: "Time Data (Hours)" + id: time_date + register_type: holding + address: 0x0AF7 + lambda: |- + uint8_t minutes = data[0]; + uint8_t hours = data[2]; + return hours * 100 + minutes; + - platform: modbus_controller + modbus_controller_id: kospel + name: "Temperatura na zewnątrz" + id: temperature_outside + register_type: holding + address: 0x0b4c + device_class: temperature + value_type: S_WORD + unit_of_measurement: "°C" + accuracy_decimals: 1 + filters: + - multiply: 0.1 + lambda: |- + int16_t value = data[item->offset+1] << 8 | data[item->offset]; + return value ; + + - platform: modbus_controller + modbus_controller_id: kospel + name: "Temperatura wewnątrz" + id: temperature_inside + register_type: holding + unit_of_measurement: "°C" + accuracy_decimals: 1 + address: 0x0b4b + device_class: temperature + value_type: S_WORD + lambda: |- + uint16_t value = int(id(wbrwf1).state); + if (((value >> 10) & 1) == 0){ + return NAN; + } + else + { + int16_t sens_value = data[item->offset+1] << 8 | data[item->offset]; + return sens_value; + } + + - platform: modbus_controller + modbus_controller_id: kospel + name: "Temperatura boiler" + id: temperature_boil + register_type: holding + address: 0x0b4a + device_class: temperature + value_type: S_WORD + unit_of_measurement: "°C" + accuracy_decimals: 1 + filters: + - multiply: 0.1 + lambda: |- + int value = data[item->offset+1] << 8 | data[item->offset]; + return value ; + + - platform: modbus_controller + modbus_controller_id: kospel + name: "Temperatura zasilania co min" + id: temp_zas_min + register_type: holding + address: 0x0bba + device_class: temperature + value_type: S_WORD + unit_of_measurement: "°C" + accuracy_decimals: 1 + filters: + - multiply: 0.1 + lambda: |- + int value = data[item->offset+1] << 8 | data[item->offset]; + return value ; + + - platform: modbus_controller + modbus_controller_id: kospel + name: "Temperatura zasilania co max" + id: temp_zas_max + register_type: holding + address: 0x0bbb + device_class: temperature + value_type: S_WORD + unit_of_measurement: "°C" + accuracy_decimals: 1 + filters: + - multiply: 0.1 + lambda: |- + int value = data[item->offset+1] << 8 | data[item->offset]; + return value ; + + - platform: modbus_controller + modbus_controller_id: kospel + name: "Temperatura zasilania co ręczna" + id: temp_zas_man + register_type: holding + address: 0x0b73 + device_class: temperature + value_type: S_WORD + unit_of_measurement: "°C" + accuracy_decimals: 1 + filters: + - multiply: 0.1 + lambda: |- + int value = data[item->offset+1] << 8 | data[item->offset]; + return value ; + - platform: modbus_controller + modbus_controller_id: kospel + name: "Temperatura Wejścia" + id: temperature_in + register_type: holding + address: 0x0b48 + value_type: S_WORD + unit_of_measurement: "°C" + device_class: temperature + accuracy_decimals: 1 + filters: + - multiply: 0.1 + lambda: |- + int value = data[1] << 8 | data[0]; + return value ; + + - platform: modbus_controller + modbus_controller_id: kospel + name: "Temperatura Wyjścia" + id: temperature_out + register_type: holding + address: 0x0b49 + value_type: S_WORD + unit_of_measurement: "°C" + device_class: temperature + accuracy_decimals: 1 + filters: + - multiply: 0.1 + lambda: |- + int value = data[3] << 8 | data[2]; + return value ; + + - platform: modbus_controller + modbus_controller_id: kospel + name: "Temperatura zadana układu" + id: temperature_factor + register_type: holding + address: 0x0b44 + value_type: U_WORD + unit_of_measurement: "°C" + device_class: temperature + accuracy_decimals: 1 + filters: + - multiply: 0.1 + lambda: |- + int value = data[1] << 8 | data[0]; + return value ; + + - platform: modbus_controller + modbus_controller_id: kospel + name: "Temperatura boilera min" + id: temperature_boil_min + register_type: holding + address: 0x0bbe + value_type: U_WORD + unit_of_measurement: "°C" + device_class: temperature + accuracy_decimals: 1 + filters: + - multiply: 0.1 + lambda: |- + int value = data[1] << 8 | data[0]; + return value ; + + - platform: modbus_controller + modbus_controller_id: kospel + name: "Temperatura boilera max" + id: temperature_boil_max + register_type: holding + address: 0x0bbf + value_type: U_WORD + unit_of_measurement: "°C" + device_class: temperature + accuracy_decimals: 1 + filters: + - multiply: 0.1 + lambda: |- + int value = data[1] << 8 | data[0]; + return value ; + + - platform: modbus_controller + modbus_controller_id: kospel + name: "Temperatura boilera komfortowa" + id: temperature_boil_komfort + register_type: holding + address: 0x0b67 + value_type: U_WORD + unit_of_measurement: "°C" + device_class: temperature + accuracy_decimals: 1 + filters: + - multiply: 0.1 + lambda: |- + int value = data[3] << 8 | data[2]; + return value ; + + - platform: modbus_controller + modbus_controller_id: kospel + name: "Temperatura boilera ekonomiczna" + id: temperature_boil_ekonomiczna + register_type: holding + address: 0x0b66 + value_type: U_WORD + unit_of_measurement: "°C" + device_class: temperature + accuracy_decimals: 1 + filters: + - multiply: 0.1 + lambda: |- + int value = data[1] << 8 | data[0]; + return value ; + + - platform: modbus_controller + modbus_controller_id: kospel + name: "Ciśnienie w układzie" + id: presaure + register_type: holding + address: 0x0b4e + value_type: S_WORD + unit_of_measurement: "bar" + accuracy_decimals: 1 + device_class: pressure + filters: + - multiply: 0.01 + lambda: |- + int value = data[1] << 8 | data[0]; + return value ; + + - platform: modbus_controller + modbus_controller_id: kospel + name: "Przepływ" + id: flow + register_type: holding + address: 0x0b4f + value_type: U_WORD + device_class: volume_flow_rate + unit_of_measurement: "l/min" + accuracy_decimals: 1 + filters: + - multiply: 0.1 + lambda: |- + int value = data[item->offset+1] << 8 | data[item->offset]; + return value ; + + - platform: template + name: "Moc" + id: power_main + unit_of_measurement: "kW" + device_class: power + lambda: |- + int value = id(wb_power).state; + if (value > 0 && value <= 24) + { + return value ; + } + else + { return 0; } + - platform: template + name: "Moc CO" + internal: true + id: power_co + unit_of_measurement: "kW" + device_class: power + accuracy_decimals: 1 + lambda: |- + int value = id(wb_power).state; + if (id(sensor_wb_co).state == 1 && id(tdr).state == "co") { + return value; + } else { + return 0; + } + + - platform: template + name: "Moc CWU" + internal: true + id: power_cwu + unit_of_measurement: "kW" + device_class: power + lambda: |- + int value = id(wb_power).state; + if (id(sensor_wb_cwu).state == 1 && id(tdr).state == "cwu") { + return value; + } else { + return 0; + } + + - platform: modbus_controller + modbus_controller_id: kospel + name: "Maksymalna moc kotła" + id: max_power + register_type: holding + address: 0x0b34 + value_type: S_WORD + unit_of_measurement: "kW" + device_class: power + accuracy_decimals: 1 + filters: + - multiply: 0.1 + lambda: |- + int value = data[1] << 8 | data[0]; + return value ; + + + - platform: modbus_controller + modbus_controller_id: kospel + name: "[WB] Wejścia binarne" + internal: true + id: wb + register_type: holding + address: 0x0b51 + + - platform: modbus_controller + modbus_controller_id: kospel + name: "[WB] Wejścia binarne temperatury pokojowe" + internal: true + id: buff + register_type: holding + address: 0x0b8a + + - platform: modbus_controller + modbus_controller_id: kospel + name: "[WB] MOC" + internal: false + id: wb_power + register_type: holding + accuracy_decimals: 1 + filters: + - multiply: 0.1 + address: 0x0b46 + lambda: |- + int value = data[1] << 8 | data[0]; + return value ; + on_value: + - component.update: power_main + - component.update: power_co + - component.update: power_cwu + + - platform: modbus_controller + modbus_controller_id: kospel + name: "[WB] Wejścia binarne rw_flagi_1" + internal: true + id: wbrwf1 + register_type: holding + address: 0x0b55 + + - platform: modbus_controller + modbus_controller_id: kospel + name: "[WB] Błędy" + internal: true + id: errorcode + register_type: holding + address: 0x0b52 + +binary_sensor: + - platform: template + name: "[WB] CO_YES_NO" + lambda: |- + uint16_t value = (int(id(wbrwf1).state) & 0xFF00) >> 8 | (int(id(wbrwf1).state) & 0x00FF); + return ((value >> 4) & 1); + + + - platform: template + name: "[WB] Pompa" + icon: mdi:pump + lambda: |- + uint16_t value = (int(id(wb).state) & 0xFF00) >> 8 | (int(id(wb).state) & 0x00FF); + return (value & 1); + + - platform: template + name: "[WB] Pompa cyrkulacyjna" + lambda: |- + uint16_t value = (int(id(wb).state) & 0xFF00) >> 8 | (int(id(wb).state) & 0x00FF); + return ((value >> 1) & 1); + + + - platform: template + name: "[WB] Wejscie sygnału nadrzędnego" + lambda: |- + uint16_t value = (int(id(wb).state) & 0xFF00) >> 8 | (int(id(wb).state) & 0x00FF); + return ((value >> 3) & 1); + + - platform: template + name: "[WB] Wejście regulatora pokojowego" + icon: mdi:thermostat + lambda: |- + uint16_t value = (int(id(wb).state) & 0xFF00) >> 8 | (int(id(wb).state) & 0x00FF); + return ((value >> 4) & 1); + + - platform: template + name: "[WB] Fun" + lambda: |- + uint16_t value = (int(id(wb).state) & 0xFF00) >> 8 | (int(id(wb).state) & 0x00FF); + return ((value >> 6) & 1); + + - platform: template + name: "[WB] CO" + id: sensor_wb_co + icon: mdi:heating-coil + lambda: |- + uint16_t value = (int(id(wb).state) & 0xFF00) >> 8 | (int(id(wb).state) & 0x00FF); + return ((value >> 7) & 1); + + - platform: template + name: "[WB] CWU" + icon: mdi:faucet-variant + id: sensor_wb_cwu + lambda: |- + return ((int(id(wb).state) >> 8) & 1); + + + #Konfiguracja +text_sensor: + - platform: modbus_controller + modbus_controller_id: kospel + name: "Tryb pracy boilera" + id: tryb_pracy_boilera + register_type: holding + address: 0x0b30 + raw_encode: HEXBYTES + lambda: |- + uint16_t value = data[1] << 8 | data[0]; + switch (value) { + case 0: return std::string("Ekonomiczny"); + case 1: return std::string("Przeciw zamarzanie"); + case 2: return std::string("Komfortowy"); + default: return std::string("Unknown"); + } + return x; + + - platform: modbus_controller + modbus_controller_id: kospel + name: "CO Regulacja" + id: tryb_pracy_co + register_type: holding + address: 0x0b55 + raw_encode: HEXBYTES + lambda: |- + uint16_t value = int(id(wbrwf1).state); + + switch (((value >> 6) & 1) == 0) { + case 0: return std::string("Krzywa grzania"); + case 1: return std::string("Nastawa ręczna"); + } + return x; + + - platform: modbus_controller + modbus_controller_id: kospel + name: "Tryb pracy kotła" + id: tryb_pracy_kotla + register_type: holding + address: 0x0b32 + raw_encode: HEXBYTES + lambda: |- + uint16_t value = data[1] << 8 | data[0]; + switch (value) { + case 0: return std::string("Ekonomiczny"); + case 1: return std::string("Przeciwzamarzanie"); + case 2: return std::string("Komfortowy"); + case 3: return std::string("Komfortowy minus"); + case 4: return std::string("Komfortowy plus"); + case 64: return std::string("Grzanie pokoju"); + default: return std::string("Unknown"); + } + return x; + + - platform: modbus_controller + modbus_controller_id: kospel + name: "[WB] Zawór TDR" + icon: mdi:pipe-valve + id: tdr + register_type: holding + address: 0x0b51 + raw_encode: HEXBYTES + lambda: |- + uint16_t value = (int(id(wb).state) & 0xFF00) >> 8 | (int(id(wb).state) & 0x00FF); + value = ((value >> 2) & 1); + switch (value) { + case 0: return std::string("co"); + case 1: return std::string("cwu"); + default: return std::string("Unknown"); + } + return x; + + + diff --git a/module_scrap.html b/module_scrap.html new file mode 100644 index 0000000..53a4a8f --- /dev/null +++ b/module_scrap.html @@ -0,0 +1,5722 @@ +Thanks to IscreaMan for scraping page from internet module + + + + + + + + + + + + + + + +
+
+

KOSPEL

+   +   +
+ +
+
+ + +image/svg+xml--°--°-00.0°---,-°--,-°parametersconfiguration_lblsettings +
+
+
+ + + +
+

błąd

+
+ + zamknij okno +
+
+ + + +
+

tryb party

+
+
    +
  • +
  • +
+ wyłącz tryb party +
+
+ + +
+

tryb turbo

+
+ tak + nie +
+
+ +
+

hasło

+
+ + + + + +
zatwierdź
+
+
+ + + +
+ +
+
+
+ + + +
+ +
+
+ + + + + + +
+
+
+ + + + + + +
+
+
+ + + + + +
+ +
+
    +
  • + + + +
  • + +
  • + +
  • +
+ + + zakończ +
+
+ + + +
+ +
+
    +
  • + + + +
  • + + + +
  • + +
  • +
+ + + zakończ +
+
+ + + +
+ +
+
    +
  • + + + + + +
  • +
+ uruchom + zakończ +
+
+ + + + + + + + + + + + +
+ +
+

Dezynfekcja

+   +   +
+ +
+
+
    +
  • + + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • +
+ + zapisz i zamknij okno + +
+
+ +
+ + + + + +
+ +
+

data i czas

+   +   +
+ +
+
+ +
    +
  • + + +
  • +
  • + +
  • +
+ + zapisz i zamknij okno + +
+
+ +
+ + + + +
+
+

system

+   +   +
+ +
+
+ +
+
    +
  • + + + + + + + + + + + + + +
    wersja programu MSK:--
    wersja programu PW: --
    maksymalna moc kotła: --
    +
  • +
  • + +
  • +
+
+
+
+ +
+

restart

+
+

czy potwierdzasz restart kotła?

+ tak + nie +
+
+ + + + + +
+ + +
+
+
    +
  • + + + +
    + + +
    +
  • +
  • + + + +
    + + +
    +
  • +
  • + + + +
    + + +
    +
  • +
  • + + + +
    + + +
    +
  • +
  • + + +
  • +
  • + + +
  • +
+

zapisz i zamknij okno

+
+
+
+ + + + +
+ + +
+
+
    +
  • + + + +
    + +
    +
  • +
  • + + + +
    + +
    +
  • +
+

zapisz i zamknij okno

+
+
+
+ + + + +
+ + + +
+ +
+
    +
  • + + +
  • + +
  • + + +
  • + +
  • + + +
  • + +
  • + + +
  • + +
  • + + +
  • + +
  • + + +
  • + +
  • + + +
  • +
+ + zapisz i zamknij okno + +
+ +
+ +
+ + + +
+
+

programator co

+   +   +
+ +
+
+

program tygodniowy

+
+ + + + + + + + +
+
+
+

programy dzienne

+
+
+ + + + + + + +
+ +
+

program co nr

+   +   +
+ + + + +
+
+
    +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
       65535
       65535
       65535
       65535
       65535
    +
  • +
+

zapisz i zamknij okno

+
+
+
+ + + +
+

usuwanie

+
+

czy chcesz usunąć wybraną pozycję z harmonogramu dobowego?

+ + + + + +
taknie
+
+
+ + + + +
+

temperatury

+
+
+ + + + + + + + + + + + + +
+
+
+ + + + +
+ + + +
+
+

program tygodniowy

+
+ + + + + + + + +
+
+
+ +

programy dzienne

+ +
+ +
+ + + + + +
+
+ + +
+
    +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
       65535
       65535
       65535
       65535
       65535
    +
  • +
+

zapisz i zamknij okno

+
+
+ + +
+

program dobowy

+
+

czy chcesz usunąć wybraną pozycję z harmonogramu dobowego?

+ + + + + +
taknie
+
+
+ + + +
+

temperatury

+
+
+ + + + + + +
+
+
+ + + + + +
+ + + +
+
+

program tygodniowy

+
+ + + + + + + + +
+
+
+ +

programy dzienne

+ +
+
+ + + + + +
+ +
+

prog. cyrk.

+   +   +
+ +
+
+
    +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      
      
      
      
      
    +
  • +
+

zapisz i zamknij okno

+
+
+ +
+

uwaga

+
+

czy chcesz usunąć wybraną pozycję z harmonogramu dobowego?

+ + + + + +
taknie
+
+
+ + + + + + + + + + + +
+
+

bufor

+   +   +
+
+
+
    +
  • + + +
  • +
  • +
+ zapisz i zamknij +
+
+
+ + + + + +
+
+

obieg co

+   +   +
+ +
+
+
    + + +
  • + + + +
  • + + + +
  • +
+ zapisz i zamknij okno +
+
+
+ + + + + +
+
+

zasobnik cwu

+   +   +
+ +
+
+
    +
  • +
  • + + +
  • +
  • + + +
  • +
+ zapisz i zamknij okno +
+
+
+ + + + + +
+ + +
+
+
    +
  • + + +
  • +
  • + + + +
  • +
  • +
+ zapisz i zamknij okno +
+
+
+ + + + + + + +
+
+

tryb turbo

+   +   +
+ +
+
+
    +
  • +
  • +
  • + + + +
  • +
+ zapisz i zamknij okno +
+
+
+ + + + + +
+
+

pompa

+   +   +
+ +
+
+
    +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • +
  • +
  • + + +
  • +
+ zapisz i zamknij okno +
+
+
+ + + + + +
+
+

cyrkulacja cwu

+   +   +
+ +
+
+
    +
  • +
+ zapisz i zamknij okno +
+
+
+ + + + + +
+
+

moc kotła

+   +   +
+ +
+
+
    +
  • + + +
  • +
+ zapisz i zamknij okno +
+
+
+ + + + + +
+ + +
+
+
+ + + + + + +
+ zapisz i zamknij okno +
+
+
+ + + + + +
+ + +
+
+
    +
  • +
+ zapisz i zamknij okno +
+
+
+ + + + + +
+
+

tryb pracy

+   +   +
+ +
+
+
    +
  • + + +
  • +
+ zapisz i zamknij +
+
+
+ + + + + + +
+ + +
+
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
+
+ + + + +
+ +
+

Informacja

+
+ +
+

MI.01

+

Moduł Internetowy do zarządzania wyposażeniem systemowym firmy KOSPEL S.A.

+
+ +
+

wer.

+
+
+ + + + +
+ +
+

błędy

+
+ +
+
+
    +
  • + + + + + + + + + + + + + + +
    +
  • +
+
+
+ +
+ + + + + + + + diff --git a/rejestry.ods b/rejestry.ods new file mode 100644 index 0000000000000000000000000000000000000000..47c6df334c25872e2e11c2b32f964dad599a879b GIT binary patch literal 13567 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