# libalarms ja alarmServer

Toteuttaa pistetyypit **alarm** ja **alarmGroup** joka on tarkoitettu hälytysten käsittelyyn.

Kirjasto tulee normaalisti valmiiksi asennettuna, ja toimii taustalla muista ohjelmista riippumatta.

Kirjasto käynnistää ohjelman alarmServer, joka tekee hälytyksiin liittyviä operaatioita, kuten hälytysviivettä ja laukaisee hälytystapahtumia.

Hälytyspisteet toimivat niin, että hälytyksen tila voidaan lukea **av** kentästä, jossa arvo 1 tarkoittaa pisteen olevan hälyttävässä tilassa, ja arvo nolla kertoo että hälytys on poistunut, eli se on pisteen normaali tila. Kun hälytyspisteen **pv** kenttä menee samaan arvoon kuin hälytyspisteen **alarmValue** kenttä, menee piste hälytystilaan **toAlarmDelay** kentässä määritetyn viiveen kuluttua (yksikkö on sekuntia). Kun sitten **pv** kentän arvo muuttuu jälleen erisuureksi **alarmValue** kentän kanssa, palautuu piste **toNormalDelay** viiveen jälkeen normaaliksi.

Jos pisteen kuittaustilaa halutaan seurata, se pidetään ylhäällä **alarmAcked** kentässä. Siinä tilat menevät niin, että 1 tarkoittaa hälytyksen olevan kuitattu, ja 0 tarkoittaa kuittaamatonta. Tämä kenttä muuttuu arvoon 0 joka kerran kun **av** kenttä saa arvon 1.

Hälytyspisteillä on myös **alarmStatus** kenttä, joka on aina samassa arvossa **av** kentän kanssa.

Kun **alarm** tyyppinen piste menee hälytystilaan, sen **alarmTime** ja **alarmDate** kentät asetetaan osoittamaan nykyistä aikaa, eli ne osoittavat edellisen ajanhetken kun jossa piste on käynyt hälytystilassa.

**Yhteistoiminta HVAC kirjaston kanssa**

HVAC kirjasto laajentaa hälytyspisteiden toimintaa niin, että lisäämällä alarm -tyyppiseen pisteeseen sopivat kentät, hälytyspiste toimii automaattisesti mm. alaraja-, yläraja-, säätövika-, tai ristiriitahälytyksenä.

**Jatkohälytykset**

Mikäli hälytyksistä halutaan ilmoitusviesti esimerkiksi sähköpostin tai tekstiviestin avulla, osaa alarmServer hoitaa myös niiden lähettämisen.

Ilmoitusviestien vastaanottajat, ja vastaaottajien vaihtaminen esimerkiksi kellonajan tai viikonpäivän mukaan tehdään hälytys ryhmien avulla. Jokainen hälytys josta halutaan antaa ilmoitusviesti, tulee liittää sopivaan hälytysryhmään (**alarmGroup** pisteet).

Tämän kun hälytykset on liitetty ryhmiin, valitaan hälytysryhmästä mitkä tapahtumat aiheuttavat viestin lähtemisen. Tämä valitaan **enableAckEvent**, **enableToAlarmEvent** ja **enableToNormalEvent**. Näiden selitteet ovat samassa järjestyksessä: lähetä viesti kun hälytys kuitataan, lähetä viesti kun hälytys menee päälle ja lähetä viesti kun hälytys poistuu.

Lisäksi viestiryhmälle voidaan ohjata eri tiloihin pv kentän avulla, ja antaa selitteet näille tiloille stateTexts kenttän taulukossa. Kun viestiä lähetetään, pv kentän arvon perusteella valitaan mitä vastaanottajalistaa käytetään, jolloin tila 0 voisi olla vaikkapa päivä, ja tila 1 voisi olla yö. Nyt vastaaottajalistaan (**recipientList**) voidaan luoda kaksi riviä, joista ensimmäinen lista vastaa yö tilaa, ja seuraava päivä tilaa.

Kun vastaanottajalista avataan ikkunaan klikkamalla **recipientList** kenttää hiirellä, voi uuden vastaanottajalistan tehdä painamalla uloimmalla tasolla ’+’ painiketta. Vastaanottajalista voidaan nyt nimetä **name** kentän avulla, ja lisätä uusia vastaanottajia listaan painamalla sisempää ’+’ painiketta. Myös vastaanottajat listan sisällä voidaan nimetä name kentässä. Osoite tai puhelinnumero johon viesti lähetetään annetaan **address** kentässä.

Teknisesti **address** kenttän arvon odotetaan aina olevan URL-muotoinen, mutta puhelinnumeron ja sähköpostin tapauksessa se ei ole välttämätöntä, eli järjestelmä tunnistaa normaalisti puhelinnumeron ja sähköpostiosoitteen, ja täydentään URL-osoitteen.

Mahdolliset lähetysmuodot (URL muotoilu):

**rut://\[puhelinnumero\]**    
Lähettää tekstiviestin teltonika RUT modeemien kautta. Vaatii oikeat asetukset /sys/settings/smsOverHttp tietokantapisteeseen.

**relay://\[ip osoite\]**    
Lähettää hälytysviestin toisen Actiweb CPU:n kautta.

**sms://\[puhelinnumero\]**    
Lähettää viestin tekstiviestinä.

**email://\[sposti@osoite.fi\]**    
Lähettää viestin sähköpostilla. Laitteen sähköpostiasetusten täytyy olla aseteltu.

Viestien muotoiloa voidaan hallita valitsemalla sopiva viestipohja **alarmGroup** pisteen **subjectTxtFile** ja **bodyTxtFile** kenttien avulla.

Tiedosto jota viestipohjana käytetään on normaali tekstitiedosto, mutta viestin lähettämisen yhteydessä pohjaan täydennetään &lt;TAG&gt; -muotoisten tagien tilalle hälytyspisteen tai hälytysryhmän tietoja. Tarkemmin sanottuna, tageissa käytettävinä ovat kaikki viestin lähettämisen käynnistäneen hälytyspisteen kentät saman nimisinä, mutta suurilla kirjaimilla kirjoitettuna (esim. &lt;ALARMDATE&gt;, &lt;DESCRIPTION&gt;) sekä kaikki hälytykseen liittyvän hälytysryhmän kentät G\_ etuliitteen avulla (esim. &lt;G\_DESCRIPTION&gt;, &lt;G\_PV&gt;). Lisäksi käytettävissä on hälytyspisteen nimi &lt;ID&gt; tagin avulla.