SIM7600 and ThingSpeak, unable to publish



  • Dear all,
    I nearly got SIM7600, MQTT and Thingspeak working. But I am not able to get the public working.
    This is my basic syntax:
    The module returns OK status, so so far so good. But no data shows up in my channel.
    The weird things is I use the same Topic and message structure as with my SIM7080 module, and that works. Any suggestions?

    My last part of the code :

    String payload="channels/"+ String(ChannelId)+"/publish";
    int Payload_Length;
    Payload_Length=payload.length();

    SerialAT.println("AT+CMQTTTOPIC=0,"+String(Payload_Length)); // Input the publish message topic <client_index,req_length>
    SerialAT.println(payload);
    Read_Response_Ignore_OK(3000);

    payload="field1=345&field2=543";
    Serial.print(" ");
    Payload_Length=payload.length();
    Serial.println ("AT+CMQTTPAYLOAD=0,"+String(Payload_Length));
    SerialAT.println("AT+CMQTTPAYLOAD=0,"+String(Payload_Length)); // input the publish message body <client_index,req_length>
    SerialAT.println(payload);
    //delay(50);
    Read_Response_Ignore_OK(1000);

    SerialAT.println("AT+CMQTTPUB=0,0,60,0,0"); // Publish a message to the server <client_id,qos,pub_timeout,retained>
    Read_Response_Ignore_OK(1000);



  • Hello @HappyUser

    according to the documentation, after sending the AT+CMQTTTOPIC=0,<length> command the modem answers with a prompt > after which the topic can be sent. However your code seems to sent the topic right after issuing the command. Maybe try adding a short delay?

    Same for the payload - try with a short delay before sending the payload.

    If that solves the issue then of course the proper solution would be to actually wait for the prompt (or error) with a timeout.

    Thanks
    Felix



  • @felmue And indeed, I needed to add a delay before sending the payload. I had hoped that it would be necessary (in order to speed up he process of waking up, sending and going to sleep).
    Regards