万物互联时代,随着国外的谷歌、微软,国内的阿里、华为、百度等诸多行业巨头纷纷入局,物联网迎来的新的浪潮,将更多的商机及机遇呈现出来,无数创业者及开发者纷至沓来,希望从中可分一杯羹。然而在庞大的物联体系之下,云计算、大数据、人工智能、传感技术、安全问题无一不是亟需克服的难点,且身为一名开发者,我们应该掌握哪些技术栈、怎样选择合适的开发利器、如何将移动、云、终端整合?
7 月 1 日,由 CSDN 出品的「【在线峰会】一天掌握物联网全栈开发之道」在 CSDN 学院隆重召开,本次峰会邀请到 WRTnode 创始人罗未、Ruff CTO 郑晔、ThoughtWorks 软件开发工程师黄峰达、阿里巴巴研发工程师刘彦玮、前飞利浦半导体资深工程师刘凯、叶帆科技创始人兼 CEO 刘洪峰 ,投资银行网络安全开发工程师李知周这几位一线技术大牛,基于 JavaScript、Python 前沿物联网开发技术,详勘物联网架构、技术栈、应用开发平台、安全等实战经验。
视频直播回顾地址:http://edu.csdn.net/course/detail/5321
现代物联网应用系统构架与技术栈(PPT)
首先是来自 WRTnode 创始人罗未,分享了物联网技术现状、开发者所需关注的技术点,并以 WRTnode 的 node.system 为例,实践代码解析软件定义物联网方法。
罗未表示如今的物联网技术碎片化移动,交付周期长。目前诸如 Android Things、LiteOS、MiCO、TinyOS、Contiki 等物联网操作系统多达 50 种,且一个厂商的一个芯片自带一套开发框架,最终直接导致硬件开发周期慢。因此物联网技术迫切需要在效率、分工、工具、共享等方面做出相应改变,更加快速高质量的进行交付。
而作为开发者所需要做的事是更好的自身提升技能:
- 大前端:JavaScript;
- 新后端:MQTT、OTA;
- 设备端:
- 物联网芯片: MT7697、MT8788、ESP32
- 开发技术:操作系统、开发框架
对于软件如何定义物联网,罗未以 node.system 为例,使用 JavaScript 为所有不同的 SoC 和不同的操作系统提供统一的开发框架。
![](http://i.imgur.com/Ah91Enf.png)
物联网项目与互联网项目工程技术上最大的不同是供应链,所以开发者要对供应链抱有正确的认知。
IoT 应用开发 —— 选择开发平台的正确姿势(PPT)
物联网开发平台那么多,对于入门级的 IoT 开发者来说该如何抉择?郑晔表示在 IoT 应用开发领域中,熟知的开发平台主要有:
- 嵌入式操作系统:VxWorks、FreeRTOS、LiteOS、mbed 等;
- 极客硬件平台:树莓派、Arduino 等;
- JavaScript IoT 应用开发平台:Ruff、Tessel、JerryScript、Johnny-Five 等。
对于嵌入式操作系统,它的入门门槛极高,开发者需要学习大量软硬件相关的知识,同时嵌入式领域在开发方法上已经大幅度落后于整个行业的发展,此外它的编程概念通常属于专用领域,因此知识很难在行业中共享,开发者在行业中流动也相对困难。
极客硬件平台虽然简化了入门难度,但开发真正困难的部分在编
程概念。且这些平台只解决了原型开发的问题,开发者即便能够通过它实现了一个产品原型,也很难将它用到真正的产品中。
由此更高级的开发语言应运而生,诸如:
- 在硬件上运行 JavaScript:JerryScript、Espruino 等;
- 面向应用的硬件抽象:Tessel、Johnny-Five、Cylon.js 等;
- 提供生产支持:Ruff。
演讲中郑晔对以上的平台进行了详细的对比,并基于采用 JavaScript 语言、设计硬件抽象、提供生产支持能力三大标准教会开发者衡量了 IoT 开发平台。
基于 JavaScript 语言的快速物联网开发架构(PPT)
随着 JavaScript 语言的流行,及物联网领域的崛起,我们可以二者结合所带来的可能性。黄峰达表示当前的物联网应用,所要做的就是控制和数据处理。对比互联网架构,物联网架构的起点和终点都不一样。
![](http://i.imgur.com/IR0Jeut.png)
现有的物联网系统主要使用的语言是:
- 后台服务:Java、Go、Python
- 硬件端:汇编、C、C++
- 手机应用:Java、Objective-C/Swift
- Web 界面:JavaScript
- 桌面应用:C#、C++
一个基于 JavaScript 的物联网架构不仅囊括了互联网中的 JavaScript 的 Web 应用,还有应用层、协调层、服务层和硬件层。
JavaScript 开发物联网应用(PPT)
架构已学会了搭建,那么接下来使用 JavaScript 开发物联网应用应该如何入手?在开发之前,刘彦玮分享了 MQTT 的概念, MQTT 是一个长连接的通讯应用层的协议,最大的特点是数据精简、消息可靠、publish-subscribe 模式灵活易用。并使用 JavaScript 和 MQTT 实现的一个简单的物联网应用为例,Github 地址:https://github.com/coolnameismy/javascript-mqtt-demo-wearingTip。
刘彦玮还详细介绍对比了三款常见的 JavaScript 开发版:RaspberryPi、Ruff、nodemcu。最后物联网开发中物联网套件也必不可少,其主要目的是帮助开发者搭建安全性能强大的数据通道,方便终端(如传感器、执行器、嵌入式设备或智能家电等等)和云端的双向通信。
从芯片到云端——Python 物联网全栈开发经验教训共享(PPT)
相对 JavaScript 开发物联网,Python 又有何不同之处?前飞利浦半导体资深工程师刘凯,从 Python 与 IoT 全栈开发、设备端选型、以及设备、网关和服务器端开发五个方面详细展开分享。
IoT 端到端模型如下图所示,其中没有出场的是 Web 前端和移动端。因为物联网项目中的 UI 需求并没有移动互联网那么高,且在应用服务器中,利用响应式框架和 REST API 可以同时支持浏览器和移动端,简化系统设计。从中可以看出,物联网系统最大特点是环节太长,因此团队必须选择一种合适的编程工具。
Python 是物联网系统的胶水语言,在研发过程中可以提供或者用于构建各类工具,降低总体开发与生产难度,提升效率,对于物联网开发价值巨大,但是因为比较分散,所以一直被开发者所忽视。刘凯表示在看法过若干系统之后,定义了一个物联网分布式计算的雏形,所有组件均基于 Python 进行开发。可以用于物联网网关、单机版服务器和分布式服务器集群。取名 EPIC。
从端到云,工业物联网项目全栈快速开发(PPT)
从原型开发到面向工业运用,刘洪峰表示从技术角度来说,民用物联网和工业物联网并没有本质的区别,都是有云,有端,都具备传感器数据采集,设备控制及通信传输等功能。主要的区别在于:
对于工业物联网的全栈开发,意味着开发者要懂硬件开发、各种传感器、云开发、Web 开发技术、手机 App 开发、各种通信技术和数据存取,大数据时代还要求懂数据挖掘和分析。
工控领域大都是集成项目为主,所以二次开发成为主流,技术门槛相对不高,开发平台基本以 Windows 平台为主。本次演讲中刘洪峰基于微软 .NET 技术来详解实现现有的工业物联网产品。
物联网安全:转守为攻 使用大数据与机器学习猎杀黑客(PPT)
未来已经来临,只是尚未流行。 ——威廉吉布森
随着物联网设备的日益增多,安全性问题成为业内最棘手的问题之一。李知周表示如今物联网的安全问题主要是有海量的节点与数据、定制嵌入式系统、受限的处理能力及功耗、升级维护困难、缺乏安全标准、大量初创公司等原因引发。
想要进行安全防护,可从物联网攻击表面;减少攻击表面;物联网设备、网络、数据安全等方面入手。
![](http://i.imgur.com/nILbd3L.png)
同时遵循建立监控流程、分析监控数据、发现黑客踪迹、推理黑客行为、猎杀黑客分子、修补安全隐患流程,转守为攻猎杀黑客。重要的是要对智能安全网关进行实时监控。大数据时代,还可以利用大数据流量监控的 DDos 检测和算法生成域名(DGA)检测方法加强物联网安全防御。
相关阅读:
- phodal大神帮你理清物联网开发架构
- 手把手教学 使用JavaScript和MQTT开发物联网应用
- 放弃了C和Java,我为什么选择了JavaScript
- 一文理清散乱的物联网里开发者必须关注的技术!
- 物联网浪潮之下,前端工程师如何迎刃而上?
- 吐血推荐!那些书里不会教你的工业物联网开发经验