# libhvacex

Laajennettu hvac-kirjasto (hvac extras) sisältää hieman erikoistuneempia toimintoja joita kuitenkin tarvitaan usein kiinteistöautomaatiossa.

Kirjaston pistetyypit ladataan ja luodaan automaattisesti hvac kirjaston yhteydessä josse on asennettu.

Kirjaston käyttö:

**rajaohjaukset**

Luo tietokantapiste kayttamalla **hvacLimitControl** schemaa.   
Valitse **enabledId** kenttaan rajaohjausta ohjaava aikaohjelma. Jos ohjaukseen ei kayteta aikaohjelmaa, voi sen jattaa tyhjaksi jolloin ohjelma ohjaa rajaohjausta raja-arvojen ja vertailutyypin mukaisesti.  
   
**inputId** kentaan valitaan mittaus, jonka mittauksen mukaan ohjaus toimii.   
**input** kentaan tulee inputId pisteen pv arvo automaattisesti näkyviin.  
   
**outputId** kenttaan valitaan ohjattava piste.  
   
**comparisonType** kentta on alasvetovalikko, josta voi valita millaisella ohjauksella rajaohjauksen halutaan toimivan.   
   
**lowLimit** vaihtoehto laittaa ohjauksen paalle kun mittausarvo, joka tuodaan input kenttaan alittaa **controlLowLimit** kenttaan asetetun arvon.   
   
Kun **highLimit** valittuna comparisonType valikosta, ohjaus menee paalle, kun mittausarvo ylittaa **controlHighLimit** kentaan asetetun arvon.

Jos **between** vertailu tyyppi valittuna tarvitsee ohjelma seka **compareHigh**- etta **compareLowLimit**. Tassa tapauksessa ohjelma ohjaa ohjauksen paalle, kun mittaus on rajojen valissa.

Rajojen läheisyydessä käytetään **hysteresis** kentän arvoa ohjausvälyksenä.

pv kentassa nakyy arvo johon ohjelma ajaa ohjattavaa pistetta.

  
**Ylärajahälytys (highLimitAlarm)**  
   
Luo hälytyspiste käyttämällä **alarm** schemaa ja luo sille uusi **highLimitId** kenttä. Kun tallennat tietokannan (save database) ja uudelleenkaynnistat (restart), ohjelma luo automaattisesti **inputId** kentän.   
   
**inputId** kenttä on mittaus pisteelle, ja **highLimitId** on on ylärajalle tarkoitettu kenttä.

Ohjelma seuraa pisteiden arvoja automaattisesti, ja antaa hälytyksen kun **inputId** kenttään asetetun pisteen arvo ylittää **highLimitId** kenttään asetetun pisteen arvon.

Pisteeseen voi tarvittaessa luoda lisäksi valinnaiset kentät **hysteresis** ja **indicationId**, joihin voi antaa rajahälytyksen antamisessa käytettävän välyksen, ja pisteen josta luetaan valvotun prosessin käyntitila. Mikäli käyntitila saa arvon 0, raja-arvon ylitys ei aiheuta hälytystä.

   
**Alarajahalytykset (lowLimitAlarm)**  
   
Luo hälytyspiste kayttamalla **alarm** schemaa ja luo sille uusi **lowLimitId** kentta. Toimii muutoin kuten ylärajahälytys, mutta antaa hälytyksen mikäli intputId kentässä annettu piste alittaa lowLimitId kentässä annetun pisteen arvon.   
   
**Saatovikahalytykset (errorMarginAlarm)**  
   
Luo halytys piste kayttamalla **alarm** schemaa ja luo sille uusi **errorMarginId** kentta. Kun tallennat tietokannan(save database) ja uudelleenkaynnistat (restart), ohjelma luo automaattisesti **inputId** ja **setPointId** kentat.   
   
**inputId** kentta on mittauspisteelle jota valvotaan, **errorMarginId** pisteestä luetaan sallittu eroalue, jonka arvon verran mittaus voi erota asetusarvosta laukaisematta hälytystä (eli +/- eroalueen verran) ja **setPointId** on asetusarvolle tarkoitettu kenttä.

Ohjelma seuraa pisteiden arvoja automaattisesti, kun kentät on täytetty oikein ja oikeat pisteet ovat lisätyissä kentissä.

  
**Ristiriitahalytykset (conflictAlarm)**

Luo hälytyspiste käyttämällä **alarm** schemaa ja luo sille uusi **controlId** kenttä. Kun tallennat tietokannan(save database) ja uudelleenkäynnistät (restart),ohjelma luo automaattisesti **inputId** kentän.

**inputId** kenttä on indikointipisteelle ja **controlId** kenttä on ohjaus pisteelle. Ohjelma seuraa pisteiden arvoja automaattisesti, kun kentat on taytetty oikeinja oikeat pisteet ovat lisatyissa kentissä.

Ristiriitahälytys annetaan mikäli **inputId** kentässä ja **controlId** kentässä asetettujen pisteiden arvot eroavat toisistaan. Vaihtoehtoisesti, jos **controlId** kenttään ei ole määritelty pistettä, hälytys annetaan jos **inputId** kentässä oleva piste menee tilaan 0.

**Kommunikaatiohälytys (commAlarmId)**

Lisäämällä hälytyspisteeseen kenttä **commAlarmId**, alkaa hvac-ex kirjasto valvoa kyseisessä kentässä annetun i/o-pisteen kommunikaation tilaa. Kun valvotun pisteen **commStatus** kentän arvo muuttuu pienemmäksi kuin 0 – eli valvottava piste menee offline tilaan – nousee hälytyspiste (johon commAlarmId kenttä on lisätty) hälytystilaan toAlarmDelay -viiveen jälkeen.

**Käyntituntilaskenta (activeHours)**

Lisäämällä pisteeseen kenttä **activeHours**, alkaa hvac kirjasto laskea siihen tunteina kuinka kauan pisteen **pv** kenttä on ollut arvoltaan suurempi kuin 0. Tuntilaskurin saa nollattua kun tuntilaskuri ei ole aktiivinen, eli pisteen pv kenttän arvo on 0 (tai pienempi). Laskentatarkkuus on 1 sekunti.