Przepraszam, jeśli zagadnienie należy do tych banalnych, jednak nie mam wielkiego doświadczenia z pisaniem programów na komputery PC. Do tej pory zajmowałem się (amatorsko) mikrokontrolerami, realizując wymianę danych m.in. za pośrednictwem takich sterowników Ethernetu jak ENC28J60 albo W5100.
Teraz powoli zabieram się za stworzenie projektu prostej automatyki domowej (sterowanie światłem, raportowanie o wykryciu ruchu, wysyłanie informacji o wciśnięciu dzwonka do drzwi itp.). Na samych mikrokontrolerach tego nie zrobię - będzie mi potrzebna jakaś centralka na Linuksie. W tym celu planuję wykorzystać na razie Raspberry Pi, docelowo wymieniając go na jakiegoś CubieTrucka.
Jakoś radzę sobie z komunikacją między samymi modułami na AVR-ach a Linuksem wewnątrz mojej domowej sieci. Będę jednak potrzebował także jakiegoś sposobu na skomunikowanie tego systemu ze światem, czyli co najmniej:

  1. Aplikacją na Androida
  2. Aplikacją webową

Tutaj będzie mi potrzebna już jakaś szyfrowana komunikacja, z bezpieczną identyfikacją logującego się klienta.
Czy są dostępne jakieś biblioteki, które umożliwią mi zaprogramowanie takiego serwera TCP, który będzie sobie nasłuchiwał na konkretnym porcie? Dobrze by było, gdyby było to jakieś standardowe narzędzie, do którego w miarę łatwo zaprogramuję też klienta po stronie PHP albo aplikacji na Androida. Jest coś takiego, czy też jedyną opcją będzie pisanie tego niskopoziomowo, za pomocą zwykłych socketów?