Jak integrovat hotelový systém do řídicího systému Domat

U regulace jednotlivých místností s proměnným obsazením, jako například v hotelu, se často setkáváme s požadavkem na odstavení pokoje v případě, že pokoj není dlouhodobě obsazen. Místnost pak nepřepíná mezi „Komfort“ a „Pokles“, ale přechází do stavu „Vypnuto“ (někdy zvaném „Eco“) s požadovanou hodnotou pro topení cca. 12 až 15 °C a odstaveným chlazením. V období mimo sezónu se takto vypínají i celá patra. Před příjezdem hostů jsou pak pokoje postupně aktivovány a přepínány do stavu „Pokles“.

Je výhodné, když toto přepínání může probíhat automaticky, ve vazbě na hotelový systém. Ten ví, kdy je očekávaná doba příjezdu hosta, a může předem poskytnout povel k přepnutí. Pokud má hotelový rezervační systém možnost integrace po standardním protokolu, např. BACnet, postup se neliší od integrace jiných zařízení, jako jsou klimatizační jednotky atd. Nejběžnějším rozhraním pro přenos těchto informací je ale textový soubor, který je hotelovým systémem v pravidelných intervalech generován a ukládán tam, odkud si ho může přečíst řídicí systém budovy.

Při specifikování vazeb je nutné, aby se projektant a programátor MaR domluvili s implementačním technikem hotelového systému a dohodli se na přesném formátu souboru. Obvykle jde o řádky, oddělené ukončovači řádků, přičemž každý řádek obsahuje číslo pokoje a požadovaný stav jako číslo (0, 1, 2…) nebo text (VOLNO, REZERVACE, OBSAZENO, ODSTÁVKA atd.).

V následujícím příkladu jsou obsazené pokoje označeny U a rezervované R. Volné pokoje nejsou v souboru obsaženy. Soubor může mít pochopitelně poněkud odlišný tvar.

301;U;
306;U;
307;U;
310;U;
405;R;
408;R;
409;R;
410;R;
505;R;
508;R;
509;R;

Integrace do systému řízení budovy může probíhat buď na úrovni řídicí stanice (vizualizace RcWare Vision), nebo na úrovni podstanice. Platí, že integrace ve vizualizačním systému bývá jednodušší a snáze spravovatelná, ale je závislá na řádné funkci vizualizačního programu – proto se někdy volí integrace přímo do podstanic. To je i jediné možné řešení v případě, že grafická centrála chybí a podstanice jsou ovládány přes webový panel.

Integrace do podstanice

Pro čtení požadovaného stavu pokoje ze souboru v SoftPLC IDE použijeme File Driver. Tento driver umožňuje číst ze souborů nebo webových stránek (HTML, XML) a pomocí regulárních výrazů detekovat požadovaný úsek, který určuje příslušný pokoj, a jeho stav přiřadit SoftPLC proměnné. Ta pak po sběrnici přepíná provozní stav zónového regulátoru.

Ve vlastnostech proměnné musíme nejprve zadat umístění souboru se stavy pokojů.

file

Soubor může být na disku, pokud platforma s runtimem diskové jednotky podporuje – nejspíš by šlo o SoftPLC RT, běžící jako služba na PC s OS Windows. Můžeme ale využít i webovou adresu a soubor číst z URL na libovolném serveru.

Regulární výrazy jsou obecné specifikace řetězců znaků, podrobnosti najdeme např. na http://www.regularnivyrazy.info. File Driver, zjednodušeně řečeno, prohledá soubor exportovaný z hotelového systému a identifikuje v něm řetězec, který odpovídá regulárnímu výrazu zadanému v definici určité proměnné v SoftPLC. Hodnotu, která představuje požadovanou informaci o obsazenosti pokoje, převede na číslo a zapíše do proměnné.

regex

V tomto případě regulární výraz hledá řetězec „310;“, za nímž následuje písmeno U nebo R a další středník. Jde tedy o stav pokoje 310. Text <value> určuje, která hodnota nás zajímá. V okénku Masking strings se písmeno převádí na celé číslo, neboť proměnná, která určuje stav pokoje, je typu Integer. Pokud je tedy pokoj obsazen (U), proměnná nabývá hodnoty 1, pokud je rezervován (R), nabývá hodnoty 2. Mapování stavů nastavíme tak, aby řízení v programu bylo co nejjednodušší. Na jednu hodnotu lze mapovat i více stavů.

Musíme zde ošetřit ale i stav, kdy pokoj v seznamu chybí – je volný (viz příklad výše). V tomto případě dojde k chybě, proměnnou nelze načíst a File Driver ji nastaví do stavu Bad, CommError. Tomuto stavu ale můžeme také přiřadit určitou hodnotu, a to v obecných vlastnostech proměnné:

commerror

Je-li pokoj volný, proměnná zde nabývá hodnoty 0.

Integrace v RcWare Vision

Zde se celá úloha řeší pomocí skriptů. Datový bod, ovládající stav pokoje, je v RcWare Vision jako digitální výstup – tlačítko, jehož stisknutím je pokoj přiveden do požadovaného stavu.

vision

V projektu je dále definován skript, který v pravidelných intervalech načítá výstupní soubor hotelového rezervačního systému, zjišťuje stavy jednotlivých pokojů a pokud je třeba stav pokoje změnit, „stiskne“ příslušné tlačítko. Skript je nutné upravit podle formátu výstupního souboru. Existuje řada způsobů, jak úlohu algoritmizovat; doporučujeme kontaktovat technickou podporu Domat Control System a vyžádat si jako příklad nějaký z již hotových projektů nebo pomoc při implementaci. Skript je napsán tak, aby samotná definice jednotlivých pokojů byla jednoduchá a přehledná, přidat nebo upravit místnost pak zvládne i aplikační programátor bez hlubších znalostí skriptování.