---
# System prepended metadata

title: ICD for Feelit Azure Architecture

---

# ICD for Feelit Azure Architecture 
![](https://i.imgur.com/UcwhEmC.png)
![](https://i.imgur.com/qOjKFjb.png)
[Azure Tire pricing](https://azure.microsoft.com/en-au/pricing/details/event-hubs/)
[Azure Tires limits](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-quotas#:~:text=Common%20limits%20for%20all%20tiers%20%20%20,%20%2012%20%209%20more%20rows%20)


## Cloud Components: 

### 1. IoT-hub/Event-hub: 

*  #### Description:
    * Receives incoming messages to the cloud.
    * Triggers Azure function to parse the data.
    * Since we are aiming to Azure event hub Standard tire, we must take into accout the limitations, mainly message size(max 1mb) & rate( 1000 events/second)
* #### Input:
    * Array of JSON objects:
        ```
        [ 
            { 
                id: "F90004CD00002693", 
                stamp: "2021-06-02T10:01:07.003Z", 
                context: "4959554B093791B6", 
                mac: "F0A74B1ED90E", 
                len: 54, 
                data: "A55A00000000007D0008007D004801491AB200016AD66C906F947167722E729272B472BA6ACB6CA46F9971577233729172B572CA00000000", 
                calc60: null, 
                calc61: null, 
                calc62: null, 
                calc63: null, 
                calc64: null, 
                sitename: "[Feel-IT PoC_EasyIoT 047394065db37b9f]", 
                sn: "047394065DB37B9F", 
              }, 
              ...
            ] 
        ```
    * #### Output:
        * Triggers Azure function. 
---

### 2. Azure function:
* #### Description:
    * Bind to IoT-hub/event-hub. 
    * Will be triggeried when message received. 
    * Parses the messages the it gets on trigger. 
    * Store parsed data in blob storage. 
* #### Input:
    * Array of JSON objects:
        ```
        [ 
            { 
              id: "F90004CD00002693", 
              stamp: "2021-06-02T10:01:07.003Z", 
              context: "4959554B093791B6", 
              mac: "F0A74B1ED90E", 
              len: 54, 
              data: "A55A00000000007D0008007D004801491AB200016AD66C906F947167722E729272B472BA6ACB6CA46F9971577233729172B572CA00000000", 
              calc60: null, 
              calc61: null, 
              calc62: null, 
              calc63: null, 
              calc64: null, 
              sitename: "[Feel-IT PoC_EasyIoT 047394065db37b9f]", 
              sn: "047394065DB37B9F", 
              }, 
              ...,
        ] 
        ```
* #### Output:
    * Array of JSON objects per mac: 
            ```
            [ 

              { 
                measurement: "F0A74B1ED90E",
                tags: {
                        gwSn:"047394065DB37B9F",
                        stamp:"2021-06-02T10:01:07.003Z",
                        id: "F90004CD00002693",
                        sitename: "[Feel-IT PoC_EasyIoT 047394065db37b9f]", 
                        serial:A55A,
                        
                      },
                felieds: {
                            s0:0000,
                            s1:0000,
                            s2:0000,
                            s3:0000,
                            s4:0000,
                            s5:0000,
                            s6:0000,
                            s7:0000,
                         }
                timestamp:1626341446000000000

              }, 
              .
              .
              .
            ]
            ```

---

### 3. Blob Storage: 
* #### Description:
         * Data Storage component that store the data of parsed messages & analyzed data.
     * #### Inputs:
        1. Array of JSON objects per mac: 
            ```
            [ 

              { 
                measurement: "F0A74B1ED90E",
                tags: {
                        gwSn:"047394065DB37B9F",
                        stamp:"2021-06-02T10:01:07.003Z",
                        id: "F90004CD00002693",
                        sitename: "[Feel-IT PoC_EasyIoT 047394065db37b9f]", 
                        serial:A55A,

                      },
                felieds: {
                            s0:0000,
                            s1:0000,
                            s2:0000,
                            s3:0000,
                            s4:0000,
                            s5:0000,
                            s6:0000,
                            s7:0000,
                         }
                timestamp:1626341446000000000

              }, 
              .
              .
              .
            ]
            ```
            2. Docker container analysis resultss: 
            ```
            TBD
            ```

### 4. Docker Container: 

* #### Description:
    * Runs on intervals. 
    * Query new data stored in blob storage. 
    * Analyze queried data. 
    * Store results in blob storage. 
    * Store data and results to influx DB. 

 
### 5. Influx DB
* #### Description:
    * TimeSeries database to store data for further R&D. 
    * #### Input:
    * Array of JSON objects per mac of the raw data: 
            ```
            [ 

              { 
                measurement: "F0A74B1ED90E",
                tags: {
                        gwSn:"047394065DB37B9F",
                        stamp:"2021-06-02T10:01:07.003Z",
                        id: "F90004CD00002693",
                        sitename: "[Feel-IT PoC_EasyIoT 047394065db37b9f]", 
                        serial:A55A,

                      },
                felieds: {
                            s0:0000,
                            s1:0000,
                            s2:0000,
                            s3:0000,
                            s4:0000,
                            s5:0000,
                            s6:0000,
                            s7:0000,
                         }
                timestamp:1626341446000000000

              }, 
              .
              .
              .
            ]
            ```
    * Array of JSON objects per mac of the analyzied data: 
            ```
            [ 

              { 
                measurement: "F0A74B1ED90E",
                tags: {
                        gwSn:"047394065DB37B9F",
                        stamp:"2021-06-02T10:01:07.003Z",
                        id: "F90004CD00002693",
                        sitename: "[Feel-IT PoC_EasyIoT 047394065db37b9f]", 
                        serial:A55A,

                      },
                felieds: {
                            temp:"30"
                         }
                timestamp:1626341446000000000

              }, 
              .
              .
              .
            ]
            ```
    *     Or I can add the temp the for the fileds of the record with the same timestamp  
### 6. Grafana 
* #### Description:
    * Data visualization tool.