Используйте функции HAL_I2C_Mem_Write и HAL_I2C_Mem_Read которые предназначены для работы с памятью,
С общими функциями работы с шиной I2C HAL_I2C_Master_Transmit и HAL_I2C_ Master_Receive есть некоторые проблемы при работе с памятью.
Можно построить Mesh систему на роутерах keenetic
https://help.keenetic.com/hc/ru/articles/360011456919-Подключение-ретранслятора-по-технологии-Mesh-Wi-Fi
В паре мест:
counter ==2; как написал Yurkin2015 заменить на counter=2;
И в одном месте counter==3 заменить на counter=3;
И ещё в этом месте лучше вот так написать
sum /= 10.0; //рассчитываем среднее значение
val = sum / 68.0;