2019年1月10日 星期四

AIoT軟體架構圖



實現一個AIoT架構,一個可能的方式參考下列作法




#Python  code snippet 

利用python上驗證各種通訊程序, 包含 MQTT, LinePutsh,...


#Node.js code snippet 


// parse application/json
var jsonParser = bodyParser.json()

/MQTT
app.post('/agent/mqtt',jsonParser, function (req, res) {

  //console.log(req.body)
  console.log(req.body.topic);
  console.log(req.body.message);

//測試Linebot是否能通
app.post('/webhook', bot.parser());

//Line Push
app.post('/agent/line', function (req, res) {

  console.log('Line');

  ////Line code/////////////
 // pushLinemsg(req.body.message['0'])
 pushLinemsg(JSON.stringify(req.body.message))


  ////Repsone to http client/////
     respond_http(res);

});





#為使用Linebot 我們使用ngrok 來解決private IP及要提供https服務

./ngrok http 3010




2a87b84c.ngrok.io/webhook 貼到Line的設定中,並verify https 200 OK, 如果可以通代表ngrok 已打通的channel







2018年12月14日 星期五

CUDA driver version is insufficient for CUDA runtime version



問題1: 程式只要 import keras 就會掛掉!!

解法==> conda update keras
                conda update tensorflow


問題2: UDA driver version is insufficient for CUDA runtime version

\Anaconda3\lib\site-packages\tensorflow\python\client\session.py in __init__(self, target, graph, config)
    674     try:
    675       # pylint: disable=protected-access
--> 676       self._session = tf_session.TF_NewSessionRef(self._graph._c_graph, opts)
    677       # pylint: enable=protected-access
    678     finally:

InternalError: cudaGetDevice() failed. Status: CUDA driver version is insufficient for CUDA runtime version



解法==> 就是要讓 cuda driver和 cudnn 匹配. 若是在Anaconda , 因為Anaconda 會去做軟體版本匹配的整合, 所以最簡單的作法就是直接執行  conda update --all


若tensorflow 要使用底層GPU架構,要安裝對應的軟體.

Keras --> Tensorflow --> cuDNN --> CUDA Driver  --> GPU graphic card


cuDNN [1]: The NVIDIA CUDA® Deep Neural Network library (cuDNN) is a GPU-accelerated library of primitives for deep neural networks. cuDNN provides highly tuned implementations for standard routines such as forward and backward convolution, pooling, normalization, and activation layers. cuDNN is part of the NVIDIA Deep Learning SDK.

CUDA Driver : Driver for NVIDIA graphic card


References:

2018年11月18日 星期日

異常檢測技術

Abnormally detection , Outlier detection and novelty detection 


異常檢測技術用於各種領域,如入侵檢測欺詐檢測、故障檢測、系統健康監測、傳感器網路事件檢測和生態系統干擾檢測等。它通常用於在預處理中刪除從資料集的異常資料。在監督式學習中,去除異常資料的資料集往往會在統計上顯著提升準確性。

入侵檢測而言, 很難檢查駭客入侵的方法

Multi-classification 多分類
Binary-classification 分兩類  ==> 是或不是  
One-Classification ==> 單分類 檢查異常質Outlier  (正常很多, 但異常很少, 而且也難不好界定所有或描述的異常種類) ==> Unbalanced DataSet

mean: 容許圈圈中有多少比例的異常質被誤檢中


RBF: fit的程度

2018年11月17日 星期六

iPAS 物聯網應用工程師考試



0.) 關於iPAS 物聯網應用工程師考試簡介



1.) IoT 技術架構簡介
    -- IoT 架構: 感知層,網路層,應用層 
-- Cloud computing: IaaS,PaaS,SaaS. BaaS
   -- 物聯網規格標準四大陣營

--Cloud Platform: MediaTek Cloud Sandbox, ARM mbed Cloud,WISE-Paas,Xively, ThingSpeak,..
    -- ARM mbed Connector
     --  ARM mbed OS:
     --  物聯網應用層通訊協定標準比較 CoAP vs MQTT                     
   MQTT Lab:
 
    --IoT Gateway (WSN,IEEE 802.15.4,Zigbee)
   
    -- LPWAN 長距離低功耗通信技術 : NB-IoT vs LoRa

2) 物聯網系統與應用 
  -- 開源硬體介紹
     MPU v.s. MPU  ==> Raspberry Pi v.s. Arduino
  -- 開源軟體規劃與授權規範
      GPL,LGPL,Apache,CC
  -- I/O 通訊與控制方式基礎
     Analog v.s. Digital
     UART:https://www.slideshare.net/itembedded/raspberry-pi-pm25-dust-sensor
     SPI: https://www.slideshare.net/itembedded/spi-interface
     I2C: https://www.slideshare.net/itembedded/i2c-eeprom
     https://www.slideshare.net/itembedded/raspberry-pi-linux-i2c-driver
 
3.)  Quick Overview
  -- 考試準備  https://www.slideshare.net/itembedded/2018-ipas-review
  -- NoSQL-MongoDB https://www.slideshare.net/itembedded/nosqlmongodb-103537729
  -- RFID Project: https://www.slideshare.net/itembedded/rfid-15614650

4.) Youtube Demo:

ARM mbed 物聯網平台實戰(課程節錄)
https://youtu.be/sslJLgOPfCM



ARM mbed Cloud 平台架構簡介
https://youtu.be/GrMD8Me5qg0




IoT Gateway Demo
https://youtu.be/tZFMY5UIG6s



智慧POS機-人臉自動結帳
https://youtu.be/DHTQCF6t1Jw



AIoT智能居家燈控系統
https://youtu.be/Dcz28sASv0w



Control your Raspberry Pi using Line Bot
https://youtu.be/WL2RrYrGB1Q



Iot自動販賣機
https://youtu.be/9jxIuyiIXko



2018年11月7日 星期三

安裝MinGW - Minimalist GNU for Windows




對於不熟悉Linux,又想要用GNU gcc 編譯你的 C code或g++編譯你的C++ code, 你可以在windows上安裝minGW, 使得你的windows也有最小的GNU程式開發工具.


MinGW - Minimalist GNU for Windows

 1.) MinGW 下載 並在windows下進行安裝

MinGW: A native Windows port of the GNU Compiler Collection (GCC), with freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All of MinGW's software will execute on the 64bit Windows platforms.


勾選 mingw32-base (Mark for Installation) 接下來在選單[Installation]上選Apply Change,就會進行線安裝

安裝後, 在windows上將MinGW的執行檔路徑(預設在C:\MinGW) 加入到[Path環境變數]中, 使得gcc這個指令可以被執行。Path 是一個系統變數,可讓您的作業系統從指令行或終端機視窗中尋找所需的可執行檔。

在桌面的電腦圖示按一下滑鼠右鍵 從內容功能表中選擇內容 按一下進階系統設定連結, 可以看到如下的畫面, 就可以修改環境變數



      


在Path 這個變數上再串上一個新的路徑 ; C:\MinGW\bin  (此路徑為MinGW你安裝工具的路徑)





此時你可以開啓windows 的命令視窗(cmd.exe) , 執行gcc -v , 會顯示gcc版本, 若能正確顯示, 就表示Path已正確指定到gcc 路徑.