Hi all, I'm trying to do the final project for my studies, I use the Arduino IDE with the default config for the ESP 32. I'm testing with the MQTT test code and it isn't working, after a while (2/3 mins ) this happens:
Wait...
Initializing modem...
[32213] ### Unhandled: f`f
[32213] ### TinyGSM Version: 0.11.5
[32213] ### TinyGSM Compiled Module: TinyGsmClientSIM7000
[32524] ### Modem: SIMCOM SIM7000G
[32539] Modem Name: SIMCOM SIM7000G
[32544] Modem Info: SIM7000G R1529
Waiting for network... success
Network connected
Connecting to internet.digimobil.es[34214] ### Daylight savings time state updated.
[34218] ### Network time and time zone updated.
success
GPRS connected
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com success
Network disconnected
[166983] ### Unhandled: 0, SEND FAIL
Network re-connected
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com fail
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com fail
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com fail
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com fail
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com fail
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com fail
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com fail
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com fail
=== MQTT NOT CONNECTED ===
Connecting to broker.hivemq.com
This is the code:
define TINY_GSM_MODEM_SIM7000
// Set serial for debug console (to the Serial Monitor, default speed 115200)
define SerialMon Serial
// Set serial for AT commands (to the module)
// Use Hardware Serial on Mega, Leonardo, Micro
define SerialAT Serial1
// See all AT commands, if wanted
//#define DUMP_AT_COMMANDS
// Define the serial console for debug prints, if needed
define TINY_GSM_DEBUG SerialMon
// Add a reception delay, if needed.
// This may be needed for a fast processor at a slow baud rate.
// #define TINY_GSM_YIELD() { delay(2); }
// Define how you're planning to connect to the internet
// These defines are only for this example; they are not needed in other code.
define TINY_GSM_USE_GPRS true
define TINY_GSM_USE_WIFI false
// set GSM PIN, if any
define GSM_PIN ""
// Your GPRS credentials, if any
const char apn[] = "internet.digimobil.es";
const char gprsUser[] = "";
const char gprsPass[] = "";
// Your WiFi connection credentials, if applicable
const char wifiSSID[] = "YourSSID";
const char wifiPass[] = "YourWiFiPass";
boolean mqttConnect()
{
SerialMon.print("Connecting to ");
SerialMon.print(broker);
// Connect to MQTT Broker
boolean status = mqtt.connect("GsmClientTest");
// Or, if you want to authenticate MQTT:
// boolean status = mqtt.connect("GsmClientName", "mqtt_user", "mqtt_pass");
if (status == false) {
SerialMon.println(" fail");
return false;
}
SerialMon.println(" success");
mqtt.publish(topicInit, "GsmClientTest started");
mqtt.subscribe(topicLed);
return mqtt.connected();
}
void setup()
{
// Set console baud rate
Serial.begin(115200);
delay(10);
// Set LED OFF
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, HIGH);
pinMode(PWR_PIN, OUTPUT);
digitalWrite(PWR_PIN, HIGH);
delay(300);
digitalWrite(PWR_PIN, LOW);
SPI.begin(SD_SCLK, SD_MISO, SD_MOSI, SD_CS);
if (!SD.begin(SD_CS)) {
Serial.println("SDCard MOUNT FAIL");
} else {
uint32_t cardSize = SD.cardSize() / (1024 * 1024);
String str = "SDCard Size: " + String(cardSize) + "MB";
Serial.println(str);
}
Serial.println("\nWait...");
delay(1000);
SerialAT.begin(UART_BAUD, SERIAL_8N1, PIN_RX, PIN_TX);
// Restart takes quite some time
// To skip it, call init() instead of restart()
Serial.println("Initializing modem...");
if (!modem.restart()) {
Serial.println("Failed to restart modem, attempting to continue without restarting");
}
String name = modem.getModemName();
DBG("Modem Name:", name);
String modemInfo = modem.getModemInfo();
DBG("Modem Info:", modemInfo);
if TINY_GSM_USE_GPRS
// Unlock your SIM card with a PIN if needed
if (GSM_PIN && modem.getSimStatus() != 3) {
modem.simUnlock(GSM_PIN);
}
endif
if TINY_GSM_USE_WIFI
// Wifi connection parameters must be set before waiting for the network
SerialMon.print(F("Setting SSID/password..."));
if (!modem.networkConnect(wifiSSID, wifiPass)) {
SerialMon.println(" fail");
delay(10000);
return;
}
SerialMon.println(" success");
endif
if TINY_GSM_USE_GPRS && defined TINY_GSM_MODEM_XBEE
// The XBee must run the gprsConnect function BEFORE waiting for network!
modem.gprsConnect(apn, gprsUser, gprsPass);
endif
SerialMon.print("Waiting for network...");
if (!modem.waitForNetwork()) {
SerialMon.println(" fail");
delay(10000);
return;
}
SerialMon.println(" success");
if (modem.isNetworkConnected()) {
SerialMon.println("Network connected");
}
if TINY_GSM_USE_GPRS
// GPRS connection parameters are usually set after network registration
SerialMon.print(F("Connecting to "));
SerialMon.print(apn);
if (!modem.gprsConnect(apn, gprsUser, gprsPass)) {
SerialMon.println(" fail");
delay(10000);
return;
}
SerialMon.println(" success");
if (modem.isGprsConnected()) {
SerialMon.println("GPRS connected");
}
// Make sure we're still registered on the network
if (!modem.isNetworkConnected()) {
SerialMon.println("Network disconnected");
if (!modem.waitForNetwork(180000L, true)) {
SerialMon.println(" fail");
delay(10000);
return;
}
if (modem.isNetworkConnected()) {
SerialMon.println("Network re-connected");
}
if TINY_GSM_USE_GPRS
// and make sure GPRS/EPS is still connected
if (!modem.isGprsConnected()) {
SerialMon.println("GPRS disconnected!");
SerialMon.print(F("Connecting to "));
SerialMon.print(apn);
if (!modem.gprsConnect(apn, gprsUser, gprsPass)) {
SerialMon.println(" fail");
delay(10000);
return;
}
if (modem.isGprsConnected()) {
SerialMon.println("GPRS reconnected");
}
}
endif
}
if (!mqtt.connected()) {
SerialMon.println("=== MQTT NOT CONNECTED ===");
// Reconnect every 10 seconds
uint32_t t = millis();
if (t - lastReconnectAttempt > 10000L) {
lastReconnectAttempt = t;
if (mqttConnect()) {
lastReconnectAttempt = 0;
}
}
delay(100);
return;
}
mqtt.loop();
Hi all, I'm trying to do the final project for my studies, I use the Arduino IDE with the default config for the ESP 32. I'm testing with the MQTT test code and it isn't working, after a while (2/3 mins ) this happens:
Wait... Initializing modem... [32213] ### Unhandled: f`f [32213] ### TinyGSM Version: 0.11.5 [32213] ### TinyGSM Compiled Module: TinyGsmClientSIM7000 [32524] ### Modem: SIMCOM SIM7000G [32539] Modem Name: SIMCOM SIM7000G [32544] Modem Info: SIM7000G R1529 Waiting for network... success Network connected Connecting to internet.digimobil.es[34214] ### Daylight savings time state updated. [34218] ### Network time and time zone updated. success GPRS connected === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success === MQTT NOT CONNECTED === Connecting to broker.hivemq.com success Network disconnected [166983] ### Unhandled: 0, SEND FAIL Network re-connected === MQTT NOT CONNECTED === Connecting to broker.hivemq.com fail === MQTT NOT CONNECTED === Connecting to broker.hivemq.com fail === MQTT NOT CONNECTED === Connecting to broker.hivemq.com fail === MQTT NOT CONNECTED === Connecting to broker.hivemq.com fail === MQTT NOT CONNECTED === Connecting to broker.hivemq.com fail === MQTT NOT CONNECTED === Connecting to broker.hivemq.com fail === MQTT NOT CONNECTED === Connecting to broker.hivemq.com fail === MQTT NOT CONNECTED === Connecting to broker.hivemq.com fail === MQTT NOT CONNECTED === Connecting to broker.hivemq.com
This is the code:
define TINY_GSM_MODEM_SIM7000
// Set serial for debug console (to the Serial Monitor, default speed 115200)
define SerialMon Serial
// Set serial for AT commands (to the module) // Use Hardware Serial on Mega, Leonardo, Micro
define SerialAT Serial1
// See all AT commands, if wanted //#define DUMP_AT_COMMANDS
// Define the serial console for debug prints, if needed
define TINY_GSM_DEBUG SerialMon
// Add a reception delay, if needed. // This may be needed for a fast processor at a slow baud rate. // #define TINY_GSM_YIELD() { delay(2); }
// Define how you're planning to connect to the internet // These defines are only for this example; they are not needed in other code.
define TINY_GSM_USE_GPRS true
define TINY_GSM_USE_WIFI false
// set GSM PIN, if any
define GSM_PIN ""
// Your GPRS credentials, if any const char apn[] = "internet.digimobil.es"; const char gprsUser[] = ""; const char gprsPass[] = "";
// Your WiFi connection credentials, if applicable const char wifiSSID[] = "YourSSID"; const char wifiPass[] = "YourWiFiPass";
// MQTT details const char *broker = "broker.hivemq.com";
const char topicLed = "PumaClientTest/led"; const char topicInit = "PumaClientTest/init"; const char *topicLedStatus = "PumaClientTest/ledStatus";
include
include
include
include
include
// Just in case someone defined the wrong thing..
if TINY_GSM_USE_GPRS && not defined TINY_GSM_MODEM_HAS_GPRS
undef TINY_GSM_USE_GPRS
undef TINY_GSM_USE_WIFI
define TINY_GSM_USE_GPRS false
define TINY_GSM_USE_WIFI true
endif
if TINY_GSM_USE_WIFI && not defined TINY_GSM_MODEM_HAS_WIFI
undef TINY_GSM_USE_GPRS
undef TINY_GSM_USE_WIFI
define TINY_GSM_USE_GPRS true
define TINY_GSM_USE_WIFI false
endif
ifdef DUMP_AT_COMMANDS
include
StreamDebugger debugger(SerialAT, SerialMon); TinyGsm modem(debugger);
else
TinyGsm modem(SerialAT);
endif
TinyGsmClient client(modem); PubSubClient mqtt(client);
Ticker tick;
define uS_TO_S_FACTOR 1000000ULL // Conversion factor for micro seconds to seconds
define TIME_TO_SLEEP 60 // Time ESP32 will go to sleep (in seconds)
define UART_BAUD 115200
define PIN_DTR 25
define PIN_TX 27
define PIN_RX 26
define PWR_PIN 4
define SD_MISO 2
define SD_MOSI 15
define SD_SCLK 14
define SD_CS 13
define LED_PIN 12
int ledStatus = LOW;
uint32_t lastReconnectAttempt = 0;
void mqttCallback(char topic, byte payload, unsigned int len) {
}
boolean mqttConnect() { SerialMon.print("Connecting to "); SerialMon.print(broker);
}
void setup() { // Set console baud rate Serial.begin(115200); delay(10);
if TINY_GSM_USE_GPRS
endif
if TINY_GSM_USE_WIFI
endif
if TINY_GSM_USE_GPRS && defined TINY_GSM_MODEM_XBEE
endif
if TINY_GSM_USE_GPRS
endif
}
void loop() {
if TINY_GSM_USE_GPRS
endif
}
Any help will be amazing, thank you so much.