Actually using ZLIB might not be the best idea, better would be something that's faster.
I'd go with LZ4. There's also lzturbo, but, lz4 has format that might be nicer for "small devices" (raspis & Co.)
And ChuckOne is right, binary protocol equals problems
Compression looks like a premature optimization to me. Let's make things more complicated when we actually need it.
ChuckOne was suggesting to use compression on json instead of using binary format.
We could compare the two options, and check how much compressed data is bigger than "native binary"