MQTT Protocol tutorial using SIM900/SIM800 modules – MQTT over TCP
Free test servers for demo,
Mosquitto, the creator of open source Mosquitto MQTT software also provides a free test server/broker at test.mosquitto.org,
The commercial MQTT services provider CloudMQTT.com also provides free and commercial versions for users who want to test their services.
Adafruit Industries also provides free and commercial versions of MQTT broker services at io.adafruit.com, They also provide HTTP REST API services for the same platform.
Users can use the free versions of the services mentioned above to test their MQTT enabled (Internet of Things) IOT devices.
Before we begin i recommend to read this tutorial – MQTT Protocol tutorial using Mosquitto and CloudMQTT
or watch this video on MQTT protocol basics where i explain how the CONNECT, PUBLISH, SUBSCRIBE packets are formed.
Once you are familiar with the packet formation, we can use the below packets to communicate using MQTT over TCP connection created by SIM900/SIM800.
The first step is we need to do is create a TCP connection using SIM900 or SIM800 module to the brokers, whichever you are using.
Here i will show how you can connect to CloudMQTT.com broker from your GPRS module,
You need to create an account in cloudmqtt.com to get the necessary credentials for logging into their server. Here are the credentials i got for my free account,
Host : m10.cloudmqtt.com
Port : 17434
Username : dxxkgkpp
Password : qAUZBdaSIULx
We will be publishing and subscribing to the topic valetron
To create a TCP connection use the following series of commands,
Set the APN parameters according to your SIM card network, Username and password are blank in my case
AT+CSTT=”www”,””,””
OK
Enable the GPRS connection
AT+CIICR
OK
Check if we have been allocated an IP address
AT+CIFSR
.10.175.97.80
Now connect to the given TCP IP/Host and port number
AT+CIPSTART=”TCP”,”m10.cloudmqtt.com”,”17434″
OK
CONNECT OK
These are the packets we created in earlier tutorial i had mentioned earlier,
Connect packet (Connects to server)
10 2C 00 06 4D 51 49 73 64 70 03 C2 00 3C 00 06 41 42 43 44 45 46 00 08 64 78 78 6B 67 6B 70 70 00 0C 71 41 55 5A 42 64 61 53 49 55 4C 78
Publish packet (Publishes message “helloravi” to topic “valetron”)
30 13 00 08 76 61 6C 65 74 72 6F 6E 68 65 6C 6C 6F 72 61 76 69
Subscribe packet (Subscribe packet which subscribes to topic “valetron”)
82 0D 00 01 00 08 76 61 6C 65 74 72 6F 6E 00
Send the CONNECT packet and publish packet as shown above (Remember you need to enter these in HEX format, not in asciii format. Use tools like TMFT or Hercules for this) End the packet with 0x1A so that the message gets sent
AT+CIPSEND
>
10 2C 00 06 4D 51 49 73 64 70 03 C2 00 3C 00 06 41 42 43 44 45 46 00 08 64 78 78 6B 67 6B 70 70 00 0C 71 41 55 5A 42 64 61 53 49 55 4C 78 30 13 00 08 76 61 6C 65 74 72 6F 6E 68 65 6C 6C 6F 72 61 76 69 1A
SEND OK
Now you should be able to see the message arrive on the subscriber or the cloudmqtt control panel.
Send the SUBSCRIBE packet as shown above (Remember you need to enter these in HEX format, not in asciii format. Use tools like TMFT or Hercules for this) End the packet with 0x1A so that the message gets sent
AT+CIPSEND
>
82 0D 00 01 00 08 76 61 6C 65 74 72 6F 6E 00 1A
SEND OK
……0…valetronLED0
The above message is received from the publisher somewhere else which sent the message “LED0” to the topic “valetron” because we have subscribed to “valetron” topic
For more detailed demonstration of the commands and the working, check this video,
- MQTT Protocol tutorial using Mosquitto and CloudMQTT
- SIM900/SIM800 Sleep mode AT Commands
- Designing a Low cost GSM/GPS tracker – Introduction – Part 1
- SIMCOM got acquired by UBLOX ! – Is it a GOOD news or BAD news