\section{Requirements}
The device under test will be referred to as \textbf{appliance}. The requirements for the final \textbf{measuring device} are grouped to the three categories. Mandatory requirements are bound to be met at any cost. Some of the high importance requirements can be skipped or slightly modified, if unpredictable obstacles are found. However, they are all assumed to be completed for well being of the project. Optional requirements will be completed only if the resources allow it.

They are also divided to a hardware part and software part. Software is easier to change than hardware and requires hardware to be run on. Software is also limited by the resources provided by the hardware. Therefore, hardware needs to be logically completed first and are also highlighted in figures \ref{f:client_node} and \ref{f:serv_node}.

\subsection{Hardware requirements}

\renewcommand{\theenumi}{\Alph{enumi}}
\textbf{Mandatory:}
\begin{enumerate}
\item Measure current, voltage and phase angle simultaneously to calculate the real power and the power factor
\item More measuring devices can be added to the system by user without \gls{hw} or \gls{sw} modifications
\item Devices under test run at nominal 230 V, 50 Hz that use two-way or three-way EU plug
\item Protection against the electrical shock, fire hazard and damage caused by power surges
\end{enumerate}

\textbf{High importance:}
\begin{enumerate}[resume]
\item Store the measured data in server's node available non-volatile local \gls{memory} 
\item Completely shut the appliance off or back on
\item Indicate that the measuring device is active (configured and working) with a \gls{led}
\item Handle maximum of 8 A currents drawn by the appliance
\end{enumerate}

\textbf{Optional:}
\begin{enumerate}[resume]
\item Store the measured data on an \gls{usb} flash disk 
\item Provide \gls{hw} support for some crossed support signalisation (i.e. by sound)
\item Internet and Ethernet connection on server node
\end{enumerate}

\begin{figure}[ht]
\centering
\includegraphics[width=.7\textwidth,angle=0]{client_node_diag}
\caption{The proposed block diagram of a \textit{client node}, including HW requirements}\label{f:client_node}
\end{figure}

\subsection{Software requirements}
\textbf{Mandatory:}
\begin{itemize}
\item The \gls{gui} running on the web-server 
\item Add, edit (configure) and remove measuring devices to/from the system
\item Present the instantaneous (real) power consumed for each appliance
\end{itemize}

\textbf{High importance:}
\begin{itemize}
\item Graphs of all measured quantities over time
\item Authentication mechanism 
\item Automatic configuration of the new connected measuring devices
\end{itemize}

\textbf{Optional:}
\begin{itemize}
\item Access to \gls{gui} outside of local network
\item Control Wi-Fi repeater mode to strengthen the signal for client nodes
\item Send measured data to the cloud storage
\item Separate administrator (view and change) and user (view only) privileges 
\item Ability to set thresholds for measured data and notify user about crossing them via text based message
\end{itemize}

\begin{figure}[ht]
\centering
\includegraphics[width=.7\textwidth,angle=0]{server_node_diag}
\caption{The proposed block diagram of a \textit{server node}, including HW requirements}\label{f:serv_node}
\end{figure}

\newpage
\section{System design}

The first mandatory software requirement asks for a web server. It is entirely possible for every measuring device to contain its own web server. However, multiple points are requiring separate parts to work as a \textbf{system}. Two common system structures are \textit{centralised} and \textit{decentralised}. 
Decentralised (peer-to-peer) systems are harder to build but are more fail-proof. Since fail-proofness is not mentioned in the requirements, centralised system might suffice. 

Using centralised system means, that the measuring devices  will use one separate accessory, from now called the \textbf{server node}, to do most of the work on the software side. The work includes, but is not limited to, receiving the measured data, storing them, hosting the web server with the \gls{gui} containing all necessary options and information, handling the \gls{usb} or communication with a \gls{cloud} and so on. The block diagram for a server node, depicting required blocks can be seen in the figure \ref{f:serv_node})

Where there are at least two nodes in a system, they have to communicate together in a particular way, known to both of them. The web server naturally operates over \gls{tcpip}. Therefore, same networking stack (the way of comunication), that is used for communication between the server node and user can be used to communicate to client nodes as well. \Gls{tcpip} hardware is ready to be used and is supporting a full-blown networking \gls{stack}, powering communication over today's networks.

The measuring devices, from now on called \textbf{client nodes}, will consist of blocks of the remaining hardware requirements. The resulting block diagram can be seen in the figure \ref{f:client_node})


