Ukládání do SQL
Ukládání dat z Mervis do SQL databáze
Tato služba SSCP to SQL Bridge na umožňuje obousměrný přenos dat mezi jednotkou Unipi se spuštěným SW Mervis a SQL databází. Komunikace probíhá pomocí SSCP protokolu, tj. proprietárního protokolu řešení Mervis. Tuto službu lze provozovat na systémech Linux (společně s databázovým serverem či na jiném vzdáleném zařízení), ale je ji možné spustit i přímo na jednotce.
Scénáře instalace
- Služba je spuštěna na jednotce
- V tomto případě je služba spuštěna přímo na jednotce společně s Mervis RT a odesílá data do vzdálené databáze. Vyžaduje IP spojení mezi jednotkou a databázovým serverem
- Služba je spuštěna na jiném zařízení/serveru
- Toto řešení lze rozdělit na dvě možná nasazení v závislosti na přítomnosti či absenci síťového spojení mezi službou a jednotkou
- Služba má IP přístup k jednotce
- Jedná se o opačný přístup než v prvním případě, kde služba běží na jednotce
- Služba je nainstalována na serveru, komunikuje s jednotkou a odesílá data na databázový server
- Databázový server může běžet na stejném serveru jako služba, nebo na zcela jiném zařízení
- Služba NEMÁ IP spojení s jednotkou
- Tato možnost bude brzy dostupná
- V tomto případě se pro odečet údajů z jednotky užívá Mervis Proxy server, který data následně odesílá na databázový server. Výhoda tohoto přístupu spočívá v tom, že služba IP přístup k jednotce nevyžaduje, server s službou se proto může nacházet v geograficky zcela odlišné lokaci, oddělený od interní sítě firewallem či NAT
- Vyžaduje připojení jednotky k proxy serveru
- Omezeno max. přenosovou rychlostí proxy serveru
Podporované operace
- SELECT - Tato operace přečte určitý řádek z vybrané tabulky a přenese hodnoty na relevantní proměnné pro Mervis na jednotce. Řádek lze specifikovat použitím parametru “where”, který lze užít přímo jako klauzuli “WHERE” v SQL výrazu (nastaví proměnnou Mervisu dle databáze)
- UPDATE - Tato operace aktualizuje řádek ve vybrané tabulce zadáním hodnot proměnných na jednotce. Řádek lze specifikovat použitím parametru “where”, který lze užít přímo jako klauzuli “WHERE” v SQL výrazu. (Nastaví řádek v DB podle proměnné Mervisu)
- INSERT - Tato operace vloží řádek s aktuálními hodnotami jednotky do vybrané tabulky pokaždé, když je stav dané proměnné vyčítán jednotkou. (Mervis proměnná se loguje do DB)
Podporované platformy
- Program je navržen pro platformy x64 a ARM* včetně všech jednotek Unipi.
- Software je distribuován jako balík Debian (.deb) a je testován na distribucích Linux založených na Debianu 9/10.
- Software není open-source. V případě potřeby použití programu na jiné než uvedené platformu kontaktujte technickou podporu Unipi.
*v současnosti jsou podporovány platformy arm64 a armhf
Návod na rychlé spuštění
Instalace
- Do seznamu apt-sources přidejte repozitář Unipi Debian (tento krok přeskočte, pokud používáte jednotku Unipi). <distro> nahraďte názvem Vaší distribuce Debianu, tj. stretch nebo buster
sudo su echo "deb https://repo.unipi.technology/debian <distro> main" >> /etc/apt/sources.list.d/unipi.list wget https://repo.unipi.technology/debian/unipi_pub.gpg -O - | apt-key add apt-get update
- nainstalujte aplikační balíček
apt-get install sscp-sql-bridge
Balíčky s externími knihovnami (libyaml, libmysqlcppconn, libboost-system, libssl) se v případě potřeby automaticky nainstalují do adresáře /opt/unipi/tools .
Konfigurace
Veškerá konfigurace je tvořena dvěma soubory:
- /etc/unipi/sscp-sql-bridge.d/mapping.yaml: hlavní konfigurační soubor obsahující IP adresy a identifikační údaje pro databázový server/y, zařízení se spuštěným Mervis RT a rovněž i všechna nastavení týkajících se přenášených proměnných. Ve výchozím stavu tento soubor obsahuje komentovanou vzorovou konfiguraci; tuto konfigurace je nutné nahradit správnými hodnotami dle dané aplikace.
- jeden či více souborů .vlist, které obsahují seznam všech proměnných používaných v projektu či projektech Mervis. Tyto soubory jsou automaticky generovány prostředím Mervis IDE a jsou umístěny v kořenovém adresáři Mervis projektu. Výchozí cesta v souborovém systému jednotky je /opt/unipi/data a lze ji změnit v souboru souboru *mapping.yaml*. Upozornění: důrazně nedoporučujeme soubory .vlist editovat manuálně.
U konfiguračních souborů je třeba klást důraz na dodržování validního formátu .yaml. Pokud si nejste jistí, využijte online YAML validátor (např. https://codebeautify.org/yaml-validator). Rovněž do souboru nepřidávejte žádná pole, která nejsou zahrnutá v příkladu níže.
Struktura souboru mapping.yaml je popsána níže.
Povolení služby
Po dokončení konfigurace doporučujeme ověřit správnou funkčnost démona provedením následujících příkazů v popředí terminálu:
cd /opt/unipi/tools/ ./sscp-sql-bridge
Pokud se ve výstupu nezobrazí žádná chybová hláška, služba je připravena k povolení a spuštění na pozadí (tj. v módu démona) skrze následující příkazy:
systemctl enable sscp-sql-daemon systemctl start sscp-sql-daemon
Struktura konfiguračního souboru
Důsledně dodržujte YAML strukturu souboru. Nejsnadněji tak lze učinit prostou editací výchozího nastavení.
- plc_n - seznam adresovaných jednotek, na kterých je spuštěn Mervis. Lze definovat více než jednu jednotku
- sscp_ip — IP adresa zařízení se spuštěným mervisr (pokud je démon spuštěn na místní síti, lze použít adresu 127.0.0.1)
- sscp_port — TCP port, na kterém mervisr naslouchá (12346 ve výchozím stavu)
- sscp_username — přihlašovací jméno pro SSCP, lze nastavit v Mervis IDE
- sscp_password — heslo pro SSCP, lze nastavit v Mervis IDE
- db_user — přihlašovací jméno pro databázový server
- db_pass — heslo pro databázový server
- db_ip — IP adresa databázového serveru (pokud je spuštěn na stejném zařízení jako démon, lze použít adresu 127.0.0.1)
- db_port — port databázového serveru (3306 ve výchozím stavu)
- db_mysql_schema — název databázového schématu
- vlist_filename — seznam proměnných (generováno Mervis IDE)
- variable_sets - seznam provozních skupin - na jedné jednotce lze definovat více skupin
- type — typ operace (podporovány operace SELECT, UPDATE a INSERT)
- set_name — název sady jedné či více proměnných
- table_name — název tabulky v rámci db_mysql_schema
- reading_period — vyčítací interval, nastavení probíhá v krocích po 100 ms
- vars — seznam proměnných přiřazených k projektu
- var_name — název proměnné v rámci Mervis projektu
- field_name — název sloupce v table_name