We’re working on an IoT device connected through a cellular network (can’t change that). We are using MQTT as the communication protocol. The device reports data on a regular interval (say every 10 minutes), but also needs to react from real-time requests from the user (via the cellular network). Hence, we need to keep the TCP connection alive in both directions.
We are using a TCP keepalive value of 30 seconds for the MQTT connection, however, this eats through our bandwidth. Each keepalive packet sequence uses around 270 bytes of data (up + down), that’s around 740kB per day. Are there other methods to keep the connection alive such that a user can remotely activate a feature on our device? Reducing the data consumption cost is our primary concern, power is not an issue.
submitted by /u/psiphi75
Original article: How to reduce the cellular network data usage of an IoT device?