基于NodeMCU与ThingSpeak的物联网温湿度监测系统实战

发布时间:2026/6/4 23:21:19

基于NodeMCU与ThingSpeak的物联网温湿度监测系统实战 1. 项目概述与核心价值最近在折腾一个智能家居的小项目核心需求是想实时监控书房里的温湿度变化。你可能也遇到过类似情况空调开了半天总觉得不是太干就是太潮但又没个准数。市面上的智能温湿度计不少但要么数据锁死在自家App里要么没法做长期的数据记录和分析。于是我决定自己动手用最经典的物联网“三件套”——NodeMCU、DHT11传感器和ThingSpeak平台搭建一个完全由自己掌控的温湿度监测站。这个方案的核心思路非常清晰用一个叫NodeMCU的小开发板它内置了Wi-Fi功能去读取DHT11传感器采集到的温度和湿度数据然后通过家里的Wi-Fi网络把这些数据定时发送到一个叫ThingSpeak的免费物联网云平台上。在ThingSpeak上数据不仅能被安全存储还能自动生成实时曲线图你可以通过网页或者手机随时随地查看历史数据和当前状态。整个系统的硬件成本可能不到50块钱但实现的功能却相当实用。对于刚接触物联网的朋友来说这个项目是一个绝佳的入门实践。它涵盖了从硬件连接、开发环境配置、嵌入式编程到云平台对接的完整流程。无论你是电子爱好者、学生还是想给家里添点智能设备的动手派跟着做一遍就能对物联网数据流的“感知-处理-传输-展示”有一个非常直观的理解。下面我就把整个搭建过程、需要注意的细节坑点以及如何让系统更稳定可靠的经验毫无保留地分享出来。2. 硬件选型与核心组件解析2.1 主控单元为什么是NodeMCUESP8266在物联网项目中主控芯片的选择至关重要它决定了项目的连接能力、处理性能和开发难度。我选择了NodeMCU开发板其核心是一颗ESP8266芯片。这几乎是目前DIY物联网项目中最流行、性价比最高的方案没有之一。首先从连接性看ESP8266集成了完整的Wi-Fi协议栈支持802.11 b/g/n这意味着你不需要再外接任何Wi-Fi模块它自己就能轻松连上你家路由器。对于温湿度上传这种轻量级数据任务它的性能绰绰有余。其次它的开发生态极其成熟。得益于庞大的社区支持我们可以使用Arduino IDE来为它编程这大大降低了学习门槛。如果你熟悉Arduino那么几乎可以无缝过渡到NodeMCU的开发。最后是成本一块NodeMCU V3开发板的价格非常亲民但提供了丰富的GPIO口、ADC输入甚至支持PWM和I2C/SPI通信为未来扩展其他传感器比如光照、空气质量传感器留足了空间。注意市面上NodeMCU板子版本较多推荐选择V3版本。购买时注意核对其USB转串口芯片通常是CP2102或CH340需要提前在电脑上安装对应的驱动程序否则Arduino IDE会识别不到端口。2.2 感知单元DHT11温湿度传感器详解感知环境参数我们需要一个传感器。DHT11是一款经典的数字式温湿度复合传感器。说它“数字式”是因为它内部集成了一个8位单片机负责对原始的温敏电阻和湿敏电阻进行校准并将模拟信号转换成数字信号后通过单总线协议发送给主控板。这比传统的模拟传感器需要接ADC引脚并自己处理电压换算要方便得多。DHT11的参数对于室内环境监测是完全够用的湿度测量范围20-90%RH精度±5%RH温度测量范围0-50°C精度±2°C。响应速度也很快。它的接口极其简单只有三个引脚VCC GND DATA。DATA引脚用于双向通信我们需要在NodeMCU上找一个数字IO口来接它。这里有一个关键点DHT11的供电电压是3.3V-5.5V而NodeMCU的工作电压是3.3V。为了确保信号电平匹配和稳定供电强烈建议将DHT11的VCC引脚连接到NodeMCU的3.3V引脚上而不是5V引脚这样可以避免不必要的风险。实操心得DHT11对时序要求比较严格。在代码中读取传感器数据之间需要留有足够的间隔建议不小于2秒连续快速读取会导致失败。另外其DATA线上建议连接一个4.7KΩ或10KΩ的上拉电阻到VCC以确保信号稳定。虽然有些模块已经内置了这个电阻但如果你购买的是单独的传感器元件千万别忘了自己加一个。2.3 硬件连接电路解析整个系统的硬件连接可以说是“最小系统”只需要三根杜邦线母对母就能完成。下面是具体的接线方法务必对照你的板子引脚图操作供电将DHT11的VCC引脚连接到NodeMCU的3.3V引脚。接地将DHT11的GND引脚连接到NodeMCU的任意一个GND引脚。数据将DHT11的DATA或S引脚连接到NodeMCU的D4引脚。这里选择D4对应ESP8266的GPIO2是一个常见做法但理论上其他数字引脚如D1、D2等也可以。只是需要注意有些引脚在板子启动时有特殊功能应避免使用。连接完成后你的硬件部分就准备好了。整个电路没有复杂的部分但连接务必牢固虚接是导致数据读取失败最常见的原因之一。你可以先将电路在面包板上搭建测试确认无误后再考虑焊接或使用扩展板。3. 软件开发环境搭建与配置3.1 Arduino IDE安装与核心配置虽然我们用的是NodeMCU但编程环境选择了广为人知的Arduino IDE。这是因为ESP8266社区为其提供了完美的支持包让我们可以用写Arduino代码的方式来开发ESP8266项目。首先去Arduino官网下载并安装最新版的IDE。安装完成后打开IDE需要进行关键一步添加ESP8266开发板的支持。点击文件-首选项会打开设置窗口。在“附加开发板管理器网址”一栏中填入以下网址http://arduino.esp8266.com/stable/package_esp8266com_index.json。如果你之前已经添加过其他网址可以点击输入框右侧的图标在新窗口中用换行分隔的方式添加这个新网址。提示这个URL是ESP8266社区维护的开发板定义文件索引地址。添加后IDE就知道该从哪里下载NodeMCU等ESP8266板子的相关工具链和核心库。添加完成后点击工具-开发板-开发板管理器...。在弹出的管理器顶部搜索框中输入“esp8266”。在搜索结果中你应该会看到由“ESP8266 Community”发布的“esp8266”平台。点击它然后选择右侧出现的安装按钮。这个过程会下载编译器和相关库文件需要一些时间请保持网络通畅。3.2 开发板与端口选择安装成功后关闭开发板管理器。现在我们就可以选择我们的硬件了。再次点击工具-开发板你应该能在列表的靠上部分找到一个叫“ESP8266 Boards”的分类展开它在里面找到“NodeMCU 1.0 (ESP-12E Module)”并选中。这个选项兼容市面上大多数的NodeMCU V3板子。接下来是连接硬件到电脑。用一根Micro-USB数据线将NodeMCU连接到电脑的USB口。连接成功后NodeMCU上的电源指示灯应该会亮起。然后在Arduino IDE中点击工具-端口选择新出现的那个端口。在Windows上它通常显示为“COMx”x是一个数字在macOS上则显示为“/dev/cu.usbserial-xxxx”或类似格式。常见问题排查如果端口列表中没有出现新的选项或者选项是灰色的大概率是USB转串口芯片的驱动没有安装。根据你板子上的芯片CP2102或CH340去芯片厂商官网下载对应的驱动并安装然后重启Arduino IDE和电脑再试。3.3 必备的安装我们的代码需要与两个硬件/服务打交道DHT11传感器和ThingSpeak平台。幸运的是都有现成的优秀库可以简化我们的工作。点击工具-管理库...打开库管理器。搜索“DHT sensor library”找到由Adafruit发布的版本进行安装。这个库提供了读取DHT11、DHT22等传感器的统一接口。由于Adafruit的DHT库依赖另一个库你通常还会被提示安装“Adafruit Unified Sensor”库一并安装即可。接着搜索“ThingSpeak”找到由MathWorks官方发布的“ThingSpeak”库进行安装。这个库封装了与ThingSpeak服务器通信的HTTP请求细节让我们可以用几行代码就完成数据上传。库安装完成后环境配置就全部就绪了。你可以通过文件-示例菜单查看这两个库是否已成功安装并找到它们提供的示例代码。4. ThingSpeak平台配置与数据通道创建4.1 平台注册与通道创建ThingSpeak是一个专注于物联网数据收集与可视化的免费云平台由MathWorks运营。我们需要在上面创建一个“频道”来接收和存储我们的传感器数据。首先访问ThingSpeak官网并注册一个免费账户。登录后点击页面顶部的“Channels” - “My Channels”然后点击“New Channel”按钮来创建一个新频道。在创建页面我们需要填写以下关键信息Name给频道起个名字例如“Study Room Environment”。Description简单的描述如“Monitoring temperature and humidity with NodeMCU DHT11”。Field 1这是我们上传的第一个数据字段。勾选它旁边的“勾选框”并在Label处填写“Temperature”在它下方的输入框可以写单位比如“°C”。Field 2勾选Label填写“Humidity”单位可以写“%RH”。注意ThingSpeak免费账户最多支持4个字段Field和3个图表。对于温湿度两个数据我们只用到前两个字段就够了。下面的其他字段和设置如地理位置、状态等可以暂时留空。填写完毕后拉到页面最下方点击“Save Channel”按钮。你的专属数据通道就创建好了。4.2 获取关键的API密钥通道创建成功后页面会自动跳转到该频道的“Private View”选项卡这里未来会显示你上传的数据图表。但现在我们需要获取一个“通行证”让我们的NodeMCU代码有权向这个频道写入数据。点击频道页面上方的“API Keys”选项卡。这个页面列出了所有重要的密钥。我们需要找到“Write API Key”。它是一长串字母和数字组成的字符串例如“XQZP8ABC123DEF456”。这个密钥是私密的相当于你频道写入数据的密码绝对不能泄露或上传到公开的代码仓库如Github。请复制这个Write API Key并妥善保存。我们下一步编写代码时就需要把它填入到程序中的指定位置。有了这个密钥你的NodeMCU程序才能被ThingSpeak平台识别并将数据存入对应的字段中。5. 核心代码编写与逐行解析5.1 代码框架与库引入环境配置好后我们开始编写核心的上传代码。在Arduino IDE中新建一个项目将下面的代码复制进去。我会逐段进行详细解释让你不仅知道怎么写更明白为什么这么写。// 1. 引入必要的库文件 #include ESP8266WiFi.h // 提供ESP8266的Wi-Fi连接功能 #include ThingSpeak.h // ThingSpeak官方通信库 #include DHT.h // DHT传感器库 // 2. 定义网络凭证 - 请修改为你自己的信息 const char* ssid Your_WiFi_SSID; // 你的Wi-Fi网络名称 const char* password Your_WiFi_Password; // 你的Wi-Fi密码 // 3. 定义ThingSpeak参数 - 请修改为你自己的信息 unsigned long myChannelNumber 123456; // 替换为你的ThingSpeak频道ID const char* myWriteAPIKey XQZP8ABC123DEF456; // 替换为你的Write API Key // 4. 定义DHT11传感器参数 #define DHTPIN D4 // NodeMCU上连接DHT11数据线的引脚GPIO2 #define DHTTYPE DHT11 // 指定传感器类型为DHT11 DHT dht(DHTPIN, DHTTYPE); // 初始化DHT对象 // 5. 创建Wi-Fi客户端对象用于网络通信 WiFiClient client; // 6. 全局变量与时间间隔控制 unsigned long lastUploadTime 0; // 记录上次上传的时间点 const unsigned long uploadInterval 20000; // 上传间隔单位毫秒20秒代码解析第1部分引入三个核心库。ESP8266WiFi.h是必须的它包含了连接Wi-Fi的所有底层函数。ThingSpeak.h库简化了与服务器交互的HTTP请求过程。DHT.h库则提供了读取温湿度的简单接口。第2部分ssid和password变量必须修改为你家Wi-Fi的名称和密码。注意大小写和特殊字符。第3部分myChannelNumber是你的频道ID创建频道后可以在频道主页的URL里找到或者直接在“API Keys”页面查看。myWriteAPIKey就是上一节复制的写入密钥。第4部分DHTPIN定义了传感器数据线连接的引脚这里用的是D4对应NodeMCU丝印。DHTTYPE明确指定传感器型号因为DHT库支持多种型号必须匹配。第6部分我们采用“非阻塞延时”的方式控制上传频率。lastUploadTime记录上次成功上传的时刻uploadInterval定义了间隔时间这里是20秒。这样做的优点是在等待上传的间隙单片机可以处理其他任务虽然本例中没有不会像delay()函数那样完全卡住程序。5.2 setup()函数初始化与连接setup()函数在设备上电或复位后只运行一次用于初始化各种设置。void setup() { Serial.begin(115200); // 初始化串口通信用于调试输出波特率设为115200 delay(100); // 短暂延时等待串口稳定 Serial.println(\n\nDHT11 ThingSpeak Uploader Starting...); dht.begin(); // 初始化DHT传感器 // 连接Wi-Fi网络 WiFi.begin(ssid, password); Serial.print(Connecting to WiFi ); Serial.print(ssid); while (WiFi.status() ! WL_CONNECTED) { delay(500); Serial.print(.); } Serial.println(\nWiFi Connected!); Serial.print(IP Address: ); Serial.println(WiFi.localIP()); // 打印获取到的本地IP地址 ThingSpeak.begin(client); // 初始化ThingSpeak库传入Wi-Fi客户端对象 }代码解析Serial.begin(115200)打开串口监视器波特率设为115200。这是为了在开发过程中通过“工具”-“串口监视器”查看调试信息对于排查问题至关重要。dht.begin()启动DHT传感器进行内部初始化。WiFi.begin()和while循环启动Wi-Fi连接过程。while循环会持续检查连接状态WiFi.status()直到连接成功状态等于WL_CONNECTED才会跳出。循环内每500毫秒打印一个点“.”让你能看到连接进度。ThingSpeak.begin(client)初始化ThingSpeak库需要将我们之前创建的WiFiClient对象client传递给它这样库就知道使用哪个网络连接进行通信。5.3 loop()函数主循环与业务逻辑loop()函数会无限循环执行我们所有的数据读取、上传逻辑都放在这里。void loop() { // 1. 检查是否到达预定的上传时间间隔 if (millis() - lastUploadTime uploadInterval) { // 2. 更新计时器 lastUploadTime millis(); // 3. 从DHT11读取温湿度数据 float humidity dht.readHumidity(); // 读取湿度% float temperature dht.readTemperature(); // 读取温度摄氏度 // 4. 检查读取是否成功 if (isnan(humidity) || isnan(temperature)) { Serial.println(Failed to read from DHT sensor! Check wiring.); return; // 如果读取失败跳过本次上传等待下一个周期 } // 5. 打印读取到的数据到串口监视器用于调试 Serial.print(Humidity: ); Serial.print(humidity); Serial.print( %\t); Serial.print(Temperature: ); Serial.print(temperature); Serial.println( °C); // 6. 将数据设置到ThingSpeak库的发送缓冲区 ThingSpeak.setField(1, temperature); // 温度数据放入Field 1 ThingSpeak.setField(2, humidity); // 湿度数据放入Field 2 // 7. 执行数据上传发送HTTP POST请求到ThingSpeak服务器 int httpCode ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey); // 8. 根据服务器返回的状态码判断上传结果 if (httpCode 200) { Serial.println(Channel update successful.); } else { Serial.print(Problem updating channel. HTTP error code: ); Serial.println(httpCode); // 常见的错误码401API Key错误404频道不存在-1网络连接失败 } } // 在两次上传间隔中可以添加其他非阻塞任务例如读取其他传感器 // 本例中暂无所以只是短暂延时避免loop()空转消耗CPU delay(100); }代码解析第1、2步这是实现定时上传的核心逻辑。millis()函数返回设备自启动以来的毫秒数。通过计算当前时间与上次上传时间的差值来判断是否到达间隔20秒。这种方式比用delay(20000)更优。第3、4步调用dht.readHumidity()和dht.readTemperature()读取数据。isnan()函数用于判断读取结果是否为一个“非数字”值这是DHT库在读取失败时返回的结果。一旦失败会打印错误信息并return放弃本次上传等待下一个周期再试。第6步ThingSpeak.setField()函数将数据填入库内部的缓存区。第一个参数是字段编号1对应Field 1即温度第二个参数是浮点数数据。第7、8步ThingSpeak.writeFields()是执行上传的关键函数。它使用我们提供的频道ID和API密钥将缓存区里的数据打包成一个HTTP POST请求发送给ThingSpeak服务器。返回值httpCode是HTTP状态码。200表示成功。其他代码表示失败串口会打印出错误码这是排查网络或配置问题的重要依据。6. 程序上传、测试与问题排查6.1 编译与上传在将代码上传到NodeMCU之前有最后几步关键操作修改代码中的个人信息确保已将代码中的Your_WiFi_SSID、Your_WiFi_Password、myChannelNumber和myWriteAPIKey替换成你自己的信息。选择正确的开发板和端口再次确认工具菜单下开发板选择的是“NodeMCU 1.0 (ESP-12E Module)”端口选择的是你的NodeMCU所连接的COM口。编译点击IDE左上角的“√”验证按钮。IDE会编译你的代码并在下方信息窗口输出结果。如果显示“编译完成”说明代码语法没有错误。如果有错误会提示具体行号和原因需要根据提示修改。上传点击“→”上传按钮。此时NodeMCU板上的蓝色LED通常是靠近USB口的那颗会快速闪烁表示正在烧录程序。上传成功后信息窗口会显示“上传完成”。重要提示某些NodeMCU板子在上传程序时需要手动进入“烧录模式”。通常的方法是按住板子上的FLASH或GPIO0按键不放然后按一下RST复位按键接着松开RST最后再松开FLASH按键。这时再执行上传操作。如果常规上传总是失败可以尝试此方法。6.2 串口监视器调试上传成功后打开工具-串口监视器。确保右下角的波特率设置为115200与代码中Serial.begin(115200)的设置一致。然后按一下NodeMCU板上的RST按键重启程序。你将在串口监视器中看到以下信息流程序启动提示。尝试连接Wi-Fi并打印一连串的“.”直到连接成功并显示获取到的IP地址。之后每间隔20秒会打印一次读取到的温湿度数据以及数据上传的结果“Channel update successful.”或错误信息。如果能看到“Channel update successful.”那么恭喜你数据已经成功发送到云端了6.3 常见问题与解决方案速查表在实际操作中你可能会遇到一些问题。下面是一个快速排查指南问题现象可能原因排查步骤与解决方案上传失败串口打印错误码 401Write API Key 错误。1. 检查代码中myWriteAPIKey字符串是否与ThingSpeak后台“API Keys”页面的“Write API Key”完全一致包括大小写。2. 确认没有多余的空格或换行符。上传失败错误码 404频道ID (Channel Number) 错误。1. 登录ThingSpeak进入你的频道在URL或“API Keys”页面确认正确的频道ID并更新到代码中。上传失败错误码 -1网络连接问题。1. 检查Wi-Fi的SSID和密码是否正确。2. 检查路由器是否正常工作NodeMCU是否在信号范围内。3. 重启NodeMCU和路由器试试。4. 检查ThingSpeak.begin(client)是否在setup()中成功执行。串口显示“Failed to read from DHT sensor!”DHT11传感器读取失败。1.首要检查接线VCC(3.3V), GND, DATA(D4)是否接对、接牢。2.检查上拉电阻如果使用的是裸传感器DATA引脚必须接一个4.7KΩ-10KΩ的上拉电阻到3.3V。3.检查电源确保使用NodeMCU的3.3V引脚为DHT11供电而非5V。4.检查引脚定义确认代码中DHTPIN定义的引脚如D4与实际接线一致。5.增加读取间隔在loop()中读取失败后增加一个delay(2000)再试确保传感器有足够恢复时间。串口监视器无任何输出串口通信或电源问题。1. 检查USB线是否只充电不传数据换一根可靠的Micro-USB数据线。2. 检查Arduino IDE中选择的端口是否正确。3. 检查串口监视器波特率是否设置为115200。4. 按一下NodeMCU的RST键重启程序。编译时提示“fatal error: DHT.h: No such file or directory”库未正确安装。1. 回到“3.3 必备库的安装”步骤通过库管理器重新安装“DHT sensor library”和“ThingSpeak”库。2. 安装后重启Arduino IDE。7. 数据可视化与平台功能应用7.1 查看实时数据与图表当你的设备开始稳定上传数据后回到ThingSpeak网站进入你的频道页面。默认显示的是“Private View”私有视图这里会自动为你生成两个图表分别对应Field 1温度和Field 2湿度。图表是实时更新的你会在坐标轴上看到随时间变化的曲线。将鼠标悬停在曲线上可以查看任意时间点的具体数值。图表下方是原始数据的列表显示最近上传的数据记录。ThingSpeak免费账户的数据更新间隔最快是15秒我们的代码设置20秒上传一次刚好满足要求数据点会一个接一个地绘制在图上。你可以点击图表右上角的齿轮图标对图表进行一些自定义设置比如修改Y轴范围、图表颜色、时间跨度默认显示最近N条数据或最近一段时间的数据等让可视化效果更符合你的观察需求。7.2 利用字段显示与状态窗口除了图表ThingSpeak的“Private View”还可以添加“数值显示”和“状态显示”控件。点击页面上的“Add Widgets”按钮可以选择“Numeric Display”数值显示来创建一个实时显示当前温度或湿度数值的大字窗口非常直观。你也可以添加“Status”控件来显示一段自定义文本例如可以根据温度值显示“舒适”、“偏热”、“偏冷”等状态。这些控件的添加和配置都是通过网页拖拽和点选完成的不需要写代码。你可以自由排列这些图表和控件的位置打造一个专属的仪表盘。这个仪表盘的链接是私有的只有登录你的账户才能查看保证了数据隐私。7.3 数据导出与进一步分析ThingSpeak不仅是一个显示工具也是一个数据仓库。点击频道页面的“Data Import/Export”选项卡你可以看到数据导出的选项。你可以将指定时间范围内的数据以CSV、XML或JSON格式导出到本地。导出的CSV文件可以用Excel、Google Sheets或任何数据分析软件打开。这样你就可以进行更深入的分析比如计算一天内的平均温湿度、最高最低值或者分析温湿度之间的相关性。对于有编程基础的用户ThingSpeak还提供了完整的RESTful API你可以用Python、MATLAB等工具编写脚本定时获取数据并集成到自己的数据分析流程或第三方应用中极大地扩展了项目的可能性。8. 项目优化与进阶思路一个能跑通的系统只是开始要让其稳定、可靠、实用还需要一些优化和扩展。8.1 增加系统稳定性措施在实际长期运行中网络波动、传感器偶尔出错都是难免的。我们需要让程序更有“韧性”。Wi-Fi重连机制目前的代码只在setup()中连接一次Wi-Fi。如果运行中路由器重启或信号中断设备就会“掉线”。可以在loop()中增加一个检查if (WiFi.status() ! WL_CONNECTED) { Serial.println(WiFi Lost. Reconnecting...); WiFi.reconnect(); }。更健壮的做法是使用WiFi.setAutoReconnect(true)和WiFi.persistent(true)。数据读取重试当dht.read()失败时我们直接return了。可以改为加入一个重试循环例如尝试最多3次每次间隔2秒如果都失败再放弃本次上传并记录错误。看门狗定时器ESP8266内置了软件看门狗WDT。在loop()函数开头添加ESP.wdtFeed();可以喂狗防止程序跑飞导致死机。如果程序卡死看门狗会自动复位设备。8.2 降低功耗与电池供电方案目前NodeMCU通过USB供电功耗较高。如果想做成便携式或电池供电的设备需要优化功耗。深度睡眠模式ESP8266最强大的省电功能是深度睡眠。我们可以让设备每间隔一段时间如5分钟醒来一次连接Wi-Fi、读取传感器、上传数据然后立刻进入深度睡眠。这会使电流从几十mA降至20μA左右。实现方法是在上传数据后调用ESP.deepSleep(300e6)单位微秒300e6即5分钟。注意使用深度睡眠需要将NodeMCU的RST引脚与D0GPIO16引脚短接因为GPIO16能在深度睡眠时唤醒芯片。关闭无用功能在setup()中可以调用WiFi.mode(WIFI_STA)明确设置为仅站点模式并禁用AP模式。上传完成后可以调用WiFi.disconnect(true)断开Wi-Fi连接。8.3 功能扩展与想法基础功能实现后这个平台可以轻松扩展多传感器集成NodeMCU还有多余的GPIO口和I2C接口。你可以轻松接入光照传感器BH1750、土壤湿度传感器、空气质量传感器如SGP30等。只需在代码中引入对应的库读取数据然后使用ThingSpeak.setField(3, newData)上传到ThingSpeak的新字段如Field 3, Field 4即可。本地显示增加一个0.96寸的OLED屏幕I2C接口在上传数据的同时也在本地实时显示温湿度这样即使断网也能查看。阈值报警ThingSpeak平台本身支持“React”功能可以设置当某个字段的值超过阈值时自动发送一封邮件或一条Tweet需关联Twitter账户给你。你也可以在NodeMCU代码里做判断如果温度过高就控制一个继电器打开风扇实现简单的本地自动化控制。私有化部署如果你对数据隐私有更高要求或者想完全掌控后端可以考虑使用开源的物联网平台如Home Assistant、Node-RED等部署在自己的树莓派或NAS上。NodeMCU可以通过MQTT协议与之通信实现更复杂的智能家居联动。

相关新闻