Может я чего не понимаю, но такой W5100 ethernet shield https://arduino-ua.com/prod391-W5100_ethernet_shield у меня стоит на ардуино и отлично работает.
Насчет идеи. Сейчас аналогично разрабатываю систему для своего дома (50 управляемых светильников, 5 линий управляемых розеток, полсотни всяких датчиков). Но решил, что будет значительно дешевле и проще поставить несколько ардуин без плат расширения. Мне кажется, это будет надежнее. В случае поломки у меня хоть часть дома будет с освещением. По архитектуре - а как собираешься реализовывать автономность? Вариант "отвалился роутер/заглючил сервер" вполне реален. У меня ардуино затягивает свою конфигурацию с сервера, если он недоступен берет последнюю, сохраненную из EEPROM. При поступлении информации от input устройства, выполняются предписаные действия, примерно такие:
typedef struct {
char Id[ID_LENGTH]; // Id of action
char originId[ID_LENGTH]; // привязка к устройству - инициатору
Action action; // что сделать (например RELAY_SWITCH, RELAY_ON)
byte event; // что именно произошло: BUTTON_SHORT_CLICK, BUTTON_LONG_CLICK
char targetId[ID_LENGTH]; // Устройство, которому надо передать действие
} ActionUnit;
Ну и в параллель, сообщение от input девайса передаются на iobroker сервер (если он доступен). Все общение с cервером по MQTT. В итоге, если сервер недоступен, то исполняются последние действия. Пока, на макете 😄 , это работает. Через месяц-два буду разводить проводку в доме.