SlideShare a Scribd company logo
1 of 33
#35 學術研究結合 .NET Core 開發IoT應用
開發分享
Wei-Ting SHIH
WEI-TING SHIH (WAITING)
ASP.NET MVC/ASP.NET core/Exchange server management
2017 #05 Bot Framework Demo
2017 Sigfox UnaHack PowerBI
(當兵去)
(二月去法國,三月又逃難回來)
然後就#35了@@
FB: WEI-TING SHIH
Linkedin: weitingshih
GITHUB: driftmind
Outline
• 踩雷的過程
• Azure IoT Hub
• 一些無線通訊+Demo
• 大概就這樣了吧
• 以上東西純為了把計畫有交代並非最佳設計
• 歡迎隨時打斷討論
• 但請不要錄音錄影,研究計畫有NDA(但資通訊相關不限)
開發原由
一切從隔壁實驗室有個演算法以及好多隻大型電風扇開始
喔?!所以我們又要繼續了嗎?:我
老闆:ㄟ,我們又突然有個新的計畫延續兩年前廠商不玩的計畫
踩雷過程
老闆:對阿~而且有另外一家廠商要提供設備,跟我去一趟吧
喔?!好喔:我
我打算把原本的MATLAB Code轉成Python,現在Python顯學R:我
工程師:所以你們打算把目前的演算法丟進去?打算用什麼方法
踩雷過程
工程師:喔?!我們公司最近已經有試著把Python裝進去了,初步可以跑
不錯喔!那我們應該可以很快處理Code:我
工程師:你用了什麼函示庫?
怎麼好像有些函示庫好像無法處理?:我
踩雷過程
SciPy跟STFT,感覺你們沒支援:我
工程師:喔對阿~我們還沒放進去?BTW我們用純C的kissfft
完了最重要的函示庫不能用…..:我
那我回去自幹(ㄓㄨㄢˇ)可以了吧
但依樣不支援FFT唷 (╯°□°)╯︵ ┻━┻
那我想辦把裝Python所有套件可以了吧
Arago Project is an open integration, build, and test
framework and infrastructure that provides a portal
into how Texas Instruments creates customer ready
Linux SDKs, such as ProcessorSDK, AM-SDK, MC-
SDK, EZ-SDK etc. all collectively called TI-SDK.
Package Manager: OPKG
版本太舊不支援TLS,無法下載想要的套件
乾…….
(╯°□°)╯︵ ┻━┻
而且聽說他們設備打API
是Swagger生成的 (,,・ω・,,)
正當覺得完了這計畫要GG了
1. 難道我要回去寫純C嗎(我根本沒碰過= =)
2. 突然想到~阿不是有.net core
阿號稱什麼設備都跑的了
不然就不管3721把.net core runtim丟進去啦!
(☉д⊙)
竟然可以跑耶!!!!!
一切用C#解決掉啦!!!!!!!!
打API用HttpClient啦!
數學用Math.NET啦!
無線傳輸用SerialPort啦!
mkdir -p "$HOME/dotnet" && tar zxf dotnet-sdk-3.1.301-linux-x64.tar.gz -C "$HOME/dotnet"
export DOTNET_ROOT=$HOME/dotnet
export PATH=$PATH:$HOME/dotnet
那前面說的FFT怎麼辦
Math.NET https://numerics.mathdotnet.com/api/MathNet.Numerics.IntegralTransforms/Fourier.htm
ヽ(∀゚ )人(゚∀゚)人( ゚∀)人(∀゚ )人(゚∀゚)人( ゚∀)ノ
19
Compute Time on NB and Device (1.0 GHz)
無線傳輸 和 為何LoRa (Long Range)
監控塔LoRa通訊塔 4G
SAINT-BRIEUC BAY OFFSHORE WIND FARM 496 MW,
BRITTANY (FRANCE)
LoRa (LongRange)
全球免費頻段運行
• 美國是915MHz
• 歐洲是868MHz
• 亞洲則為433MHz。
範圍是2km至5km,最長距離可達15kmLoRa技術
具有如下特點:
•低功耗
•大容量
•支持測距和定位
Serial Port (RS232) 傳送 Vs 接收
var _serialPort = new SerialPort("COM5",
9600, Parity.None, 8, StopBits.One);
_serialPort.RtsEnable = true;
_serialPort.Open();
string message = “message”;
byte[] data =
Encoding.UTF8.GetBytes(message);
_serialPort.Write(data, 0, data.Length);
_serialPort.Close();
Thread.Sleep(3000);
var _serialPort = new SerialPort("COM6",
9600, Parity.None, 8, StopBits.One);
_serialPort.DtrEnable = true;
_serialPort.Open();
_serialPort.DataReceived += new
SerialDataReceivedEventHandler(dataReceived);
Byte[] buffer = new Byte[2048];
Int32 length = (sender as
SerialPort).Read(buffer, 0, buffer.Length);
Array.Resize(ref buffer, length);
string stringdata =
Encoding.UTF8.GetString(buffer).ToString();
接收
const Int32 S = 83;
const Int32 E = 69;
List<Byte> tempList = new List<byte>();
Int32 receivedValue = _serialPort.ReadByte();
switch (receivedValue){
case S:
tempList.Clear();
tempList.Add((Byte)receivedValue);
break;
case E:
tempList.Add((Byte)receivedValue);
parsevalue(tempList);
break;
case -1:
break;
default:
tempList.Add((Byte)receivedValue);
break;}
var _serialPort = new SerialPort("COM6",
9600, Parity.None, 8, StopBits.One);
_serialPort.DtrEnable = true;
_serialPort.Open();
_serialPort.DataReceived += new
SerialDataReceivedEventHandler(dataReceived);
Byte[] buffer = new Byte[2048];
Int32 length = (sender as
SerialPort).Read(buffer, 0, buffer.Length);
Array.Resize(ref buffer, length);
string stringdata =
Encoding.UTF8.GetString(buffer).ToString();
Azure IoT Hub and Process Flow
正當覺得一切解決的時候
(゚д゚≡゚д゚)
儲存位置、結構
可是會有幾百台設備不定時丟耶
還是看你抵達Azure Cloud時間
目前解法
string connectionString = Environment.GetEnvironmentVariable("AZURE_STORAGE_CONNECTION_STRING");
BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);
BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(“containername");
using (FileStream downloadFileStream = File.OpenWrite(“localpath”){
await download.Content.CopyToAsync(downloadFileStream);
downloadFileStream.Close();
}
然後就是全部Download下來再說啦O-(/// ̄皿 ̄)☞ ─═≡☆゜★█▇▆▅▄▃▂_
P.S. 有好的解法可以討論一下
https://docs.microsoft.com/zh-tw/azure/storage/blobs/storage-quickstart-blobs-dotnet
Windows: setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>“
Linux, macOS: export AZURE_STORAGE_CONNECTION_STRING="<yourconnectionstring>"
Power BI 視覺化
Thank you all.

More Related Content

What's hot

2021 MOPCON - 行動化解決方案的技術選型, 交給 Line Bot 來搞定
2021 MOPCON - 行動化解決方案的技術選型, 交給 Line Bot 來搞定2021 MOPCON - 行動化解決方案的技術選型, 交給 Line Bot 來搞定
2021 MOPCON - 行動化解決方案的技術選型, 交給 Line Bot 來搞定
Kyle Shen
 
Patterns of Expertise in Cloud 云计算中的专家模式 QCon 2014 北京
Patterns of Expertise in Cloud 云计算中的专家模式 QCon 2014 北京Patterns of Expertise in Cloud 云计算中的专家模式 QCon 2014 北京
Patterns of Expertise in Cloud 云计算中的专家模式 QCon 2014 北京
Li Yi
 

What's hot (10)

用简单语言构建复杂系统
用简单语言构建复杂系统用简单语言构建复杂系统
用简单语言构建复杂系统
 
與設計架構當朋友
與設計架構當朋友 與設計架構當朋友
與設計架構當朋友
 
2021 MOPCON - 行動化解決方案的技術選型, 交給 Line Bot 來搞定
2021 MOPCON - 行動化解決方案的技術選型, 交給 Line Bot 來搞定2021 MOPCON - 行動化解決方案的技術選型, 交給 Line Bot 來搞定
2021 MOPCON - 行動化解決方案的技術選型, 交給 Line Bot 來搞定
 
The Journey of Source Generator
The Journey of Source GeneratorThe Journey of Source Generator
The Journey of Source Generator
 
用 C# 與 .NET 也能打造機器學習模型:你所不知道的 ML.NET 初體驗
用 C# 與 .NET 也能打造機器學習模型:你所不知道的 ML.NET 初體驗用 C# 與 .NET 也能打造機器學習模型:你所不知道的 ML.NET 初體驗
用 C# 與 .NET 也能打造機器學習模型:你所不知道的 ML.NET 初體驗
 
從負面案例來討論接案工程師該有什麼軟技能
從負面案例來討論接案工程師該有什麼軟技能從負面案例來討論接案工程師該有什麼軟技能
從負面案例來討論接案工程師該有什麼軟技能
 
BBC Micro:bit beginner project
BBC Micro:bit beginner projectBBC Micro:bit beginner project
BBC Micro:bit beginner project
 
Office 365 love open source
Office 365 love open source Office 365 love open source
Office 365 love open source
 
Patterns of Expertise in Cloud 云计算中的专家模式 QCon 2014 北京
Patterns of Expertise in Cloud 云计算中的专家模式 QCon 2014 北京Patterns of Expertise in Cloud 云计算中的专家模式 QCon 2014 北京
Patterns of Expertise in Cloud 云计算中的专家模式 QCon 2014 北京
 
IBM Bluemix 物聯新世界 Future with Robot
IBM Bluemix 物聯新世界  Future with RobotIBM Bluemix 物聯新世界  Future with Robot
IBM Bluemix 物聯新世界 Future with Robot
 

Similar to Azure IoT Total solution

簡單小步驟,輕鬆觀賞 Virtual Show
簡單小步驟,輕鬆觀賞 Virtual Show簡單小步驟,輕鬆觀賞 Virtual Show
簡單小步驟,輕鬆觀賞 Virtual Show
advantech2012
 

Similar to Azure IoT Total solution (20)

從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan
從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan
從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan
 
20230830 淺談 Azure OpenAI.pdf
20230830 淺談 Azure OpenAI.pdf20230830 淺談 Azure OpenAI.pdf
20230830 淺談 Azure OpenAI.pdf
 
Monitoring Tools 大亂鬥 - AWS CloudWatch
Monitoring Tools 大亂鬥 - AWS CloudWatchMonitoring Tools 大亂鬥 - AWS CloudWatch
Monitoring Tools 大亂鬥 - AWS CloudWatch
 
Learn Django With ChatGPT
Learn Django With ChatGPTLearn Django With ChatGPT
Learn Django With ChatGPT
 
01 DevOps and Azure DevOps overview
01 DevOps and Azure DevOps overview01 DevOps and Azure DevOps overview
01 DevOps and Azure DevOps overview
 
探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan
探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan
探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan
 
程式交易介紹及 FinTech 創作分享
程式交易介紹及 FinTech 創作分享程式交易介紹及 FinTech 創作分享
程式交易介紹及 FinTech 創作分享
 
Trading bot演算法與軟工在程式交易上的實踐
Trading bot演算法與軟工在程式交易上的實踐Trading bot演算法與軟工在程式交易上的實踐
Trading bot演算法與軟工在程式交易上的實踐
 
twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧
 
Building Chatbot With Huggging Face
 				Building Chatbot With Huggging Face 				Building Chatbot With Huggging Face
Building Chatbot With Huggging Face
 
CICD Workshop 20180922
CICD Workshop 20180922CICD Workshop 20180922
CICD Workshop 20180922
 
How to build a community in a company blue&macpaul coscup2015
How to build a community in a company blue&macpaul coscup2015How to build a community in a company blue&macpaul coscup2015
How to build a community in a company blue&macpaul coscup2015
 
從 GPT 到 DALL·E:在 Azure 上實現 AI 的創造性應用
從 GPT 到 DALL·E:在 Azure 上實現 AI 的創造性應用從 GPT 到 DALL·E:在 Azure 上實現 AI 的創造性應用
從 GPT 到 DALL·E:在 Azure 上實現 AI 的創造性應用
 
不會 Javascript 沒關係,用 Blazor 來解決前端需求 - 成為 Full Stack .NET 開發者吧 - .NET Conf 2020...
不會 Javascript 沒關係,用 Blazor 來解決前端需求 - 成為 Full Stack .NET 開發者吧 - .NET Conf 2020...不會 Javascript 沒關係,用 Blazor 來解決前端需求 - 成為 Full Stack .NET 開發者吧 - .NET Conf 2020...
不會 Javascript 沒關係,用 Blazor 來解決前端需求 - 成為 Full Stack .NET 開發者吧 - .NET Conf 2020...
 
Global Azure Bootcamp @ 廣州 - 智能聊天機器人四代目
Global Azure Bootcamp @ 廣州 - 智能聊天機器人四代目Global Azure Bootcamp @ 廣州 - 智能聊天機器人四代目
Global Azure Bootcamp @ 廣州 - 智能聊天機器人四代目
 
簡單小步驟,輕鬆觀賞 Virtual Show
簡單小步驟,輕鬆觀賞 Virtual Show簡單小步驟,輕鬆觀賞 Virtual Show
簡單小步驟,輕鬆觀賞 Virtual Show
 
Azure Taiwan - Keep azure cost down (Azure 成本管控)
Azure Taiwan - Keep azure cost down (Azure 成本管控)Azure Taiwan - Keep azure cost down (Azure 成本管控)
Azure Taiwan - Keep azure cost down (Azure 成本管控)
 
聊天機器人概論 Introduce to chat bot sevices
聊天機器人概論 Introduce to chat bot sevices聊天機器人概論 Introduce to chat bot sevices
聊天機器人概論 Introduce to chat bot sevices
 
Introduction Hugging face.pdf
Introduction Hugging face.pdfIntroduction Hugging face.pdf
Introduction Hugging face.pdf
 
如何使用 API.AI + NodeJs 快速建立 Chatbot
如何使用 API.AI + NodeJs 快速建立 Chatbot如何使用 API.AI + NodeJs 快速建立 Chatbot
如何使用 API.AI + NodeJs 快速建立 Chatbot
 

Azure IoT Total solution