嘿!您似乎在 United States,您想使用我们的 English 网站吗?
Switch to English site
Skip to main content

尝试 All Things Talk 和 The Things Node

189_318dc27c774e4745e11a5d7e386f2043b0b641bb.jpg

LoRaWAN传感器项目的更新,以测量室外温度。

The Things Node (135-9784) 运行得很好,让我在最近的第二次与“来自东方的野兽”(Beast from The East)的第二轮比赛中保持最新温度。我可以确认The Things Node是防水和防雪的。

现在有两个问题要注意 - 电池不断耗尽,我的合作伙伴一直在问她是否也能在她的手机上收到天气。

优化低功耗

首先要解决的是电力消耗问题。这个节点发送了很多我不感兴趣的数据,以及把LED灯的开关。我认为如果能阻止这些操作,就会延长电池的使用时间。

正如我在之前的博客中提到的,对Arduino的sketch我还是个新手,所以我认为最好的计划就是从我知道的sketch开始,然后根据我的要求修改。我在The Things Node论坛上做了一个快速的搜索,找到了一个有用的线程,由John Hallard启动,他让这个节点在一组电池上运行一个合理的时间——“The Things Node:新的低能量库开发

这帮我在The Things Node 的GitHub网站找到了一个省电sketch。


266_f97b7e08ed5ac54014245f6804f72cee453328cd.jpg

 

即使考虑到这是一个省电的sketch,我认为可以通过停止做一些我不需要的东西——运动传感器,发光传感器,开关LED灯,来减少电池的额外寿命。

我开始把那些我不想要的东西拿出来,然后测试看看是否把它弄坏了……

349_0881955fd2b260651d110fc079b8f286d79febcb.jpg

 

在经过了相当多的尝试和错误之后,我最终得到了一个精简的、平均的sketch,这将会使电池续航时间相当长。

虽然这sketch看起来效果不错,但当我在早上查看温度时,它的读数超过了21。我知道现在是春天,但天气肯定不是那么暖和。在我把节点放出去之前,温度传感器在室内录制时似乎被卡住了。

我重新上传了这个sketch,这似乎让它回到了一个准确的读数,虽然这个节点现在又在里面了,所以我不知道它是否存在着低温的问题。然后我灵机一动,把它放在冰箱里,看看能得到什么。

441_0656e10719e473bfd37f2fa8ee26e2f9504a2027.jpg

 

这反过来又让我想到了另一个想法:我们有一个“工作冰箱”,时不时地进入过度驱动,冻结所有的内容。我们在工作中也有一个备用的Things Node。如果温度下降到1度以下,为什么不把它放在冰箱里,并设置一个短信或电子邮件提醒呢?我曾在一家咖啡厅工作,我的工作之一就是查看“分布在3个建筑周围的冰箱和冰箱的温度”,可以看到在一个餐饮环境中,物联网是多么的有用。

AllThingsTalk Maker

我决定尝试AllThingsTalk (ATT)作为分享数据的一种方式。我注册了一个AllThingsTalk制造商帐户,并添加了我的设计网络应用的集成。

我需要一个简单的Sketch来开始,所以我使用了同样的原则来处理我不需要的那些在基本的Sketch中的部分,作为the Things Node示例的一部分。

534_8305750d8aa597e8c000f68fbe3dae7e036da329.jpg

 

然后,我将我的节点作为一个设备添加到All Things Talk上,只需简单地复制和粘贴从TheThingsNode设备页面到ATT的表单中所需的详细信息…

5.2__4234f7052ee62cadee491c28e4a6d1af985ef998.png

一旦设备被添加,点击“设置”,“有效载荷格式”,我将勾选“使用ABCL…”框把我在the Things Node论坛上找到的这段代码放进去,然后保存起来。

{
  "name": "temperature",
  "sense": [
    {
      "asset": "temperature",
      "value": {
        "byte": 4,
        "bytelength": 2,
        "type": "integer",
        "calculation": "val/100"
      }
    }
  ]
}

(感谢马克·斯坦利在《The Things Network论坛》上发表的一篇文章)

 

可以看到,通过点击设备页面上的调试链接,数据就会进入AllThingsTalk,但它并没有更新资产的读取。经过相当多的尝试和错误之后,我发现要把这个放在Advanced标签下的概要文件中。

{
    "type": "integer",
    "asset": "temperature",
    "value": {},
    "unit": "C"
}

 

一旦在我的手机上安装了ATT软件....

728_d96c5d21b97651fbdb5a63fc95305c2b50a4d7cd.png

…我可以看到温度从结点清晰地读出。

629_0955299c7ae5beb01b14adde8d08351fb872fa41.png

 

OTAA 对比 ABP

一切都很好,直到我意识到,如果节点断开网络连接,AllThingsTalk集成就停止了工作。经过一番研究,我意识到ATT使用ABP(个性化的激活)而不是OTAA(过气激活)作为连接模式。我发现这一页解释了两者之间的区别。

作为一个有计算机网络经验的人,我理解它与固定IP地址或使用DHCP的区别是一样的。如果设备重新连接到事物网络,使用OTAA、Dev地址、网络会话密钥和应用程序会话密钥(ATT用来设置它与我的节点的连接)将重新生成。使用APB它们会保持不变。

这样做的结果是,要么需要更改节点在AllThingsTalk上的连接设置,如果它失去与网络的连接,或者我需要重新编写节点的草图来使用APB而不是OTAA。在尝试了我的极小草图和ABP one在事物节点示例中的混搭之后,我决定暂时使用前者。如果过程太过痛苦,就会返回重新编写节点,为节点画一个最小的ABP草图。

这对我来说是一个非常陡峭的学习曲线,有时也会让人沮丧,但是耐心和毅力也会得到回报。我学到了很多东西,已经在计划未来进入物联网的世界。

I have a background in the arts, environmental conservation and IT support. In my spare time I do a bit of DJing and I like making things.