LPWAN最热门的两种连接技术中,NB-IoT是专门针对公众移动蜂窝网络的技术。如果运营商不设置门槛,开发难度相对容易。这一点在2G GPRS时代就是如此了。开发商不用开发BS/GW/NS/JS,只需要开发ED/AS/App三部分。最基础原型只需要开发设备和网站既可以完成。
回避运营商门槛
国内运营商限制了开发者的来源和接入方式,只能够同运营商平台和华为平台对接。解决之道之一就是利用透传UDP,让渠道商把对应的UDP报文转发到开发商的私有IP。
NB-IoT设备
NB-IoT开发比开发GSM要简单,因为不需要切换二进制透传和短消息模式。从Quetel模块看,NB-IoT都是通过原来短消息的AT指令来收发的。都是字符串处理而已。
相比C/C++/Java,VHLL语言如Python/JavaScript/Lua/Ruby处理字符串简单太多了。所以IoT开发语言为何优选VHLL,这还是有一定道理的。惯用C/C++/Java的工程师定义的大都是二进制协议,而惯用Web的工程师定义的协议大多是文本协议,和这一点也有关联。
但是Python/JavaScript/Ruby VHLL有个较大的问题,VM的功耗管理问题。尤其是需要长期睡眠的设备,至少VM需要有针对性的设计。相比之下,Lua处理起来比较简单一些。
所以,建议路径是:
- MicroPython/Lua + STM32 + BC95
- Arduino + STM32/STM8 + BC95
Web
NB-IoT采用了UDP/CoAP协议,所以连接端和长连接TCP有所不同。CoAP其实可以理解为简化的RESTful API,短连接TCP和UDP在应用层角度非常类似。Raw UDP可以参考一下LoRaWAN的PktFwd协议,采用最简单的push/pull + ack方式。至于复杂的握手就算了,尤其是中间横亘着运营商、渠道商两道UDP转发的时候,失败的概率太大了。从这个角度看,国内NB-IoT下发指令比LoRaWAN模型失败率还要高得多。
H5/App/Mini-program
开发App成本最高,设计响应式H5和小程序则成本比较低。