SlideShare a Scribd company logo
https://mvc.tw
歡迎參加我們的每週四固定聚會
1
Azure IoT Hub for
Smart Factory
講者:Carl Yang
https://mvc.tw
Challenges
▪ 多樣化的資料來源
▪ 不一致的資料格式
▪ 網路通訊的難易度
▪ 龐大的資料量
2
https://mvc.tw
3
Azure IoT Hub
https://mvc.tw
Scale
▪ Free:
▪ Only 1 per subscription
▪ Basic:
▪ Device-to-cloud
▪ Standard:
▪ Cloud-to-device
▪ IoT Edge
▪ Device Management
(Ref: https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-scaling)
https://mvc.tw
IoT Hub vs Event Hub
(Ref: https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-compare-event-hubs)
https://mvc.tw
Telemetry
▪ Cache: 1~7 days
▪ Unified format
▪ Unstructured
▪ Data Centralizing
▪ 相同事件、相同時間
6
https://mvc.tw
Consumer Group
▪ Pulling data
▪ Max. 20 consumer groups per IoT Hub
▪ 5 concurrent readers per group
https://mvc.tw
File Upload
▪ Only Support
Storage
Container
▪ Save data to
blob files
▪ Block Blob Only
• 10 concurrent keys in queue
• 同時10台裝置上傳,超過就會失敗
https://mvc.tw
Query Explorer
▪ Only in Standard Tier
▪ Device Twins/Jobs
information
▪ Help to manage devices
https://mvc.tw
SDKs for Client
▪ C: https://github.com/Azure/azure-iot-sdk-c
▪ Python: https://github.com/Azure/azure-iot-sdk-python
▪ Node.js: https://github.com/Azure/azure-iot-sdk-node
▪ Java: https://github.com/Azure/azure-iot-sdk-java
▪ .NET C#: https://github.com/Azure/azure-iot-sdk-csharp
https://mvc.tw
Architecture
https://mvc.tw
▪ Data Flow
▪ Monitor
▪ Authentication
12
https://mvc.tw
Data Flow
https://mvc.tw
Monitor
https://mvc.tw
Authentication
https://mvc.tw
Data
https://mvc.tw
要用資料做什麼?
分析、警示、統計?
我們全都要!
https://mvc.tw
分析 – 以O2為例
https://mvc.tw
警示– 以O2為例
https://mvc.tw
統計 – 以WIP為例
https://mvc.tw
資料從哪裡來?
OCR、Devices、Machine Logs?
我們選擇Machine Logs!
https://mvc.tw
Sources
▪ Various:
▪ Bar Code Scanner:
▪ Device Support
▪ Weak Integration
▪ OCR:
▪ Visual Identification Machine
▪ Machine Logs:
▪ Native Machine Software Support
▪ Stable
https://mvc.tw
資料如何處理?
https://mvc.tw
Various Data Structures
▪ Various Data Schema:
▪ Keep useful data
▪ Re-organize structure
▪ Merge/Divide Values
▪ Use CSV for exchanging
https://mvc.tw
Format
▪Not consistent:
▪ 欄位分隔符號不一致: 先replace、再Divide
▪Abnormal Values:
▪ 多個數值: 只留真正的資料
▪Value Type:
▪ Read with STRING type first
https://mvc.tw
Format
▪Multiple columns:
▪Use the column name closed to value
▪Hierarchy:
▪Set with real data hierarchy
https://mvc.tw
Format
▪Extra Information:
▪Remove it
▪Use it on-premises
https://mvc.tw
Format
▪Column in value:
▪Manually Input
▪Confirm with user
▪Parse Value
https://mvc.tw
Frequency
▪Scenario:
1. File Rename:
▪Ex. Test.csv -> Test.tmp
2. Append data per 1s
3. File Rename:
▪Ex. Test.tmp –> Test.csv
https://mvc.tw
File Lock/Missing
• Create/Update:
• Sol:
• Copying file first
• Delete/Rename
• Sol:
Filtering by full name
(ex. *.csv) then copying
• Sol:
Filter by modify time
•Hint: 不要跟機台比速度!
https://mvc.tw
優化
If it can be …
else …
Optimization:
• Create/Update:
• Create file instead of
update, even if only
one record
• Delete/ Rename :
• Not allowed
https://mvc.tw
Read Local File
• Network latency
• Data Size
• Divide & Conquer
• 單一檔太大,分開寫檔/讀檔。
• Read/Write Frequency
• 讀寫檔案速度一定是本地
端最快、最穩。
• 提升Host的I/O效能。
https://mvc.tw
資料往哪裡送?怎麼送?
On-premises: DB/REDIS…etc
Cloud: Services?
https://mvc.tw
Principals for IoT Hub
▪ 256 KB per message
▪ Make data size closed to 256 KB in each request
▪ 4 KB per unit
▪ Reduce data size as possible, ex. u0022
256 KB
256 KB
128 KB
IoT Hub
1
2
3
https://mvc.tw
Memory Queue
256 KB
256 KB
128 KB
IoT Hub
Latency
Time Series
https://mvc.tw
Application
https://mvc.tw
IoT Edge
▪ 最接近資料來源的機器
▪ 分散式計算
▪ 獨立運算能力
▪ 網路通訊能力
https://mvc.tw
IoT Devices
or Edge?
▪ 政策
▪ 遠端裝置管理
▪ 雙向通訊
▪ Device Client作業環境
▪ Device Client的網路環境
https://mvc.tw
政策
▪ 資料安全性
▪ 作業系統
▪ Win 10 1809+ & IoT Edge Runtime & Docker
▪ 設備
▪ 效能: 運算能力、I/O、Storage
▪ 通訊
https://mvc.tw
遠端裝置管理
▪ 軟體更新、大量部署
▪ IoT Edge
▪ Application Insights Module
▪ 外部通訊
▪路由
▪ 模組間的通訊方式
▪ Telemetry
▪ 資料存取
https://mvc.tw
雙向通訊
▪Device to cloud
▪Telemetry遙測資料
▪Cloud to device
▪Notification
▪Modules Update
https://mvc.tw
Device Client作業環境
▪Windows/Linux
▪Embedded System
▪Mobile Device(Android/iOS)
https://mvc.tw
Device Client的網路環境
▪通訊協定
▪https、AMQP、MQTT…etc
▪Firewall/Proxy
▪ 網路通訊
▪ 頻寬(ex. 只允許100/10 MB夠不夠用?)
https://mvc.tw
Win Services or Container?
▪ Docker
▪ Memory Process,注意使用量。
▪ Windows環境下,盡可能不使用大量的I/O處理。
▪ Windows Services
▪ 管理不易
▪ Debug資訊不充足
▪ 系統整合性佳
https://mvc.tw
Cost
https://mvc.tw
Basic or Standard tier?
(Ref:https://azure.microsoft.com/zh-tw/pricing/details/iot-hub/)
https://mvc.tw
Azure IoT Hub Quota
▪ Charge Unit: 4KB
▪ Batch Daily Volume:
▪ Type1: 0.18 KB x 60s x 60m x 24H x 12 Lines = 186,624 KB
▪ Type2: 0.98 KB x 60/10s x 60m x 24H x 12 Lines = 101,606 KB
▪ Total: 288,230 / 4 KB = 72,057 Units
▪ Real-time Daily Count:
▪ Type1: 60s x 60m x 24H x 12 Lines = 1,036,800 records
▪ Type2: 60/10s x 60m x 24H x 12 Lines = 1,036,80 records
▪ Total: 1,036,800 + 1,036,80 = 1,140,480 Units
https://mvc.tw
Summary
https://mvc.tw
沒有最好的架構、只有最合適的架構
經驗不是放諸四海皆準的規則、只是借鏡
因地制宜!
https://mvc.tw
▪ Contact:
▪ Carl_yang@kingston.com.tw
▪ PPT:
▪ https://github.com/carlyang920/twMVC2021-42.git
https://mvc.tw
歡迎參加我們的每週四固定聚會
Thanks for joining!

More Related Content

What's hot (20)

PDF
twMVC#41 hololens2 MR
twMVC
 
PDF
twMVC#43 Visual Studio 2022 新功能拆解
twMVC
 
PDF
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC
 
PDF
twMVC#36.NetCore 3快速看一波
twMVC
 
PDF
twMVC#32應用 ASP.NET WebAPI2 Odata 建置高互動性 APIS
twMVC
 
PPTX
twMVC#31沒有 hdd 的網站重構 webform to mvc
twMVC
 
PPTX
twMVC#31網站上線了然後呢
twMVC
 
PDF
twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API
twMVC
 
PDF
twMVC#30 | 你應該瞭解的 container-on-azure-二三事
twMVC
 
PDF
Asp.net mvc 從無到有 -twMVC#2
twMVC
 
PDF
twMVC#43 C#10 新功能介紹
twMVC
 
PDF
Node.js從無到有 基本課程
Simon Su
 
PDF
twMVC#26 | 淺談 ASP.NET Caching 技術與實踐
twMVC
 
PDF
twMVC#26 | Redis資料型別與場景的連結
twMVC
 
PPTX
SQL Server 資料庫版本控管
Will Huang
 
PPTX
[Study4TW Visual Studio Everywhere] asp.net core 實務開發經驗分享
Duran Hsieh
 
PDF
NodeJS基礎教學&簡介
GO LL
 
PDF
Node js实践
jay li
 
PDF
React.js what do you really mean?
昱安 周
 
PPTX
快快樂樂學 Angular 2 開發框架
Will Huang
 
twMVC#41 hololens2 MR
twMVC
 
twMVC#43 Visual Studio 2022 新功能拆解
twMVC
 
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC
 
twMVC#36.NetCore 3快速看一波
twMVC
 
twMVC#32應用 ASP.NET WebAPI2 Odata 建置高互動性 APIS
twMVC
 
twMVC#31沒有 hdd 的網站重構 webform to mvc
twMVC
 
twMVC#31網站上線了然後呢
twMVC
 
twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API
twMVC
 
twMVC#30 | 你應該瞭解的 container-on-azure-二三事
twMVC
 
Asp.net mvc 從無到有 -twMVC#2
twMVC
 
twMVC#43 C#10 新功能介紹
twMVC
 
Node.js從無到有 基本課程
Simon Su
 
twMVC#26 | 淺談 ASP.NET Caching 技術與實踐
twMVC
 
twMVC#26 | Redis資料型別與場景的連結
twMVC
 
SQL Server 資料庫版本控管
Will Huang
 
[Study4TW Visual Studio Everywhere] asp.net core 實務開發經驗分享
Duran Hsieh
 
NodeJS基礎教學&簡介
GO LL
 
Node js实践
jay li
 
React.js what do you really mean?
昱安 周
 
快快樂樂學 Angular 2 開發框架
Will Huang
 

Similar to twMVC#42 Azure IoT Hub for Smart Factory (20)

PPT
Html5
cazhfe
 
PDF
美团技术团队 - KVM性能优化
美团点评技术团队
 
PPTX
Exadata那点事
freezr
 
PDF
雲端環境的快取策略-Global Azure Bootcamp 2015 臺北場
twMVC
 
PDF
雲端技術的新趨勢
Ben Huang
 
PPTX
Oracle saa s paas overview
Chris Lee
 
PPTX
Oracle雲端服務介紹 taiwan
Chieh-An Yu
 
PDF
基于MySQL的分布式数据库实践
jackbillow
 
PDF
基于My sql的分布式数据库实践
锐 张
 
PDF
Big Data, NoSQL, and MongoDB
Monster Supreme
 
PDF
有道云笔记架构简介
drewz lin
 
PPTX
Web客户端数据存储
fangdeng
 
PDF
COSCUP 2019 - 開源大數據引擎 Greenplum
Omni-Alex Chen
 
PPT
Real-Time Web实时信息流推送
yongboy
 
PPT
Real time web实时信息流推送
yongboy
 
PPTX
SC存储家族之SC4000系列 for CML Master Class ver1.1.pptx
WeiminChen11
 
PPTX
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
acelyc1112009
 
PPTX
大规模数据库存储方案
XiaoJun Hong
 
PDF
Taobao casestudy-yufeng-qcon
Yiwei Ma
 
PPTX
Flash存储设备在淘宝的应用实践
Feng Yu
 
Html5
cazhfe
 
美团技术团队 - KVM性能优化
美团点评技术团队
 
Exadata那点事
freezr
 
雲端環境的快取策略-Global Azure Bootcamp 2015 臺北場
twMVC
 
雲端技術的新趨勢
Ben Huang
 
Oracle saa s paas overview
Chris Lee
 
Oracle雲端服務介紹 taiwan
Chieh-An Yu
 
基于MySQL的分布式数据库实践
jackbillow
 
基于My sql的分布式数据库实践
锐 张
 
Big Data, NoSQL, and MongoDB
Monster Supreme
 
有道云笔记架构简介
drewz lin
 
Web客户端数据存储
fangdeng
 
COSCUP 2019 - 開源大數據引擎 Greenplum
Omni-Alex Chen
 
Real-Time Web实时信息流推送
yongboy
 
Real time web实时信息流推送
yongboy
 
SC存储家族之SC4000系列 for CML Master Class ver1.1.pptx
WeiminChen11
 
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
acelyc1112009
 
大规模数据库存储方案
XiaoJun Hong
 
Taobao casestudy-yufeng-qcon
Yiwei Ma
 
Flash存储设备在淘宝的应用实践
Feng Yu
 
Ad

More from twMVC (12)

PDF
twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面
twMVC
 
PDF
twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作
twMVC
 
PDF
twMVC#50 微服務上線後的救贖
twMVC
 
PDF
twMVC 47_Elastic APM 的兩三事
twMVC
 
PDF
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC
 
PDF
.NET 7 家族新成員: Microsoft Orleans v7
twMVC
 
PDF
twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC
 
PDF
twMVC#44 如何測試與保護你的 web application with playwright
twMVC
 
PDF
twMVC#36C#的美麗與哀愁
twMVC
 
PDF
twMVC#30 | Bootstrap 搶先玩
twMVC
 
PDF
twMvc#30 | 技術人員與業務團隊的無礙的溝通法則
twMVC
 
PDF
twMVC#29 | 當.Net Core 遇到AWS Lambda
twMVC
 
twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面
twMVC
 
twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作
twMVC
 
twMVC#50 微服務上線後的救贖
twMVC
 
twMVC 47_Elastic APM 的兩三事
twMVC
 
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC
 
.NET 7 家族新成員: Microsoft Orleans v7
twMVC
 
twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC
 
twMVC#44 如何測試與保護你的 web application with playwright
twMVC
 
twMVC#36C#的美麗與哀愁
twMVC
 
twMVC#30 | Bootstrap 搶先玩
twMVC
 
twMvc#30 | 技術人員與業務團隊的無礙的溝通法則
twMVC
 
twMVC#29 | 當.Net Core 遇到AWS Lambda
twMVC
 
Ad

twMVC#42 Azure IoT Hub for Smart Factory