Se vuoi posso provarci...
fai eseguire la chiamata ad arduino dal server, non dal client. Inoltre in questo modo eviti che molti client facciano richieste simultanee, ma centralizzi tutte le richieste dando tu le priorità ed eliminando i "doppioni" e le chiamate errate, una volta ottenuto il risultato lo "giri" al client.
In pratica:
Fai fare una chiamata in background al client verso il server (predisponi webapi sul server) il server controlla lo stato e determina se fare o meno la chiamata ad arduino (inutile accendere una luce già accesa, questo può avvenire se due client si connettono e tentano di fare la stessa azione), una volta fatta la richiesta ed ottenuto una risposta da arduino, il server restituisce al client l'esito della chiamata. Tutto tramite ajax.
Oppure, se il controllo richiede un aggiornamento frequente (ad esempio devi rilevare continuamente lo stato di un sensore), puoi anche fare in modo che il server chiami in maniera cadenzata arduino memorizzando lo stato (o trasmettendolo direttamente al client vedi sistemi tipo signalr per windows) e quando il client richiede lo stato al server questo li da l'ultimo rilevato. In questo caso sarebbe ancora meglio se a comunicare il suo stato fosse arduino stesso, facendo chiamate da arduino verso il server inviando il suo stato, in questo modo ad ogni chiamata di arduino il server memorizza lo stato attuale e risponde con lo stato "desiderato". In pratica fai in modo che il client che vuole leggere lo stato, possa vedere l'ultimo memorizzato, e se vuole cambiarlo invia una richiesta al server che memorizza lo stato desiderato, e questo verrà inviato come risposta alla successiva chiamata che farà arduino.
Inoltre facendo comunicare SOLO il server con arduino, risolvi eventuali problemi di prestazioni ridotte di arduino, che nonostante faccia il suo dovere potrebbe risentire di molti client differenti connessi in simultanea. Oltre al fatto che sarebbe più facile da controllare sotto il punto di vista della sicurezza. Usando poi la tecnica della chiamata da arduino a server risolvi invece anche il problema di configurazione del router e di un eventuale ip dinamico.