Petros писал(а):даже такая небольшая последовательность команд вызовет шквал вопросов как сделать, чтобы оно работало...
У кого вызовет шквал вопросов? Для любого серверного ПО реализация такого простейшего драйвера - дело двух минут. Пользователю же важен результат и ему все равно как именно это работает.
Petros писал(а):Мое мнение - делать поддержку основных устройств
Что такое "основное устройство"? I2C-устройств сотни. Какие из них считать основными? Что делать в ситуации, когда выпуск конкретного датчика/устройства прекращен/заменен на другую версию? Убирать из прошивки или тянуть весь этот груз шлейфом всегда?
Предложенный мною вариант позволяет малой кровью решать все возможные проблемы. Более того, если вы решили подключить какое-нибудь новое I2C-устройство, нет необходимости ждать/убеждать кого-то внедрять поддержку в прошивку. Например, вы нашли замечательный датчик. Но он нужен только вам и больше никому. Я отвечаю, что не имею желания в силу малой популярности и распространенности датчика внедрять его поддержку в прошивку. Все - вопрос закрыт. Вы не сможете подключить этот датчик. Но если пойти по пути, предложенном мною, то вы, открыв даташит на устройство, сможете без какой-либо дополнительной доработки прошивки легко добавить поддержку любого датчика самостоятельно. Это гораздо важнее.
Petros писал(а):sda=30&scl=31&type=BH1750
Далее просто добавлять поддержку необходимых устройств с новыми прошивками
На мой взгляд, это тупиковый путь. И бессмысленный.
Скажите, какая в сущности для сервера разница - сделать 1 запрос или 10?
В предложенном мною решении мы получаем:
а) сопоставимую с полностью аппаратной скорость взаимодействия с I2C-устройством
б) получаем фактически удобный интерфейс к любому I2C-устройству, а не только к тому, который "поддерживается" прошивкой
в) можем использовать полные возможности устройства (режимы, настройки и т.д.), а не только "задушенную" ради экономии памяти реализацию, что могла бы быть в памяти микроконтроллера
г) фактически не тратим память микроконтроллера
И последнее. Некоторые устройства (типа дисплеев) могут требовать последовательное выполнение сотен команд. Если реализация полностью будет в прошивке, то это означает, что если за это время была нажата кнопка на выключателе (или отправлена команда с сервера), то это событие будет пропущено. Не все I2C-девайсы поддерживают высокую скорость работы. В моем же случае работа с шиной как-бы фрагментируется и устройство успевает слушать все остальные события. Мне кажется это крайне важный аргумент.