MLopezJ / asset-tracker-cloud-coiote-azure-converter-js

Convert the LwM2M JSON encoding written by AVSystem's Coiote Azure integration to nRF Asset Tracker's LwM2M JSON encoding.
0 stars 0 forks source link

Provide expected input #1

Closed MLopezJ closed 1 year ago

MLopezJ commented 1 year ago

TL;DR

The expected input object is provided here

Issue Discussion

So far it is known that it will look more or less like this

{
   "reported":{
      "lwm2m":{
         "1":{
            "1":{
               "0":{

               },
               "1":{
                  "value":20
               },
               "6":{
                  "value":true
               },
               "7":{
                  "value":"U"
               },
               "23":{
                  "value":false
               },
               "attributes":{
                  "pmin":"60"
               },
               "observed":true
            }
         }
      }
   }
}

however, the full object is required to see different case behaviors.

MLopezJ commented 1 year ago

As specified in readme, the expected input will be the result of this tutorial. But I have been having 2 blockers there:

  1. Can not upgrade nRF Cloud account
  2. Can not create the IoT Hub in Azure

Can not upgrade nRF Cloud Account

I have been trying Monday 6 and Tuesday 7 of Feb to upgrade from Developer plan to Pro because to follow the tutorial I need a new Evaluation Token and I had already created one some months ago, so in order to create a new one I have to upgrade the plan.

I tried with 2 different cards and I received 2 different errors messages:

Screenshot from 2023-02-07 11-08-05

Screenshot from 2023-02-07 11-02-06

Before create a ticket on Dev Zone I would like to check this case internally.

Can not create IoT Hub in Azure

Right now I don't know the permissions of my Azure account but I am not able to create the IoT Hub

This is the error message I am receiving

Screenshot from 2023-02-07 13-09-14

Subscription and resource group were selected just because were the options available on custom drop downs.

To solve this would be needed to resolve the following questions:

MLopezJ commented 1 year ago

about Can not upgrade nRF Cloud Account issue

I still can not upgrade the nRF Cloud plan, however now I am able to generate new Evaluation Tokens who is actually what I need there. To be honest I dont know why now I'm able to do that.

But now I have a new issue and is that the Device Location is not shown in the Coiote Dashboard.

I'm planning to remove device from dashboard and make the integration again. If issue persist I will explore other alternatives.

Main question right now is How can I display the device location in Coiote Dashboard because in the Coiote documentation there is any link about how to do it, it is only mentioned. I tried searching on google but so far I didn't found any useful link.

Those are the result I'm receiving that I assume can be related to this feature:

Location

Screenshot from 2023-02-07 14-16-13

Location Assistance

Screenshot from 2023-02-07 14-17-26

Assumptions

I am using an Onomondo SIM Card. I'm assuming it should have same behavior than regular iBasis SIm Card.

MLopezJ commented 1 year ago

Re-integrate device to Coiote

Steps

  1. Remove device from Coiote
  2. Change SIM to iBasis
  3. Re start tutorial from step Connect the Thingy:91 to Coiote IoT Device Management

Result:

Device never connected

Screenshot from 2023-02-07 14-44-52

Anjay Console:

[00:04:52.248,229] <inf> anjay: [anjay] servers reloaded
[00:05:21.605,468] <wrn> anjay: [anjay] transport required for protocol coaps is not supported or offline
[00:05:31.646,697] <err> nrf_lc_info: Can't search for neighbor cells, error: -119
[00:05:32.582,153] <inf> nrf_lc_info: Neighbor cells measurement received
[00:05:32.582,153] <inf> nrf_lc_info: Connected to cell E-UTRAN ID 34237196
[00:05:32.591,461] <inf> nrf_lc_info: Found 2 neighbor cells
[00:05:35.507,263] <wrn> gps_nrf: GPS was interrupted multiple times by the LTE modem when producing a fix
[00:06:16.744,293] <inf> nrf_lc_info: Neighbor cells measurement received
[00:06:16.744,323] <inf> nrf_lc_info: Connected to cell E-UTRAN ID 34237196
[00:06:16.753,417] <inf> nrf_lc_info: Found 3 neighbor cells
[00:06:19.669,403] <wrn> gps_nrf: GPS was interrupted multiple times by the LTE modem when producing a fix
[00:07:00.906,127] <inf> nrf_lc_info: Neighbor cells measurement received
[00:07:00.906,127] <inf> nrf_lc_info: Connected to cell E-UTRAN ID 34237196
[00:07:00.915,222] <inf> nrf_lc_info: Found 2 neighbor cells
[00:07:00.916,076] <inf> nrf_lc_info: LTE mode updated: 0
[00:07:00.916,687] <inf> nrf_lc_info: LTE mode updated: 7
[00:07:02.180,603] <inf> nrf_lc_info: Neighbor cells measurement received
[00:07:02.180,603] <inf> nrf_lc_info: Connected to cell E-UTRAN ID 34237196
[00:07:02.189,788] <inf> nrf_lc_info: Found 2 neighbor cells
[00:07:04.108,978] <wrn> gps_nrf: GPS was interrupted multiple times by the LTE modem when producing a fix
[00:07:45.707,489] <inf> nrf_lc_info: Neighbor cells measurement received
[00:07:45.707,519] <inf> nrf_lc_info: Connected to cell E-UTRAN ID 34237196
[00:07:45.717,010] <inf> nrf_lc_info: Found 2 neighbor cells
[00:07:48.632,049] <wrn> gps_nrf: GPS was interrupted multiple times by the LTE modem when producing a fix
[00:08:29.870,269] <inf> nrf_lc_info: Neighbor cells measurement received
[00:08:29.870,300] <inf> nrf_lc_info: Connected to cell E-UTRAN ID 34237196
[00:08:29.879,699] <inf> nrf_lc_info: Found 4 neighbor cells
[00:08:31.784,973] <inf> nrf_lc_info: Neighbor cells measurement received
[00:08:31.785,003] <inf> nrf_lc_info: Connected to cell E-UTRAN ID 34237196
[00:08:31.793,548] <inf> nrf_lc_info: Found 5 neighbor cells
[00:08:32.794,830] <wrn> gps_nrf: GPS was interrupted multiple times by the LTE modem when producing a fix
[00:09:14.031,341] <inf> nrf_lc_info: Neighbor cells measurement received
[00:09:14.031,341] <inf> nrf_lc_info: Connected to cell E-UTRAN ID 34237196
[00:09:14.040,557] <inf> nrf_lc_info: Found 2 neighbor cells
[00:09:17.595,642] <wrn> gps_nrf: GPS was interrupted multiple times by the LTE modem when producing a fix
MLopezJ commented 1 year ago

Re-integrate device to Coiote: Round 2

I will re start the tutorial from Part 1 - Connect the Thingy:91 to Coiote using the LwM2M Anjay client

Steps:

  1. Remove device from Coiote
  2. Uses another iBasis SIM card
  3. From Get Zephyr and Python dependencies steps 1 and 2 works fine. Step 3 as well. Step 4 too.
  4. On Clone the Anjay Zephyr repository Step 2 the command should be executed into ~/zephyrproject folder
  5. Write the firmware to the Thingy:91 done

Result

Received following message when trying to Connect the Thingy:91 to Coiote IoT Device Management.

Device is not connected to Coiote dashboard

[00:05:36.045,898] <inf> loc_assist: GPS ephemeris
[00:05:36.045,928] <inf> loc_assist: GPS almanac
[00:05:36.047,546] <wrn> loc_assist: Target SSID=1 is offline, attempting deferred send
[00:05:36.047,698] <inf> loc_assist: Sent the A-GPS request to SSID=1
[00:05:36.048,980] <inf> anjay: [anjay] servers reloaded
[00:05:36.049,804] <inf> anjay: [anjay] server /0/0: transport change: (none) -> U (uri: coaps://eu.iot.avsystem.cloud:5684)
[00:05:36.050,933] <inf> anjay: [anjay] Modem FW version: 1.3.2
[00:05:38.550,323] <wrn> anjay: [anjay] could not store bound local port
[00:05:38.550,476] <inf> anjay: [anjay] resumed connection
[00:05:38.551,696] <inf> anjay: [anjay] Attempting to register with LwM2M version 1.1
[00:05:38.552,185] <inf> anjay: [anjay] Register sent
[00:05:38.678,192] <wrn> anjay: [anjay] server responded with 4.00 Bad Request (expected 2.01 Created)
[00:05:38.678,222] <wrn> anjay: [anjay] could not register to server 1
[00:05:38.681,671] <inf> anjay: [anjay] Registration Retry 1/4
[00:05:57.273,925] <wrn> gps_nrf: GPS was interrupted multiple times by the LTE modem when producing a fix
[00:05:57.576,385] <inf> main_app: Anjay is now offline

current Anjay config

uart:~$ anjay config show 

 LwM2M Server URI: coaps://eu.iot.avsystem.cloud:5684
 Device lifetime: 50
 Endpoint name: azure-testing
 PSK: ******
 Bootstrap: n
 GPS priority mode timeout: 300
 GPS priority mode cooldown: 1800
MLopezJ commented 1 year ago

Re-integrate device to Coiote: Round 3

I will try with Onomondo SIM Card.

It is not registry in nRF Cloud so far.

Result

Same result than previous round.

It means than current status is even worst than in the beginning because connection to Coiote dashboard is not even possible.

Possible causes:

  1. app_signed.hex file is not generated correctly here
  2. Error in Flashing Thingy 91 here
  3. ~All SIM cards runs out of data~ . Discarted here
  4. Anjay config is not the correct
MLopezJ commented 1 year ago

SIM Card status

I can not confirm if onomondo SIM card runs out of data because I can not registry it on nRF Cloud.

I can not confirm if others iBasis SIM cards that I have are out of data as well because I dont have their ICCID/EID and PUNK

MLopezJ commented 1 year ago

SIM Card status

Onomondo status requested. Waiting for anwer.

New iBasis SIM card requested. EID 8949320005262245469 registered on nRF Cloud. It contains 10.49 Mb of data.

MLopezJ commented 1 year ago

New iBasis SIM card requested. EID 8949320005262245469 registered on nRF Cloud. It contains 10.49 Mb of data.

I can confirm now that issue is not related to SIM cards running out of data. Tested with new SIM card and same output received.

Current Anjay config:

 LwM2M Server URI: coaps://eu.iot.avsystem.cloud:5684                                                                                                                                                                    
 Device lifetime: 50                                                                                                                                                                                                     
 Endpoint name: azure-testing                                                                                                                                                                                            
 PSK: *****                                                                                                                                                                                                              
 Bootstrap: n                                                                                                                                                                                                            
 GPS priority mode timeout: 300                                                                                                                                                                                          
 GPS priority mode cooldown: 1800  
[00:00:37.549,621] <inf> anjay: [anjay_dm] successfully registered object /0                                                                                                                                             
[00:00:37.549,743] <inf> anjay: [anjay_dm] successfully registered object /1                                                                                                                                             
[00:00:37.549,835] <inf> anjay: [anjay_dm] successfully registered object /5                                                                                                                                             
[00:00:37.551,177] <inf> anjay: [anjay_dm] successfully registered object /3                                                                                                                                             
[00:00:37.551,300] <inf> anjay: [anjay_dm] successfully registered object /3303                                                                                                                                          
[00:00:37.552,185] <inf> anjay: [anjay_dm] successfully registered object /3304                                                                                                                                          
[00:00:37.553,039] <inf> anjay: [anjay_dm] successfully registered object /3315                                                                                                                                          
[00:00:37.553,924] <inf> anjay: [anjay_dm] successfully registered object /3313                                                                                                                                          
[00:00:37.554,260] <inf> anjay: [anjay_dm] successfully registered object /3347                                                                                                                                          
[00:00:37.554,504] <inf> anjay: [anjay_dm] successfully registered object /3420                                                                                                                                          
[00:00:37.554,595] <inf> anjay: [anjay_dm] successfully registered object /6                                                                                                                                             
[00:00:37.554,779] <inf> anjay: [anjay_dm] successfully registered object /4                                                                                                                                             
[00:00:37.554,901] <inf> anjay: [anjay_dm] successfully registered object /10256                                                                                                                                         
[00:00:37.555,450] <inf> anjay: [anjay_dm] successfully registered object /50001                                                                                                                                         
[00:00:37.619,049] <inf> nrf_lc_info: LTE mode updated: 0                                                                                                                                                                
[00:00:41.526,123] <inf> nrf_lc_info: LTE mode updated: 7                                                                                                                                                                
[00:00:47.454,986] <inf> nrf_lc_info: LTE mode updated: 0                                                                                                                                                                
[00:00:50.169,128] <inf> nrf_lc_info: LTE mode updated: 7                                                                                                                                                                
[00:00:51.306,152] <inf> anjay: [security] Added instance 0 (SSID: 1, URI: coaps://eu.iot.avsystem.cloud:5684)                                                                                                           
[00:00:51.306,304] <inf> anjay: [server] Added instance 0 (SSID: 1)                                                                                                                                                      
[00:00:51.306,335] <inf> main_app: Successfully created thread                                                                                                                                                           
[00:00:51.306,365] <inf> main_app: Anjay is now online on bearer 0                                                                                                                                                       
[00:00:51.309,417] <inf> main_app: Modem requests A-GPS data                                                                                                                                                             
[00:00:51.309,448] <inf> loc_assist: Requesting following types of A-GPS data:                                                                                                                                           
[00:00:51.309,448] <inf> loc_assist: UTC parameters                                                                                                                                                                      
[00:00:51.309,478] <inf> loc_assist: Klobuchar ionospheric correction parameters                                                                                                                                         
[00:00:51.309,509] <inf> loc_assist: SV time of week                                                                                                                                                                     
[00:00:51.309,509] <inf> loc_assist: GPS system time                                                                                                                                                                     
[00:00:51.309,539] <inf> loc_assist: Position assistance parameters                                                                                                                                                      
[00:00:51.309,570] <inf> loc_assist: Integrity assistance parameters                                                                                                                                                     
[00:00:51.309,600] <inf> loc_assist: GPS ephemeris                                                                                                                                                                       
[00:00:51.309,631] <inf> loc_assist: GPS almanac                                                                                                                                                                         
[00:00:51.311,218] <wrn> loc_assist: Target SSID=1 is offline, attempting deferred send                                                                                                                                  
[00:00:51.311,370] <inf> loc_assist: Sent the A-GPS request to SSID=1                                                                                                                                                    
[00:00:51.312,713] <inf> anjay: [anjay] servers reloaded                                                                                                                                                                 
[00:00:51.313,629] <inf> anjay: [anjay] server /0/0: transport change: (none) -> U (uri: coaps://eu.iot.avsystem.cloud:5684)                                                                                             
[00:00:51.314,697] <inf> anjay: [anjay] Modem FW version: 1.3.2                                                                                                                                                          
[00:00:53.720,672] <wrn> anjay: [anjay] could not store bound local port                                                                                                                                                 
[00:00:53.720,855] <inf> anjay: [anjay] resumed connection                                                                                                                                                               
[00:00:53.722,106] <inf> anjay: [anjay] Attempting to register with LwM2M version 1.1                                                                                                                                    
[00:00:53.722,595] <inf> anjay: [anjay] Register sent                                                                                                                                                                    
[00:00:53.839,019] <wrn> anjay: [anjay] server responded with 4.00 Bad Request (expected 2.01 Created)                                                                                                                   
[00:00:53.839,019] <wrn> anjay: [anjay] could not register to server 1                                                                                                                                                   
[00:00:53.842,224] <inf> anjay: [anjay] Registration Retry 1/4                                                                                                                                                           
[00:01:10.194,396] <wrn> at_monitor: No heap space for incoming notification: %NCELLMEAS: 0,"02024720","24202","0901",65535,6300,428,54,13,69716,6300,187,53,9,0,6300,188,49,1,0,1650,264,49,10,23,100,264,48,14,32,0    
MLopezJ commented 1 year ago

Check Anjay config

Evaluate different Anjay config options to see if this is the source of the issue.

Status: Connection establish

After following the next steps I was able to connect device to Coiote Dashboard.

Steps

and values were taken from the Device Creation wizard. ![Screenshot from 2023-02-08 10-53-02](https://user-images.githubusercontent.com/8351865/217495892-2d203946-d52f-4dc4-a5c7-d4d569b5f8a6.png)
MLopezJ commented 1 year ago

Difference between SIM Cards

When using IBasis no IP address was shown and Cell ID value was 0.

This is not the case when using onomondo SIM Card.

Screenshot from 2023-02-08 11-07-53

MLopezJ commented 1 year ago

Device Location is not shown

After follow the instructions on the integration with nRF Cloud tutorial, Device Location is not shown.

The SIM Card used is onomondo and it is not registered on nRF Cloud. The device used is not registered on nRF Cloud neither.

Location and Location Assistance objects have the same values than here

Status right now is same as described here

Questions that need to be resolved

~Are Location and Location Assistance objects part of Asset Tracker V2?~

~Is the result the same when checking Device Location with iBasis SIM card?~

Does the SIM card need to be added in nRF Cloud in order to provide Location data?

Does the device need to be added in nRF Cloud in order to provide Location data?

How can I check if location related objects are been generated in the Thingy?

How can I check if location related objects are been send to Coiote?

Are anjay logs telling me something about the issue?

MLopezJ commented 1 year ago

Are Location and Location Assistance objects part of Asset Tracker V2?

Location object is part of Asset Tracker V2, but Location Assistance not.

I'm assuming Location Assistance to be custom Av Systems object because it is not registered on LwM2M documentation

MLopezJ commented 1 year ago

Is the result the same when checking Device Location with iBasis SIM card?

Short answer: Yes.

Long answer:

After changing the SIM card seems like the device is not able to connect to the Coiote Dashboard.

Steps followed:

iBasis SIM Card contains 10.39 Mb of data remaining. And on nRF Cloud there is pointed out that it is not connected to any device. Would that affect the connection?

After around 7 minutes and without make any modification, the device was able to connect to Coiote Dashboard. This is telling me that SIM card being not connected to nRF Cloud is not a problem for device registration on Coiote Dashboard, but I dont know if it is an issue for display Device Locatioan on Coiote.

MLopezJ commented 1 year ago

Location is not a mandatory object

Screenshot from 2023-02-08 14-06-44

As shown in the picture and described here, the Location object is not mandatory. It means it is not a hard blocker. It is still needed with the propose of see all the case scenarios of the integration output but is something which can be seen letter with more detail.

Progress on this with be on hold until creation of IoT Hub in Azure is solved.

MLopezJ commented 1 year ago

Discussion abut why Device Location can not be shown and how to fix it will continue here.

MLopezJ commented 1 year ago

After doing the integration with Azure, this is the output I am receiving.

[
  {
    "lwm2m": { "3313": { "0": { "5704": { "value": -9.424189567565918 } } } },
    "EventProcessedUtcTime": "2023-02-08T16:10:30.4016153Z",
    "PartitionId": 0,
    "EventEnqueuedUtcTime": "2023-02-08T15:28:13.8200000Z",
    "IoTHub": {
      "MessageId": "6bc712e2-c261-4bb5-a8ab-1b1caa1158c0",
      "CorrelationId": "818d0bf4-d0ec-41d5-ba8e-a0de7128b326",
      "ConnectionDeviceId": "test-a",
      "ConnectionDeviceGenerationId": "638114651765459563",
      "EnqueuedTime": "2023-02-08T15:28:13.3830000Z"
    }
  },
  {
    "lwm2m": { "3303": { "0": { "5602": { "value": 24.690000534057617 } } } },
    "EventProcessedUtcTime": "2023-02-08T16:10:30.4016153Z",
    "PartitionId": 0,
    "EventEnqueuedUtcTime": "2023-02-08T15:28:13.8200000Z",
    "IoTHub": {
      "MessageId": "cb325b1d-d0c4-4bf9-9222-4af6694cde8d",
      "CorrelationId": "ef468d6b-c7d3-4fc9-b22d-eb4ab03a5a2d",
      "ConnectionDeviceId": "test-a",
      "ConnectionDeviceGenerationId": "638114651765459563",
      "EnqueuedTime": "2023-02-08T15:28:13.4920000Z"
    }
  },
  {
    "lwm2m": { "3304": { "0": { "5700": { "value": 18.482999801635742 } } } },
    "EventProcessedUtcTime": "2023-02-08T16:10:30.4016153Z",
    "PartitionId": 0,
    "EventEnqueuedUtcTime": "2023-02-08T15:28:13.8200000Z",
    "IoTHub": {
      "MessageId": "17cb1ad6-0bab-4e57-b779-d4a7e0c00cfe",
      "CorrelationId": "e19a93a0-869a-4b66-ad88-163e3f77fbc9",
      "ConnectionDeviceId": "test-a",
      "ConnectionDeviceGenerationId": "638114651765459563",
      "EnqueuedTime": "2023-02-08T15:28:13.4920000Z"
    }
  },
  {
    "lwm2m": { "3347": { "0": { "5501": { "value": 0 } } } },
    "EventProcessedUtcTime": "2023-02-08T16:10:30.4016153Z",
    "PartitionId": 0,
    "EventEnqueuedUtcTime": "2023-02-08T15:28:13.8200000Z",
    "IoTHub": {
      "MessageId": "e376e637-fa55-4dd5-9386-8e1c5bf84732",
      "CorrelationId": "a1e7b796-375a-4544-b89e-5d9b23505093",
      "ConnectionDeviceId": "test-a",
      "ConnectionDeviceGenerationId": "638114651765459563",
      "EnqueuedTime": "2023-02-08T15:28:13.4920000Z"
    }
  },
  {
    "lwm2m": { "3315": { "0": { "5602": { "value": 99566 } } } },
    "EventProcessedUtcTime": "2023-02-08T16:10:30.4016153Z",
    "PartitionId": 0,
    "EventEnqueuedUtcTime": "2023-02-08T15:28:13.8200000Z",
    "IoTHub": {
      "MessageId": "669c29fb-2d71-47a3-a243-21d01aecc6f0",
      "CorrelationId": "30ab7848-7d6e-499e-98a2-2a737307f84e",
      "ConnectionDeviceId": "test-a",
      "ConnectionDeviceGenerationId": "638114651765459563",
      "EnqueuedTime": "2023-02-08T15:28:13.4920000Z"
    }
  },
]

So far I am only receiving data from 4 objects and those objects only contains one prop each one.

I am assuming this could be related to this step described here, but this need to be confirmed or discarded.

MLopezJ commented 1 year ago

Input example:

From coiote iot hub, the test-a device, device twin object:


{
    "deviceId": "test-a",
    "etag": "AAAAAAAAAAE=",
    "deviceEtag": "NTMzMDc5OTU1",
    "status": "enabled",
    "statusUpdateTime": "0001-01-01T00:00:00Z",
    "connectionState": "Connected",
    "lastActivityTime": "2023-02-08T17:05:03.1627187Z",
    "cloudToDeviceMessageCount": 0,
    "authenticationType": "sas",
    "x509Thumbprint": {
        "primaryThumbprint": null,
        "secondaryThumbprint": null
    },
    "modelId": "",
    "version": 32,
    "properties": {
        "desired": {
            "$metadata": {
                "$lastUpdated": "2023-02-08T14:59:36.5459563Z"
            },
            "$version": 1
        },
        "reported": {
            "lwm2m": {
                "1": {
                    "0": {
                        "0": {
                            "value": 1
                        },
                        "1": {
                            "value": 50
                        },
                        "6": {
                            "value": false
                        },
                        "7": {
                            "value": "U"
                        },
                        "16": {
                            "value": true
                        },
                        "23": {
                            "value": false
                        },
                        "attributes": {
                            "pmax": "600"
                        }
                    },
                    "attributes": {
                        "pmax": "600"
                    },
                    "observed": true
                },
                "3": {
                    "0": {
                        "0": {
                            "value": "Nordic Semiconductor"
                        },
                        "1": {
                            "value": "Thingy:91"
                        },
                        "2": {
                            "value": "351358815340515"
                        },
                        "3": {
                            "value": "22.8.1+0"
                        },
                        "11": {
                            "0": {
                                "value": 0
                            },
                            "attributes": {
                                "dim": "1"
                            }
                        },
                        "13": {
                            "value": 1675874731000
                        },
                        "16": {
                            "value": "UQ"
                        },
                        "19": {
                            "value": "3.2.1"
                        }
                    }
                },
                "4": {
                    "0": {
                        "0": {
                            "value": 6
                        },
                        "1": {
                            "0": {
                                "value": 6
                            },
                            "1": {
                                "value": 7
                            },
                            "attributes": {
                                "dim": "2"
                            }
                        },
                        "2": {
                            "value": -85
                        },
                        "3": {
                            "value": 23
                        },
                        "4": {
                            "0": {
                                "value": "10.160.120.155"
                            },
                            "attributes": {
                                "dim": "1"
                            }
                        },
                        "8": {
                            "value": 34237196
                        },
                        "9": {
                            "value": 2
                        },
                        "10": {
                            "value": 242
                        }
                    },
                    "attributes": {
                        "ver": "1.2"
                    }
                },
                "5": {
                    "0": {
                        "0": {},
                        "1": {
                            "value": ""
                        },
                        "3": {
                            "value": 0
                        },
                        "5": {
                            "value": 1
                        },
                        "8": {
                            "0": {
                                "value": 0
                            },
                            "1": {
                                "value": 1
                            },
                            "attributes": {
                                "dim": "2"
                            }
                        },
                        "9": {
                            "value": 2
                        }
                    }
                },
                "6": {
                    "0": {
                        "0": {
                            "attributes": {
                                "pmin": "600",
                                "pmax": "3600"
                            }
                        },
                        "1": {
                            "attributes": {
                                "pmin": "600",
                                "pmax": "3600"
                            }
                        },
                        "2": {},
                        "3": {},
                        "5": {},
                        "6": {}
                    }
                },
                "3303": {
                    "0": {
                        "5601": {},
                        "5602": {},
                        "5700": {
                            "attributes": {
                                "pmax": "3600",
                                "pmin": "600"
                            }
                        },
                        "5701": {
                            "value": "Cel"
                        },
                        "attributes": {
                            "pmin": "300",
                            "pmax": "600"
                        }
                    },
                    "attributes": {
                        "pmax": "600",
                        "pmin": "300"
                    },
                    "observed": true
                },
                "3304": {
                    "0": {
                        "5601": {},
                        "5602": {},
                        "5700": {
                            "attributes": {
                                "pmax": "3600",
                                "pmin": "600"
                            }
                        },
                        "5701": {
                            "value": "%RH"
                        }
                    }
                },
                "3313": {
                    "0": {
                        "5701": {
                            "value": "m/s2"
                        },
                        "5702": {},
                        "5703": {},
                        "5704": {}
                    }
                },
                "3315": {
                    "0": {
                        "5601": {},
                        "5602": {},
                        "5700": {
                            "attributes": {
                                "pmax": "3600",
                                "pmin": "600"
                            }
                        },
                        "5701": {
                            "value": "Pa"
                        }
                    }
                },
                "3347": {
                    "0": {
                        "5500": {},
                        "5501": {},
                        "5750": {
                            "value": "Button 0"
                        }
                    }
                },
                "3420": {
                    "0": {
                        "1": {
                            "value": "#000000"
                        }
                    }
                },
                "10256": {
                    "0": {
                        "0": {
                            "value": 428
                        },
                        "2": {
                            "value": 6300
                        },
                        "3": {
                            "value": 52
                        },
                        "4": {
                            "value": 14
                        },
                        "5": {
                            "value": 0
                        }
                    }
                },
                "50001": {
                    "0": {
                        "0": {
                            "value": 5
                        },
                        "1": {
                            "value": 128
                        },
                        "6": {},
                        "7": {},
                        "8": {},
                        "9": {},
                        "10": {},
                        "11": {}
                    }
                }
            },
            "$metadata": {},
            "$version": 31
        }
    },
    "capabilities": {
        "iotEdge": false
    }
}