I got a Dometic CFX 35W which boasts about a convenient wifi interface. The description was not a lie, it does indeed have a wireless network connection, just not implemented the way I would have preferred it. When reading about it, it is not clear exactly how that wifi connection works and I have to admit I was a bit disappointed when I unpacked and noticed that it exposes its own access point instead of the possibility to connect to an existing wireless network. If it would have been able to connect it to existing infrastructure it could have exposed itself for remote control over Internet.
Since it is not possible to connect to an existing internet connected network, it is obviously tricky to control the freezer over Internet out of the box. You are supposed to connect to the freezer’s own network via your mobile phone, so you and your mobile phone has to be physically close to the freezer and in addition loosing the Internet connection (since the phone is connected to a wifi network without Internet access) and on top of that only one client is allowed to connect at a time. I can imagine a use case when this makes sense but in general it is quite useless compared to be able to manage the freezer from anywhere over Internet. Imagine for example where you have the freezer off but you want to cool down some drinks an hour before coming home from work.
So, what to do…? Since the hardware is there and seemingly well working, the case is obviously not lost. Time to apply some basic hacking. Since I plan to typically have the freezer in the vicinity of the house, it will be within reach for my Raspberry Pi acting as server which anyway always is on. It uses the Ethernet interface for network connectivity and the wireless network interface was idle. By connecting it to the freezer’s network we have the network communication established.
The remaining part would be to make it speak the freezer’s protocol and to be able to control it over the web. Since the Android client is easily downloadable (the apk file that is) and not obfuscated, the protocol is basically open. With some basic understanding of Java, anyone is able to decompile and turn the Android app to a plain Java console app. I added a few command-line arguments for the things I wanted to control, like switching the freezer on/off and settings a certain temperature. On top of that I created a simple web page (PHP to the rescue) exposing that capability over the web so I don’t have to SSH onto the server.