资讯动态

ESP32本地模拟Alexa设备:FauxmoESP实现智能家居语音控制

发布时间:2026/8/20 7:48:32 来源:尧图企业网站定制
1. 项目概述用ESP32打造你的智能家居语音控制中心几年前当我第一次把一块ESP32开发板连上家里的灯带然后对着手机App喊一声“开灯”时那种“魔法成真”的感觉至今难忘。但很快我就发现每次控制都得掏手机、点开App远不如直接开口说话来得自然。于是我把目光投向了几乎每个科技爱好者家里都有的设备——Amazon Echo Dot。这个小巧的智能音箱内置了亚马逊的Alexa语音助手如果能让我亲手做的ESP32设备和它“对话”那才是真正的智能家居体验。这个项目的核心就是让ESP32这块功能强大又便宜的微控制器摇身一变成为Alexa生态系统中的一员。你不再需要购买昂贵的品牌智能插座或灯泡而是可以用ESP32去控制任何你想控制的设备——台灯、风扇、窗帘电机甚至是咖啡机。整个过程你只需要对着Echo Dot说“Alexa打开书房台灯。” 背后的ESP32就会接收到指令并执行你预设的动作。这不仅仅是省钱更是一种创造的乐趣和对家居控制权的完全掌握。无论你是刚接触物联网的爱好者想亲手打造第一个语音控制项目还是有一定经验的开发者希望将自制的传感器或执行器接入成熟的语音生态亦或是智能家居的深度用户厌倦了封闭的生态系统渴望更开放、更自定义的解决方案这个项目都值得一试。它融合了硬件连接、网络通信和云服务对接是一个综合性极强的实战案例。接下来我会带你从零开始拆解每一个环节分享我踩过的坑和总结的技巧让你也能轻松实现ESP32与Alexa的联动。2. 核心思路与方案选型为什么是ESP32Alexa在开始动手之前我们得先搞清楚为什么要选择ESP32和Alexa这个组合以及实现它们通信的几种主流路径。这就像盖房子前先画好蓝图选对材料和工法后面才能事半功倍。2.1 ESP32智能家居项目的“瑞士军刀”首先说说ESP32。在物联网开发领域ESP32几乎是一个现象级的存在。它集成了双核处理器、Wi-Fi和蓝牙价格却极其亲民。对于家庭自动化项目它的几个特性简直是量身定做强大的网络能力内置的Wi-Fi模块支持STA连接路由器和AP自己作为热点模式稳定且功耗可控这是与云端或本地服务器通信的基础。充足的GPIO和接口多达几十个可编程的GPIO引脚可以轻松连接继电器模块控制电器开关、传感器如温湿度、光照以及其他通信模块如红外发射管。丰富的开发生态无论是官方的ESP-IDF框架还是更易上手的Arduino Core for ESP32都有海量的库和社区支持。特别是对于Alexa对接已经有成熟的开源库简化了开发流程。选择ESP32意味着你拥有了一块功能全面、成本极低、社区资源丰富的“大脑”可以灵活适配各种家庭自动化场景。2.2 Alexa与Echo Dot成熟的语音交互入口Amazon Echo Dot是一个将Alexa语音助手具象化的硬件产品。它的价值在于提供了一个稳定、自然且被广泛接受的语音交互入口。通过Alexa Skills KitASK开发者可以扩展Alexa的能力。对于我们的自制设备目标就是让Alexa将其识别为一个可控制的“智能设备”而非一个需要复杂对话的“技能”。这样做的好处是控制逻辑符合用户直觉。用户不需要说“Alexa告诉我的ESP32打开灯”而是直接说“Alexa打开灯”。设备的管理也会出现在Alexa App的“设备”列表中与购买的智能产品体验一致。2.3 通信方案解析直连、桥接与模拟让ESP32和Alexa对话关键在于通信协议。目前主流有三种思路各有优劣。方案一基于FauxmoESP的本地模拟推荐入门这是最经典、对新手最友好的方式。FauxmoESP是一个Arduino库它让ESP32在本地网络上模拟成一个Belkin WeMo或Philips Hue设备。Alexa内置了对这些品牌设备的发现协议SSDP和UPnP因此可以自动发现并添加“ESP32设备”。优点完全在本地局域网LAN内运行无需连接亚马逊云响应速度极快断网也能用只要路由器和设备在同一个局域网。配置简单代码清晰。缺点模拟的是较老的协议功能相对基础主要是开关、调光、调色且由于是“模拟”在Alexa App里看到的设备类型可能有限制。适用场景控制简单的开关设备如灯、插座追求快速实现、本地化运行和隐私保护。方案二通过第三方云服务桥接功能全面这种方案下ESP32连接到某个第三方物联网云平台例如SinricPro、Blynk、或开源方案如Home Assistant的ESPHome组件。然后该云平台通过Alexa Skill与亚马逊云通信。当用户对Alexa发出指令时指令经由亚马逊云-第三方云-你的ESP32。优点功能强大可以定义复杂的设备类型开关、风扇、锁、温度传感器等和属性。通常提供友好的Web配置界面无需深度编程。可以实现远程控制从公司控制家里的设备。缺点依赖第三方云服务可能存在服务稳定性、隐私或收费问题。响应速度受限于多个网络节点。适用场景需要复杂设备类型、远程控制能力或者不想处理底层协议细节的开发者。方案三直连Alexa云服务原厂协议这是最“正统”但也最复杂的方式。ESP32需要实现Alexa Voice ServiceAVS的客户端或者使用Amazon IoT SDK直接与亚马逊的云服务认证和通信。优点最官方的集成方式体验与商用产品无异功能最完整。缺点开发难度极高涉及OAuth2认证、证书管理、复杂的协议交互。对于个人项目来说性价比很低。适用场景产品级开发需要最完善的功能和认证。我的选择与建议对于绝大多数个人创客和家居自动化爱好者我强烈推荐从“方案一FauxmoESP”开始。它让你能最快地看到成果理解整个通信链路并且本地运行的特性带来了速度和隐私的优势。本篇文章的后续实操部分也将以FauxmoESP方案为核心进行展开。当你需要更复杂的功能时可以再平滑过渡到方案二。3. 硬件准备与电路设计要点工欲善其事必先利其器。在写代码之前我们需要把硬件搭建起来。这部分我会详细列出物料清单并重点讲解最核心的“强电控制”部分如何安全设计。3.1 物料清单与核心元件解析你需要准备以下硬件ESP32开发板任何一款常见的ESP32开发板都可以如NodeMCU-32S、ESP32-DevKitC等。注意检查引脚定义图。USB数据线用于给ESP32供电和烧录程序。继电器模块这是控制家电的关键。务必选择“高低电平触发、常开常闭接口”的继电器模块。通常有1路、2路、4路或8路可选根据你要控制的设备数量决定。对于控制一盏台灯一个1路继电器就够了。杜邦线公对公、母对母、公对母都需要一些用于连接。受控设备建议从一个220V LED台灯开始练习功率小安全风险低。其他可选面包板方便接线、万用表调试必备、电工胶带、螺丝刀。这里重点说继电器模块。市面上常见的5V继电器模块通常支持两种触发方式高电平触发当信号引脚IN接收到高电平如3.3V时继电器吸合。低电平触发当信号引脚接收到低电平0V时继电器吸合。ESP32的GPIO输出高电平就是3.3V因此我们通常使用高电平触发模式。模块上一般有一个跳线帽或开关来选择触发方式请根据说明书设置。3.2 安全第一强电电路连接详解与绝缘处理这是整个项目中最需要谨慎对待的部分操作220V市电有触电风险务必确保在断电情况下操作如果你对强电不熟悉建议在有经验的人指导下进行。我们的目标是让ESP32通过继电器安全地控制台灯的通断。电路逻辑如下控制回路弱电ESP32的某个GPIO引脚例如GPIO23通过杜邦线连接到继电器模块的“信号输入IN”引脚。ESP32的GND连接到继电器模块的GND。继电器模块的VCC接5V电源可以从ESP32的5V引脚取但如果继电器较多建议外接电源。被控回路强电将台灯的电源线剪断务必先拔掉插头你会得到两根线。将继电器模块视为一个“电子开关”。这个开关有两组接口常开NO、公共端COM、常闭NC。我们使用“常开”和“公共端”。将剪断的台灯电源线的一端接在COM端。将另一端接在NO端。这样当继电器不动作时COM和NO是断开的台灯不亮。当ESP32给高电平信号继电器吸合COM和NO接通台灯电路闭合灯亮。接线示意图文字描述市电插头 ---(火线)--- [继电器 COM端] [继电器 NO端] ---(火线)--- 台灯 ---(零线)--- 市电插头实际上我们应该控制火线的通断。为了绝对安全可以在继电器前后都串入保险丝并将所有裸露的强电接口用绝缘胶带或接线端子妥善包裹。重要安全提示断电操作任何涉及强电线缆的连接、断开或修改必须确保设备电源插头已从插座上拔下。绝缘处理所有220V电线接头必须使用电工胶带紧密包裹或使用绝缘接线帽确保金属部分完全不会外露。固定与隔离将继电器模块和裸露的接线部分固定在绝缘的塑料盒中避免意外触碰。弱电ESP32和强电继电器输出端的线路尽量分开走线。先测试弱电在接强电之前先编写一个简单的测试程序让ESP32周期性地控制继电器吸合、断开用万用表通断档或听继电器“咔嗒”声来判断弱电控制部分是否正常。确认弱电控制完全无误后再连接强电。4. 软件开发环境搭建与核心库配置硬件连接妥当后我们进入软件环节。一个顺手的开发环境能极大提升效率。4.1 Arduino IDE环境搭建与ESP32板卡支持虽然VS Code PlatformIO是更强大的选择但为了最简化的入门我们使用经典的Arduino IDE。安装Arduino IDE从官网下载并安装最新版。添加ESP32开发板支持打开Arduino IDE点击文件-首选项。在“附加开发板管理器网址”中填入以下网址https://espressif.github.io/arduino-esp32/package_esp32_index.json如果有其他网址用逗号隔开。点击工具-开发板-开发板管理器。搜索“esp32”找到由“Espressif Systems”提供的“ESP32”开发板包点击安装。选择开发板和端口安装完成后在工具-开发板中选择你的ESP32型号例如“ESP32 Dev Module”。用USB线连接ESP32和电脑在工具-端口中选择新出现的串口通常是COMx或/dev/cu.usbserial-xxx。4.2 关键库的安装FauxmoESP与依赖FauxmoESP库是实现本地模拟的核心。在Arduino IDE中点击项目-加载库-管理库...。在库管理器中搜索“FauxmoESP”。你应该能找到由“Xose Pérez”开发的版本。点击安装。注意依赖FauxmoESP依赖于“ESPAsyncTCP”库对于ESP32或“ESPAsyncTCP”库的变体。通常安装FauxmoESP时库管理器会提示安装依赖请一并安装。如果未自动安装同样在库管理器中搜索“ESPAsyncTCP”进行安装。安装完成后你可以在文件-示例中找到FauxmoESP的示例代码这是一个很好的起点。4.3 网络配置与设备发现原理浅析在编写代码前需要理解FauxmoESP是如何工作的。它主要做两件事模拟UPnP设备启动后ESP32会在局域网内广播特定的UPnP通用即插即用消息宣告自己是一个“Belkin WeMo开关”。处理HTTP请求当Alexa收到广播并发现设备后它会向ESP32的特定端口默认1900和80发送HTTP请求来获取设备信息、控制设备开/关或查询状态。因此我们的代码需要连接本地Wi-Fi网络。初始化FauxmoESP库并设置我们虚拟设备的名称例如“书房台灯”和回调函数当Alexa发送开/关指令时这个函数会被调用。在回调函数中我们根据指令控制实际的GPIO引脚连接继电器的那个从而控制台灯。一个关键点设备名称。你给虚拟设备起的名字就是你对Alexa下达指令时说的名字。比如你设置设备名为“书房台灯”那么指令就是“Alexa打开书房台灯”。名字要简洁、唯一、易于发音避免使用特殊字符和空格可以用下划线但语音指令时通常说空格。5. 核心代码实现与分步详解现在我们开始编写最核心的Arduino代码。我会逐段解释并提供完整的、可运行的示例。5.1 基础框架Wi-Fi连接与库引入// 引入必要的库 #include Arduino.h #include WiFi.h #include fauxmoESP.h // 你的Wi-Fi凭证 #define WIFI_SSID 你的Wi-Fi名称 #define WIFI_PASS 你的Wi-Fi密码 // 创建fauxmoESP对象 fauxmoESP fauxmo; // 定义控制继电器所用的GPIO引脚 const int RELAY_PIN 23; // 根据你的实际接线修改 void setup() { // 初始化串口用于调试输出 Serial.begin(115200); Serial.println(\n\n[启动] ESP32 Alexa本地控制设备); // 设置继电器引脚为输出模式并初始化为低电平继电器断开 pinMode(RELAY_PIN, OUTPUT); digitalWrite(RELAY_PIN, LOW); // 根据你的继电器触发逻辑调整通常LOW为关闭 // 连接Wi-Fi WiFi.mode(WIFI_STA); WiFi.begin(WIFI_SSID, WIFI_PASS); Serial.print([Wi-Fi] 正在连接); while (WiFi.status() ! WL_CONNECTED) { delay(500); Serial.print(.); } Serial.println(); Serial.print([Wi-Fi] 已连接IP地址: ); Serial.println(WiFi.localIP()); // 初始化FauxmoESP fauxmo.createServer(true); // true表示启用TCP服务器处理控制请求 fauxmo.setPort(80); // 设置HTTP服务端口默认80 // 添加虚拟设备 // 参数1设备ID内部标识可自定义需唯一 // 参数2设备名称这就是你对Alexa说的名字 fauxmo.addDevice(study_light, 书房台灯); // 设置回调函数。当Alexa发送控制指令时此函数被调用。 fauxmo.onSetState([](unsigned char device_id, const char * device_name, bool state, unsigned char value) { // 回调函数逻辑将在下一部分详细展开 Serial.printf([回调] 设备 %s (ID: %d) - %s\n, device_name, device_id, state ? ON : OFF); // 根据设备ID或名称执行对应操作 if (strcmp(device_name, 书房台灯) 0) { digitalWrite(RELAY_PIN, state ? HIGH : LOW); // state为true表示开false表示关 Serial.printf([动作] 已将继电器引脚 %d 设置为 %s\n, RELAY_PIN, state ? HIGH : LOW); } }); // 启用UDP广播让Alexa能发现此设备 fauxmo.enable(true); Serial.println([Fauxmo] 设备已就绪等待Alexa发现...); } void loop() { // fauxmo.handle() 必须被循环调用用于处理网络请求 fauxmo.handle(); // 可以在这里添加其他非阻塞任务比如传感器读取 }代码解析与注意事项Wi-Fi连接务必替换WIFI_SSID和WIFI_PASS为你的实际网络信息。如果连接失败检查密码是否正确或尝试将路由器频段设置为2.4GHzESP32不支持5GHz Wi-Fi。设备名称fauxmo.addDevice(study_light, 书房台灯)中的第二个参数“书房台灯”至关重要。后续对Alexa说“打开书房台灯”即可。回调函数fauxmo.onSetState设置了一个Lambda表达式作为回调。当Alexa指令到达时库会解析出设备名和设备状态state布尔值并调用此函数。我们在函数内根据设备名控制对应的GPIO引脚。继电器逻辑digitalWrite(RELAY_PIN, state ? HIGH : LOW)这行代码是控制核心。state为true开时引脚输出HIGH3.3V为false关时输出LOW0V。请务必根据你的继电器模块的触发逻辑来调整。如果你的模块是低电平触发则需要将逻辑反过来state ? LOW : HIGH。fauxmo.handle()必须在loop()中持续调用它负责处理底层的网络通信和设备发现请求不能阻塞太久。5.2 功能增强多设备控制与状态反馈一个ESP32可以模拟多个设备。假设我们还想控制一个“客厅风扇”。// 定义更多继电器引脚 const int RELAY_PIN_LIGHT 23; const int RELAY_PIN_FAN 22; void setup() { // ... 之前的Wi-Fi连接等初始化代码不变 ... pinMode(RELAY_PIN_LIGHT, OUTPUT); digitalWrite(RELAY_PIN_LIGHT, LOW); pinMode(RELAY_PIN_FAN, OUTPUT); digitalWrite(RELAY_PIN_FAN, LOW); // 添加多个虚拟设备 fauxmo.addDevice(study_light, 书房台灯); fauxmo.addDevice(livingroom_fan, 客厅风扇); // 新增设备 fauxmo.onSetState([](unsigned char device_id, const char * device_name, bool state, unsigned char value) { Serial.printf([回调] 设备 %s - %s\n, device_name, state ? ON : OFF); // 使用 if-else 或 switch 根据设备名执行不同操作 if (strcmp(device_name, 书房台灯) 0) { digitalWrite(RELAY_PIN_LIGHT, state ? HIGH : LOW); } else if (strcmp(device_name, 客厅风扇) 0) { digitalWrite(RELAY_PIN_FAN, state ? HIGH : LOW); // 这里可以扩展比如value参数可用于控制风扇速度如果模拟的是调光设备 } }); // ... 其余初始化代码 ... }多设备管理技巧为了代码更清晰当设备很多时可以考虑使用数组或结构体来管理引脚和名称的映射关系。状态反馈上面的代码实现了控制但Alexa有时会查询设备状态例如你在App里点击开关图标。FauxmoESP库需要你提供状态查询的回调。增强代码如下// 在setup()中设置状态回调函数 fauxmo.onGetState([](unsigned char device_id, const char * device_name) { // 这个函数需要返回指定设备当前的状态true开/false关 if (strcmp(device_name, 书房台灯) 0) { return digitalRead(RELAY_PIN_LIGHT) HIGH; // 根据实际触发逻辑调整 } else if (strcmp(device_name, 客厅风扇) 0) { return digitalRead(RELAY_PIN_FAN) HIGH; } return false; // 未知设备返回关 });添加状态回调后Alexa App中的设备开关状态就能和实际硬件状态同步了。5.3 烧录与调试串口监视器的使用编译与上传在Arduino IDE中点击“验证”对勾图标编译代码若无错误点击“上传”右箭头图标将程序烧录到ESP32。打开串口监视器上传完成后点击工具-串口监视器或右上角的放大镜图标。确保右下角的波特率设置为115200。观察日志如果一切正常你将看到ESP32连接Wi-Fi、获取IP地址、并等待设备发现的日志。关键日志当出现[Fauxmo] 设备已就绪等待Alexa发现...时说明ESP32正在广播自己的存在。6. Alexa设备发现、绑定与语音控制实战软件硬件都准备好后就到了最激动人心的环节让Alexa找到并控制你的自制设备。6.1 在Alexa App中添加设备确保你的手机和ESP32连接在**同一个Wi-Fi网络2.4GHz**下。打开手机上的Amazon Alexa App。点击底部菜单的“设备”。点击右上角的“”添加设备。选择“添加设备”。在设备类型列表中选择“灯”尽管我们模拟的是开关但选择“灯”成功率最高因为WeMo最初是智能插座/灯泡品牌。你也可以尝试“插座”或“其他”。选择品牌“Belkin”这是FauxmoESP模拟的品牌。此时Alexa会开始在局域网内搜索UPnP设备。等待大约30秒。如果成功你应该会看到一个名为“书房台灯”或你自定义的名称的设备被发现。点击它完成添加。发现失败怎么办这是最常见的问题。检查网络确保ESP32和手机/Echo Dot在同一子网。有些路由器的“访客网络”或“AP隔离”功能会导致设备间无法发现请关闭这些功能。检查防火墙电脑或路由器的防火墙可能会屏蔽UDP端口1900SSDP发现协议或TCP端口80。尝试暂时关闭防火墙测试。重启大法重启ESP32、重启Echo Dot、重启路由器往往有奇效。查看串口日志FauxmoESP在发现过程中会在串口监视器打印日志观察是否有错误信息。更换设备类型在Alexa App中添加时如果“灯”不行试试“插座”、“开关”或“其他”。6.2 语音指令与场景化应用添加成功后你就可以尽情享受语音控制的便利了基本控制“Alexa打开书房台灯。” “Alexa关闭书房台灯。”分组控制在Alexa App中你可以将“书房台灯”和其他智能设备如智能灯泡放入一个房间如“书房”。然后就可以说“Alexa打开书房的所有灯。”创建例程这是智能家居的精华。你可以创建自动化场景例如“早安”场景每天上午7点自动打开书房台灯。“观影”场景对Alexa说“Alexa开始看电影”触发关闭台灯、调节灯光等一连串动作需要其他智能设备配合。语音触发说“Alexa晚安”触发关闭所有你定义的设备。将ESP32设备融入场景只需在Alexa App的“例程”设置中将“书房台灯”的“开”或“关”作为一个动作添加进去即可。6.3 稳定性优化与功耗考量项目基本跑通后我们需要关注长期运行的稳定性。Wi-Fi重连机制网络可能波动。需要在代码中加入稳健的Wi-Fi重连逻辑。一个简单的方法是在loop()中检查连接状态void loop() { fauxmo.handle(); // 简单的Wi-Fi重连 static unsigned long lastWifiCheck 0; if (millis() - lastWifiCheck 10000) { // 每10秒检查一次 lastWifiCheck millis(); if (WiFi.status() ! WL_CONNECTED) { Serial.println([Wi-Fi] 连接断开尝试重连...); WiFi.disconnect(); WiFi.reconnect(); } } // ... 其他任务 }看门狗定时器ESP32内置看门狗可以防止程序跑飞。在Arduino环境中默认是开启的。你也可以在代码中主动使用esp_task_wdt_init()来配置。功耗如果设备是插电常开功耗不是大问题。但如果想用电池供电就需要深度优化在无操作时让ESP32进入深度睡眠模式这需要更复杂的设计例如通过外部唤醒引脚且会中断Alexa的随时待命因此不适合需要即时响应的语音控制场景。插电使用是推荐方案。7. 常见问题排查与进阶技巧即使按照步骤操作也难免会遇到问题。这里我总结了一份“踩坑”清单和解决方案。7.1 问题速查表问题现象可能原因排查步骤与解决方案Alexa找不到设备1. 网络隔离2. 防火墙阻止3. ESP32代码未正确广播4. Alexa App选择错误设备类型1. 关闭路由器AP隔离/访客网络。2. 检查电脑/路由器防火墙放行UDP 1900和TCP 80端口。3. 查看串口日志确认[Fauxmo] 设备已就绪出现。4. 在Alexa App中添加时多尝试几种类型灯、插座、其他。可以发现但添加失败1. 设备名称冲突2. ESP32响应超时1. 更改代码中的设备名称避免与已有设备重名或使用特殊字符。2. 确保网络通畅尝试将ESP32和Echo Dot靠近路由器。语音指令无反应1. 回调函数未触发2. GPIO控制逻辑反了3. 继电器模块故障1. 查看串口日志当发出指令时是否有[回调]日志输出如果没有检查设备绑定是否正确。2. 检查digitalWrite逻辑确认是高电平触发还是低电平触发。3. 用万用表测量继电器信号输入引脚电压或听是否有“咔嗒”声。控制后状态不同步未实现onGetState回调函数按照5.2节的代码添加状态查询回调函数。ESP32不断重启1. 电源供电不足2. 代码内存溢出或死循环3. GPIO短路1. 尝试使用外部5V/2A电源适配器为ESP32供电USB口可能供电不足。2. 检查代码逻辑避免在loop()中使用delay()导致看门狗复位。3. 检查电路排除短路可能。设备偶尔离线1. Wi-Fi信号弱2. 路由器带机量过大或不稳定1. 改善ESP32摆放位置或增加Wi-Fi信号中继。2. 重启路由器或考虑更换性能更好的路由器。7.2 进阶技巧与扩展思路当基础功能稳定后你可以尝试以下扩展让项目更有趣物理按钮双控在GPIO上接一个轻触开关实现手动开关灯同时同步状态到Alexa。这需要在代码中检测按钮按下并手动调用fauxmo.setState来通知Alexa状态变更。模拟调光设备FauxmoESP也支持模拟调光设备Dimmable Light。在回调函数中你可以获取value参数0-255将其映射为PWM输出值控制LED灯的亮度。你需要将继电器换成可以PWM控制的LED驱动模块。集成传感器利用ESP32的ADC或连接DHT11温湿度传感器定期读取数据。虽然FauxmoESP本身不支持上报传感器数据但你可以在ESP32上搭建一个简单的Web服务器通过浏览器查看传感器数据。使用方案二如SinricPro它原生支持温湿度传感器等设备类型并能在Alexa中查询。OTA升级为ESP32配置OTA空中升级功能这样以后更新代码就不需要再用USB线连接了直接通过网络上传新固件即可。Arduino IDE和PlatformIO都支持OTA。美化与封装将ESP32、继电器模块和接线整理好装入一个合适的塑料防水盒制作成一个美观的“智能插座”成品。这个项目就像打开了一扇门门后是家庭自动化的广阔世界。从用一个语音指令控制一盏灯开始你可以逐步将家中更多的电器纳入这个智能网络打造出真正贴合自己生活习惯的智能家居环境。最重要的是在这个过程中积累的硬件连接、网络通信和问题排查经验是任何现成产品都无法给予的宝贵财富。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价