Como Chris disse, a chave é separar o protocolo do hardware. Mas isso não significa que você precise implementar seu próprio firmware! Você pode escolher um comutador que suporte um protocolo de automação residencial comum e prontamente disponível, como o Z-Wave ou o Insteon. Estes são protocolos fechados, mas há uma grande variedade de fabricantes que criam componentes interoperáveis com eles. Em seguida, você pode usar um controlador de automação residencial que integra os protocolos de automação residencial ao IP.
Eu uso um controlador de automação residencial Vera Edge, que oferece uma API da web; e há outras opções também. Eu escolhi Vera porque o sistema inteiro é executado localmente sem exigir acesso a uma interface de nuvem hospedada; não há taxa de serviço mensal e o dispositivo e as regras estão completamente sob meu controle. Posso optar por ocultar a API atrás do meu firewall, expor a API externamente ou usar os serviços de nuvem gratuitos de Vera para expor a API para mim. (Além disso, Vera tem uma comunidade muito ativa que está constantemente adicionando suporte para novos dispositivos de automação residencial.) Vera oferece um aplicativo gratuito para iPhone e Android, mas você não está vinculado ao aplicativo deles. Vários desenvolvedores independentes criaram seus próprios aplicativos que utilizam a API da Vera (Grasshopper, VeraMate e ImperiHome são três desses produtos) para fornecer GUIs alternativas.
Se você se opõe a um produto comercial de gateway e deseja muito trabalho, também existem soluções de código aberto para implementar seu próprio gateway de automação residencial que oferece uma API da web. Domoticz e OpenHAB são dois projetos que vêm à mente. No entanto, esses pacotes ainda são muito menos maduros que as soluções comerciais e exigem uma quantidade substancial de trabalho para implementar. (E você indicou que não queria hackear uma solução.)
A única desvantagem que vejo na abordagem baseada em gateway é que sua pergunta está sendo feita sobre "um interruptor de luz", implicando a quantidade de um dispositivo. Um switch de onda Z pode custar de US $ 10 a US $ 40 (ou mais) e um gateway comercial pode custar de US $ 100 a US $ 400 (ou mais). Para um único switch, o preço provavelmente não vale a pena. Porém, se você estiver automatizando um edifício inteiro, o custo do hub poderá ser distribuído entre dezenas de dispositivos.