Capacity Approaching Coding Strategies for Machine-toMachine Communication in IoT Networks