\chapter{Instalace kontroléru}

Kontrolér je založený na Python frameworku Flask, takže jej lze spustit z jakékoli platformy, na které je nainstalovaný Python.

\subsection*{Požadavky}

\begin{itemize}
    \item Python 3.7, pip3
\end{itemize}

\subsection*{Instalace}

Nejprve je nutné si naklonovat adresář projektu:

\begin{verbatim}
    $ git clone https://github.com/pjasicek/openwrt-acp
    $ cd openwrt-acp
\end{verbatim}

\noindent
Poté stáhnout potřebné Python balíčky:

\begin{verbatim}
    $ pip3 install -r requirements.txt
\end{verbatim}

\subsection*{Spuštění}

\textbf{Windows}

\begin{verbatim}
    $ set FLASK_APP=main.py
    $ set FLASK_ENV=development
    $ set FLASK_DEBUG=0
    $ python -m flask run --with-threads
\end{verbatim}

\noindent
\textbf{Linux}

\begin{verbatim}
    $ FLASK_APP=main.py
    $ FLASK_ENV=development
    $ FLASK_DEBUG=0
    $ flask run --with-threads
\end{verbatim}

\subsection*{Konfigurace}

Konfigurace kontroléru se provádí v konfiguračním souboru \texttt{config.env}. Při změně některých konfiguračních možností je nutné restartovat aplikaci kontroléru. Níže jsou popsány konfigurační možnosti:

\begin{verbatim}
# Uživatelské jméno a heslo pro přihlášení do kontroléru
LOGIN_USERNAME=admin
LOGIN_PASSWORD=admin

# Uživatelské jméno a heslo pro přihlášení do webového rozhraní LuCI.
# Mělo by to být stejné jako pro SSH
OPENWRT_USERNAME=root
OPENWRT_PASSWORD=root

# SSH klíč k OpenWrt zařízením, využívá se pro kontrolu dostupnosti SSH
OPENWRT_SSH_KEYFILE=data/openwrt_key.priv

# Sledovaný síťový segment
OPENWRT_NETWORK=192.168.1.0/24

# Interval, ve kterém se automaticky skenuje síť
OPENWRT_SCAN_INTERVAL_SECONDS=900
\end{verbatim}



\chapter{Adaptace nového zařízení OpenWrt}

Pokud je OpenWrt zařízení úplně nové (po nainstalování základního firmwaru), je nejprve nutné vytvořit přihlašovací údaje. To se dá nejjednodušejí udělat přes SSH. Výchozí IP adresa pro OpenWrt zařízení bývá většinou 192.168.0.1 nebo 192.168.1.1. Pro první přihlášení není potřeba heslo.

\begin{verbatim}
    ssh root@192.168.1.1
\end{verbatim}

\noindent
Následně zobrazí OpenWrt výzvu pro zadání nového hesla - je nutné zadat stejné heslo, jako je v konfiguračním souboru kontroléru pod názvem \texttt{OPENWRT\_PASSWORD}.

\noindent
Po vytvoření přihlašovacích údajů je nutné nainstalovat balíček poskytující podporu pro rozhraní JSON-RPC:

\begin{verbatim}
    opkg install luci-mod-rpc
    /etc/init.d/uhttpd restart
\end{verbatim}

\noindent
Nyní je nutné přenastavit výchozí IP adresu na nějakou adresu ze síťového segmentu kontroléru. Je nutné si dát pozor na potencionální konflikt adres s jinými zařízeními v síti. Poté stačí OpenWrt zařízení zapojit do stejné sítě jako je kontrolér a při dalším skenu sítě v kontroléru se zařízení automaticky detekuje.





% \chapter{Metody rozhraní RPC-JSON knihovny uci}
% \label{sec:A_rpcjson_uci}



% \chapter{Některé příkazy balíčku \texttt{thesis}}

% \section{Příkazy pro sazbu veličin a jednotek}

% \begin{table}[!h]
%   \caption[Přehled příkazů]{Přehled příkazů pro matematické prostředí }
%   \begin{center}
%   	\small
% 	  \begin{tabular}{|c|c|c|c|}
% 	    \hline
% 	    Příkaz    						& Příklad 					& Zdroj příkladu  							& Význam  \\
% 	    \hline\hline
% 	    \verb|\textind{...}|	& $\beta_\textind{max}$ 	& \verb|$\beta_\textind{max}$|	& textový index \\
% 	    \hline
% 	    \verb|\konst{...}| 		& $\konst{U}_\textind{in}$ 				& \verb|$\konst{U}_\textind{in}$|		& konstantní veličina \\
% 	    \hline
% 	    \verb|\prom{...}| 		& $\prom{u}_\textind{in}$ & \verb|$\prom{u}_\textind{in}$| & proměnná veličina \\
% 	    \hline
% 	    \verb|\komplex{...}| 	& $\komplex{u}_\textind{in}$ & \verb|$\komplex{u}_\textind{in}$| & komplexní veličina \\
% 	    \hline
% 	    \verb|\vekt{...}| 		& $\vekt{y}$ 						& \verb|$\vekt{y}$| & vektor \\
% 	    \hline
% 	    \verb|\matice{...}| 	& $\matice{Z}$ 						& \verb|$\matice{Z}$| & matice \\
% 	    \hline
% 	    \verb|\jedn{...}| 		& $\jedn{kV}$ 						& \verb|$\jedn{kV}$|\quad či\ \, \verb|\jedn{kV}| & jednotka \\
% 	    \hline
% 	  \end{tabular}
%   \end{center}
% \end{table}



% %\newpage
% \section{Příkazy pro sazbu symbolů}

% \begin{itemize}
%   \item
%     \verb|\E|, \verb|\eul| -- sazba Eulerova čísla: $\eul$,
%   \item
%     \verb|\J|, \verb|\jmag|, \verb|\I|, \verb|\imag| -- sazba imaginární jednotky: $\jmag$, $\imag$,
%   \item
%     \verb|\dif| -- sazba diferenciálu: $\dif$,
%   \item
%     \verb|\sinc| -- sazba funkce: $\sinc$,
%   \item
%     \verb|\mikro| -- sazba symbolu mikro stojatým písmem%
% 			\footnote{znak pochází z~balíčku \texttt{textcomp}}: $\mikro$,
% 	\item
% 		\verb|\uppi| -- sazba symbolu $\uppi$
% 			(stojaté řecké pí, na rozdíl od \verb|\pi|, což sází $\pi$).
% \end{itemize}
% %
% Všechny symboly jsou určeny pro matematický mód, vyjma \verb|\mikro|, jenž je\\ použitelný rovněž v~textovém módu.
% %$\upmikro$


% \chapter{Druhá příloha}

% \begin{figure}[!h]
%   \begin{center}
%     \includegraphics[scale=0.5]{obrazky/ZlepseneWilsonovoZrcadloNPN}
%   \end{center}
%   \caption[Alenčino zrcadlo]{Zlepšené Wilsonovo proudové zrcadlo.}
% \end{figure}

% Pro sazbu vektorových obrázků přímo v~\LaTeX{}u je možné doporučit balíček \href{https://www.ctan.org/pkg/pgf}{\texttt{TikZ}}.
% Příklady sazby je možné najít na \href{http://www.texample.net/tikz/examples/}{\TeX{}ample}.
% Pro vyzkoušení je možné použít programy QTikz nebo TikzEdt.




% \chapter{Příklad sazby zdrojových kódů}

% \section{Balíček \texttt{listings}}

% Pro vysázení zdrojových souborů je možné použít balíček \href{https://www.ctan.org/pkg/listings}{\texttt{listings}}.
% Balíček zavádí nové prostředí \texttt{lstlisting} pro sazbu zdrojových kódů, jako například:
% %
% \begin{lstlisting}[language={[LaTeX]TeX}]
% \section{Balíček lstlistings}
% Pro vysázení zdrojových souborů je možné použít
% 	balíček \href{https://www.ctan.org/pkg/listings}%
% 	{\texttt{listings}}.
% Balíček zavádí nové prostředí \texttt{lstlisting} pro
% 	sazbu zdrojových kódů.
% \end{lstlisting}
% %
% Podporuje množství programovacích jazyků.
% Kód k~vysázení může být načítán přímo ze zdrojových souborů.
% Umožňuje vkládat čísla řádků nebo vypisovat jen vybrané úseky kódu.
% Např.:

% \noindent
% Zkratky jsou sázeny v~prostředí \texttt{seznamzkratek}:
% \label{lst:zkratky}
% \lstinputlisting[language={[LaTeX]TeX},nolol,numbers=left,firstline=1,lastline=1]{text/zkratky.tex}
% %
% Šířka textu druhého parametru \verb|KolikMista| udává šířku prvního sloupce se zkratkami.
% Proto by měla být zadávána nejdelší zkratka nebo symbol.
% Příklad definice zkratky \zk{symfvz} je na výpisu \ref{lst:symfvz}.

% \shorthandoff{-}
% \lstinputlisting[language={[LaTeX]TeX},frame=single,caption={Ukázka sazby zkratek},label=lst:symfvz,numbers=left,linerange={bsymfvz-\%\%\%\ esymfvz},includerangemarker=false]{text/zkratky.tex}
% \shorthandon{-}

% \noindent
% Ukončení seznamu je provedeno ukončením prostředí:
% \lstinputlisting[language={[LaTeX]TeX},nolol,numbers=left,firstnumber=22,linerange=22]{text/zkratky.tex}

% \vspace{\fill}

% \noindent
% {\bf Poznámka k~výpisům s~použitím volby jazyka \verb|czech| nebo \verb|slovak|:}\newline
% Pokud Váš zdrojový kód obsahuje znak spojovníku \verb|-|, pak překlad může skončit chybou.
% Ta je způsobená tím, že znak \verb|-| je v~českém nebo slovenském nastavení balíčku \verb|babel| tzv.\ aktivním znakem.
% Přepněte znak \verb|-| na neaktivní příkazem \verb|\shorthandoff{-}| těsně před výpisem a hned za ním jej vraťte na aktivní příkazem \verb|\shorthandon{-}|.
% Podobně jako to je ukázáno ve zdrojovém kódu šablony.


% \clearpage

% %\section{Výpis kódu prostředí Matlab}
% Na výpisu \ref{lst:priklad.vypis.kodu.Matlab} naleznete příklad kódu pro Matlab, na výpisu \ref{lst:priklad.vypis.kodu.C} zase pro jazyk~C.

% \lstnewenvironment{matlab}[1][]{%
% \iflanguage{czech}{\shorthandoff{-}}{}%
% \iflanguage{slovak}{\shorthandoff{-}}{}%
% \lstset{language=Matlab,numbers=left,#1}%
% }{%
% \iflanguage{slovak}{\shorthandon{-}}{}%
% \iflanguage{czech}{\shorthandon{-}}{}%
% }

% \begin{matlab}[frame=single,float=htbp,caption={Příklad Schur-Cohnova testu stability v~prostředí Matlab.},label=lst:priklad.vypis.kodu.Matlab,numberstyle=\scriptsize, numbersep=7pt]
% %% Priklad testovani stability filtru

% % koeficienty polynomu ve jmenovateli
% a = [ 5, 11.2, 5.44, -0.384, -2.3552, -1.2288];
% disp( 'Polynom:'); disp(poly2str( a, 'z'))

% disp('Kontrola pomoci korenu polynomu:');
% zx = roots( a);
% if( all( abs( zx) < 1))
%     disp('System je stabilni')
% else
%     disp('System je nestabilni nebo na mezi stability');
% end

% disp(' '); disp('Kontrola pomoci Schur-Cohn:');
% ma = zeros( length(a)-1,length(a));
% ma(1,:) = a/a(1);
% for( k = 1:length(a)-2)
%     aa = ma(k,1:end-k+1);
%     bb = fliplr( aa);
%     ma(k+1,1:end-k+1) = (aa-aa(end)*bb)/(1-aa(end)^2);
% end

% if( all( abs( diag( ma.'))))
%     disp('System je stabilni')
% else
%     disp('System je nestabilni nebo na mezi stability');
% end
% \end{matlab}





 \chapter{Obsah přiloženého CD}
% Nezapomeňte uvést, co čtenář najde na přiloženém médiu.
% Je vhodné okomentovat obsah každého adresáře, specifikovat, který soubor obsahuje důležitá nastavení, který soubor je určen ke spuštění atd.
% Také je dobře napsat, v~jaké verzi software byl kód testován (např.\ Matlab 2010b).

% Pokud je souborů hodně a jsou organizovány ve více složkách,  je možné pro výpis adresářové struktury použít balíček \href{https://www.ctan.org/pkg/dirtree}{\texttt{dirtree}}.

\subsection*{Složky se zdrojovými kódy aplikace}

\begin{itemize}
    \item adresář sources -- webová aplikace kontroléru
\end{itemize}

\subsection*{Složky se zdrojovými soubory této práce}

\begin{itemize}
    \item adresář tex
\end{itemize}



 %{\small
 %
 %\dirtree{%.
 %.1 /\DTcomment{kořenový adresář přiloženého CD}.
 %.2 sources\DTcomment{projekt a zdrojové soubory webové aplikace kontroléru}.
 %.2 tex\DTcomment{text této práce}.
 %}
 %}

 %{\small
 %
 %\dirtree{%.
 %.1 /\DTcomment{kořenový adresář přiloženého CD}.
 %.2 loga\DTcomment{loga školy a fakulty}.
 %.3 FEKT-spec-color.eps.
 %.3 FEKT-spec-color.pdf.
 %.3 logolink-op\_vavpi.png.
 %.3 RE-spec-color.eps.
 %.3 RE-spec-color.pdf.
 %.3 SIX\_logo\_zahlavi.png.
 %.2 obrazky\DTcomment{ostatní obrázky}.
 %.3 soucastky.eps.
 %.3 soucastky.png.
 %.3 spoje.eps.
 %.3 spoje.png.
 %.3 ZlepseneWilsonovoZrcadloNPN.eps.
 %.3 ZlepseneWilsonovoZrcadloNPN.png.
 %.3 ZlepseneWilsonovoZrcadloPNP.eps.
 %.3 ZlepseneWilsonovoZrcadloPNP.png.
 %.2 pdf\DTcomment{pdf stránky generované informačním systémem}.
 %.3 student-desky.pdf.
 %.3 student-titulka.pdf.
 %.3 student-zadani.pdf.
 %.2 text\DTcomment{zdrojové textové soubory}.
 %.3 literatura.tex.
 %.3 prilohy.tex.
 %.3 reseni.tex.
 %.3 uvod.tex.
 %.3 vysledky.tex.
 %.3 zaver.tex.
 %.3 zkratky.tex.
 %.2 navod-sablona\_FEKT.pdf\DTcomment{návod na používání šablony}.
 %.2 obhajoba.tex\DTcomment{hlavní soubor pro sazbu prezentace k~obhajobě}.
 %.2 readme.txt\DTcomment{soubor s~popisem obsahu CD}.
 %.2 sablona.tex\DTcomment{hlavní soubor pro sazbu kvalifikační práce}.
 %.2 thesis.sty\DTcomment{balíček pro sazbu kvalifikačních prací}.
 %}
 %}