---
# System prepended metadata

title: IoT Final Note

---


# IoT Final Note
## CH1- Introduction to IoT
### Block Diagram of IoT Device
* consisted of interfaces for connections to other devices --> **wired/ wireless**
    ![](https://i.imgur.com/XdsIZ4T.png =500x)
### Protocols
* From bottom to top
    ![](https://i.imgur.com/pp0aDBJ.png =300x)
    * Link layer: 802.3(ethernet)、802.11(wifi)......
    * network/Internet Layer: IPv4, IPv6......
    * Transport Layer: TCP、UDP
    * Application Layer: HTTP、WebSocket、MQTT......
### **Models**
#### Request-Response communicatin model
* client: sends requests to server
* server: respose to the requests
    * how to response?
    * fetches data...?
    * retrieved resource representations
    * prepare response
    * send back
            
![](https://i.imgur.com/wrirKKf.png)

#### Publish-Subscribe communication model
* publisher: **source of data**
    - send data to the topics managed by **broker** 
    - Not aware of consumers
* Consumer: subscribe to topics
* After broker received data from publisher--> send data to all the **subscribed consumers**
    
        
![](https://i.imgur.com/uSSfyX6.png)

#### Push-Pull communication model
* data producer: push data to queue
    * Not aware of consumers
* consumers: pull the data from the queue
* Queues: help decoupling the messages
* Queues: Buffer in situation --> mismatched pull/ push rate

![](https://i.imgur.com/vacQvNP.png)

#### Exclusive Pair communication model
* bidirectional, fully duplex (雙向)
* **persistent connection** --> communication remains open till client sends close request
    
![](https://i.imgur.com/vVJjw66.png =500x)

### **API**
#### REST-based Communication APIs
* REST: Representational State Transfer
    * design web services and web APIs
        * focus on a system’s resources
        * how resource states are addressed and transferred
* model: request-response communication model

![](https://i.imgur.com/E9zXkuB.png)

#### WebSocket-based Communication APIs
* bidirectional, full duplex communication
* model: exclusive pair communication model

![](https://i.imgur.com/2k8s1PL.png)

### IoT Components
* Device
* Resource: software components **on the IoT device**
    * function: 
        a. accessing, processing, and storing sensor information
        b. controlling actuators
        c. enable network access for the device
* Controller Service: native service
    * runs on the device
    * interacts with the web services
    * function: 
        * sends data: device ---> web service
        * receives commands <---(via: web services)--- application 
* Database: local/ cloud
* Web Service: link between the **IoT device**, **application**, **database**, **analysis components**
    * Implemented methods: 
        * HTTP and REST principles (**REST service**)
        * WebSocket protocol (**WebSocket service**)
* Analysis Component
* Application: 
    * interface for users to control and monitor
    * view the system status
    * view the processed data

### IoT Level
#### Level 1
* single node/device
    * sensing/ actuation
    * stores data
    * analysis
    * hosts application
* lowcost, low-complexity solutions

![](https://i.imgur.com/0SrJAp8.png =400x)

#### Level 2
* single node
    * sensing/ actuation
    * local analysis
<font color = red>
* Data/ application
    * cloud
    </font>
* big data involved, analysis not computationally intensive

![](https://i.imgur.com/BOwzfLx.png =400x)

#### Level 3
* single node
    * sensing/ actuation
* Data/ application/ <font color=red>analysis
</font>
    * cloud
* big data involved, analysis <font color=red>computationally intensive</font>
 
![](https://i.imgur.com/mTJwHfg.png =400x)

#### Level 4
* <font color = red>multiple</font> node
    * sensing/ actuation
    * local analysis
    * <font color = red>local/ cloudbased observer nodes</font>
        * subscribe to/ receive information
* Data/ application
    * cloud
* multiple nodes required, big data involved, computationally intensive analysis

![](https://i.imgur.com/bS3HmUa.png )

#### Level 5
* <font color = red>multiple end nodes and one coordinator node</font>
    * end node: sensing/ actuation
    * <font color = red>coordinator node: collects data from end, sends to the cloud</font>
* Data/ application/ analysis
    * cloud
* solutions based on <font color = red>wireless sensor networks</font>, big data involved, computationally intensive analysis

![](https://i.imgur.com/XK2jICk.png)

#### Level 6
* multiple independent end nodes
<font color = red>
    * sensing/ actuation
    * send data to the cloud
</font>
* Data/ application/ analysis
    * cloud
<font color = red>
* centralized controller
    * aware of the status of all the end nodes
    * sends control commands to the nodes
</font>
![](https://i.imgur.com/hWdPGpb.png)

### Comparision between Levels
![](https://i.imgur.com/sRPPJG7.png =700x)

## CH3- IoT vs. M2M
### M2M Intro.
* Machine-to-Machine
* networking of machines (devices)
* remote monitoring, control, data exchange
* Machine:
    * embedded hardware modules
    * sensing, actuation and communication
* Communication:
    * protocols: 
        * ZigBee
        * Bluetooh
        * ModBus
        * M-Bus
        * Wirless M-Bus
        * Power Line Communication (PLC)
        * 6LoWPAN
        * IEEE 802.15.4
        * ......
    * network: **wire/ wireless networks(IP)**
* M2M area networks: proprietary or non-IP based communication protocols
    * Unable to communicate with nodes in an external network ---> use **gateways**
    
![](https://i.imgur.com/CphhPs2.png)

### Difference
|Comparison|IoT|M2M|
|-|-|-|
|Emphasis|software|hardware with embedded modules|
|Data Collection & Analysis|cloud (public, private or hybrid)|point solutions& on-premises storage infrastructure|
|Applications|collected in the cloud& accessed by cloud applications|collected in point solutions& accessed by on-premises applications|

![](https://i.imgur.com/G2aTIGH.png)

### SDN
* Software-Defined Networking
    * separates control plane from data plane
* maintain a unified view of the network
* make configuration, management, provisioning simpler
* use simple packet forwarding hardware

![](https://i.imgur.com/NIgptth.png)

* Components
    * Centralized Network Controller
    * Programmable Open APIs
        * **Northbound interface**: interface between the SDN application and control layers
    * Standard Communication Interface<font color=red> (OpenFlow)</font>
        * **Southbound interface**: interface between the control and infrastructure layers

### NFV
* Network Function Virtualization
* leverages <font color=blue>virtualization</font> to consolidate the heterogeneous network devices
* **complementary to SDN** ---> infra. to run
* Elements:
    * **VNF** (Virtualized Network Function):
        * software implementation of a network function
    * **NFVI** (NFV Infrastructure):
        * virtualize compute, network and storage resources
    * Management and Orchestration:
* Use case: virtualize Home Gateway
    * private IP addresses to the devices in the home 
    * connects to network services: VoIP, IPTV

![](https://i.imgur.com/o75qC4j.png)

## CH4- IoT System Management with NETCONF-YANG
### SNMP (Simple Network Management Protocol)
- protocol allowing monitoring and configuring network devices
- components:
    - NMS (Network Management Station)
    - Managed Device
    - MIB (Management Information Base)
    - SNMP Agent

![](https://i.imgur.com/2dzlvIv.png =300x)

- stateless& the SNMP request contains all the info. ---> **application needs to be intelligent**
- connectionless protocol (UDP) ---> **unreliable**
- MIBs lack writable objects ---> device configuration is impossible
- difficulty retrieving current configuration
- lack strong security features

### NETCONF (Network Configuration Protocol)
- session-based network management protocol
- retrieving state/ configuration data
- manipulating configuration data

![](https://i.imgur.com/TkcPzF4.png)

- SSH transport protocol
- transport layer ---> end-to-end connectivity, reliable delivery
- XML-encoded Remote Procedure Calls (PRCs) ---> framing request and response messages
- RPC layer ---> mechanism for encoding of RPC calls and notifications
- Content Layer ---> configuration and state data (XML-encoded)
- **```YANG```** ---> data modeling language

### YANG
- usage: model configuration and state data
- contains:
    - definitions of configuration data
    - state data
    - RPC calls that can be issued
    - format of the notifications 
- defines the data between the NETCONF client and server
- hierarchical tree structure

![](https://i.imgur.com/Xow7JgO.png)

## CH5- IoT Design Methodology
![](https://i.imgur.com/UJwWP5N.png)

## CH8- IoT Physical Servers & Cloud Offerings
### WAMP (Web Application Messaging Protocol)
- sub-protocol of Websocket
- publish-subscribe model
    - Publisher: publishes events to topic maintained by the Broker
    - Subscriber: subscribes to topics, receives the events
- remote procedure call (RPC)
    - Caller: issues calls to the remote procedures
    - Callee: executes the procedures which calls are issued by the caller and returns the results back to the caller
- Router: perform generic call and event routing 
    - PS-mode: Broker: routes messages published to a topic to all subscribers
    - RPC-mode: Dealer: routes RPC calls from the Caller to the Callee and routes results from Callee to Caller
![](https://i.imgur.com/qeCP6uO.png)
## CH10- Data Analytics for IoT
### Hadoop Ecosystem
- open source framework for distributed batch processing of big data

## Lab1
### OS Installation
- Download Raspbian
- Flash .img file into SD card
- **SSH**
    - add new raw file ```ssh``` into the ```boot``` disk
    - ssh command ```ssh pi@raspberrypi.local```
        - default password: raspberry
- VNC
    - ```raspi-config```
        - Adjust ```VNC```, ```Resolution```
    - Reboot
- Trouble shoot
    - reinstall: delete ```known_hosts``` file or line related to ```raspberrypi.local```
    
## Lab2
### Request
- pip install request
- ```response = request.get(url, params={‘key’ : ‘data’}, headers={‘key’ :‘data’}```
- HTTP status code:
    - Informational responses (100–199)
    - Successful responses (200–299)
    - Redirects (300–399)
    - Client errors (400–499)
    - Server errors (500–599)
- response.json(): get the message in ```json``` format
