Gemalto is now part of the Thales Group, find out more.

You are here

How to do MQTT on EXS82 platform

Tutorial, December 27, 2019 - 3:39am, 797 views

  Because EXS82 doesn’t support JAVA like PLS62 and ELS61 series, we need to use AT command to achieve MQTT feature.

  • Environment setting:
  1. Ubuntu 18.04.03 for MQTT broker and client
  2. EXS82 CS2 FW:REVISION 00.038, A-REVISION 01.000.00 
  • Steps:

     Ubuntu:

      1. Install MQTT related update and

            "sudo apt install -y mosquito" (Install Mosquitto MQTT Broker)

            "sudo apt install -y mosquitto-clients" (Install Mosquitto Client)

      2. Make sure MQTT subscriber/publisher works

             mosquitto_sub -h IP -t Topic (Create a subscriber for specific Topic)

                  ex: "mosquitto_sub -h 60.250.82.33 -t test" means to wait for Topic as test message

             mosquitto_pub -h IP -t Topic -m Message (Create a publisher for specific Topic and send message)

                  ex: "mosquitto_pub -h 60.250.82.33 -t test -m 1234" means to send Topic as test and message is 1234 to the subscriber.

    Module (EXS82-W):

      AT command for publisher:

           AT+COPS?

           +COPS: 0,0,"Chunghwa Telecom",7

           at^SICA=0,1

           OK

           AT^SISS=1,srvType,"Mqtt"

           OK

           AT^SISS=1,conId,"1"

           OK

           AT^SISS=1,address,"mqtt://60.250.82.33"

           OK

           AT^SISS=1,cmd,"publish"

           OK

           AT^SISS=1,hcContLen,4

           OK

           AT^SISS=1,clientId,"1111"

           OK

           at^SISS=1,Topic, "test"

           OK

           at^SISS?

           ^SISS: 0,"srvType",""

           ^SISS: 1,"srvType","Mqtt"

           ^SISS: 1,"conId","1"

           ^SISS: 1,"address","mqtt://60.250.82.33"

           ^SISS: 1,"cmd","publish"

           ^SISS: 1,"hcContLen","4"

           ^SISS: 1,"clientid","1111"

           ^SISS: 1,"topic","test"

           ^SISS: 2,"srvType",""           

           at^sica=1,1

           OK

           AT^SISO=1

           OK

           ^SIS: 1,0,8800,"Mqtt connect 60.250.82.33:1883"

           ^SIS: 1,0,2500,"Connection accepted on clean session."

           at^SISW=1,4

           ^SISW: 1,4,0

           Result:

                      Module side: (After Sending at^SISW=1,4 command, type “abcd”)

                      Ubuntu side:

                             You can see the result like:

                                            mosquitto_sub -h 60.250.82.33 -t test

                                            abcd => Receive the message from publisher

veranith's picture
veranith

Hello Leon

That's a nice start :)

do you have an example use of the Dynamic setup, making use of ^SISD and ^SISU ?

I'm unable to make it work (I'm on a EXS82-W with REVISION 00.038).

"Static" setup with ^SISW works fine

veranith's picture
veranith

Hi Leon

Some precisions / more details :

I'm testing with Cayenne Mydevices (https://developers.mydevices.com/cayenne/features/) where the topic name is a bit long. 

Reminder : it works fine when I use the static method (SISO=x, SISW, SISC=x)

I've tried 2 methods for dynamic send (SISO=x,2) :

1/ ^SISU with arguments. 

at^sisu=2,"publish","1:v1/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/things/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/data/2:0:rel_hum,p=40:12"

+CME ERROR: text string too long

--> what's the maximum allowed size for this command ? is it possible to extend it ? 

2/ ^SISD + ^SISU without arguments :

remark a/ looks like "GSM" coding is used (it doesn't make sense to me to use this coding schemen here):

at^sisd=2,"setParam","hcContent","rel_hum,p=100"

OK

at^sisd=2,"getParam","hcContent"

^SISD: 2,"hcContent","rel\11hum,p=100"

remark b/ the documentation doesn't seem clear to me because I would expect to define everything with SISD and then just trigger the command with SISU, but SISU seems to expect from me to use SISW (I receive a ^SISW: 2,1 URC, then I write some data, which are transmitted, then I receive a SISW: 2,2 URC but the connection is maintained and I can send some more data, which looks like what I want. But it's a bit confusing).

--> I don't know if I understood well.

SwayerScott's picture
SwayerScott

I think this is very useful for programmers or IT students. This is a good platform for expressing our doubts and discuss it. Mostly all types of topics are covered here. I like this blog. We can learn many new things from here. And each topic is discussed with examples.  Advantages of Online Marketing

ivaanadam's picture
ivaanadam

As a programming beginner, Your tutorial is really informative and Best cell phone booster your post gives me more information about the MQTT on the EXS82 platform. The sample code you have shared also good and easily understandable too. You gave a detailed description also.

jsantos's picture
jsantos

I also need a clear example on AT^SISD - AT^SISU commands

Jesus Santos
FAE

leon.weng