Návody > Export do SQL databáze >Přiklad exportu měřičů spotřeb

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.

Note 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ů

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čů

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 "Přepisovat" 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 "Spuštěné úlohy". 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.

Exclam 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.