В симуляторе
Работает целиком (с 1.8.13): подключение, подписки с масками + и #, публикация с QoS 0 и 1, сохранённые сообщения (retain), последняя воля, keep-alive. Под библиотекой лежит подменённый стек сокетов, а не подменённые вызовы, поэтому сам код остаётся настоящим — тот же PubSubClient, что уйдёт в плату.
Брокер отвечает изнутри симулятора на порту 1883 любого адреса: broker.hivemq.com, test.mosquitto.org и адрес из примера работают без правок. Во вкладке «MQTT» под схемой видно всё, что публикует плата, там же можно опубликовать ей ответ; сценарий умеет то же строками mqtt "тема" "текст" и ожидать mqtt "тема" "текст".
Чего нет: TLS (порт 8883, WiFiClientSecure) — шифровать на той стороне некому; выхода к настоящему брокеру в интернете — радиочасть ESP32 закрыта, и сети на самом деле нет. Подробности в docs/network.md.
Брокер MQTT живёт в шлюзе симулятора: порт 1883 любого узла. Что через него проходит — во вкладке «MQTT».