[ X] I have read the Troubleshooting section of the ReadMe
What type of issues is this?
[ ] Request to support a new module
[ ] Bug or problem compiling the library
[ ] Bug or issue with library functionality (ie, sending data over TCP/IP)
[ X] Question or request for help
What are you working with?
Modem: BK-SIM808
Main processor board: ESP32
TinyGSM version: 0.10.9
Code:
define TINY_GSM_MODEM_SIM808 //My Moden
include
include
include
define SerialMon Serial
define DUMP_AT_COMMANDS
define TINY_GSM_USE_GPRS true
// 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
SerialMon.print("payload: ");
for (int i = 0; i < length; i++) {
SerialMon.print((char)payload[i]);
}
SerialMon.println();
}
void setup()
{
SerialMon.begin(115200);
setupGSM();
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");
}
while (!client.connected()) {
Serial.print("MQTT connecting to ");
Serial.print(broker);
Serial.print("... ");
String clientId = "my-test01";
if (mqtt.connect(clientId.c_str(), mqttUser, mqttPassword)) {
Serial.println("connected");
mqtt.subscribe(TOPIC_START, 0);
} else {
Serial.print("failed, status code =");
Serial.print(mqtt.state());
Serial.println("try again in 5 seconds");
/* Wait 5 seconds before retrying */
delay(5000);
}
}
}
Scenario, steps to reproduce
My MQTT doesn't work, I don't know why, my GSM moden works (see my debug section), but my MQTT doesn't send any data. In my debug console I see the MQTT address (34.199.33.81) but I don't understand what is happening.
Expected result
Recieve a byte 187 from MQTT.
Actual result
My MQTT doesn't connect.
Debug and AT command log
Setup GSM...
ATI
SIM808 R14.18
OK
SIM808 R14.18
AT
OK
AT&W
OK
AT+CFUN=0
+CPIN: NOT READY
OK
AT+CFUN=1,1
OK
AT
OK
ATE0
OK
AT+CMEE=0
OK
AT+CLTS=1
OK
AT+CBATCHK=1
OK
AT+CPIN?
ERROR
AT+CPIN?
+CPIN: READY
OK
AT+CREG?
+CREG: 0,2
OK
AT+CREG?
+CREG: 0,2
OK
AT+CREG?
+CREG: 0,2
OK
AT+CREG?
+CREG: 0,2
OK
AT+CREG?
+CREG: 0,2
OK
AT+CREG?
+CREG: 0,2
OK
AT+CREG?
+CREG: 0,2
OK
AT+CREG?
+CREG: 0,2
OK
AT+CREG?
+CREG: 0,2
OK
AT+CREG?
+CREG: 0,2
OK
AT+CREG?
+CREG: 0,2
OK
AT+CREG?
+CREG: 0,2
OK
AT+CREG?
+CREG: 0,2
OK
AT+CREG?
+CREG: 0,2
OK
AT+CREG?
+CREG: 0,2
OK
AT+CREG?
+CREG: 0,2
OK
AT+CREG?
DST: 0
+CIEV: 10,"72405","CLARO BR","", 0, 0
+CREG: 0,2
OK
AT+CREG?
+CREG: 0,1
OK
AT+CIPSHUT
SHUT OK
AT+CGATT=0
OK
AT+SAPBR=3,1,"Contype","GPRS"
OK
AT+SAPBR=3,1,"APN","inlog.claro.com.br"
OK
AT+SAPBR=3,1,"USER","datatem"
OK
AT+SAPBR=3,1,"PWD","datatem"
OK
AT+CGDCONT=1,"IP","inlog.claro.com.br"
OK
AT+CGACT=1,1
OK
AT+SAPBR=1,1
ERROR
AT+SAPBR=2,1
+SAPBR: 1,3,"0.0.0.0"
OK
AT+CGATT=1
OK
AT+CIPMUX=1
OK
AT+CIPQSEND=1
OK
AT+CIPRXGET=1
OK
AT+CSTT="inlog.claro.com.br","datatem","datatem"
OK
AT+CIICR
OK
AT+CIFSR;E0
10.64.71.138
OK
AT+CDNSCFG="8.8.8.8","8.8.4.4"
OK
Setup GSM Success
Waiting for network...AT+CREG?
+CREG: 0,1
OK
success
AT+CREG?
+CREG: 0,1
OK
Network connected
Connecting to inlog.claro.com.brAT+CIPSHUT
SHUT OK
AT+CGATT=0
OK
AT+SAPBR=3,1,"Contype","GPRS"
OK
AT+SAPBR=3,1,"APN","inlog.claro.com.br"
OK
AT+SAPBR=3,1,"USER","datatem"
OK
AT+SAPBR=3,1,"PWD","datatem"
OK
AT+CGDCONT=1,"IP","inlog.claro.com.br"
OK
AT+CGACT=1,1
OK
AT+SAPBR=1,1
OK
AT+SAPBR=2,1
+SAPBR: 1,1,"10.64.71.138"
OK
AT+CGATT=1
OK
AT+CIPMUX=1
OK
AT+CIPQSEND=1
OK
AT+CIPRXGET=1
OK
AT+CSTT="inlog.claro.com.br","datatem","datatem"
OK
AT+CIICR
OK
AT+CIFSR;E0
10.64.71.138
OK
AT+CDNSCFG="8.8.8.8","8.8.4.4"
OK
success
AT+CGATT?
+CGATT: 1
OK
AT+CIFSR;E0
10.64.71.138
OK
GPRS connected
AT+CIPRXGET=4,0
+CIPRXGET: 4,0,0
OK
AT+CIPSTATUS=0
+CIPSTATUS: 0,,"","","","INITIAL"
OK
MQTT connecting to tailor.cloudmqtt.com... AT+CIPCLOSE=0,1
[ X] I have read the Troubleshooting section of the ReadMe
What type of issues is this?
[ ] Request to support a new module [ ] Bug or problem compiling the library [ ] Bug or issue with library functionality (ie, sending data over TCP/IP) [ X] Question or request for help
What are you working with?
Modem: BK-SIM808 Main processor board: ESP32 TinyGSM version: 0.10.9 Code:
define TINY_GSM_MODEM_SIM808 //My Moden
include
include
include
define SerialMon Serial
define DUMP_AT_COMMANDS
define TINY_GSM_USE_GPRS true
// 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
HardwareSerial SerialGSM(1);
ifdef DUMP_AT_COMMANDS
include
StreamDebugger debugger(SerialGSM, SerialMon); TinyGsm modem(debugger);
else
TinyGsm modem(SerialGSM);
endif
TinyGsmClient client(modem); //PubSubClient client(mqtt_broker, mqtt_port, gsmClient); PubSubClient mqtt(client);
// Your GPRS credentials, if any const char apn[] = "inlog.claro.com.br"; //inlog.claro.com.br const char gprsUser[] = "datatem"; //datatem const char gprsPass[] = "datatem"; //datatem
const char broker = "tailor.cloudmqtt.com"; const char mqttUser = "psw"; const char* mqttPassword = "psw"; const uint8_t mqtt_port = 16206;
byte programStart = 187; char line = '\n';
define TOPIC_START "myTopic/esp1/start"
long lastMsg = 0;
char msgStart[20];
uint32_t lastReconnectAttempt = 0;
void mqttCallback(char topic, byte payload, unsigned int length) { SerialMon.print("Message received: "); SerialMon.println(topic);
SerialMon.print("payload: "); for (int i = 0; i < length; i++) { SerialMon.print((char)payload[i]); } SerialMon.println();
}
void setup() { SerialMon.begin(115200);
setupGSM();
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"); }
endif
// MQTT Broker setup mqtt.setServer(broker, mqtt_port);
//mqttConnect(); mqtt.setCallback(mqttCallback);
}
void loop() { if (!mqtt.connected()) { mqttConnect(); } / this function will listen for incomming subscribed topic-process-invoke receivedCallback /
mqtt.loop(); / we measure temperature every 3 secs we count until 3 secs reached to avoid blocking program if using delay()/
snprintf (msgStart, 20, "%x", programStart); mqtt.publish(TOPIC_START, msgStart);
Serial.print(programStart);
delay(3000);
}
void setupGSM() { SerialMon.println("Setup GSM...");
SerialGSM.begin(9600, SERIAL_8N1, 17, 16, false); delay(3000);
SerialMon.println(modem.getModemInfo());
if (!modem.restart()) { SerialMon.println("Restarting GSM Modem failed"); delay(10000); ESP.restart(); return; }
if (!modem.waitForNetwork()) { SerialMon.println("Failed to connect to network"); delay(10000); ESP.restart(); return; }
if (!modem.gprsConnect(apn, gprsUser, gprsPass)) //"claro.com.br", "claro", "claro" { SerialMon.println("GPRS Connection Failed"); delay(10000); ESP.restart(); return; } SerialMon.println("Setup GSM Success");
}
void mqttConnect() {
while (!client.connected()) { Serial.print("MQTT connecting to "); Serial.print(broker); Serial.print("... ");
}
}
Scenario, steps to reproduce
My MQTT doesn't work, I don't know why, my GSM moden works (see my debug section), but my MQTT doesn't send any data. In my debug console I see the MQTT address (34.199.33.81) but I don't understand what is happening.
Expected result
Recieve a byte 187 from MQTT.
Actual result
My MQTT doesn't connect.
Debug and AT command log
Setup GSM... ATI
SIM808 R14.18
OK SIM808 R14.18 AT
OK AT&W
OK AT+CFUN=0
+CPIN: NOT READY
OK AT+CFUN=1,1
OK AT
OK ATE0
OK AT+CMEE=0
OK AT+CLTS=1
OK AT+CBATCHK=1
OK AT+CPIN?
ERROR AT+CPIN?
+CPIN: READY
OK AT+CREG?
+CREG: 0,2
OK AT+CREG?
+CREG: 0,2
OK AT+CREG?
+CREG: 0,2
OK AT+CREG?
+CREG: 0,2
OK AT+CREG?
+CREG: 0,2
OK AT+CREG?
+CREG: 0,2
OK AT+CREG?
+CREG: 0,2
OK AT+CREG?
+CREG: 0,2
OK AT+CREG?
+CREG: 0,2
OK AT+CREG?
+CREG: 0,2
OK AT+CREG?
+CREG: 0,2
OK AT+CREG?
+CREG: 0,2
OK AT+CREG?
+CREG: 0,2
OK AT+CREG?
+CREG: 0,2
OK AT+CREG?
+CREG: 0,2
OK AT+CREG?
+CREG: 0,2
OK AT+CREG? DST: 0
+CIEV: 10,"72405","CLARO BR","", 0, 0
+CREG: 0,2
OK AT+CREG?
+CREG: 0,1
OK AT+CIPSHUT
SHUT OK AT+CGATT=0
OK AT+SAPBR=3,1,"Contype","GPRS"
OK AT+SAPBR=3,1,"APN","inlog.claro.com.br"
OK AT+SAPBR=3,1,"USER","datatem"
OK AT+SAPBR=3,1,"PWD","datatem"
OK AT+CGDCONT=1,"IP","inlog.claro.com.br"
OK AT+CGACT=1,1
OK AT+SAPBR=1,1
ERROR AT+SAPBR=2,1
+SAPBR: 1,3,"0.0.0.0"
OK AT+CGATT=1
OK AT+CIPMUX=1
OK AT+CIPQSEND=1
OK AT+CIPRXGET=1
OK AT+CSTT="inlog.claro.com.br","datatem","datatem"
OK AT+CIICR
OK AT+CIFSR;E0
10.64.71.138
OK AT+CDNSCFG="8.8.8.8","8.8.4.4"
OK Setup GSM Success Waiting for network...AT+CREG?
+CREG: 0,1
OK success AT+CREG?
+CREG: 0,1
OK Network connected Connecting to inlog.claro.com.brAT+CIPSHUT
SHUT OK AT+CGATT=0
OK AT+SAPBR=3,1,"Contype","GPRS"
OK AT+SAPBR=3,1,"APN","inlog.claro.com.br"
OK AT+SAPBR=3,1,"USER","datatem"
OK AT+SAPBR=3,1,"PWD","datatem" OK AT+CGDCONT=1,"IP","inlog.claro.com.br"
OK AT+CGACT=1,1
OK AT+SAPBR=1,1
OK AT+SAPBR=2,1
+SAPBR: 1,1,"10.64.71.138"
OK AT+CGATT=1
OK AT+CIPMUX=1
OK AT+CIPQSEND=1
OK AT+CIPRXGET=1
OK AT+CSTT="inlog.claro.com.br","datatem","datatem" OK AT+CIICR
OK AT+CIFSR;E0
10.64.71.138
OK AT+CDNSCFG="8.8.8.8","8.8.4.4"
OK success AT+CGATT?
+CGATT: 1
OK AT+CIFSR;E0
10.64.71.138
OK GPRS connected AT+CIPRXGET=4,0
+CIPRXGET: 4,0,0
OK AT+CIPSTATUS=0
+CIPSTATUS: 0,,"","","","INITIAL"
OK MQTT connecting to tailor.cloudmqtt.com... AT+CIPCLOSE=0,1
ERROR AT+CIPSSL=0
ERROR AT+CIPSTART=0,"TCP","tailor.cloudmqtt.com",78
OK ailed, status code =-2try again in 5 seconds AT+CIPRXGET=4,0
+CIPRXGET: 4,0,0
OK AT+CIPSTATUS=0
+CIPSTATUS: 0,0,"TCP","34.199.33.81","78","CLOSED"
OK MQTT connecting to tailor.cloudmqtt.com... AT+CIPCLOSE=0,1
ERROR AT+CIPSSL=0
ERROR AT+CIPSTART=0,"TCP","tailor.cloudmqtt.com",78
OK ailed, status code =-2try again in 5 seconds AT+CIPRXGET=4,0
+CIPRXGET: 4,0,0
OK AT+CIPSTATUS=0
+CIPSTATUS: 0,0,"TCP","34.199.33.81","78","CLOSED"