Here I have written code to send simply message on cloudmqtt but I can’t find out whether message getting or not on Cloudmqtt server.
unsigned int Counter = 0;
unsigned long datalength,CheckSum,RLength;
unsigned short topiclength;
unsigned char topic[30];
char str[250];
unsigned char encodedByte;
int X;
unsigned short MQTTProtocolNameLength;
unsigned short MQTTClientIDLength;
unsigned short MQTTUsernameLength;
unsigned short MQTTPasswordLength;
unsigned short MQTTMsgLength;
unsigned short MQTTtopicLength;
const char MQTTHost[30] = "m14.cloudmqtt.com";
const char MQTTPort[10] = "19262";
const char MQTTClientID[20] = "ABCDEF";
const char MQTTTopic[30] = "MSG_SENT";
const char MQTTProtocolName[10] = "MQIsdp";
const char MQTTMSG[10]="HII";
const char MQTTLVL = 0x03;
const char MQTTFlags = 0xC2;
const unsigned int MQTTKeepAlive = 60;
const char MQTTUsername[30] = "dxxkgkpp";
const char MQTTPassword[35] = "qAUZBdaSIULx";
const char MQTTQOS = 0x00;
const char MQTTPacketID = 0x0001;
void setup()
{
pinMode(led, OUTPUT);
Serial.begin(9600);
delay(3000);
}
void SendConnectPacket(void)
{
Serial.print("\r\nAT+CIPSEND\r\n");
delay(3000);
Serial.write(0x10);
MQTTProtocolNameLength = strlen(MQTTProtocolName);
MQTTClientIDLength = strlen(MQTTClientID);
MQTTUsernameLength = strlen(MQTTUsername);
MQTTPasswordLength = strlen(MQTTPassword);
datalength = MQTTProtocolNameLength+2+4+MQTTClientIDLength+2+MQTTUsernameLength+2+MQTTPasswordLength+2;
X=datalength;
do
{
encodedByte = X%128;
X = X/128;
// if there are more data to encode, set the top bit of this byte
if ( X > 0 ) { encodedByte |= 128; }
Serial.write(encodedByte);
}
while ( X > 0 );
Serial.write(MQTTProtocolNameLength >> 8);
Serial.write(MQTTProtocolNameLength & 0xFF);
Serial.print(MQTTProtocolName);
Serial.write(MQTTLVL); // LVL
Serial.write(MQTTFlags); // Flags
Serial.write(MQTTKeepAlive >> 8);
Serial.write(MQTTKeepAlive & 0xFF);
Serial.write(MQTTClientIDLength >> 8);
Serial.write(MQTTClientIDLength & 0xFF);
Serial.print(MQTTClientID);
Serial.write(MQTTUsernameLength >> 8);
Serial.write(MQTTUsernameLength & 0xFF);
Serial.print(MQTTUsername);
Serial.write(MQTTPasswordLength >> 8);
Serial.write(MQTTPasswordLength & 0xFF);
Serial.print(MQTTPassword);
Serial.write(0x1A);
delay(10000);
}
void SendPublishPacket(void)
{
Serial.print("\r\nAT+CIPSEND\r\n");
delay(3000);
MQTTtopicLength = strlen(MQTTTopic);
MQTTMsgLength = strlen(MQTTMSG);
datalength = MQTTtopicLength+ MQTTMsgLength;
delay(1000);
Serial.write(0x30);
X=datalength+2;
do
{
encodedByte = X%128;
X = X/128;
// if there are more data to encode, set the top bit of this byte
if ( X > 0 ) { encodedByte |= 128; }
Serial.write(encodedByte);
}
while ( X > 0 );
Serial.write(MQTTtopicLength >> 8);
Serial.write(MQTTtopicLength & 0xFF);
Serial.print(MQTTTopic);
Serial.write(MQTTMsgLength >> 8);
Serial.write(MQTTMsgLength & 0xFF);
Serial.print(MQTTMSG);
Serial.write(0x1A);
delay(15000);
}
void loop()
{
Serial.print("AT+CIPSHUT");
delay(1000);
Serial.print("AT+CSTT=\"www\",\"\",\"\"\r\n");
delay(1000);
Serial.print("AT+CIPMODE=0\r\n");
delay(1000);
Serial.print("AT+CIICR\r\n");
delay(5000);
//Serial.print("AT+CIFSR\r\n");
//delay(2000);
Serial.print("AT+CIPSTART=\"TCP\",\"m14.cloudmqtt.com\",\"19262\"\r\n");
delay(4000);
SendConnectPacket();
delay(5000);
Serial.println("msg_send...........");
SendPublishPacket();
Serial.println("msg_publish...........");
}