1) При старте есп ищет сеть wifi с параметрами ssid "r4s" и паролем "12345678". После подключения и установки параметров wifi эта сеть больше не нужна.
2) Да, после ввода ее параметров. Гостевая нужна только для первичной настройки.
3) Да, все так, адрес 0x0000.
4) Все как в оригинальном скетче. если имя пустое чайник соединяется по айдишнику. У меня это работает. Если не получается, пробуйте по имени. Имя еще, наверное, пригодится, если 2 разных чайника

.
5) Пока 8 часов. Но файл вчерашний.
Бинарник сделан на 4МБ памяти,если что. Менял много и в разных местах. Исходники, если кому интересно, залил на гит
https://github.com/alutov/r4sGate/, для сборки вместо PubSubClient нужны 2 библиотеки
https://github.com/me-no-dev/AsyncTCP и
https://github.com/marvinroger/async-mqtt-client. Но смысла особого в исходниках нет, кроме погремушек разве что, если виснуть будет так же.
Там выделяется буфер по размеру команды+ 4байта. Я выделяю всегда 32 байта. У меня так:
uint8_t r4sWrite(uint8_t cmd, uint8_t* data, size_t len) {
size_t sz = 4 + len; // 55, counter, cmd, AA
// uint8_t* buffer = new uint8_t[sz];
byte buffer[32];
buffer[0] = 0x55;
buffer[1] = r4scounter;
buffer[2] = cmd;
buffer[sz - 1] = 0xAA;
if (len > 0) {
memcpy(&buffer[3], data, len);
}
// try {
pRemoteTXCharacteristic->writeValue(buffer, sz);
#ifdef R4S_LOG_EXCHANGE
log_i(">> %s", BLEUtils::buildHexData(NULL, buffer, sz));
#endif
// } catch (...) {
// log_d("writeValue failed");
// }
return r4scounter++;
}