Sonoff Basic改造:刷Tasmota固件实现MQTT干接点继电器与5V供电 1. 项目缘起从“智能开关”到“万能遥控器”的蜕变几年前我为了给家里的老式台灯和风扇加上远程控制入手了几个Sonoff Basic。这玩意儿在智能家居DIY圈子里名气不小说白了就是个带Wi-Fi的继电器模块能让你通过手机App控制电路的通断。它确实解决了“开关”的问题但用久了我发现它的潜力远不止于此。官方固件和App虽然方便但限制也多比如必须依赖厂商的云服务网络一断就抓瞎自动化逻辑也比较基础。后来接触到MQTT和Home Assistant这类本地化智能家居平台我才意识到Sonoff Basic真正的价值在于它是一块绝佳的“硬件画布”。刷上开源固件它就能从一个受制于人的“智能开关”变身成一个完全由你掌控、可以通过网络协议MQTT与任何智能系统对话的“万能遥控器”。这个项目就是要把一个最基础的Sonoff Basic改造成一个支持MQTT协议的“干接点继电器”并且额外引出稳定的5V电源。改造完成后它不仅能控制灯还能联动你的NAS在深夜自动备份、让咖啡机在清晨准时启动甚至作为传感器信号的触发开关——只要你敢想它几乎能介入任何低压直流或交流电器的控制回路。2. 核心改造目标与硬件原理拆解在动手之前我们必须彻底搞清楚两件事我们要把它变成什么以及它原本是什么。2.1 什么是“MQTT干接点继电器”这听起来有点专业拆开看就明白了MQTT一种极其轻量级的发布/订阅消息协议。你可以把它理解为一个“消息中转站”或“群聊”。你的智能家居服务器如Home Assistant在“群聊”里发布一条消息“打开书房灯”。改造后的Sonoff Basic“订阅”了这个“书房灯”话题收到消息后就执行对应的动作——闭合继电器。整个过程在局域网内完成无需外网响应快隐私好。干接点 (Dry Contact)这是继电器输出的专业叫法。意思是继电器模块内部提供的只是一组纯粹的、物理的开关触点就像普通墙壁开关里的那两个铜片。这组触点与Sonoff自身的电路是电气隔离的。它不输出电压也不决定电流方向。你可以用它去控制一个24V的工业电磁阀也可以去接通一个220V的照明电路。控制什么、怎么控制完全由你外部连接的电路决定赋予了它极大的灵活性。5V输出Sonoff Basic内部有一个开关电源模块将输入的100-240V交流电AC转换为3.3V直流电DC供其主控芯片ESP8266运行。我们的改造之一就是从其电源部分稳妥地引出一个5V直流电。这个5V电源可以用来给需要它供电的外部设备供电比如一个温湿度传感器、一个红外接收头或者另一个微控制器从而实现“一线供电一体控制”无需再外接一个电源适配器。所以改造的终极目标是得到一个可以通过MQTT指令控制、带有一组通用开关触点、并能提供5V/1A左右辅助电源的智能继电器模块。2.2 Sonoff Basic R2 硬件探秘我手头这个是市面上最常见的Sonoff Basic R2版本。撬开外壳可以看到一块紧凑的PCB板。核心大脑 (ESP8266)板子中央那个小小的方形芯片是核心。这是一颗集成了Wi-Fi功能的微控制器性能强大正是其可玩性的基础。我们后续刷写的第三方固件就是运行在它里面。电力心脏 (开关电源模块)交流电从L、N输入端进入后首先经过一个整流桥堆然后通过一个型号为OB2500CP的开关电源芯片及其周边电路电感、电容、二极管将高压直流转换为低压直流。这部分电路原本输出约3.3V给整个系统供电。我们需要从中找到合适的点位引出5V电压。执行机构 (继电器)一个蓝色的塑封继电器型号通常是HF32F/5-Z或类似。它有一组线圈接受芯片控制和一组转换触点COM, NO, NC。COM是公共端NO常开和COM在继电器不动作时是断开的动作后闭合NC常闭则相反。我们通常使用COM和NO作为控制触点。控制接口 (GPIO)ESP8266芯片的引脚被引出了若干到板子的焊盘上。其中GPIO0、GPIO14等关键引脚的状态决定了芯片的启动模式正常启动还是刷机模式。GPIO12通常被用来控制继电器。这些焊盘是我们刷机时需要接触以及未来可能用于扩展功能的地方。注意操作涉及220V强电即使断电后板子上的大电容也可能储存有高压电。务必在操作前断开电源并等待几分钟或者用万用表确认电容放电完毕。安全永远是第一位的。3. 固件刷写赋予它“新灵魂”要让Sonoff Basic听懂MQTT指令必须替换掉它的原厂固件。这里我选择Tasmota因为它成熟、稳定、社区支持强大对MQTT的支持是原生级的。3.1 刷机前的硬件准备你需要一个USB转TTL串口模块推荐CP2102或CH340G芯片的以及几根杜邦线母对母。连接串口模块将串口模块的3.3V引脚连接到Sonoff板子上标有3.3V的焊盘切勿接5V或VIN会烧芯片。GND接GND。RX接Sonoff的TXTX接Sonoff的RX交叉连接。进入刷机模式这是关键一步。Sonoff Basic的GPIO0引脚需要在上电时被拉低到GND才能进入固件烧录模式。你需要用一根杜邦线一头接在GPIO0焊盘上另一头准备在通电瞬间接触GND焊盘。也可以焊一个轻触开关在两者之间方便操作。软件准备在电脑上安装串口驱动根据你的模块芯片型号安装并下载Tasmota固件。我推荐使用Tasmota WebInstaller这个工具它把下载和刷写过程集成在了一起非常方便。3.2 使用 Tasmota WebInstaller 一键刷机访问 Tasmota 官方安装工具页面。将Sonoff Basic通过串口模块连接到电脑在工具中选择正确的串口号。工具会自动检测设备类型。对于Sonoff Basic它通常能正确识别。在固件选择页面选择最新稳定版的tasmota.bin基础版本即可功能最全。点击“Install”安装。此时先给Sonoff Basic上电插上220V电源同时确保GPIO0已接地。工具会显示连接并开始擦除、烧写。整个过程大约30秒。刷写成功后工具会提示。此时断开Sonoff的电源移除GPIO0和GND之间的短接线。3.3 初次配置与网络连接重新上电后Sonoff会创建一个名为tasmota_XXXXXX的Wi-Fi热点。用手机或电脑连接这个热点。连接后通常会自动弹出配置页面。如果没有在浏览器打开192.168.4.1。在配置页面找到你的家庭Wi-Fi网络SSID输入密码然后点击保存。Sonoff会自动重启并尝试连接你的路由器。连接成功后你需要到路由器的管理界面或使用Fing这类网络扫描App查看DHCP客户端列表找到名为tasmota-XXXXXX的设备记下它的IP地址。在浏览器中输入这个IP地址就能看到Tasmota的Web管理界面了至此固件刷写成功。4. Tasmota深度配置从连接到自动化进入Web界面我们开始进行核心的MQTT和继电器功能配置。4.1 MQTT服务器连接配置这是让Sonoff与智能家居大脑对话的关键。在Tasmota网页点击Configuration - Configure MQTT。Host填写你的MQTT服务器地址。如果你在树莓派上安装了Mosquitto就填树莓派的局域网IP例如192.168.1.100。Port默认1883如果改了就用改后的端口。Client可以自定义如sonoff_basic_01用于在服务器端识别。User和Password如果你的MQTT服务器设置了认证就填写。Topic这是最重要的设置。我建议使用%prefix%/%topic%/的默认格式。它会生成像tele/sonoff_basic_01/STATE和cmnd/sonoff_basic_01/POWER这样的主题。%topic%默认是你的设备名。你可以修改Full topic为homeassistant/%prefix%/%topic%以更好地融入HA。点击“Save”设备会重启并尝试连接MQTT服务器。在Console标签页输入Status 0查看输出中MQTT是否显示为Connected。4.2 继电器与按钮功能配置默认情况下Tasmota已经将继电器映射好了。但我们需要理解并优化其行为。继电器控制在Console输入Power on和Power off应该能听到继电器清脆的吸合与释放声同时网页上的按钮状态会变化。对应的MQTT命令主题就是cmnd/你的设备名/POWER发送ON或OFF的payload即可控制。物理按钮功能Sonoff Basic上那个白色按钮默认被设置为短按切换继电器状态长按进入配网模式。这很合理通常无需更改。你可以在Configuration - Configure Module里查看和修改按钮对应的GPIO引脚关系Button1通常对应GPIO0。状态反馈Tasmota会定期向tele/设备名/STATE主题发布设备状态JSON格式包含继电器开关状态、Wi-Fi信号强度等。这对于Home Assistant等平台自动发现设备至关重要。4.3 集成到Home Assistant (HA)这是体验自动化魅力的时刻。如果HA中已经安装了Mosquitto add-on并正确配置。在Tasmota设备正确连接MQTT后重启HA。HA的MQTT自动发现功能很可能已经找到了它。在“设备与服务”中你应该能看到一个来自MQTT的新设备。点击“配置实体”HA会自动为其创建一个名为switch.sonoff_basic_01的开关实体。现在你可以在HA的仪表盘上添加这个开关卡片进行手动控制。更重要的是你可以编写自动化例如“当人体传感器检测到卫生间有人移动时打开这个开关即打开灯”或者“在日出前30分钟打开这个开关即打开咖啡机”。5. 硬件改造实战引出5V电源与干接点软件部分搞定后我们来实施硬件改造让它真正成为“万能”模块。5.1 定位并安全引出5V电源Sonoff Basic的原始电源输出是3.3V我们需要找到开关电源电路中电压稍高的点。经过测量和社区验证在开关电源芯片OB2500CP附近有一个滤波电容通常是C7一个较大的贴片电容可能标有106或226其正极对地GND的电压在5V到5.5V之间。这个电压是未经过LDO稳压的但驱动一些小电流设备足够稳定。操作步骤断电并放电确保设备完全断电并用万用表确认高压电容两端无电压。定位测试点找到C7电容或类似的大贴片电容。用万用表直流电压档黑表笔接一个已知的GND点如USB串口模块的GND焊盘红表笔轻轻触碰该电容的正极有极性标识的一端。上电确认电压在5V左右。焊接引线确认点位后断电。使用细导线如AWG24硅胶线一端焊接在电容正极另一端准备引出。同样从任意GND点焊接一根地线。过孔与绝缘在Sonoff外壳上合适的位置钻一个小孔将两根导线穿出。务必确保导线与内部高压部分交流输入侧、继电器触点引脚有充分的物理隔离必要时使用热缩管或绝缘胶带包裹。可以在导线的外部端焊接一个标准的2.54mm排针母座方便插拔。重要警告这个5V电源是从主电源直接变换而来与市电没有隔离。绝对禁止用这个5V去给任何需要与人体接触或接地的设备如手机、平板充电。它仅适用于同样“浮地”的、完全封闭在绝缘外壳内的低压电路供电例如同一个控制箱里的传感器。5.2 明确与使用干接点这部分其实无需改造只需要正确理解和使用。识别触点继电器上通常有标识。COM公共端、NO常开端、NC常闭端。我们使用COM和NO。接线示例控制一盏灯将市电的火线接入Sonoff的L-INL-OUT接到灯的一端。灯的零线直接接市电零线。这是Sonoff的标准用法。作为一个低压开关假设你有一个12V的直流水泵由单独的12V适配器供电。将适配器正极输出接到继电器的COM端将水泵的正极接到继电器的NO端。水泵的负极直接接适配器负极。这样当Tasmota控制继电器闭合时12V电路导通水泵工作。这里的继电器触点就是纯粹的“干接点”只负责通断不提供电源。6. 进阶应用与避坑指南改造完成后它的玩法就只受你的想象力限制了。6.1 应用场景拓展智能鱼缸/植物灌溉用5V电源给一个土壤湿度传感器供电传感器数据通过另一个GPIO口回传给ESP8266需额外编程。Tasmota支持规则Rule可以设定当湿度低于阈值时自动闭合继电器打开水泵浇水。车库门状态监控与控制将干接点并联到车库门控制器的按钮开关上。再通过一个门磁传感器连接到ESP8266的另一个GPIO。这样你不仅可以用手机遥控车库门还能在HA里看到车库门的实时状态开/关。传统家电红外遥控如果你有一个支持红外学习的智能插座或单独的红外模块可以用这个5V电源给它供电。然后编写HA自动化“当Sonoff继电器闭合比如由‘离家模式’触发时向红外模块发送‘电视关机’的指令。”实现全屋联动断电。6.2 常见问题与排查心得刷机失败电脑无法识别串口检查驱动确保安装了正确的USB转TTL驱动。检查接线确保3.3V、GND、TX、RX连接正确且牢固。尤其注意一定是3.3V不是5V。检查GPIO0确保在上电瞬间GPIO0是持续稳定地接地。接触不良是失败主因。焊一个轻触开关是最可靠的方法。Tasmota无法连接Wi-Fi或MQTTConsole信息在Tasmota的Web Console里输入Status 0和Wifi查看详细状态。Wi-Fi信号如果信号弱RSSI值低于-70考虑调整设备位置或增加中继。MQTT连接检查服务器IP、端口、用户名密码是否正确。在服务器端使用mosquitto_sub命令监听#主题看设备是否在尝试连接和发布消息。5V电源带载能力差或不稳定从C7电容引出的5V电源其输出电流能力有限估计在300-500mA左右。如果连接设备后电压被拉低说明负载太重。建议仅用于传感器、小功率单片机等。如果需要更大功率的5V电源更安全的做法是使用一个独立的、与市电隔离的5V开关电源模块将其输入并联在Sonoff的交流输入端L N之前利用Sonoff的继电器来控制这个独立电源的通断。继电器状态与预期相反有些设备的控制逻辑是“低电平触发”。你可以在Tasmota的Console里使用SetOption0命令来反转继电器的控制逻辑。SetOption0 1会将其设为“开关接通时继电器断开”根据你的实际接线和设备需求调整。这个项目最让我着迷的地方在于它用极低的成本和一定的动手门槛打破了消费级智能硬件和工业控制之间的壁垒。当你看到自己改造的小模块稳稳地执行着你编写的自动化指令控制着家里大大小小的设备时那种成就感和掌控感是购买成品无法比拟的。它不再是一个“Sonoff开关”而是你智能家居系统中一个可靠、透明的神经元节点。