Нам нравится ModemManager с NetworkManager, это стабильно работает и легко настраивается.
Но текущая проверка наличия интернета не позволяет оценить его качество. При наличии двух сим карт может выбираться та, у которой есть только 2G или/и низкий уровень сигнала. Это становится проблемой при развертывании большого количества однотипно настроенных объектов.
Так же не хватает кеширования уровня сигнала не активной сим.
Есть ли возможность не отказываясь от NetworkManager внести алгоритм переключения сетевых интерфейсов, основанный на качестве сигнала?
Особенность работы модема в том что он не может иметь одновременно две активные регистрации. То есть для того чтобы ищмерить уровень сигнала, напрмиер нужно:
отключить/разорвать активное соединение (2-3 секунды).
переключить карты, выбрав активной другую (3-4 секунды)
дождаться регистрации (до 5 секунд, типично, но может быть дольше)
измерить уровень, повторить переключение обратно.
То есть - до полуминуты, когда связи нет.
В MQTT топике просто оставлять?
Да, но для того чтобы этот уровень получить - нужно ж переключаться. В общем писал-стирал тут привлеку разработчиков - возможно у них что-то в голову придет.
Как вариант - вообще вынести управление вверх, для пользовательского ПО
Да, понимаю, чтобы получить уровень нужно переключить сим, но можно это делать при старте контроллера один раз, чтобы выдать в интерфейсе полную информацию по сим картам (подразумевая, что качество сигнала не менялось, т.к. контроллер стоит стационарно). Я сейчас так делаю для определения оператора и ID сим.