I think the LoRa radio as Gordon suggested is the right way to go, with an Espruino on each end. (Part of why I specified that you need a microcontroller at each end is that just about every day someone posts on the Arduino forums trying to use 433mhz cheapo-RF without a microcontroller on one end, and we have to explain to them why that doesn't work)
IMO, trying to push WiFi to get that kind of range out of it is not a winning proposition. Not for this sort of thing anyway...
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
I think the LoRa radio as Gordon suggested is the right way to go, with an Espruino on each end. (Part of why I specified that you need a microcontroller at each end is that just about every day someone posts on the Arduino forums trying to use 433mhz cheapo-RF without a microcontroller on one end, and we have to explain to them why that doesn't work)
IMO, trying to push WiFi to get that kind of range out of it is not a winning proposition. Not for this sort of thing anyway...