¿Y si un día quieres cambiar el módulo en el que corres cierto servicio o gateway, o simplemente hacer una copia de seguridad por si un día se estropea?
para eso nos hace falta ver como hacer un «trasplante» de software, o dicho de otra manera: primero backup y luego flash.

Mi primer OpenMQTTGateway lo instalé en un módulo con ESP32 que tenía sin darle uso, pero ahora ya he recibido unos cuantos Wemos D1 ESP32 mini, los cuales son más pequeños y sin ningún periférico innecesario, así que puedo volver a tener el TTGO-CAM disponible (ahora que parece que hay firmwares de IPCam disponibles).

primero: el backup
Para hacer la copia del firmware actual, no he encontrado una herramienta con GUI para Mac OS que tenga esa opción, así que al final lo he tenido que hacer con esptool en el terminal:
1- tener Python instalado
2- ejecutar los siguientes comandos para instalar lo requerido:
pip install esptool
pip install pyserial
3- una vez instalado esptool y la librería de acceso serie, solo queda ejecutar la siguiente línea para la copia de la memoria flash:
python esptool.py -b 115200 --port /dev/cu.SLAB_USBtoUART read_flash 0x00000 0x400000 _flash_4M.bin
en vuestro caso, puede que necesitéis adaptar el nombre del puerto o el tamaño de la memoria flash (para windows, vale con poner el «COMx»), ejemplo para 1M, en el puerto COM6:
python esptool.py -b 115200 --port COM6 read_flash 0x00000 0x100000 flash_1M.bin
ya tenemos nuestro archivo flash.bin con la copia de respaldo.
segundo: el flasheo
Para flashear ESP8266 o ESP32, a mí me gusta usar ESPHome_flasher o NodeMCU Pyflasher, que son dos herramientas disponibles para macOS y que van directas al asunto, sin mucha complicación:

Por otra parte, también podríamos usar de nuevo esptool, que también es capaz de flashear (obviamente), con los siguientes comandos:
Para 1M Flash:
python esptool.py -b 115200 --port COM6 write_flash --flash_freq 80m 0x000000 flash_1M.bin
Para 4M Flash:
python esptool.py -b 115200 --port COM6 write_flash --flash_freq 80m 0x000000 flash_4M.bin
A fin de cuentas, NodeMCU es solo una interfaz gráfica para esptool, ya que de hecho, el comando que ha ejecutado en la ventana de la captura de pantalla de un poco más arriba, es el siguiente:
esptool.py --port /dev/cu.SLAB_USBtoUART --baud 921600 --after no_reset write_flash --flash_mode dio 0x00000 /Users/josemanuel/Downloads/esptool-3.0/OMG-BLE_flash_4M.bin --erase-all
terminando: a ver si funciona
Este es el que va a pasar a encargarse de la función de gateway entre BLE y MQTT, y la carcasa en la que va a estar protegido:

Pues la manera más fácil de ver que realmente ha arrancado y se ha conectado a MQTT, es echando un vistazo a MQTT Explorer:

Estupendo!
un saludo