物联网开发需要什么技术呢

Python015

物联网开发需要什么技术呢,第1张

物联网开发需要的技术

一:单片机/嵌入式开发

智能硬件,哎,不就是单片机吗?说到底就是一个微控制器,现在出现的智能手表,调光LED灯,蓝牙开锁,WiFi插座等等,说到底不就是单片机开发嘛?单片机,电子和通信专业一般都会教51或AVR、计算机系接触不到。现在流行的Arduino也是单片机开发的一种。

但是要做一款智能硬件,技术上只会单片机编程还是不行的。哎呀嘛什么智能硬件,本质上就是一个电子产品!。所以你要开发一款能拿得出手的智能硬件,电子系统设计必须要会的!

二:网络通信协议

智能硬件与传统的电子产品最大的差别,就是智能硬件连上了网络。要连上网络,就需要用到网络通信模块及学习网络通信协议——TCP/IP。

TCP/IP是一个技术的总称,里面包含两种协议TCP、UDP,位于网络通信分层模型的传输层,同时也是由操作系统管理。而HTTP、DNS、URI等这些技术,属于应用层,位于TCP/UDP之上。同样,最近物联网比较流行的,针对计算能力有限的通讯设备而出的MQTT协议,也属于TCP之上。

为了让电子产品有联网的能力,只要在电路设计上给主控芯片连接一个通信模块,写好收发网络指令的代码,剩下的就是电子产品设计了。

三:服务端开发框架

Client/Server架构,即客户端/服务器架构。智能硬件连上后台服务器后,其就是一个客户端,一个终端。由于单片机中资源受限,实际上是不太可能用HTTP协议的,所以互联网中通用的Web服务器开发并不适合这里。有的厂家会在TCP之上自定义协议,有的就移植别人做好的协议比如MQTT,CoAP等等。

服务端开发就比较复杂了。单片机/嵌入式软件开发还好,只要学习好C语言即可打遍天下无敌手,而服务端开发,用Java呢还是Python还是PHP?反正Java和Python选一个就好了,嵌入式出身的工程师,一般都会学Python。

Python服务器端的开发框架种类繁多,Web开发的有Django、FlaskTornado WebServer,TCP服务器可以用Twisted,等等。MQTT有已经做好的服务器,像这样的服务器不用自己开发,直接部署即可。

假如我们有个xml文档如下:example.xml

<?xml version="1.0" encoding="UTF-8"?>

<BIT>

<GeneralDescription>

<name>Matlab</name>

<DateTime>2008-09-10 23:16:48</DateTime>

</GeneralDescription>

<AMatrix>1,2,34,5,67,8,9</AMatrix>

</BIT>

首先,要解析xml文档,需要导入一个模块

>>>from xml.dom.minidom import parse

(1)然后载入一个xml文档

>>>xmldoc = parse("J:/homeword/example.xml")

>>>print xmldoc.toxml()

<?xml version="1.0" ?>

<BIT>

<GeneralDescription>

<name>Matlab</name>

<DateTime>2008-09-10 23:16:48</DateTime>

</GeneralDescription>

<AMatrix>1,2,34,5,67,8,9</AMatrix>

</BIT>

>>>

上面是可以查看这个文档的内容。

Toxml方法打印出了node风格的xml,如果节点是Document结果,则打印出整个xml文档。否则只打印出本节点所属内容。

(2)如何获取子节点

>>>xmldoc.childNodes

[<DOM Element: BIT at 0x1223af8>]

>>>

每一个node都有一个childNodes的属性,他是一个node对象的列表,注意的是,一个Document只有一个子节点,上例中就是BIT这个节点,它属于Document节点。

因为是列表,所以也可以同用列表索引,xmldoc.childNodes[0]

>>>BIT_element = xmldoc.firstChild

>>>BIT_element

<DOM Element: BIT at 0x1223af8>

>>>print BIT_element.toxml()

<BIT>

<GeneralDescription>

<name>Matlab</name>

<DateTime>2008-09-10 23:16:48</DateTime>

</GeneralDescription>

<AMatrix>1,2,34,5,67,8,9</AMatrix>

</BIT>

>>>

(3)获得某一个节点的文本

>>>BIT_element.childNodes

[<DOM Text node "

">, <DOM Element: GeneralDescription at 0x1223be8>, <DOM Text node "

">, <DOM Element: AMatrix at 0x1223e40>, <DOM Text node "

">]

>>>name = (BIT_element.childNodes[1]).childNodes[1]

>>>>>>name.childNodes[0].data

u'Matlab'

>>>