LINE BOT 聊天機器人 Ch5 — 如何整合 SIGFOX 與 LINE BOT 聊天機器人(上)

Lawrence Yi-Hsuan Chuang
8 min readMay 7, 2021

關於 Sigfox

根據維基百科

Sigfox 是法國的網路公司,在 2010 年成立,利用無線網絡連接低功率設備,這些設備需要持續性的連線,會送出小量資料

因此, Sigfox 最核心的特性就是低功耗、省電、傳輸距離廣,更多技術特性可以參考新通訊的低成本/低功耗/輕資料負載 Sigfox搶海量物聯網利基應用一文

那麼如何開始我們的 Sigfox 體驗呢?我們可以透過購買開發版來做測試/開發驗證,筆者使用的是由 UnaBiz 所研發與相容 Arduino UNO R3 的 Sigfox 開發版 UnaShield V2S2

請注意,由於 Sigfox 有因各國的法規而有不同的無線電頻段,故台灣屬於 RCZ4 ,因此在購買時切記要選對哦!

開發版使用的是 Wisol 研發的無線模組,此外,開發版還內含六種感測器,分別是加速度計、指南針、溫度感測、濕度感測、大氣壓力、以及按鈕,更重要的是,還包含了一年的 Sigfox 網路連線!

另外, UnaBiz 也額外提供了 Library 提供開發者快速開發進行應用哦

那麼在取得了開發版之後,要如何開始使用呢?讓我們繼續往下看吧!

開通 Sigfox 開發版

進入頁面後,選擇我們所在的國家,請輸入 [ Taiwan ] ,並點選 [ Next ]

接著我們會需要輸入一些基本資料,其中:

ID: 表示該 Sigfox 設備獨一無二的識別碼(最多 8 位)

PAC:表示目前該 Sigfox 設備的授權碼 (一次性使用/最多 16 位)

輸入完成後點選 [ Next ],若 ID / PAC 輸入後且驗證成功,則會顯示 [ DevKit available for activation ] 資訊於右側

我們只要透過手機的 QR Code 掃描 app 掃描在開發版的模組上的 QR Code(下圖紅框處)即可獲得這兩個資訊

接下來,我們會需要輸入個人的基本資訊來註冊之後會使用到的 Sigfox Backend ,輸入完成後點選 [ Activate your kit ]

註冊完成,我們的設備可以開始使用 Sigfox 的服務囉!

在登入 Sigfox Backend 之前, Sigfox 會寄送驗證信到我們註冊的信箱,我們需要在 24 小時內進行登入並設定密碼,點選 [ Set your Sigfox id password ] 前往設定

其中,密碼需要符合下方格式

長度至少需為 8 位數,且須包含 1 個小寫英文字母、 1 個大寫英文字母、1 個數字、以及 1 個特殊符號 (!@#$=%^&*()_+{}”:;’-?/>.<,␣)

密碼設定完成後,我們可以正式登入 Sigfox Backend 了!

登入後,我們需要接受使用條款,請點選 [ Accept ]

點選上方的 [ DEVICE ] ,就可以看到我們的開發版了

經過上述的啟用步驟後,我們的設備就正式可以使用 Sigfox 的連線服務了,接下來,我們就要準備發送訊息到 Sigfox 囉!

發送第一筆 Sigfox 資訊

由於 UnaBiz 已經有提供了 Library 可以供開發者使用,因此我們可以透過修改部分的 Sample Code 快速進行測試

請先到 UnaBiz 的 GitHub 下載 Library ,點選 [ Code ] 後選擇 [ Download ZIP ]

接著我們需要下載 Arduino IDE請再根據作業系統類型依據下載即可

兩者都下載完成後,我們需要打開 Arduino IDE 將 Library 匯入,點選 [ Sketch ] 後,選擇 [ Include Library ] 並點選 [Add .ZIP Library ]

當成功匯入 Library 之後,到 [ File ] -> [ Example ],在最下方處即可看到我們匯入的 Library

打開 Sample Code 中的 send-altitude-structured,我們可以看到有四個檔案會被開啟

接下來,我們需要修改一些程式碼來獲得我們想要的資料。首先,我們需要先選擇 Sigfox 的 RC zone 作為我們要發送的頻率(台灣為 RCZ 4),請參考 Library 內的 [ SIGFOX.h ] 檔案

接著我們需要在 send-altitude-structured 中進行修改,請在 void loop () 區塊中進行,請參考下方區塊

基本上,這段程式碼是讀取環境的溫度/濕度以及 Module 本身的溫度,收到資訊後由於有小數點的關係,因此我們將其資訊乘上 100 讓我們比較方便進行轉換,接著再將其各自轉換成 16 進制(hex),將其資訊組合成一筆 Sigfox Message 發送出去

Ex: 
Ambient Temperature = 28.18 degrees C
- *100 = 2818
- convert into hex = b02
- transceiver.toHex() = 020b
Ambient Humidity = 32.04 %
- *100 = 3204
- convert into hex = c84
- transceiver.toHex() = 840c
Module Temperature = 28.00 degrees C
- *100 = 2800
- convert into hex = af0
- transceiver.toHex() = f00a
Structured in Sigfox Message = 020b840cf00a

由於 Library 的 transciver.toHex() 會將其訊息封裝為

Ambient Temperature = b02  ->  020b
Ambient Humidity = c84 -> 840c
Module Temperature = af0 -> f00a

因此,我們只要了解其訊息的封裝規則,在之後的 Sigfox payload 解析上就能夠有效的將其解析為 human-readable 的格式了

接著將 UnaShield V2S2 連接到 Arduino UNO,至 [ Tools ] -> [ Board ] -> Select [ Arduino UNO ]

接下來,到 [ Tools ] -> [ Port ],選擇我們接上的 Arduino 開發板所屬的 port

確認並上傳程式碼到 Arduino 開發版中

最後,我們可以前往 Sigfox Backend 查看是否有訊息傳送進來,進入到 Sigfox Backend 後,在 [ Device ] 頁籤中選擇左側的 [ Message ],即可看到最新的訊息

Okay,到目前為止我們已經能夠成功地透過開發版來發送 Sigfox 的訊息了。接下來,我們會需要到我們的聊天機器人上去做一些調整,讓聊天機器人可以將收到的資訊傳送給我們

那麼我們下次見囉!

--

--

Lawrence Yi-Hsuan Chuang

擁有超過9年工作經驗的工程師,目前在University of Nevada, Reno就讀Computer Science的碩士生,曾在軟體、銀行顧問和物聯網產業服務並擁有豐富的經驗。在這裡主要分享個人在學習技術方面的心得與知識。此外,我也是攝影愛好者,如果有任何關於技術、職場或攝影的問題,都歡迎一起討論、交流!