关于Adafruit IO的简介

539 阅读6分钟

Adafruit IO简介

在这篇文章中,我们将了解一个名为Adafruit IO的云平台,用于部署物联网解决方案。在本文结束时,你将了解到物联网解决方案是如何在云端部署的,Adafruit IO如何帮助更容易地部署,我们还用Python构建了一个简单的项目进行演示。

作为先决条件,对物联网部署和云计算的背景知识会对初学者有所帮助。

物联网(IoT)简介

物联网(IoT)描述了一个由物理对象(物)组成的网络,这些对象嵌入了传感器、软件和其他技术,通过互联网与其他设备和系统连接并交换数据。

在物联网中,"物 "基于通信和识别物体的属性被唯一地识别。"物 "可以根据人、机器和信息进行分类。例如,计算机、传感器、电视、书籍等都可以被称为 "物"。

当这些 "物 "拥有通过 "互联网 "连接它们的某些特性时,我们称它们为 "物联网"。

物联网的特点是。

  • 连接性- 物体必须被连接(有线或无线)。
  • 智能和身份--提取的数据很重要,而身份有助于跟踪它们。
  • 可扩展性- 有能力同时处理大量数据。
  • 动态和自适应性- 必须能够在不同的条件下工作。
  • 架构- 必须是混合的,不能是同质的。
  • 安全- 数据的隐私是最重要的。

关于云计算的介绍

云计算是通过互联网存储和访问数据的手段,而不是在本地使用它们。它允许通过集中存储在各设备间共享资源。

云计算的特点如下所示。

Features of cloud computing

来源。DataFlair的云计算的特点

云计算可以分为3种类型的服务。

  1. 基础设施即服务(IaaS) - 为计算提供处理、存储和物理资源。
  2. 平台即服务(PaaS)--创建了可以在云中部署的应用程序。
  3. 软件即服务(SaaS)--可在云中部署的第三方业务操作。

Adafruit IO

在对物联网和云计算有了更深入的了解后,我们现在来看看Adafruit IO是什么,以及它是如何运作的。

随着数字化转型的兴起,物联网在云端的部署已经变得越来越流行。通过在云上部署物联网解决方案,我们有以下好处。

  • 成本- 通过使用各种云服务,减少计算和存储的成本。
  • 可扩展性- "按需付费 "的定价模式允许灵活的付费模式,也允许应用程序的可扩展性。
  • 数据控制- 数据备份和恢复具有高度的安全性。
  • 服务器正常运行时间- 允许非常少或没有停机时间,服务器可用性高。

Adafruit IO就是这样一个云供应商,它更专注于物联网在云端的部署。Adafruit IO支持不同的硬件,如Raspberry PI、ESP2866和Arduino。

与其他物联网云供应商相比,物联网开发者更喜欢Adafruit IO,原因如下。

  • 强大的API- 为各种编程语言提供我们的库,也提供了内置的用户界面支持。
  • 仪表盘- 通过图表和图形了解数据,使我们能够做出更好的决策。
  • 隐私- 数据在云平台上有更好的加密算法保障。
  • 文档和社区- 许多博客和惊人的社区支持使产品不断发展。

目标

在上一篇文章中,我们使用NodeMCU来实现内置LED的闪烁。在这篇文章中,为了演示Adafruit IO的工作,我们将通过Arduino IDE(用C语言编写)向Adafruit IO云端发送(发布)LED亮度读数,并通过Python服务器接收(订阅)它们。

安装

按照安装指南进行安装。

  • Adafruit IO中创建一个新的账户进行注册。
  • 进入 "我的密钥 "部分,记下你的私钥。
  • 然后,用想要的名字 "创建一个新的仪表板"。
  • 在本地设置中,使用pip install Adafruit_IO ,安装一个名为Adafruit_IO 的Python包。
  • 同样地,请确保通过前面的文章了解如何设置现有的开发环境。

实施 - 发布者模块

在Arduino IDE中,我们必须导入必要的库来发布数值。要导入,使用#include <Adafruit_MQTT_Client.h>

我们还必须定义某些常量来初始化服务器。

#define username "[TYPE YOUR USERNAME]"
#define key "[TYPE YOUR SECRET KEY]"
#define server "io.adafruit.com"
#define password "[TYPE YOUR PASSWORD]"
#define dashboard "[TYPE YOUR DASHBOARD NAME]"

在定义了常量之后,让我们通过创建一个客户端模型来初始化。

Adafruit_MQTT_Client mqtt(&esp,server,port,username,key); // Creates a Adafruit client model
Adafruit_MQTT_Publish feed = Adafruit_MQTT_Publish(&mqtt,username"/feeds/"dashboard); // Initializes the server by specifying the dashboard path

现在,让我们通过运行一个从10到100的for-loop来增加LED的亮度,同时在Adafruit云中发布数值。为了发布数值,我们利用publish() 函数,将数值发送到相应的Adafruit IO云端。

// Publish the values from 10 to 100 using "feed.publish()"
for (int i = 10; i <= 100; i ++) {
  feed.publish(i);
}

实施 - 订阅者模块

现在,在这一部分,让我们来接收(订阅)亮度读数,并在LED上显示它们。

为了初始化模型,我们必须指定某些常数并导入必要的包。

from Adafruit_IO import Client, Feed, RequestError

ADAFRUIT_IO_KEY = "[TYPE YOUR IO_KEY]"
ADAFRUIT_IO_USERNAME = "[TYPE YOUR USERNAME]"

通过指定用户名和密钥,初始化云,如下图所示。

aio = Client(ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY) # Calling Client() constructor
digitalio = aio.feeds('[TYPE YOUR DASHBOARD NAME]')

现在,让我们通过连接NodeMCU来设置LED。

# LED setup
led = digitalio.DigitalInOut(board.D5) # Setup LED at Pin 5
led.direction = digitalio.Direction.OUTPUT # Sets the direction of LED to an output

为了订阅来自Adafruit IO的读数,我们将使用receive(digital.key) 函数。

while True:
  data = aio.receive(digital.key) 
  led.value = int(data.value) # Set the LED to the feed value
  time.sleep(0.5) # Timeout so we don't flood adafruit-io with requests

在上面的片段中,我们从云端订阅数据,并通过给led.value ,设置LED的亮度。

结果

最后,我们的代码已经准备好编译和上传。要编译你的代码,请按Ctrl + R 。编译完成后,按Ctrl + U ,将编译后的二进制代码上传到NodeMCU硬件上。

你会看到如下所示的屏幕。

Code compilation

源代码的编译

编译完成后,数值会被上传到Adafruit IO云端。要订阅这些数值,请使用终端运行python文件。要运行python文件,请输入python [filename].py

在LED中可以看到输出,亮度水平从10增加到100。亮度水平的变化将是非常小的。要注意到亮度的明显变化,相应地以更大的增量循环查看这些数值。

因此,我们已经将数值从一个客户端模块发布到Adafruit IO云端,将这些数值订阅给另一个客户端,并根据亮度等级显示LED。

Result

来源。GIF:Steemit

结论

最后,我们了解了使用Adafruit IO在云端进行物联网部署的情况。我们还做了一个简单的项目作为示范。

总结一下。

  • 我们了解了物联网和云计算。

  • 我们了解了在云上部署物联网解决方案的优势。

  • 我们了解了名为Adafruit IO的云供应商。

  • 我们通过建立一个简单的项目,学会了如何与Adafruit IO合作。