I2c с примером

Добрый день.
То, что i2cdetect отрабатывает показывая наличие устройства на шине - говорит о том что оно, устройство, подключено правильно.

Это для диагностики имеет опосредованную ценность, означает что шана ядром создана.

Можно пойти двумя путями: Сделать описание дайвером ядра, так же как (на контроллере) в /usr/share/wb-hwconf-manager/modules/wbio16.dtsi где строкой compatible = "microchip,mcp23017"; указывается что именно за устройство на шине и адресе а ниже - куда данные из него раскладывать в /dev/
Таким образом работу с устройством берт на себя ядро, отображая читаемые данные в файловую систему (и наоборот).
Второй вариант - это написание своего “драйвера”. Точнее - сервиса, который общается по i2c с устройством и выклюадывает данные с него в MQTT. Пример (питон) можно глянуть тут: How to Use I2C Devices with Raspberry Pi | Microcontroller Tutorials

Но я для своих проектов использую *ну и советую) банальную Ардуино с RS-485 трансмиттером делая Modbus RTU slave. Это проще и универсальнее. Подключается - вот так: Дружим WirenBoard с Arduino (slave) по ModBus
Ну и есть у меня более годный шаблон с регистрами.