Loxone – data do Grafany

Jedna z mnoha metod, jak dostat data z Loxony jinam, kromě toho, že např. použijeme MQTT, je využití nativních funkcí Loxony – Vitruální výstup.

Dále využijeme Apache a PHP jako operátora, kterému předáme data pomocí URL adresy a ten je uloží do databáze (MySQL nebo Influxdb). V rámci testování používám metody GET, kde vidím v logu přímo hodnoty, které z Loxony vystupují. Šlo by samozřejme použít pro přenos i metody POST.

Struktura tabulky pro ukládání dat bude obsahovat 4 sloupečky (index, timestamp, jméno senzoru, vlastní data). V budoucnu lze samozřejmě libovolně rozšiřovat.

CREATE TABLE data_teplota (
id_mereni int(11) NOT NULL,
timestamp_mereni timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
nazev_hodnoty char(40) NOT NULL,
data_hodnoty float(10,3) NOT NULL);
ALTER TABLE data_teplota
ADD PRIMARY KEY (id_mereni);
ALTER TABLE data_teplota
MODIFY id_mereni int(11) NOT NULL AUTO_INCREMENT;

Dále vytvoříme PHP skript, kterým se budou data z Loxone přijímat a následně ukládat do vytvořené tabulky. Obsah skriptu je velmi jednoduchý a univerzální, takže se může použít na jakékoliv ukládání hodnot co bude přijímat. Hlavní část, která se stará o vykonávání akcí. Nejsou zde žádné metody pro ošetření vstupů, co přijde na vstup URL, ukládá se do databáze.

    foreach ( $_GET as $key => $value )
    {
        $add_to_database = mysqli_query($spojeni, "INSERT INTO `data_teplota` (`id_mereni`, `timestamp_mereni`, `nazev_hodnoty`, `data_hodnoty`) VALUES (NULL, CURRENT_TIMESTAMP, '".$key."', '".$value."')");
    }

Skript uložíme (tag: RasPi, Apache, PHP) a otestujeme si jeho funkčnost zavoláním URL s odpovídajícími parametry, např. http://RasPi_IP_adresa/loxone.php?test=123.456. V tabulce by se tak měl objevit první řádek.

Tím máme skript hotov a poslední věcí je nastavit samotnou Loxonu, zde si vytvoříme pod Vitruální výstupy nový objekt, ve Vlastnostech nastavíme adresu RasPi. Pak vytváříme nové příkazy virtuálního výstupu. Pro každou potřebnou měřenou hodnotu vytvoříme nový jeden příkaz. Nastavíme jej podle obrázku, ve vlastnosti Instrukce při zapnutí zvolíme onen php skript (loxone.php) a jako jeho parametry (za ?) vložíme nazev_hodnoty a data_hodnoty (parametr <v.3> bude doplněn analogový výstup zaokrouhlený na 3 desetinná místa). U intervalu opakovaní opatrně, abychom Loxonu nepřetížili.

Tím máme fázi vytvoření a plnění databáze hotovou. Už je stačí v Grafaně vytvořit nový Dashboard, kde bude nový graf využívat zdroj dat databázi s tabulkou data_teplota.

Vzorec pro zobrazení grafu je jednoduchý select:

SELECT  UNIX_TIMESTAMP(timestamp_mereni) as time_sec,  data_hodnoty as value,  nazev_hodnoty as metricFROM data_teplota
WHERE $__timeFilter(timestamp_mereni)
ORDER BY timestamp_mereni ASC

A to je vše. Použitím virtuálního výstupu není ideálním řešením, ale svoji funkci plní dobře. Zatížení Loxony vzrostlo o necelých 10%, bez rozdílu na počet virtuálních výstupů.

Permanent link to this article: https://www.elvisek.cz/2018/10/loxone-data-do-grafany/