I'm working on a project that requires multiple ESP32s to be able to receive a signal from a smartphone in order to close/open a set of doors. The catch is that this will be happening in a remote area with no internet whatsoever, and on a wide scale (hundreds of ESP devices). The setup also needs to be portable, as it will be moving around a lot. What is the best way of going about this sort of local network? So far I have considered:

  • LoRa (just not sure in general how this would work with a phone + esps locally. And phones can't send LoRa signals, can they?). Another problem with LoRa is that the antennae that need to be hooked up to my ESP32's for LoRa to work are too bulky for my situation.

  • MQTT (relatively low range, requires routers peppered throughout. Small number of devices/clients that could be connected if the broker is a device like an ESP or a raspberry pi)

  • Mesh network (devices can be connected with painlessMesh; seemingly ideal solution. Just having difficulties figuring out how to connect this to a smartphone (both to receive and send messages))

Does anyone have any suggestions?

  • 3
    you can use WiFi – jsotola Dec 18 '20 at 6:17
  • 4
    MQTT is a network protocol, not a network... the underlying network to use MQTT would indeed generally be WiFi. What kind of range do you need? How do you power the devices? How many devices and phones? – jcaron Dec 18 '20 at 7:38
  • An MQTT broker running on a Raspberry Pi can easily handle 1000s of clients – hardillb Dec 18 '20 at 11:59
  • Asking for "best" always invites closure as opinion-based. – Chenmunka Dec 19 '20 at 9:07

The only two network types you can count on on a phone are WiFi and BLE (or cellular, but you told us there’s no Internet). LoRa is indeed never available.

WiFi requires the user to connect to the network (network name and usually password, though this can be provided as a QR Code), and phones don’t always like WiFi networks without Internet access (they may complain or refuse to connect). But it’s usable on any phone, even without an app.

BLE usually requires an app to be installed on the phone, but can then work without the user having to enter any credentials.

In both cases, range is limited, though very variable depending on the environment and the devices on both sides.

One solution could be to set up a regular WiFi network with APs and a router (to act as a DHCP server), and have both phones and ESP32s connect to it. You may also need a DNS server, depending on what exactly you do. Depending on the size of the area to be covered and the number of devices, you may need several APs and either cables between them (possibly an Ethernet switch as well), or wireless links (e.g. “WiFi mesh” solutions).

Another solution would be for the current phones to use BLE to talk to one of the ESP32s in range and then use some form of mesh between the ESP32s.

Remember that the ESP32s can also act as APs, though I probably wouldn’t count on them to connect lots of phones.

Really, we don’t have enough details to know which of those solutions could work for you, but I hope they give you starting points.

  • 1
    Thanks for the writeup. I think a mesh network with BLE as the bridge connecting it to a phone is probably the way to go in my case. Appreciate the help! – user13175 Dec 20 '20 at 1:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.