Arduino con ethernet shield che "parla" in JSON su HTTP (o altro protocollo semplice); in base alle richieste cambia i suoi output di conseguenza e/o fornisce dati sul loro stato e/o da eventuali sensori.
Lo smartphone parla con l'arduino via rete (in piccolo basta un AP WiFi a cui colleghi l'arduino via ethernet, se vuoi fare le cose in grande invece lo puoi esporre direttamente su internet tramite router ADSL); l'app non dovrà fare altro che inviare/ricevere le richieste all'IP specificato.
In ogni caso, è un'idea abbastanza classica, se cerchi sul forum c'era uno che aveva realizzato e installato in casa propria un oggetto del genere (usando Arduino e Android).