LOADING...

Fűtésvezérlés okosítása a Várgesztesi Villaparkban

A Várgesztesi Villapark megbízásából készült munka során az összesen 125 házból álló komplexum 108 házában található fűtés vezérlés okosításában vehetett részt a Yabune Home csapata.

A megrendelő a következő problémakörrel keresett minket:

„a lakók gyakorta felülbírálják a termosztát döntését, amivel túl fűtik a házat, vagy éppen leválasztják a helyi wifi hálózatról azt, így elveszítve a menedzselhetőségét az okostermosztátoknak.”

A feladatunk, hogy kialakítsunk egy központi vezérlő felületet melynek segítségével:

  • Egy egységbe zárjuk a különböző márkájú okos wifis termosztátokat.
  • Felügyeljük az egyes wifis termosztátok, valamint, szükség esetén lehetőséget biztosítunk a kézi beavatkozásra (alul vagy túl fűtés esetén).
  • Automatikát biztosítunk, melynek segítségével a Yabune Home központja megakadályozza a túl, vagy alul fűtést.
  • Automatikát biztosítunk, amely emailben értesíti a park üzemeltetőjét, amennyiben az egyes termosztátok nem elérhetőek a hálózaton.
  • Automatikát biztosítunk, amely emailben értesíti a park üzemeltetőjét, amennyiben fagyásveszély van.
  • Adat alapú analitikai felületet biztosítunk, amely segít a park üzemeltetőjének megérteni azt, hogy az egyes házak esetén mekkora hőigény van, hol érdemes beavatkozni/korszerűsíteni. Ennek segítségével a gázfogyasztás és az ökológiai lábnyom is csökkenthető.
  • Külön felületet és jogosultságot biztosítunk az üzemeltetők és a rendszer adminisztrátorok részére.

A komplexum területén 125 önálló ház található melyek ’társasházi’ és ’hotel’ szerepkört is ellátnak. A házakban túlnyomó többségben Computherm E280/E300 szériás wifi termosztát termékek találhatóak (82 db), valamint kisebb hányadában Ariston Cube S Net wifis termosztátok (26 darab) vannak beszerelve.

A komplexum területén teljes wifi hálózat lefedettség található, mely biztosítja, hogy az egyes okoseszközök egy hálózaton belül legyenek elhelyezve. Az egyes wifis termosztátok IP címe megegyezik a ház számával, ezzel is biztosítva a strukturált kialakítást.

A feladatot a Yabune Home rendszere látja el, erre egy Argon One került telepítésre. A feladat során törekedtünk arra, hogy a rendszer dinamikusan fejleszthető legyen, tehát ha például új termosztát kerül beszerelésre, vagy csere történik, úgy az operátornak nem szükséges semmilyen további lépést tenni, mert az eszközök teljesen automatikusan bekerülnek a rendszerbe mind vizuális, mind automatizációs szempontból. Az egyes értékpontok (túl magas, túl alacsony hőmérséklet) szintén szabályozhatóak az operátor által, amit az automatizmusok is figyelembe vesznek.

Computherm integráció

A feladat elvégzése során a Yabune által támogatott hivatalos Computherm integráció számos új funkciót kapott:
1. Az integráció automatikusan felderíti a hálózaton elérhető Computherm eszközöket és azokat hozzáadja a Yabune Home felületéhez automatikusan.
2. Fejlesztettük a hibakezelést.
3. Csökkentettük a rendszer betöltési idejét is.

Az adatvizualizációs felület, a Yabune Home felületéről elérhető külön szolgáltatásként került megvalósításra, melynek segítségével lehetőség van megszabni azt, hogy mely házakat, milyen intervallumban szeretné az üzemeltető vizsgálni.

 A jövőben a megrendelő igény alapján az alábbiak kerülnek kialakításra:

  • Klímai egységek (Midea) integrációja a fent megnevezett automatizációkkal.
  • Az összes ház esetében beállításra kerül a villamossági energia fogyasztás mérésére és a ház tápellátását szabályozó eszköz.
  • Lehetőség lesz a belső medencével ellátott házak víz hőmérsékletének mérésére és a medence automatika felülvezérlésére.

Szakmai háttérinformációk

A feladat ellátásának nagy részét három automatizáció teszi lehetővé:

  1. Az egyes számú védvonal logikája, hogy amennyiben a rendszer olyan eseményt kap ami a termosztát állapot változásáról szól, úgy megvizsgálja a cél hőmérsékletet és ha túl magas/alacsony akkor az üzemeltető által által megadott értékhatárok közé módosítja:
alias: Climate auto update on based on min/max temp
description: Climate auto update on based on min/max temp
trigger:
  - platform: event
    event_type: state_changed
    event_data: {}
condition:
  - condition: template
    value_template: >-
      {{
      (trigger.event.data.entity_id.startswith('climate.computherm_thermostat_')
      or trigger.event.data.entity_id.startswith('climate.remote_gw_thermo_'))
      and 
          trigger.event.data.new_state.attributes.temperature !=
           trigger.event.data.old_state.attributes.temperature and
          (trigger.event.data.new_state.attributes.temperature|float >
           (states("input_number.max_temp")|float) or
            trigger.event.data.new_state.attributes.temperature|float 
        {% if trigger.event.data.new_state.attributes.temperature|float >
        (states("input_number.max_temp")|float) %}
        {{states("input_number.max_temp")}} {% else %}
        {{states("input_number.min_temp")}} {% endif %}
mode: single
 

2. A kettes számú védvonal egy idő alapú logikára épít, melynek a lényege, hogy meghatározott időközönként a rendszer végig iterál az összes elérhető termosztáton és amennyiben nem elfogadható értéket talál úgy azt módosítja a fenti logikának megfelelően. Ennek a célja az, hogy biztosítva legyünk abban az esetben, ha az első automatizációnál nem is vettük észre a problémát, és a változást belátható időn belül szabályozni tudja a rendszer.

3. A harmadik automatizáció az email értesítések küldéséért felelős.Két fő feladata van:

  • értesítéstküld, ha túl alacsony a hőmérséklet a házban – fagyásveszély
  • értesít akkor is, ha egy adott termosztát permanensen nem elérhető

Ez az automatizáció minden reggel egy előre meghatározott időpontban fut le.

service: notify.email_notification
data:
  title: Villapark Termosztát Állapotok
  message: ''
  data:
    html: >
      Tisztelt Villapark Üzemeltető!</br></br> {% for e in
      states.climate|sort(attribute='name') %} {% set temp =
      e.attributes.temperature %} {% if
      (e.entity_id.startswith('climate.computherm_thermostat_') or
      e.entity_id.startswith('climate.climate.remote_gw_thermo_')) and 'Ház' in
      e.name %}
        {% if state_attr(e.entity_id, 'temperature') is none %}
          A {{e.name}} termosztátja nem elérhető!
          <hr>
        {% endif %}
        {% if state_attr(e.entity_id, 'temperature') is not none
          and state_attr(e.entity_id, 'current_temperature')|float &lt;
            states(&#039;input_number.absolute_min_temp&#039;)|float %}
          A {{e.name}}ban túl hideg van! Jelenleg a hőmérséklet:
            {{state_attr(e.entity_id, &#039;current_temperature&#039;)|float}}
          <hr>
        {% endif %}
      {% endif %} {% endfor %} </br> Üdvözlettel,</br> A Yabune Home csapata
 

Vizualizációs szempontból is kihívást jelent ennyi értéket használható formában megjeleníteni. Ennek megoldására az egyik kedvenc kiegészítő kártyánkat használtuk fel (auto-entities). Ahogy az a lentebbi kód részletekből is látszik, két kártyát hoztunk létre. Az első csak és kizárólag a hibás termosztátokat mutatja (nem elérhető termosztát, alacsony, túl magas cél hőmérséklet), a második kártya a teljes listát megadja, ahol színekkel különböztetjük meg a hibás termosztátokat.

type: custom:auto-entities
card:
  type: entities
  title: Hibás házak (fűtés)
  state_color: false
filter:
  template: |
    {% for e in states.climate %} {%
      set temp = e.attributes.temperature %}
        {% if (e.entity_id.startswith('climate.computherm_thermostat_') or
           e.entity_id.startswith('climate.remote_gw_thermo_')) 
           and 'Ház' in e.name %}
        {% if state_attr(e.entity_id, 'temperature') is none or
           (state_attr(e.entity_id, 'temperature') is not none 
            and state_attr(e.entity_id, 'current_temperature')|float &lt;
             states(&#039;input_number.absolute_min_temp&#039;)|float) or
             state_attr(e.entity_id, &#039;current_temperature&#039;)|float|round 
             states('input_number.max_temp')|float) %}
          {{ e.entity_id}},
        {% endif %}
        {% endif %}
      {% endfor %}
  exclude: []
sort:
  method: friendly_name
  numeric: true
 
type: custom:auto-entities
card:
  type: entities
  title: Összes ház (fűtés)
filter:
  include:
    - domain: climate
      name: '*Ház*'
      options:
        style: |-
          :host {
            --paper-item-icon-color: 
            {% if state_attr('this.entity_id', 'temperature') is none %}
            #CC3D40
            {% elif state_attr('this.entity_id', 'temperature') is not none and
              (state_attr('this.entity_id', 'current_temperature')|float &lt;
                    states(&#039;input_number.absolute_min_temp&#039;)|float or
               state_attr(&#039;this.entity_id&#039;, &#039;current_temperature&#039;)|float 
                    states('input_number.max_temp')|float %}
            #CC3D40
            {% endif %}
          ; }
  exclude: []
sort:
  method: friendly_name
  numeric: true 

Záró gondolat

Amellett hogy az eredeti cél megvalósításra került, további előnyöket is kapott mind az üzemeltető, mind a park tulajdonosa. A fűtési rendszer karbantartása lényegesen megbízhatóbb lett, hiszen pontos képet kap az üzemeltető az adott helyzetről és nem kell megvárni amíg a vendég bejelenti a felmerülő problémát. Ugyanebből az okból kifolyólag csökken az esélye hogy télen a ház elfagy.

A park tulajdonosai pontosabb képet kapnak arról is, hogy a házaik milyen hőigénnyel rendelkeznek, milyen hőtartássi tényezővel kell számolniuk. Sőt mi több, ennek köszönhetően gázszámlájuk és ökolábnyomuk is csökken.

Fagyasztott virsli a termosztáton

A Megrendelők a rendszer üzembe állítását követően osztotta meg velünk, hogy a legdurvább hackelés, amit eddig látott akkor volt, amikor az egyik lakó a fagyasztott virslit rárakta a termosztátra, ezzel becsapva a termosztátban lévő hőmérőt és maximálisan túl hajtva a cirko normális kapacitását. Az emberi leleményesség határtalan.

Ha te is szeretnél hasonlóan minőségi megoldásokat vagy van olyan kérdésed, amely az okosotthon rendszerekhez kapcsolódik, vedd fel velünk a kapcsolatot!