Serwer AggreGate jest gotowym komponentem firmy Tibbo, który w dużym uproszczeniu, zarządza utrzymywaniem połączeń z komunikującymi się z nim Agentami. Od strony użytkownika serwer udostępnia interfejs API w postaci WebServis’u.
Interfejs ten umożliwia podgląd listy zalogowanych do serwera Agentów, sprawdzania statusu ich połączenia oraz wykonywanie udostępnianych przez Agentów funkcji (w naszym przypadku będą to funkcje pozwalające na sterownie przekaźnikiem oraz funkcje diagnostyczne).
Trzecim elementem systemu jest strona WWW z przyjaznym użytkownikowi interfejsem i z kontrolą dostępu (uwierzytelnianie hasłem).
Agent
Agent jest właściwym elementem wykonawczym systemu. Zbudowany został w oparciu o moduł programowalny (w języku C oraz w BASIC’u) EM500 firmy Tibbo. Moduł charakteryzuję się miniaturową budową. Znikome wymiary urządzenia (18,5 mm×16 mm×6,5 mm) wynikają z pozbawienia go zintegrowanego gniazda RJ45 (oraz transformatora).
Wyprowadzenia zgrupowano w jednym 22-pionowym konektorze. Moduł dysponuje 512 kB pamięci Flash, która jest dzielona pomiędzy aplikację użytkownika (320 kB) a system operacyjny TiOS (192 kB). Ponadto, moduł ma 208 bajtów pamięci EEPROM (głównie do przechowywania danych konfiguracyjnych). W EM500 pamięć ta nabiera szczególnego znaczenia, gdyż moduł nie ma funkcjonalności wewnętrznego dysku Flash. System operacyjny modułu EM500 udostępnia wprawdzie obiekt fd (będący sterownikiem dysku Flash), jednak może on współpracować jedynie z zewnętrznymi pamięciami z interfejsem SPI. Innymi słowy – pamięć EEPROM jest jedyną pamięcią nieulotną modułu, dostępną z poziomu aplikacji.
Pamięć RAM modułu nieznacznie przekracza 16 kB i jest współdzielona pomiędzy zmiennymi a buforami interfejsów komunikacyjnych (ethernetowego oraz szeregowego). W praktyce oznacza to, że im więcej pamięci przeznaczymy na obsługę wielu połączeń TCP, tym mniej pozostanie do dyspozycji dla wykonywanej aplikacji.
Pewną komplikacją w stosowaniu EM500 jest to, że wymaga zewnętrznego obwodu zerowania. Ponadto, producent rekomenduje użycie specjalizowanych układów resetu np. MCP130-300, co nie wpływa korzystnie na budżet projektu.
Stosowanie zewnętrznego transformatora oraz gniazda RJ45 również wymaga nieco uwagi. Zgodnie zaleceniami połączenia pomiędzy modułem a elementami zewnętrznymi powinny być jak najkrótsze, co wymusza umiejscowienie modułu bardzo blisko gniazda. Port Ethernet jest zgodny ze standardem 10/100BaseT oraz auto-MDIX.
Poza interfejsem Ethernet moduł ma 8-bitowy port wejścia/wyjścia oraz wyprowadzeniami portu szeregowego (prędkość transmisji do 460,8 kb/s, kilka trybów pracy). Wewnętrzna budowa linii I/O wymaga krótkiego komentarza:
Standardowo wyprowadzenie portu może znajdować się w jednym z trzech stanów: z poziomem wysokim, z poziomem niskim lub w stanie wysokiej impedancji (w tym wypadku linia pracuje jako wejście). W praktyce oznacza to, że przy obsłudze jednej linii I/O musimy manipulować dwoma rejestrami: jednym odpowiedzialnym za kierunek linii, drugim za występujący na niej poziom. Tak zaprojektowane bufory linii wejściowych są w starszych (niż EM500) platformach (EM1202, EM1206, EM1000).