Рассмотрите возможность следующего изменения в реализации протокола MQTT:
публикация состояния дискретных выходов сразу после выполнения команды, а не только по интервалу. Это позволит сразу получить подтверждение выполнения команды и исключит ожидание или необходимость запроса по другим протоколам. Интервал публикации удобен для датчиков, а для дискретных выходов удобнее получать изменения состояния сразу. Я понимаю, что для дискретных входов это требует реализации логики опроса, но для выходов изменения должны быть минимальны.
Ну и теперь ошибка в реализации статуса устройства:
при корректном отключении от брокера топик MQTTstatus остается в состоянии Online. По стандарту брокер опубликует сообщение LWT только при некорректном завершении сессии, а при корректном завершении обновление статуса должен выполнить клиент.