当前位置: 首页 > news >正文

ESP8266通过Whatabot实现WhatsApp消息收发:从环境搭建到智能家居应用

1. 项目概述与核心价值

如果你手头有一个ESP8266开发板,比如常见的Wemos D1 Mini,并且想让这个小小的物联网设备能像你的手机一样,自动给你发送WhatsApp消息,甚至能接收你发过去的指令,那么这个项目就是为你量身定做的。这不仅仅是点亮一个LED灯那么简单,它打通了物理世界(你的硬件)和数字社交世界(WhatsApp)之间的桥梁。想象一下,家里的温湿度传感器检测到异常,ESP8266能立刻给你的手机发一条WhatsApp告警;或者你出门后想远程打开家里的空调,只需给一个特定的WhatsApp号码发条消息,ESP8266收到后就能执行操作。这个功能在智能家居、远程监控、自动化提醒等场景下非常实用。

实现这个功能的核心,在于借助一个名为Whatabot的第三方服务作为“翻译官”和“信使”。ESP8266本身无法直接登录你的WhatsApp账号,但它可以通过互联网,使用标准的HTTP或WebSocket协议与Whatabot的服务器通信。Whatabot则扮演了中间人的角色,它拥有一个合法的WhatsApp商业账号,负责将ESP8266发来的信息转发到你的个人WhatsApp,同时将你发给它的消息再回传给ESP8266。我们的工作,就是在Arduino IDE里,写好让ESP8266能够连接Wi-Fi、与Whatabot服务器“对话”的程序。

整个流程听起来复杂,但拆解后无非是几个清晰的步骤:准备好开发环境、获取通信“许可证”(API Key)、编写并上传代码、最后进行网络配置。接下来,我会带你一步步走完这个过程,并重点分享那些官方文档里可能不会提,但在实际调试中至关重要的细节和避坑指南。

2. 开发环境搭建与核心库解析

工欲善其事,必先利其器。在开始写代码之前,我们需要一个能编译和上传程序到ESP8266的开发环境,以及几个关键的“工具包”(库文件)。

2.1 Arduino IDE与ESP8266开发板支持安装

首先,确保你电脑上安装的是Arduino IDE(建议使用1.8.x或2.0以上版本)。Arduino IDE默认只支持官方的Arduino板卡,对于ESP8266这类第三方芯片,我们需要手动添加支持包。

  1. 添加开发板管理器网址:打开Arduino IDE,依次点击文件->首选项。在打开的窗口中找到“附加开发板管理器网址”一栏。如果里面是空的,直接粘贴以下网址;如果已有其他网址,请用逗号分隔后粘贴。

    http://arduino.esp8266.com/stable/package_esp8266com_index.json

    这个网址指向了社区维护的ESP8266核心开发包索引。点击“好”保存。

  2. 安装ESP8266开发板:接着,点击工具->开发板->开发板管理器...。在弹出的管理器顶部的搜索框中输入“esp8266”。你应该会看到一个名为“esp8266 by ESP8266 Community”的条目,点击它,然后选择右侧出现的“安装”按钮。这个过程会下载并安装所有必要的编译工具链和核心库,需要一些时间,请保持网络通畅。

  3. 选择正确的开发板型号:安装完成后,再次点击工具->开发板,你现在会看到一个“ESP8266 Boards”的分类。根据你手头的硬件选择。对于最常见的Wemos D1 Mini,请选择LOLIN(WEMOS) D1 R2 & mini。这个选择至关重要,因为它决定了后续的引脚定义、闪存大小等编译参数。

注意:如果你使用的是其他ESP8266模块(如NodeMCU V3),请选择对应的型号,例如“NodeMCU 1.0 (ESP-12E Module)”。选错型号可能导致程序无法上传或运行异常。

2.2 关键第三方库的安装与作用

除了核心支持包,我们还需要三个额外的库来简化开发。

  1. Whatabot API Client 库:这是与Whatabot服务通信的核心库。根据原始教程,我们需要从GitHub发布页面手动下载ZIP包。访问https://github.com/WhatabotAPI/WhatabotAPIClient/releases,找到最新的发布版本(如tag 1.0),下载Source code (zip)文件。在Arduino IDE中,点击项目->加载库->添加.ZIP库...,然后选择你刚下载的ZIP文件。这个库封装了与Whatabot服务器建立WebSocket连接、发送和接收消息的复杂逻辑,让我们用简单的函数调用就能完成交互。

  2. WiFiManager 库:这是一个极其实用的库,由tzapu开发。它的作用是提供一个Web配置界面,让你无需将Wi-Fi的SSID和密码硬编码在程序里。首次运行时,ESP8266会启动一个名为“WhatabotAPI”的接入点(AP),你用手机或电脑连接上这个Wi-Fi(密码:whatabotapi),然后在浏览器打开192.168.4.1,就能看到一个配置页面,在里面选择你家的Wi-Fi并输入密码。配置成功后,ESP8266会自动连接该网络,并且会将凭证保存到闪存中,下次上电自动连接。这大大方便了项目的部署和后期网络变更。 安装方法:点击工具->管理库...,在搜索框输入“WiFiManager”,找到由“tzapu”开发的库,点击安装。

  3. ArduinoJson 库:物联网设备与服务器通信,数据格式通常采用轻量级的JSON。ArduinoJson库是处理JSON数据的行业标准,它允许我们在资源有限的微控制器上高效地解析和生成JSON字符串。Whatabot的消息很可能以JSON格式传输,因此这个库必不可少。 安装方法:同样在库管理器中搜索“ArduinoJson”,找到由“Benoit Blanchon”开发的库进行安装。建议安装版本6.x或更高版本,以获得更好的性能和功能支持。

3. 获取Whatabot API密钥与项目配置

要让ESP8266通过Whatabot发送消息,你必须先获得一个唯一的“通行证”,这就是API密钥。同时,我们需要对示例代码进行关键配置。

3.1 注册并获取API密钥

  1. 访问Whatabot:用你的浏览器打开https://whatabot.io/get-started。页面会显示一个电话号码(例如,+1 415 523 8886)。请注意,这个号码可能随时间和地区变动,请以当时页面显示为准。

  2. 添加联系人并授权:在你用于接收消息的手机WhatsApp中,将页面显示的这个号码添加为联系人。保存后,向这个号码发送一条纯文本消息,内容为:

    I allow whatabot to send me messages

    这是授权Whatabot向你发送消息的必要步骤。发送后,Whatabot的自动回复会给你发送一个唯一的API密钥(API Key),形如abc123de-f456-gh78-ij90-klmnopqrstuv务必妥善保存这个密钥,它就像你项目的密码,不要泄露。

  3. 理解通信模型:此时,Whatabot服务器已经将你的手机号码(即你发送授权消息的号码)与这个API密钥绑定。后续,任何使用此API密钥发送的请求,只要指定了你的手机号作为接收者(Chat ID),Whatabot就会将消息转发到你的WhatsApp上。反之,你向这个Whatabot号码发送的任何消息,也会被服务器通过WebSocket推送给所有正在监听、且使用了对应API密钥的设备(即你的ESP8266)。

3.2 配置示例代码

环境搭建好后,我们来配置代码。在Arduino IDE中,点击文件->示例-> 滚动找到Whatabot API Client Library-> 选择WhatabotWebsocketClient。这会打开一个完整的示例程序。

在这个示例程序中,找到以下两行代码,它们通常位于文件开头:

// TODO: Set your phone number and API key here String WHATABOT_CHAT_ID = "YOUR_PHONE_NUMBER"; // Without + String WHATABOT_API_KEY = "YOUR_WHATABOT_API_KEY";

你需要将它们替换成你自己的信息:

  1. WHATABOT_CHAT_ID:填写你的完整国际格式手机号码,不包括加号“+”或任何空格、破折号。例如,中国大陆手机号+86 13800138000应填写为8613800138000。确保这就是你之前发送授权消息的手机号。
  2. WHATABOT_API_KEY:粘贴你从Whatabot那里收到的完整API密钥字符串。

实操心得:建议在第一次成功运行后,将这两行敏感信息移出代码,改为从ESP8266的闪存文件系统(如LittleFS)中读取,或者通过WiFiManager的配置页面输入。这样可以避免将个人信息硬编码在源码中,方便分享代码或更换设备。

4. 代码上传、WiFi配置与首次运行

配置好密钥后,就可以将程序上传到ESP8266了。但在此之前,还有几个细节需要注意。

4.1 上传代码与硬件连接

  1. 连接硬件:使用Micro-USB数据线将Wemos D1 Mini连接到电脑。如果电脑是首次连接这类板子,可能需要安装CH340G或CP2102等USB转串口芯片的驱动。如果设备管理器里出现未知设备,请根据你的芯片型号(通常板子上会印有CH340或CP2102)搜索并安装对应驱动。
  2. 选择端口:在Arduino IDE的工具->端口菜单下,选择新出现的串口(在Windows上通常是COMx,在Mac/Linux上是/dev/cu.wchusbserialxxx或类似)。
  3. 上传代码:点击IDE左上角的“上传”按钮(向右的箭头)。编译完成后,程序会开始上传。观察IDE底部的状态栏和ESP8266板载LED的闪烁情况,直到显示“上传成功”。

4.2 首次运行的WiFi配置流程

代码上传成功后,打开串口监视器(工具 -> 串口监视器),设置波特率为115200。然后按下ESP8266的复位(RST)按钮。

  1. 进入配置模式:程序首次运行时,由于没有保存的Wi-Fi凭证,WiFiManager库会自动启动。你会在串口监视器中看到相关提示,同时,ESP8266会创建一个Wi-Fi热点。
  2. 连接配置热点:用你的手机或电脑搜索Wi-Fi网络,会找到一个名为WhatabotAPI的网络(名称可能在代码中可配置)。连接它,密码是whatabotapi
  3. 访问配置页面:连接成功后,打开浏览器,输入网址http://192.168.4.1。你会看到一个简单的配置页面。
  4. 配置网络:在页面中,点击“Configure WiFi”。它会扫描周围的Wi-Fi网络,选择你的家庭网络(SSID),输入密码,然后点击“保存”。ESP8266会尝试连接你指定的网络。
  5. 连接成功:如果密码正确,ESP8266会重启并连接到你的路由器。此时,串口监视器会打印出ESP8266从路由器获取到的本地IP地址(例如192.168.1.105)。同时,WhatabotAPI这个配置热点会自动关闭。

注意事项:这个配置过程只需进行一次。WiFiManager会将凭证保存到ESP8266的闪存中。以后每次上电,它都会自动尝试连接之前配置的网络。如果你想重新配置网络,通常可以在ESP8266启动时按住某个GPIO引脚(需要在代码中设置),强制其再次进入配置模式。

4.3 验证消息收发

WiFi连接成功后,程序会尝试使用你提供的API密钥和Chat ID连接到Whatabot的WebSocket服务器。

  • 发送测试消息:示例代码中通常包含一个定时发送消息的循环(例如,每30秒发送一条“Hello from ESP8266!”)。连接建立后,你的WhatsApp很快就会收到来自Whatabot号码的消息。
  • 接收消息:示例代码也设置了接收消息的回调函数。当你向Whatabot号码发送任意消息时,ESP8266会通过串口监视器将消息内容打印出来。你可以在代码中扩展这个回调函数,根据接收到的消息内容(例如,发送“LED ON”)来控制GPIO引脚,实现远程控制。

至此,一个基本的ESP8266 WhatsApp消息收发器就已经搭建完成了。你已经成功让一个微控制器接入了主流的即时通讯平台。

5. 核心代码逻辑深度解析与自定义扩展

仅仅让示例跑起来还不够,理解其背后的工作原理,才能灵活地将其应用到自己的项目中。我们来深入看看WhatabotWebsocketClient示例的核心逻辑。

5.1 程序结构与工作流程

一个典型的基于Whatabot API Client库的程序结构如下:

#include <WhatabotAPIClient.h> #include <WiFiManager.h> #include <ArduinoJson.h> // 配置变量(已替换为你的信息) String WHATABOT_CHAT_ID = "8613800138000"; String WHATABOT_API_KEY = "your-actual-api-key-here"; WhatabotAPIClient whatabotClient; // 创建Whatabot客户端对象 WiFiManager wifiManager; // 创建WiFiManager对象 void setup() { Serial.begin(115200); // 初始化WiFiManager,尝试连接已保存的网络,失败则启动配置AP wifiManager.autoConnect("WhatabotAPI", "whatabotapi"); // 设置Whatabot客户端的事件回调函数 whatabotClient.onMessageReceived(onMessageReceived); // 收到消息时触发 whatabotClient.onConnected(onConnected); // 连接服务器成功时触发 whatabotClient.onDisconnected(onDisconnected); // 连接断开时触发 // 使用API密钥和Chat ID初始化客户端 whatabotClient.begin(WHATABOT_API_KEY, WHATABOT_CHAT_ID); } void loop() { // 必须持续调用loop()方法,以维持WebSocket连接和处理网络事件 whatabotClient.loop(); // 这里可以添加你自己的周期性任务,例如定时发送传感器数据 static unsigned long lastSend = 0; if (millis() - lastSend > 30000) { // 每30秒执行一次 lastSend = millis(); sendStatusUpdate(); } } // 当与Whatabot服务器连接成功时调用 void onConnected() { Serial.println("Connected to Whatabot server!"); // 连接成功后可以立即发送一条欢迎消息 whatabotClient.sendMessage("ESP8266 device is now online!"); } // 当从Whatabot收到新消息时调用 void onMessageReceived(String chatId, String message) { Serial.print("Message from "); Serial.print(chatId); Serial.print(": "); Serial.println(message); // 在这里解析和处理消息 if (message.equalsIgnoreCase("status")) { whatabotClient.sendMessage("Device is running smoothly."); } // 可以添加更多命令... } // 自定义的发送消息函数示例 void sendStatusUpdate() { // 模拟读取传感器数据 float temperature = readTemperature(); float humidity = readHumidity(); // 构建消息字符串 String statusMsg = "Current Status - Temp: "; statusMsg += String(temperature, 1); // 保留一位小数 statusMsg += "°C, Humidity: "; statusMsg += String(humidity, 1); statusMsg += "%"; // 发送消息 whatabotClient.sendMessage(statusMsg); }

工作流程解析

  1. 初始化与连接setup()函数中,先初始化串口,然后wifiManager.autoConnect()负责搞定Wi-Fi连接。接着,通过whatabotClient.begin()传入API密钥和Chat ID,库内部会使用这些信息去认证并建立到Whatabot服务器的WebSocket连接。
  2. 事件驱动:库采用回调函数机制。你预先定义好onMessageReceived,onConnected等函数,当对应事件发生时,库会自动调用它们。这是一种高效的非阻塞编程模式。
  3. 主循环维持loop()函数中必须不断调用whatabotClient.loop()。这个调用负责处理底层的网络数据收发、维持心跳包以保持连接活跃,并检查是否有新事件需要触发回调函数。
  4. 发送消息:在任何需要的地方(如onConnected中,或你自己的定时任务里),调用whatabotClient.sendMessage(“your message”)即可发送消息。

5.2 实现双向交互与命令控制

示例中的onMessageReceived函数是实现设备交互的关键。你可以在这里解析用户从WhatsApp发来的指令。

void onMessageReceived(String chatId, String message) { // 确保消息来自授权的Chat ID(可选,增加安全性) // if (chatId != WHATABOT_CHAT_ID) return; message.trim(); // 去除首尾空格 message.toLowerCase(); // 转为小写,使命令不区分大小写 if (message == "led on") { digitalWrite(LED_BUILTIN, LOW); // ESP8266板载LED是低电平点亮 whatabotClient.sendMessage("LED is now ON"); } else if (message == "led off") { digitalWrite(LED_BUILTIN, HIGH); whatabotClient.sendMessage("LED is now OFF"); } else if (message == "get temp") { float temp = readTemperatureSensor(); whatabotClient.sendMessage("Temperature: " + String(temp) + "C"); } else if (message.startsWith("set interval ")) { // 解析命令,例如 "set interval 60" int spaceIndex = message.lastIndexOf(' '); String intervalStr = message.substring(spaceIndex + 1); int newInterval = intervalStr.toInt(); if (newInterval > 0) { reportInterval = newInterval * 1000; // 转换为毫秒 whatabotClient.sendMessage("Report interval set to " + intervalStr + " seconds."); } } else { whatabotClient.sendMessage("Unknown command. Try: led on, led off, get temp, set interval [seconds]"); } }

通过这样的逻辑,你就实现了一个简单的聊天机器人,可以通过自然语言命令控制你的硬件设备。

6. 常见问题排查与实战经验分享

在实际操作中,你可能会遇到各种各样的问题。下面我整理了一些常见故障及其解决方法,这些都是从多次实战中积累下来的经验。

6.1 连接与通信类问题

问题现象可能原因排查步骤与解决方案
串口监视器无输出,或提示上传失败1. 驱动未安装。
2. 开发板型号选择错误。
3. USB线或端口问题。
4. 上传时GPIO0未正确拉低(某些板子需手动进入下载模式)。
1. 检查设备管理器,安装正确的CH340/CP2102驱动。
2. 确认工具->开发板选择正确。
3. 换一根数据线,或换一个USB口试试。
4. 对于某些板子,需要按住FLASH或BOOT按钮再按RST,然后松开RST再松开FLASH,进入下载模式后再上传。
无法连接到WhatabotAPI配置热点1. ESP8266未成功启动WiFiManager。
2. 手机/电脑搜索不到热点。
3. 热点名称或密码被代码修改。
1. 观察串口输出,看是否有启动AP的提示。按复位键重启。
2. 确保设备离得足够近,尝试重启ESP8266。
3. 检查代码中autoConnect的两个参数,默认是“WhatabotAPI”和“whatabotapi”。
能连上配置热点,但打不开192.168.4.11. 手机/电脑未正确获取到IP(可能是192.168.4.x网段)。
2. 浏览器缓存或代理问题。
1. 在连接热点的设备上查看获取的IP地址,确认是192.168.4.x。
2. 尝试使用浏览器无痕模式,或输入http://192.168.4.1时清空缓存。
配置Wi-Fi后,串口显示连接成功但无法收到消息1. API密钥或Chat ID填写错误。
2. 网络防火墙或路由器设置阻止了WebSocket连接(端口可能为443或80)。
3. Whatabot服务暂时不可用。
1.仔细核对WHATABOT_API_KEYWHATABOT_CHAT_ID,一个字符都不能错,且Chat ID无“+”。
2. 尝试将ESP8266连接到手机热点,排除路由器限制。
3. 检查串口输出,看是否有连接Whatabot服务器失败的错误信息。
设备运行一段时间后掉线,收不到消息1. 路由器Wi-Fi信号不稳定。
2. WebSocket连接因长时间无活动被服务器断开。
3. ESP8266内存泄漏导致崩溃。
1. 优化设备摆放位置。
2. Whatabot客户端库应已包含心跳机制,确保loop()被持续调用。检查网络稳定性。
3. 在loop()中避免使用String类进行大量动态拼接,改用字符数组或String保留空间,定期重启也是一种简单策略。

6.2 功能与稳定性优化建议

  1. 添加看门狗(Watchdog):ESP8266内置了软件看门狗,但在复杂任务中可能被阻塞。可以在setup()开头调用ESP.wdtDisable()然后ESP.wdtEnable(WDTO_8S)来启用硬件看门狗定时器。在loop()中定期调用ESP.wdtFeed()喂狗。这样,如果程序跑飞或死循环,设备会自动重启,提高可靠性。
  2. 使用更稳定的Wi-Fi连接方式:WiFiManager的autoConnect在无法连接保存的网络时,会阻塞直到配置完成。你可以使用setConfigPortalTimeout(180)设置配置门户的超时时间(秒),超时后继续尝试连接,避免一直阻塞。或者,使用startConfigPortal()非阻塞模式进行更精细的控制。
  3. 消息发送频率限制:Whatabot作为第三方服务,很可能对API调用频率有限制。避免在loop()中无延迟地频繁调用sendMessage。对于定时报告,使用millis()进行非阻塞定时(如前文示例),间隔建议至少30秒以上,以免被服务器限制或标记为垃圾信息。
  4. 异常处理与重连机制:在onDisconnected回调函数中,不要只是打印日志。可以实现一个指数退避的重连逻辑:
    void onDisconnected() { Serial.println("Disconnected from Whatabot. Attempting to reconnect..."); static int reconnectDelay = 1000; // 初始重连延迟1秒 delay(reconnectDelay); whatabotClient.begin(WHATABOT_API_KEY, WHATABOT_CHAT_ID); // 重新初始化连接 reconnectDelay = min(reconnectDelay * 2, 60000); // 指数退避,最大延迟1分钟 }
  5. 电源管理:如果项目是电池供电,需要特别注意功耗。在发送消息的间隙,可以考虑调用ESP.deepSleep()进入深度睡眠模式,并通过定时器或外部中断唤醒,这将极大延长电池寿命。

7. 项目进阶:集成传感器与打造实用应用

基础的消息收发只是起点,将ESP8266与各种传感器结合,才能释放物联网的真正潜力。下面以常见的DHT11温湿度传感器为例,展示如何打造一个简单的环境监测与告警系统。

7.1 硬件连接与库添加

首先,需要连接硬件。DHT11有三个引脚(VCC, DATA, GND):

  • VCC 接 ESP8266的 3.3V。
  • GND 接 GND。
  • DATA 接一个GPIO引脚,例如 D2(对应ESP8266的GPIO4)。

然后,在Arduino IDE中安装DHT sensor library(作者:Adafruit)和Adafruit Unified Sensor库。

7.2 代码集成与逻辑实现

在之前的Whatabot项目代码基础上进行扩展。

#include <DHT.h> #define DHTPIN 4 // GPIO4,即D2引脚 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); // 全局变量,用于存储上次读取的数值和发送时间 float lastTemp = 0; float lastHumidity = 0; unsigned long lastSensorRead = 0; const long sensorInterval = 10000; // 每10秒读取一次传感器 unsigned long lastAlertCheck = 0; const long alertInterval = 60000; // 每1分钟检查一次是否需要告警 float tempThresholdHigh = 30.0; // 高温告警阈值 float humidityThresholdHigh = 80.0; // 高湿告警阈值 void setup() { // ... 原有的WiFi和Whatabot初始化代码 ... dht.begin(); // 初始化DHT传感器 Serial.println("DHT11 sensor initialized."); } void loop() { whatabotClient.loop(); // 维持Whatabot连接 unsigned long currentMillis = millis(); // 定时读取传感器 if (currentMillis - lastSensorRead >= sensorInterval) { lastSensorRead = currentMillis; readSensorData(); } // 定时检查是否需要发送告警 if (currentMillis - lastAlertCheck >= alertInterval) { lastAlertCheck = currentMillis; checkAndSendAlert(); } // ... 其他循环任务 ... } void readSensorData() { float h = dht.readHumidity(); float t = dht.readTemperature(); // 读取摄氏温度 // 检查读取是否成功 if (isnan(h) || isnan(t)) { Serial.println("Failed to read from DHT sensor!"); return; } lastHumidity = h; lastTemp = t; Serial.print("Humidity: "); Serial.print(h); Serial.print("%, Temp: "); Serial.print(t); Serial.println("C"); } void checkAndSendAlert() { // 只在成功读取数据后检查 if (lastTemp == 0 && lastHumidity == 0) return; String alertMessage = ""; bool needAlert = false; if (lastTemp > tempThresholdHigh) { alertMessage += "High Temperature Alert: " + String(lastTemp, 1) + "C. "; needAlert = true; } if (lastHumidity > humidityThresholdHigh) { alertMessage += "High Humidity Alert: " + String(lastHumidity, 1) + "%. "; needAlert = true; } if (needAlert && whatabotClient.isConnected()) { whatabotClient.sendMessage(alertMessage); Serial.println("Alert sent: " + alertMessage); } } // 扩展消息接收处理,增加查询命令 void onMessageReceived(String chatId, String message) { message.trim(); message.toLowerCase(); if (message == "status" || message == "get data") { String statusMsg = "Current: Temp=" + String(lastTemp, 1) + "C, Humidity=" + String(lastHumidity, 1) + "%"; whatabotClient.sendMessage(statusMsg); } else if (message.startsWith("set threshold ")) { // 简单解析命令,例如 "set threshold temp 28" // 实际应用需要更健壮的解析逻辑 // ... 解析并更新 tempThresholdHigh 或 humidityThresholdHigh ... whatabotClient.sendMessage("Threshold updated."); } // ... 处理其他原有命令 ... }

7.3 项目扩展思路

这个温湿度监测告警器只是一个起点,你可以根据需求无限扩展:

  • 安全监控:连接门磁传感器(干簧管)或PIR人体红外传感器,当检测到门被打开或有人移动时,立即发送WhatsApp告警。
  • 植物养护:连接土壤湿度传感器,当土壤变干时发送提醒浇水消息。
  • 能耗统计:连接脉冲式电表传感器,统计用电量,定时发送日报或周报。
  • 远程控制:连接继电器模块,通过发送如plug onplug off的WhatsApp消息,远程控制插座开关。

关键在于,ESP8266通过Whatabot这个“翻译官”,获得了与智能手机世界便捷、低成本通信的能力。你只需要专注于传感器数据的采集(输入)和执行器的控制(输出),而消息的传递和交互界面,则交给了你和用户都早已熟悉的WhatsApp。这种模式极大地降低了物联网项目的开发门槛和用户体验成本。

http://www.jsqmd.com/news/930068/

相关文章:

  • Matlab版太阳风粒子运动仿真工具:含电势求解与轨迹可视化
  • 石油光缆抢修升级:鼎讯信通光缆路由追踪仪优势解析
  • 终极指南:在Windows上轻松安装安卓应用的APK-Installer完整教程
  • Claude Code Git 工作流:分支、提交与代码审查怎么配合
  • Visual C++ Redistributable AIO 终极指南:3分钟解决Windows软件运行问题
  • 关系型数据库核心原理拆解:SQL解析、事务引擎、存储结构全链路分析
  • 还在手动熬夜转写讲座录音?2026年这3个微软文字转语音技巧,1分钟转完1小时音频
  • 056、多 GPU 分布式训练实战:DDP 配置、通信后端选型与加速比优化
  • 基于555定时器的振动传感器DIY:从机械触发到电子锁存的完整实现
  • DC-DC升压模块改造LED头灯:原理、实践与续航性能实测
  • 2026青岛翡翠回收权威指南:合扬奢侈品回收,25年标杆护航,高价变现无套路 - 合扬奢侈品交易中心
  • 腾讯云调用IP定位
  • 二维码+IC卡层控型梯控系统,通过二维码扫码 + Mifare One IC卡刷卡双模认证方式实现电梯楼层权限控制。采用IC卡写扇区技术,用户容量无上限,适用于住宅、办公楼、酒店等多种场景
  • EEG与fNIRS多模态融合:基于神经血管耦合的工作压力客观评估
  • 从平面到立体:RPG Maker MV/MZ插件集如何重塑你的游戏视觉体验
  • 【c语言数据结构】——单链表专题
  • 暗黑2存档编辑器终极指南:3分钟学会免费修改D2/D2R游戏角色
  • 2026杭州装修设计公司推荐::杭州足浴会所/KTV装修设计公司推荐+绍兴运动馆/台球会所装修设计公司推荐合集 - 栗子测评
  • Windows 11 LTSC系统恢复微软商店的终极指南:3分钟告别应用荒
  • 旧安卓手机改造智能监控:零成本实现移动侦测与邮件报警
  • Zotero文献管理终极指南:如何用Linter插件自动格式化元数据,提升学术写作效率
  • 抖音视频怎么在线解析提取无水印,手机电脑全渠道高清无损操作详解
  • 从“激光灭蚊神器”爆单说起:出口企业,你的数据扛得住“幸福的烦恼”吗?
  • 软件研发的“工艺方差“,AI能熨平吗?
  • 从怀疑试用到真香,算下来省了八成整理时间!2026抖音学习总结我只推这一个
  • Claude Code vs Cursor:怎么选适合你的 AI 编程工具
  • 通达信缠论插件:让复杂理论变简单,三分钟看懂市场结构
  • 基于Qwen3.5-9B与YOLOv5的安全帽检测系统实践
  • 时尚广告软文批量发布怎么做?低成本高效发稿实操攻略 - 代码非世界
  • 如何在Unity游戏调试中快速定位和修改任意对象:UnityExplorer终极指南