等 The Things Network Stack V3 釋出等到鬍子都長出來了。在考慮 LoRa Server 的同時,先寫一下之前看 TTN AWS IoT Integration 的一些發現。
架構#
從官方提供的 AWS CloudFormation template 來看可以發現,這個整合並不完全。
為什麼說不完全呢?因為這個整合的方法並不是以 AWS IoT 原生 plug-in 的形式存在,而是以 AWS Elastic Beanstalk 跑一個 The Things Industries 開發出來的第三方程式,定時去同步 AWS IoT 跟 TTN 兩邊的設備資料庫──不是 AWS IoT 在需要調用設備資料的時候即時去 TTN 拉,或在調整設備設定的時候主動去 TTN 更新。只要兩個資料庫彼此獨立,就有資料不一致的風險。兩邊在下一次定時同步前,對同一個設備輸入不同設定,是否有 race condition?
短時間內要讓 AWS IoT 直接用 TTN 應該是不太可能了。畢竟這需要 AWS 那邊改東西,無法只靠第三方。儘管如此,個人認為第三方這邊還是有改進的空間。
撇開要多跑一個 AWS Elastic Beanstalk 會多一點開銷的問題,設備設定資料同步不即時的問題感覺可能是有解的,因為兩邊都會發設備相關的 events。
第三方應該可以用 event-driven 的方式來即時更新兩邊的設備設定才對。(就不知道 TTN 那邊自動幫設備生 network key & application key 之後會不會有 event,需要實驗看看。)
設備的 uplink 跟 downlink 用第三方當 MQTT bridge 的方式來達成對接,這部分看起來倒是沒什麼大問題。
其他小發現#
那個程式的原始碼放在這裡,不過得要 The Things Industries 成員才看得到。(對!我只是記錄一下,貼爽的。)