Přiklad exportu měřičů spotřeb
Příklad exportu měřičů spotřeb
Typickým příkladem exportu dat do nadřízených informačních a fakturačních systémů přes SQL databázi jsou odečty měřičů spotřeb, jako jsou měřiče tepla, chladu, elektřiny, plynu, vodoměry a mnohé další. Následující příklad uvádí jednu z mnoha možností, jak poskytovat odečtené hodnoty z monitorovacího systému
do SQL databáze. Z této databáze může informační systém třetí strany získávat potřebná data.
Poznámka:
Konkrétní definice struktury databáze záleží na domluvě s administrátory informačního či fakturačního systému a je velice variabilní.
Popis exportu měřičů spotřeb
Měřiče spotřeb i různých výrobců a typů měří veličiny jako množství spotřebované energie, objemu média, okamžité veličiny, napětí, teploty a podobně. Pro náš příklad se zaměříme na měřiče tepla (chladu) a vodoměry. Zadefinujeme strukturu databáze, která sloučí rozdílné vlastnosti různých měřičů do jediné tabulky. Tato tabulka - úloha, která jí vyplňuje pak může být periodicky naplánována, například každý den v 6 hodin ráno.
Pro strukturu tabulky tak budeme potřebovat znát exportované veličiny, identifikátor měřiče spotřeb a datum exportovaných hodnot.
V novém projektu si nejprve vytvoříme novou databázi, zadáme jméno počítače SQL serveru, instanci a přihlašovací údaje do databáze. Vyzkoušíme funkčnost připojení v lokální nabídce ve stromu na větvi databáze. Zobrazí se jednoduchý prohlížeč SQL databáze, případně chybové hlášení s popisem chyby.
Struktura tabulky
Do databáze si přidáme definici tabulky typu Report, které zadáme jméno, zadefinujeme čas spuštění na 6 hodin každý den a otevřeme Tabulku sloupců.

Ukázka definice struktury SQL tabulky, jednotlivých sloupců
Vytvoříme jednotlivé sloupce tabulky (zobrazují se jako řádky) a zadefinujeme jim parametry dle následujícího obrázku.
Strukturu tabulky a význam sloupců se pokusíme rozebrat důkladněji, sloupec po sloupci:
• | DateIndex - sloupec je součástí primárního indexu, do kterého se zapíše datum, zadané proměnné, předvolba je LastUpdate, tedy poslední obnova proměnné (modulu) |
• | DateTime - datum a čas poslední obnova proměnné (modulu), předvolba je definována jako odkaz na hodnotu ve sloupci DateIndex |
• | Modul - libovolný text jednoznačně identifikující konkrétní měřič tepla - je součástí primárního indexu - předvolba je reference na sloupec prefix |
• | Prefix - sloupec, který nebude v SQL databázi a uvede se do něj prefix příslušného modulu pro ostatní proměnné v řádku, bez předvolby, musí se vždy zadat |
• | ID - hodnota z měřiče - sériové číslo - předvolba proměnná CustomerNumber |
• | CustomerNumber - hodnota zadaná ručně při exportu - kontrolní zákaznické číslo měřícího místa |
• | Energy - hodnota z měřiče - kumulovaná energie - předvolba: proměnná Energy |
• | Volume - hodnota z měřiče - kumulovaný objem - předvolba: proměnná Volume |
• | Power - hodnota z měřiče - okamžitý výkon - předvolba: proměnná Power |
• | Flow - hodnota z měřiče - okamžitý průtok - předvolba: proměnná Flow |
• | OutputTemperature - hodnota z měřiče - teplota přívod- předvolba: proměnná OutputTemperature |
• | ReturnTemperature - hodnota z měřiče - teplota zpátečka - předvolba: proměnná ReturnTemperature |
• | OverAllValid - validita všech hodnot z měřiče - vypočtená hodnota ze všech validit hodnot proměnných na řádku |
• | Note - pouze poznámka u každého řádku v definici řádků, neexportuje se do SQL databáze |
K primárnímu indexu uveďme, že se skládá ze dvou sloupců - DateIndex a Modul. Při spuštění úlohy se projdou všechny řádky, vyhodnotí se sloupce dle definice typů a zapíší se do SQL databáze. Takto navržený primární index nám zaručí, že pro každý měřič se k danému datu zapíše jen jediný řádek. Pokud jsou již data k danému datu pro daný modul v databázi zaznamenána, záleží pak na příznaku "Přepisovat" v parametrech úlohy, zda se řádek přepíše novějšími daty, či nikoliv. V případě odečtů měřičů není důvod při vícenásobném spuštění úlohy ve stejném dni data přepisovat.
Definice řádků tabulky - měřičů
Máme-li definovánu strukturu databáze, můžeme přejít k definici řádků - měřičů. Každý řádek nám bude reprezentovat jedem měřič, sloupce pak hodnoty z konkrétního měřiče. Následující obrázek ukazuje zadání řádků - měřičů.

Ukázka definice exportu měřičů do SQL databáze, definice jednotlivých řádků - měřičů
Ve sloupci poznámka /Note/ jsou záměrně zapsány čísla řádků pro snazší popis. V tomto sloupci může být uvedeno cokoliv, dále se nezpracovává a do SQL databáze se neexportuje.
V prvním a druhém řádku pro měřič DK10M124 a IOS967M04 stačilo zadat do sloupce prefix uvedené prefixy modulů a kontrolní zákaznické číslo. Jak je ze špičatých závorek a referencí ($) patrné, ostatní sloupce nebylo potřeba vyplnit, byly použity předvolby.
Na třetím řádku je uveden měřič tepla, který má jiný název proměnné pro výrobní číslo. Proto bylo nutné zadat ještě MeasureId do sloupce ID. Dále má rozdílné názvy teplot, proto i tyto bylo potřeba zadat ručně. Ostatní hodnoty jsou nevyplněné (z předvoleb).
Na čtvrtém a pátém řádku jsou ve skutečnosti údaje z měřiče, který je uveden na třetím řádku. Na jeho dva impulsní vstupy A a B jsou připojeny vodoměry. Tyto jsou však měřidla s vlastní identifikací, proto musí být na různých řádcích. Měří pouze objem. Ostatní veličiny nejsou zadány. Při kontrole by však vznikla chyba, že proměnná nebyla zadána. Proto na místo prázdných proměnných musíme uvést znak '$', nebo text '$EMPTY'. Všechny tři řádky mají shodný prefix, ale modul musí být unikátní z důvodu primárního indexu. Proto do sloupce Modul je v tomto případě zapsán název modulu s rozšířením a písmeno impulsního vstupu.
Na šestém řádku je umístěn nezávislý měřič s imuplsním vstupem a připojeným vodoměrem. Hodnota objemu je v proměnné Inputs, nikoliv Volume, proto je nutné jméno proměnné explicitně do buňky zadat. Ostatní proměnné mají zůstat prázdné, proto je použit znak '$'.
Od sedmého řádku jsou zase uvedeny standardní měřiče tepla, kde není potřeba zadat nic jiného, než prefix modulu a zákaznické číslo měřiče, jako u prvních dvou.
Spuštění a kontrola výsledku
Naplánovanou úlohu spustíme. Ta otevře databázi a začne dle definice procházet každý řádek - měřič, jeden po druhém. Hodnoty proměnných získá z monitorovacího systému ProCop dle jména v buňce, předvoleného hodnoty či odkazu a prefixu v daném řádku. Pokusí se dle primárního indexu nalézt řádek v databázi se stejným datem a názvem modulu. Pokud jej nenajde, celý řádek do databáze přidá, pokud ano, dle příznaku zadaném ve vlastnostech úlohy řádek přepíše, nebo vynechá a jde zpracovávat další řádek v definici. Takto postupuje, až projde všechny definované řádky - měřiče.
Průběh exportu můžeme sledovat ve stromu projektu ve větvi . Až je úloha dokončena, je možné zkontrolovat data v SQL databázi, například jednoduchým prohlížečem, který lze otevřít volbou z lokální nabídky databáze ve stromu projektu.
Důležité upozornění!
Případné chyby vzniklé při běhu úlohy se zapisují do systémového zápisníku Windows, do sekce AlfaLog pod názvem aplikace ProSQL.