nRF Cloud AT commands ********************* .. contents:: :local: :depth: 2 The page describes nRF Cloud-related AT commands. .. _SLM_AT_NRFCLOUD: nRF Cloud access ================ The ``#XNRFCLOUD`` command controls the access to the nRF Cloud service. .. note:: To use ``#XNRFCLOUD``, the following preconditions apply: * You must first preconnect provision the device to nRF Cloud, using the UUID from the modem firmware as device ID. See `nRF Cloud Preconnect Provisioning`_ for more information. * The :ref:`CONFIG_SLM_NRF_CLOUD ` Kconfig option must be enabled. * The device must have access to nRF Cloud through the LTE network. Set command ----------- The set command allows you to access the nRF Cloud service. Syntax ~~~~~~ :: #XNRFCLOUD=[,] The ```` parameter can have the following integer values: * ``0`` - Disconnect from the nRF Cloud service. * ``1`` - Connect to the nRF Cloud service. * ``2`` - Send a message in the JSON format to the nRF Cloud service. When ```` is ``2``, SLM enters ``slm_data_mode``. The ```` parameter is used only when the value of ```` is ``1``. It can have the following integer values: * ``0`` - The device location is not sent to nRF Cloud. This is the default behavior if the parameter is omitted. * ``1`` - The device location is sent to nRF Cloud. .. note:: Sending the device location to nRF Cloud is done in a best-effort way. For it to happen, the device must have :ref:`GNSS ` enabled and it must be acquiring fixes. The minimal report interval is 5 seconds. .. note:: The application supports the nRF Cloud cloud2device appId ``MODEM`` to send an AT command from the cloud: * cloud2device schema:: {"appId":"MODEM", "messageType":"CMD", "data":""}. * device2cloud schema:: {"appId":"MODEM", "messageType":"RSP", "data":""}. The application executes the AT command in a best-effort way. .. note:: The application supports the nRF Cloud cloud2device appId ``DEVICE`` to gracefully disconnect from the cloud: * cloud2device schema:: {"appId":"DEVICE", "messageType":"DISCON"}. There is no response sent to nRF Cloud for this appId. Unsolicited notification ~~~~~~~~~~~~~~~~~~~~~~~~ :: #XNRFCLOUD: , * The ```` value indicates whether the connection to nRF Cloud is established or not. * The ```` value indicates whether the device location will be sent to nRF Cloud or not. :: #XNRFCLOUD: * The ```` value indicates data received from nRF Cloud that is not a supported cloud2device appId. Example ~~~~~~~ :: AT#XNRFCLOUD=1 OK #XNRFCLOUD: 1,0 AT#XNRFCLOUD=2 OK {"msg":"Hello, nRF Cloud"}+++ #XDATAMODE: 0 #XNRFCLOUD: {"msg":"Hello"} AT#XNRFCLOUD=0 AT#XNRFCLOUD: 0,0 OK AT#XNRFCLOUD=1,1 OK #XNRFCLOUD: 1,1 AT#XNRFCLOUD=0 AT#XNRFCLOUD: 0,1 OK Read command ------------ The read command checks whether the connection to nRF Cloud is established or not. Syntax ~~~~~~ :: #XNRFCLOUD? Response syntax ~~~~~~~~~~~~~~~ :: #XNRFCLOUD: ,,, * The ```` value indicates whether the connection to nRF Cloud is established or not. * The ```` value indicates whether the device location will be sent to nRF Cloud or not. * The ```` value indicates the ``sec_tag`` used for accessing nRF Cloud. * The ```` value indicates the device ID used for accessing nRF Cloud. Example ~~~~~~~ :: AT#XNRFCLOUD? #XNRFCLOUD: 1,0,16842753,"nrf-352656106443792" OK :: AT#XNRFCLOUD? #XNRFCLOUD: 1,0,8888,"50503041-3633-4261-803d-1e2b8f70111a" OK Test command ------------ The test command tests the existence of the command and provides information about the type of its subparameters. Syntax ~~~~~~ :: #XNRFCLOUD=? Example ~~~~~~~ :: AT#XNRFCLOUD=? #XNRFCLOUD: (0,1,2), OK .. _SLM_AT_NRFCLOUDPOS: nRF Cloud location ================== The ``#XNRFCLOUDPOS`` command sends a request to nRF Cloud to determine the device's location. The request uses information from the cellular network, Wi-Fi access points, or both. .. note:: To use ``#XNRFCLOUDPOS``, the following preconditions apply: * The device must be connected to nRF Cloud using :ref:`#XNRFCLOUD `. * The :kconfig:option:`CONFIG_NRF_CLOUD_LOCATION ` Kconfig option must be enabled. Set command ----------- The set command allows sending a location request to nRF Cloud. Syntax ~~~~~~ :: #XNRFCLOUDPOS=,[,[,],[,][,[...]]] The ```` parameter can have the following integer values: * ``0`` - Do not include cellular network information in the location request. * ``1`` - Use single-cell cellular network information (only the serving cell). * ``2`` - Use multi-cell cellular network information (the serving and possibly neighboring cells). To use this option, you must first issue the ``AT%NCELLMEAS`` command and wait for its result notification. The cellular network information included in the location request will be the one received from the ``AT%NCELLMEAS`` command. This means that, for the most up-to-date location information, you should use the command as close to sending the location request as possible. Also, keep in mind that whenever you send a location request in single-cell mode, any previously saved multi-cell cellular network information is invalidated. The ```` parameter can have the following integer values: * ``0`` - Do not include Wi-Fi access point information in the location request. * ``1`` - Use Wi-Fi access point information. The access points must be given as additional parameters to the command. The minimum number of access points to provide is two (:c:macro:`NRF_CLOUD_LOCATION_WIFI_AP_CNT_MIN`), and the maximum is limited by the AT command parameter count limit (:ref:`CONFIG_SLM_AT_MAX_PARAM `). The ```` parameter is a string. It indicates the MAC address of a Wi-Fi access point and must be formatted as ``%02x:%02x:%02x:%02x:%02x:%02x`` (:c:macro:`WIFI_MAC_ADDR_TEMPLATE`). The ```` parameter is an optional integer. It indicates the signal strength of a Wi-Fi access point in dBm, between ``-128`` and ``0``. If provided, it must follow the MAC address parameter of the access point. Providing the RSSI parameters helps improve the accuracy of the Wi-Fi location. Unsolicited notification ~~~~~~~~~~~~~~~~~~~~~~~~ :: #XNRFCLOUDPOS: This is emitted when the location request failed, either when sending it or receiving its response. No notification containing location data will be emitted. * The ```` value indicates the error that happened. It is either a negative *errno* code or one of the :c:enum:`nrf_cloud_error` values. :: #XNRFCLOUDPOS: ,,, This is emitted when a successful response to a sent location request is received. * The ```` value indicates the service used to fulfill the location request. * ``0`` (:c:enumerator:`LOCATION_TYPE_SINGLE_CELL`) - Single-cell cellular location. * ``1`` (:c:enumerator:`LOCATION_TYPE_MULTI_CELL`) - Multi-cell cellular location. * ``2`` (:c:enumerator:`LOCATION_TYPE_WIFI`) - Wi-Fi location. * The ```` value represents the latitude in degrees. * The ```` value represents the longitude in degrees. * The ```` value represents the radius of the uncertainty circle around the location in meters, also known as Horizontal Positioning Error (HPE). Example ~~~~~~~ :: AT%XSYSTEMMODE=1,0,0,0 OK AT+CFUN=1 OK AT#XNRFCLOUD=1 OK #XNRFCLOUD: 1,0 AT#XNRFCLOUDPOS=1,0 OK #XNRFCLOUDPOS: 0,35.455833,139.626111,1094 AT%NCELLMEAS OK %NCELLMEAS: 0,"0199F10A","44020","107E",65535,3750,5,49,27,107504,3750,251,33,4,0,475,107,26,14,25,475,58,26,17,25,475,277,24,9,25,475,51,18,1,25 AT#XNRFCLOUDPOS=2,0 OK #XNRFCLOUDPOS: 1,35.455833,139.626111,1094 AT#XNRFCLOUDPOS=0,1,"40:9b:cd:c1:5a:40","00:90:fe:eb:4f:42" OK #XNRFCLOUDPOS: 2,35.457335,139.624443,60 AT#XNRFCLOUDPOS=0,1,"40:9b:cd:c1:5a:40",-40,"00:90:fe:eb:4f:42",-69 OK #XNRFCLOUDPOS: 2,35.457346,139.624449,20 Read command ------------ The read command is not supported. Test command ------------ The test command is not supported.