刘凯

一、前言

物联网端到端模型

物联网与互联网差异

  • 开发环节:物联网增加了设备相关的设备域开发;
  • 人机交互:没有标准显示组件,不支持现有UI组件,需要NUI、智能传感器
  • 接入协议:设备能力受限,需要支持MQTT/CoAP/TCP/UDP套接字;
  • 安全特性:设备能力受限,无法支持RSA2048算法TLS;
  • 数据特点:物联网上传流入流量远远大于流出流量;
  • 实时要求:物联网隐含实时要求,流入数据需要支持实时检索、处理、统计;
  • 规模受限:物联网应用规模受限于设备接入数量,资金、库存、生产、销售压力更大;
  • 沉没成本:物联网是重资产业务,互联网是轻资产业务;
  • 生命周期:硬件设备是生命周期要远远长过互联网产品;
  • 团队组成:硬件团队与互联网团队文化融合。

二、 Python 与IoT全栈开发

Python是物联网系统的胶水语言。

  • Python有许多实现(Implementations),能够与多种语言进行交互,尤其适合系统整合
  • CPython与C/C++:通用计算加速、DLL二次开发、设备驱动、桌面、Web、运维、脚本
  • Jython与Java/JVM:大数据,GUI、网关、移动APP
  • IronPython与C#:Windows应用、DLL二次开发、系统整合
  • JavaScript:前端、Web可视化、JS爬虫
  • 嵌入式C/HDL:寄存器/晶体管级原型开发、固件、DSP、GPU、NLP、机器学习
  • From Chip to Cloud,完整产业链的全栈开发,通用语言的综合优势

主要领域

  • 系统建模、虚拟仪器、软件质量、自动测试、报文分析、网络仿真、媒体处理
  • 系统建模:blender,printrun,python-opengl
  • 虚拟仪器:SCPI,pyserial,socket
  • 软件质量:unittest,pytest,pydoc,Sphinx,git/subversion
  • 自动测试:pyocd,mbed-ls
  • 报文分析:Wireshark/PyShark
  • 媒体处理:mp3play,pyglet,moviepy,字模提取

Python性能加速

  • 运行时加速:PyPy JIT加速
  • Web加速:libev/libuv的Python封装pyev/pyuv
  • 硬件加速:CUDA GPU加速

开箱即用的Python物联网

  • PySerial:实验性的RFC2271/asyncio
  • Twisted/Tornado:支持socket/websocket异步网络编程框架
  • MQTT-client/paho:支持Cyclone/Tornado/Flask/Django框架
  • CoAP-proxy/txThings:支持Twisted框架

三、设备端开发与选型

1. 需求分析

  • 电子货架标签:短距离无线、类广播式
  • 资产定位:广域无线、低占空比、数据采集、异步事件
  • 农业应用:低功耗广域无线、低占空比、数据采集、多设备融合
  • 房屋租赁:WiFi/BLE、低占空比、安全相关、异步事件、多设备融合
  • 医疗设备:WiFi/BLE、高速率、数据采集、异步事件、多设备融合

2. 设备组网与联网选型

  • 无线技术需要遵守当地法律法规
  • 蜂窝数据技术 vs ISM技术
  • Sub-1GHz vs 2.4GHz技术
  • 短距无线电 vs 低功耗广域技术
  • 无线技术标准竞争与多模芯片融合
  • 传统有线网络依然有现实意义

四、Python设备端开发

具备二次开发能国的可编程设备

五、Python网关开发

1. 硬件接口标准化

  • 物联网现状:碎片化,垂直行业条块分割
  • 物联网趋势:标准化硬件接口 + 标准化编程接口 + 标准化编程平台
  • 应用迭代:唯快不破,以标准化方法应对碎片化需求
  • 标准化进行中:I2C/SPI/GPIO/ADC/PWM…… Adafruit GPIO/Intel MRAA
  • UART:PySerial
  • USB:PyUSB
  • OS标准设备:SDIO/MiniPCIe/HDMI/Audio……

2. 操作系统标准化

  • MCU:ARM mbed OS/CMSIS RTOS
  • CPU/MPU:Linux Yocto/Open-Embedded/Debian/Ubuntu
  • 运行时:Native/JVM/Android
  • 编程语言:C/C++/Java/Python/JavaScript/Lua
  • I/O命名:Arduino/ARM mbed

3. 编程接口标准化

  • PySerial:RS232/RS485/USB CDC ACM/RFC2271
  • PyUSB:特种USB设备,HID/CDC/MSD等设备均被OS标准化
  • Socket:连接接口或技术标准化后会提供套接字编程接口,包括CAN/6LowPAN/Zigbee
  • 设备文件:Linux的标准化接口
  • DLL文件:Windows下的标准接口

Linux+Python 物联网网关示例

  • panStamp:西班牙智能农业,已成为通用物联网网关
  • panStamp模块:Sub-1GHz CC1101,基于Arduino API,UART接入树莓派Linux
  • panStamp架构:分布式,包括IFTTT,Web管理界面,与众多云服务整合
  • 嵌入式Linux:CLFS,预编译Linux,完整版Linux
  • 交叉编译:CLFS与CPython交叉编译问题
  • 其他网关:LoRa/Zigbee/6LowPAN网关

MicroPython物联网网关

  • 基于MicroPython的物联网参考设计
  • 交叉编译:MicroPython更适合交叉编译环境
  • 生态完整:MicroPython自带upip和微型库
  • 参考设计:WiPy/LoPy/SiPy/FiPy,重复整合LTE/NB/WiFi/BLE/LoRa/Sigfox网关服务
  • 开发者反馈:远比C/C++开发要快捷,充分发挥了Python快速应用开发的特点
  • 开发者编程水平:残留大量C语言编程方式,需要掌握Python语法,OOP/函数式编程,中断回调和异步I/O,实现个人编程能力的升级

* Java OSGI+JyThon物联网网关*

  • OSGi:历史悠久,OpenHab及大量OSGi开源框架与网关
  • JSR223:JavaScript/Python/AWK/Groovy等十多种语言
  • OSGi Jython桥接
  • 参考设计:NXP/Freescale的OSGi网关设计
  • 树莓派:Pi4J、TigerJython

六、 Python服务器端开发

1. 典型物联网服务器端框架:

2. 联网协议选型

  • MQTT vs TCP长连接:完整的分层协议与TLS安全
  • CoAP vs MQTT:REST无状态与消息队列模式
  • XMPP/Websocket等:相对重型的通讯协议
  • 技术陷阱:基于TCP长连接的二进制协议定制,可能导致工程失败

3. 数据转发与持久层选型

  • 缓存:基于RAM,Redis/MongoDB
  • RDBS:SQL,MySQL/Maria/PostgreSQL/SQL Server
  • NoSQL:MongoDB/Cassandra
  • RTDB:KogMo/BerkeleyDB,工业数据采集,商业许可证居多
  • TSDB:OpenTSDB/InfluxDB
  • PaaS:Firebase/Bigtable/Hadoop/Spark

4. 连接与资管应用分离

  • 标准化联网对接:降低连接定制需求,标准化能够加速开发
  • 设备抽象:设备云解决设备连接,通过REST API将物理设备抽象成设备数据服务
  • 系统迭代加速:在资管应用中实现应用(设备、角色、权限、流程、存储、UI、APP)的快速迭代
  • 简化系统开发:资管应用简化为Web开发,降低开发成本
  • 系统整合加速:通过REST API整合IoT PaaS/摄像头直播/点播PaaS和第三方网络服务,迭代各类融合型创新物联网服务

CSDN物联网学习5 从芯片到云端 Python物联网全栈开发经验教训共享相关推荐

  1. Python 物联网全栈开发经验教训共享

    作者 | 刘凯 责编 | 薄荷茶 微信公众号ID | csdn_iot 本文为7月1日「一天掌握物联网全栈开发之道」在线峰会中,刘凯老师的<从芯片到云端--Python 物联网全栈开发经验教训共 ...

  2. 孙叫兽CSDN社区云----WebIT已创建,欢迎大家前端全栈小伙伴踊跃加入

    目录 社区云是什么? 创建CSDN社区云WebIT的目的 推荐分享的技术点(如下图所示) 社区成员权益 版主权益 管理员权益 WebIT社区云积分规则 WebIT优质版主及管理员可以申请直播分享前端技 ...

  3. python学全栈还是运维_Python全栈学习——Python基础及Web开发

    原标题:Python全栈学习--Python基础及Web开发 在DevOps火热的敏捷行业中,无论是开发还是运维都在互联网快速发布下练就了一身的本领,微服务下的敏捷开发体系及智能运维体系都在实战中逐步 ...

  4. 全栈开发学习路线总结(全网最详细的全栈开发资源汇总)

    全栈学习路线 ​ -------By QiongKe 符号表 ⭐️ 必学 ✅ 建议学 ❌ 一般可以不学,了解即可

  5. 21day学通python epub_Python全栈学习_day003作业

    day3作业及默写 1,有变量name = "aleX leNb" 完成如下操作: 1) 移除 name 变量对应的值两边的空格,并输出处理结果 print(name.strip( ...

  6. 探索最佳物联网全栈开发之道 | 附 PPT 下载

    作者 | 苏宓 责编 | 苏宓 微信公众号ID | csdn_iot 万物互联时代,随着国外的谷歌.微软,国内的阿里.华为.百度等诸多行业巨头纷纷入局,物联网迎来的新的浪潮,将更多的商机及机遇呈现出来 ...

  7. 一天掌握物联网全栈开发之道 | 附 PPT 下载

    万物互联时代,随着国外的谷歌.微软,国内的阿里.华为.百度等诸多行业巨头纷纷入局,物联网迎来的新的浪潮,将更多的商机及机遇呈现出来,无数创业者及开发者纷至沓来,希望从中可分一杯羹.然而在庞大的物联体系 ...

  8. 5折倒计时!7位大牛讲解如何一天掌握物联网全栈开发

    当移动红利时代结束,人才需求接近饱和的同时,传感技术.云计算.大数据.人工智能的日益成熟,并与智能家居.智慧城市相融合,将我们带入了真正智能化的物联网时代.那么,作为开发者的我们,又该如何顺势而为? ...

  9. 【线上峰会】如何一天掌握物联网全栈开发之道

    当移动红利时代结束,人才需求接近饱和的同时,传感技术.云计算.大数据.人工智能的日益成熟,并与智能家居.智慧城市相融合,将我们带入了真正智能化的物联网时代.那么,作为开发者的我们,又该如何顺势而为? ...

最新文章

  1. runtime 关联对象objc_setAssociatedObject
  2. python编程入门与案例详解pdf-Python爬虫天气预报实例详解(小白入门)
  3. 利用全局数据实现数据通信
  4. OpenCV Mat类详解和用法(官网原文)
  5. 数据分析师可不是啥好工作
  6. Simple Polygon Embedding CodeForces - 1354C1(计算几何)
  7. REVERSE-PRACTICE-BUUCTF-16
  8. ArcGIS AO开发高亮显示某些要素
  9. java List和数组转换
  10. 嵌入式linux clion,跨平台IDE集成开发环境Clion教程:嵌入式开发
  11. 我用10张图总结出了这份并发编程最佳学习路线!!(建议收藏)
  12. Tcpip协议详解----动态选路
  13. 微信公众号php支付设置回调,php微信公众号支付讲解(JSAPI)
  14. 瑞萨单片机c语言程序,瑞萨单片机学习笔记(1)基本配置
  15. java定义一个方法计算三角形,长方形,圆形面积和周长
  16. 齐博php百度编辑器上传图片_齐博CMS整合百度编辑器上传附件的BUG以及解决办法...
  17. 魔兽世界中的英文简写
  18. 浅入浅出代理模式与Spring事务管理
  19. 【射雕英雄传】文本分析初步(姓名,丹药,秘籍,招式)[scrapy, jieba, matplotlib]
  20. sdformatter格式化选项设置_SD卡低级格式化方法演示,需要用到SDFormatter

热门文章

  1. 5G大时代来临智慧城市智能化建设加速完成
  2. 开工大吉,重温下架构设计六大原则
  3. 企业微信接口测试实战
  4. 2.从零开始学习C语言--C语言数据类型、变量以及进制转换
  5. 激光雷达相应检测方法
  6. iphone换android app图标,iPhone 终于能随意修改 App 图标啦
  7. Final Cut Pro X 教程
  8. 高斯消元法【Gaussian Elimination】
  9. 给新的PR类型分配审批权限
  10. 下拉词html宙斯,宙斯浏览器怎么样?如何对其进行使用?