查看: 20333|回复: 12

飞比物联网培训教程--"玩转物联网"之三、电脑控制Zigbee电灯(C/S模式)

[复制链接]
outman 发表于 2012-10-17 14:32:32 | 显示全部楼层 |阅读模式
飞比物联网培训教程--"玩转物联网"之三、电脑软件控制Zigbee电灯(C/S模式)


该系列文章已经全部更新至“飞比云百科知识库(FBee Cloud WIKI)”中,建议到以下网址阅读:http://www.fbeecloud.com/wiki



  上篇内容实现了本地的采集和控制,实现的工具仅仅是用的“串口助手”,当然这个工具对调试非常有帮助,但这明显是给“工程师”用的软件,不是给“客户”用的。如果你敢让你的客户为了看一个电灯是亮的还是灭的,到一堆数据里找一个0还是1,你的老板会非常贴心地给你放一个长长的假期… …

  本篇会有三个主要内容:
  一、如何在本地“可视化”地监控数据,并发送指令;
  二、如何将本地数据送上远程服务器,并将远程服务器指令转达给本地节点;
  三、如何用一台可以上网的电脑实现远程的数据监控。

  这三部分内容都离不开一个软件――“飞比物联网浏览器(FIT Explorer)”。当然我们不会去讲如何写这个软件,这部分内容可以单独出一本书了。这里我们只介绍下这个软件如何使用,相信它会是您工作中的得力助手,让您自如而又轻松地实现您需要的功能!

  先互相认识下吧,到http://bbs.feibit.com/thread-4370-1-1.html这里把它下载下来,和普通windows软件一样安装,然后打开。一个简单得像张白纸一样的界面出现在你面前:
  

  没错,它就是一张白纸,却可以画出你想得到的所有东西,而且它可以“动”,动的不但是界面的图片,关键是那些动画下面所连接的是真实的世界,它能告诉你今天风力几级,海水温度多少;你也能通过它来打开家里的空调,为你的宠物喂水… …

  这就是IoT Explorer和我们常用的Internet Explorer的区别,我们已经把它实现了,并且免费供大家使用,接下来我们能做的,只是做一些Demo,然后告诉您怎么用。但您的想像力才是它的灵魂,有好的作品,一定记得和我们分享!


  好了,继续我们原来的工作,把我们的电灯装上来!

  在开始这个工作之前,要做一个准备工作,就像一个画家要画一幅画,第一步是要构思,就是先想象一下,理想中的场景是怎样的?作为一个最简单的例子,我们想象有个屋子,客厅里放着一盏电灯,电灯旁边一个开关,当点击开关时,zigbee节点所控制的电灯动作,并且将结果反馈回控制界面,通过亮、灭两张不同的图片来表示。

按照这个构思,我们先选好素材:

1、背景(智能家居.jpg)
  

2、电灯(开灯.png/关灯.png)
    
      
3、开关按钮(按钮开.png/按钮关.png)
          


  准备工作基本就绪了,但是在FIT Explorer中到底是如果将这些元素组合成一个场景的呢?这要借助于xml语言,请看下面一段简单的例子:
  1. <?xml version="1.0" encoding="GB2312"?>
  2. <Title Name="我家的远程电灯" Background="NULL" ComPort="COM3" ComBandrate="38400" NetPort="8090" AddressMode="2" DataValidTime="20" ConnectType="0" UptoFbCloud="0" GetCTLFbCloud="0" AreaCNT="1" SensorCNT="0">
  3.   <Area0>
  4.     <AreaAttrib AreaName="我的家" Background="pic\智能家居.jpg" NodeCNT="0" />
  5.   </Area0>
  6. </Title>
复制代码
<Title>开始,</Title>结束,<Area0>开始,</Area0>结束,看过html代码的朋友,可能会觉得有点亲切。至于xml语言是什么,怎么写,这里不去深究,有兴趣的朋友可以专门了解下。我们只要知道我们想改的东西在哪里就可以了。

  把上面一段代码复制到记事本,保存成“我家的远程电灯.xml”的文件(记得不是“我家的远程电灯.xml.txt”哦),然后在这个xml文件所在的目录下建立新的文件夹,命名为“pic”,并将前面的所有图片都复制到这个文件夹下。

  此时打开FIT Explorer软件,点击 ,选择刚刚建立的“我家的远程电灯.xml”文件,看看“白纸”上是不是已经有些变化了?
  

  看到这里,是不是就知道前面xml代码中的一些名称定义,分别是什么了?

  但是电灯、开关在哪里呢?不用着急,听我一一道来。在前一节的内容中,我们已经通过“串口助手”看到过传感器数据,紧接着,我们就要把这个数据以可视化的方式,放到“物联网浏览器”里来:

  如果您已经跟着上一章的内容做完实验,现在要做的就是关闭串口助手,然后打开FIT Explorer软件,否则会出现串口冲突的情况。接着点击 ,进入设置界面:
  

  按照上图做好设置后,点“确定”回到主界面,然后点, 看看出现什么了?是不是弹出了如下一个对话框:
  

  这说明FIT Explorer软件已经从Zigbee协调器的串口上收到了一组完整的传感数据,在等待您给传感器命名。

  点击“下一步”:
  

  我们把这个节点命名为“Zigbee电灯”,在下面的数据中,我们可以看到更多的信息:长地址,即IEEE地址是空的,说明这组数据中没有带长地址;短地址是99C0;自定义ID,即UserID为0003(详情还放在后面解释);RSSI,即信号质量为-49dbm。

  继续下一步:
  

  从传感器的下拉表中,只有一个选项,说明收到的一组数据中只有一种传感器,还记得上一篇中的数据“0101”吗?
  

  实际上这一串数据,只有这一个“传感器数据”,那就是电灯状态的“反馈”信号,其它的数据都是辅助数据。

  我们把传感器名称命名为“电灯状态反馈”,然后“图片1”和“图片2”分别指:反馈数据为0和1时,界面中所显示的图片。这里我们指定为素材中的那两个灯泡,按下图进行设置:
  

  点“确定”后,发现主界面上多了一个灯泡:
  


  但灯泡的位置和大小似乎不是太满意,那我们看下用FIT Explorer是如何实现可视化的场景布置的:

  1、首先确认设置界面中的 是否已经勾选的
  2、通过鼠标点击、选中灯泡后,出现8个缩放点,如下图:
  

  3、此时,用鼠标进行大小的缩放、位置的拖动,这一点和普通windows软件没什么区别,不再啰嗦。

  至此,我们完成了灯的状态的可视化采集,为检测我们的成果,您可以将采集IO口的杜邦线分别连接板上的3V或者地,看下灯的状态是否发生了变化。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
 楼主| outman 发表于 2012-10-17 14:33:10 | 显示全部楼层
接下来,我们一起看下如何增加“开关”这样的控制对象:

  在左侧对象列表中选择“Zigbee电灯”,并点击右键,选择“修改节点”,如下图:
  

  然后按如下设置进行配置:
  

  在这里,我们启用了一个可控开关,取名为“电灯开关”,设置了“打开”与“关闭”动作所对应的不同的图片。经过调整后,工程图如下所示:
  

  下面我们来看下在点击这两个不同的按钮时,如何设置其向串口发送的控制指令:

  首先,我们看下“我家的远程电灯.xml”文件,在我们前面做了一系列的设置后,内容发生了什么变化:
  1. <?xml version="1.0" encoding="GB2312"?>
  2. <Title Name="我家的远程电灯" Background="NULL" ComPort="COM5" ComBandrate="38400" NetPort="8090" AddressMode="2" DataValidTime="20" ConnectType="0" UptoFbCloud="0" GetCTLFbCloud="0" AreaCNT="1" SensorCNT="2">
  3.   <Area0>
  4.     <AreaAttrib AreaName="我的家" Background="pic\智能家居.jpg" NodeCNT="1" />
  5.     <Zigbee电灯>
  6.       <NodeAttrib LongAddress="0000000000000000" ShortAddress="99C0" UserID="0003" NodePicture="" NodeX="0" NodeY="0" NodeType="0" SensorCNT="2" />
  7.       <电灯状态反馈 Type="1" PicName="Pic\关灯.png" PicName2="Pic\开灯.png" Unit="" SensorX="386" SensorY="420" SensorWidth="76" SensorHeight="211" AlarmType="0" AlarmUpper="0" AlarmDown="0" AEnable="0" UpAlarm="" DownAlarm="" />
  8.       <电灯开关 Type="4097" PicName="Pic\按钮开.png" PicName2="Pic\按钮关.png" Unit="" SensorX="484" SensorY="496" SensorWidth="52" SensorHeight="101" AlarmType="0" AlarmUpper="0" AlarmDown="0" AEnable="0" UpAlarm="" DownAlarm="" />
  9.     </Zigbee电灯>
  10.   </Area0>
  11. </Title>
复制代码
是不是自动增加了很多内容?这里我们不一一进行讲解了,有兴趣的朋友可以读一下这段代码,还是不难理解的。我们重点来看下“电灯开关”这个对象,因为我们下面要对它的控制指令进行设置:
  1. <电灯开关 Type="4097" PicName="Pic\按钮开.png" PicName2="Pic\按钮关.png" Unit="" SensorX="484" SensorY="496" SensorWidth="52" SensorHeight="101" AlarmType="0" AlarmUpper="0" AlarmDown="0" AEnable="0" UpAlarm="" DownAlarm="" />
复制代码
这段代码中的UpAlarm="" DownAlarm="",引号中间的内容,分别为点击“打开”与“关闭”两个按钮时,向协调器串口发送的指令字符。

  回顾上一篇的内容,如果我们要控制某节点的IO口为高电平,可以向协调器串口发送“CTO1 HHLL01”这样的指令,其中HHLL代表的是节点的“短地址”。

  但zigbee短地址,有可能在某些条件下发生变化。为了避免这种情况,而且又不用使用过长的IEEE地址,我们的默认设置采用了用户自定义ID,即UserID的方式来区分节点。而且FIT Explorer软件已经实现了UserID与短地址的自动转换,比如UserID为0003的节点,其短地址为99C0,如果我们想发送“CTO1 99C001”这样的控制指令,可以转换为“CTO1 &uid0003&01”。这样,当节点短地址变动时,软件将自动获取新的短地址,并替换&uid0003&,这样用户就可以不用关注zigbee短地址,只关注自己设置的UserID号,即可区分不同的设备。

  在xml语言中,“&”这个符号是用&amp;符号代表的,所以最终的控制代码如下:
  1. UpAlarm="CTO1 &amp;uid0003&amp;01" DownAlarm="CTO1 &amp;uid0003&amp;00"
复制代码
将这段代码替换到原xml文件中,保存,然后用FIT Explorer重新打开,点击界面里的开关按钮,看看节点上的灯是不是按照预期进行亮灭,并且将状态反馈上来了呢?

  顺便看下FIT Explorer的两个小功能:数据列表和曲线
  

  

  至此,我们已经成功得通过FIT Explorer软件,构建了一个简单的应用场景,当然软件本身的功能远不只这些,随着后续教程的深入,我们慢慢从应用中进行了解。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
 楼主| outman 发表于 2012-10-17 14:33:31 | 显示全部楼层
outman 发表于 2012-10-17 14:33
接下来,我们一起看下如果增加“开关”这样的控制对象:

在左侧对象列表中选择“Zigbee电灯”,并点击右 ...


下面我们看下如何通过飞比物联网浏览器将本地数据上传至飞比云服务器,并进行互联网监控。

  一、首先要获取飞比云服务器的用户ID号与API Key,申请地址:www.feibit.com/yun
  二、在物联网浏览器主界面中点击“选项”进入设置界面:
  

  三、将获取的用户ID号与API Key分别填入“用户名”与“密码”中,并勾选“上传至飞云服务器”和“从飞云服务器获取控制”

  仅需要这三步,即可在本机实现“网关”的功能――将zigbee传感器数据上传至网络服务器;并将服务器上的控制指令转达给zigbee协调器!

  我们先用服务器API方式看下数据是否正确送达,打开如下网址:
  http://www.feibit.com/get.php?us ... amp;upDataStartNo=1
  注:其中userID=40&userKey=xxxxxxxxxxxxxxx替换为您个人的帐号和api key

  如果网络正常的情况下,将获取如下数据,此数据即为“飞比物联网浏览器”发出,保存至“飞比云服务器”上的传感数据:
  

  同样,如果想通过“飞比物联网浏览器”进行互联网监控,设置也非常简单:
  

  仅需要点击“启用网络连接”,输入用户名和密码,此时进入监控界面后,虽然表面看和本地监控没什么不同,但实际上点击 后,其监控数据来源于“飞比云服务器”,而并非前面讲的本地串口!

  到这里,我们已经实现了“飞比云拓扑图”中整个C/S模式的采集和反向控制。

  飞比物联网培训教程--"玩转物联网"之一、前言及目录

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
cyril3 发表于 2012-10-17 20:01:01 | 显示全部楼层
沙发……关注中。写的真好。
jal960 发表于 2012-10-18 14:52:00 | 显示全部楼层
写得好,又受益了~
1204 发表于 2012-11-28 16:55:37 | 显示全部楼层
{:soso_e166:}{:soso_e166:}真是好东西啊啊  收藏收藏~
sdlicc 发表于 2013-1-29 17:12:17 | 显示全部楼层
写得好!!!很有帮助!!!
mayulin2008 发表于 2013-5-21 11:26:46 | 显示全部楼层
凹凸曼大人,点击右键木有反应,无法设置或添加节点是什么原因啊?
 楼主| outman 发表于 2013-5-21 12:35:05 | 显示全部楼层
mayulin2008 发表于 2013-5-21 11:26
凹凸曼大人,点击右键木有反应,无法设置或添加节点是什么原因啊?

1、需要先在“设置”里设为“设计状态”,才可以点击右键编辑
2、要在“节点”上点右键,而非传感器
3、只要有新节点加入,软件会自动提醒添加节点,无须手工增加
mayulin2008 发表于 2013-5-21 13:12:46 | 显示全部楼层
outman 发表于 2013-5-21 12:35
1、需要先在“设置”里设为“设计状态”,才可以点击右键编辑
2、要在“节点”上点右键,而非传感器
3、 ...

Oh yeah!多谢! 太拉风了,速度搞起,家里的电器都搞成无线的哈哈。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表