Adafruit IO简介
在这篇文章中,我们将了解一个名为Adafruit IO的云平台,用于部署物联网解决方案。在本文结束时,你将了解到物联网解决方案是如何在云端部署的,Adafruit IO如何帮助更容易地部署,我们还用Python构建了一个简单的项目进行演示。
作为先决条件,对物联网部署和云计算的背景知识会对初学者有所帮助。
物联网(IoT)简介
物联网(IoT)描述了一个由物理对象(物)组成的网络,这些对象嵌入了传感器、软件和其他技术,通过互联网与其他设备和系统连接并交换数据。
在物联网中,"物 "基于通信和识别物体的属性被唯一地识别。"物 "可以根据人、机器和信息进行分类。例如,计算机、传感器、电视、书籍等都可以被称为 "物"。
当这些 "物 "拥有通过 "互联网 "连接它们的某些特性时,我们称它们为 "物联网"。
物联网的特点是。
- 连接性- 物体必须被连接(有线或无线)。
- 智能和身份--提取的数据很重要,而身份有助于跟踪它们。
- 可扩展性- 有能力同时处理大量数据。
- 动态和自适应性- 必须能够在不同的条件下工作。
- 架构- 必须是混合的,不能是同质的。
- 安全- 数据的隐私是最重要的。
关于云计算的介绍
云计算是通过互联网存储和访问数据的手段,而不是在本地使用它们。它允许通过集中存储在各设备间共享资源。
云计算的特点如下所示。

来源。DataFlair的云计算的特点
云计算可以分为3种类型的服务。
- 基础设施即服务(IaaS) - 为计算提供处理、存储和物理资源。
- 平台即服务(PaaS)--创建了可以在云中部署的应用程序。
- 软件即服务(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硬件上。
你会看到如下所示的屏幕。

源代码的编译
编译完成后,数值会被上传到Adafruit IO云端。要订阅这些数值,请使用终端运行python文件。要运行python文件,请输入python [filename].py 。
在LED中可以看到输出,亮度水平从10增加到100。亮度水平的变化将是非常小的。要注意到亮度的明显变化,相应地以更大的增量循环查看这些数值。
因此,我们已经将数值从一个客户端模块发布到Adafruit IO云端,将这些数值订阅给另一个客户端,并根据亮度等级显示LED。

来源。GIF:Steemit
结论
最后,我们了解了使用Adafruit IO在云端进行物联网部署的情况。我们还做了一个简单的项目作为示范。
总结一下。
-
我们了解了物联网和云计算。
-
我们了解了在云上部署物联网解决方案的优势。
-
我们了解了名为Adafruit IO的云供应商。
-
我们通过建立一个简单的项目,学会了如何与Adafruit IO合作。