×

Sonoff基本Wifi扩展器——MQTT干接点继电器

消耗积分:0 | 格式:zip | 大小:0.00 MB | 2023-06-19

陈丽

分享资料个

描述

好的,我有一些第一代 Sonoff 基本设备,我不想将它们与 220v 一起使用,因为它们在那个版本中还不是很安全。他们已经躺了一会儿,等着和他们做点什么。

所以我偶然发现了 GitHub ( https://github.com/martin-ger/esp_wifi_repeater ) 上的 martin-ger 项目并破解了 Sonoff。

首先,我将 Sonoff 调整为在 5vDC 上工作,并禁用了电路的其余部分。

补给品:

Sonoff Basic R1

5v直流电源

第 1 步:5v DC 上的 Sonoff

 
 
 
 
pYYBAGOYATyAMn5nAAZ4DZWEwL8884.jpg
 
1 / 3
 

所以这很简单。

您将在第一张图片中看到 Sonoff 使用 AMS1117 稳压器将电压从 5v 变为 3.3v。稳压器上的引脚从左到右依次为:IN (GND)、OUT、IN (+)。通过将一根小线焊接到 IN(GND) 和 IN(+),您可以连接 5v 直流电源为电路板的其余部分供电。因为那里可能有点繁琐,所以我使用了其他 2 个连接点。AMS117(方形 pcb 标记)右侧的空焊点是 GND。就在左边有一个+连接。看看特写照片。

好的,一旦完成,您就可以在进行其他更改之前进行测试。

第 2 步:安装新固件

 
 
 
 
poYBAGOYAUSAX5URAAJNSxP5H9U339.png
 
1 / 2
 

在 Github https://github.com/martin-ger/esp_wifi_repeater的固件文件夹中,您将看到 .bin 文件:

  • 0x00000.bin
  • 0x02000.bin

你需要下载这些。

然后访问 ESP Expressif 网站并下载 ESP 下载工具(仅限 PC):

https://www.espressif.com/en/support/download/other...

启动它,您将首先看到一个选择窗口 - 选择 DEVELOPER,然后选择 ESP8266。屏幕应该看起来像上面的屏幕截图。

然后单击右侧的“...”浏览并首先选择 0x00000 文件。在旁边的框中添加内存位置:0x00000。

对第二个文件执行相同的操作,并将内存位置设置为:0x02000。

完成后,拿起您最喜欢的 USB-TTL 并连接 Sonoff(确保您没有任何其他电源连接到 Sonoff 板)。还要仔细检查 USB-TTL 是否设置为 3.3v!

在将 USB-TTL 插入计算机时按下 Sonoff 上的按钮以激活闪光模式。

在ESP下载工具中选择COM口,速度设置为1152000,点击START。

它应该只需要 3 或 4 秒。有时我的板子没有正确进入闪光模式——只需拔出 USB-TTL,按下按钮并重新插入。

好的 - 完成后,我们在 Sonoff ESP8266 上获得了新固件。

断开 USB-TTL 并将 5v 直流电源连接到 Sonoff。

第 3 步:配置您的 Wifi

我们将使用 Telnet 来配置设备。我用腻子。

将电源连接到 Sonoff 后,您应该会看到一个新的 Wifi SSID 出现:MyAP。

用您的计算机连接到它 - 最初没有密码。

连接后打开 Putty 并将其设置为:192.168.4.1 PORT 7777

连接完成后,您将看到: CMD>

通过使用基本命令,您将配置 Wifi 设备。粗体是命令 - 后面的斜体是您的设置。我的第一个命令总是给出一个“无效命令”——所以重复一遍。

指令>

设置 ssid your_home_router's_SSID

设置密码your_home_router's_password

设置 ap_ssid the_ESP's_new_ssid

设置 ap_password ESP's_password

show // (检查参数)

set status_led 13 //(LED 在板上的 GPIO 13 上)

保存//(!!!不要忘记)

重置//(=重新启动)

好的,现在您有一个基本的子网络,您可以使用它来连接与您的主 Wifi 分开的物联网设备。

或者,您可以将其用于客人、保姆、使用计时器访问互联网的孩子......

下一步 - 添加 MQTT、干接点继电器和清理。

第 4 步:使用 MQTT 和继电器干接点进行清理、增强

清理

首先,我清理了电路板并为干继电器接触行为做好了准备。

这表示:

  • 将 5v DC 连接到绿色端子
  • 切割 PCB 上的旧路线(切割板的顶部和底部),因此端子实际上是隔离的,并直接连接到我们之前在 pcb 上焊接的 2 个点。在顶部,您可以在红线所在的位置切割它 - 您会看到我最初将它们切割得更远。我用一把斯坦利刀,然后用一把非常锋利的刮刀。相反,通常一个小的一字螺丝刀也可以刮PCB的铜。
  • 如图所示,在继电器(焊料轨道)附近切割 PCB 并安装一个桥接器。基本上,继电器的左侧 2 个连接仍然由 3.3v 供电。右侧的 2 个触点现在将与电路板顶部的绿色端子形成一个闭合回路。从而形成基本的干接触。

MQTT

完成后,我将 5v 直流电源连接到绿色端子,以便电路板通电。当 Wifi 运行时,您应该会看到绿色 LED 闪烁。

对于 MQTT,我在带有 Aedes MQTT 的 Raspberry Pi 3A+ 上使用节点红色设置。让我知道是否有人有兴趣扩展本教程以了解如何设置它。但它也适用于任何其他 MQTT 代理。

将 Putty 连接到 Sonoff。您可以使用内部 (192.168.4.1) 或外部 IP(从 Wifi 路由器获得的 IP)。

指令>

设置 mqtt_host IP_from_your_MQTT_server //(我保留了其余的默认值 - MQTT 应该在主网络上 - 所以在你的主要 Wifi 内部或互联网上公共)

gpio 12 mode out //(继电器在 GPIO 12 上)

节省

重置

确保保存并重置。MQTT 设置仅在重新启动时更改。

完成后,您可以使用 MQTT 客户端工具检查消息。我使用 MQTT 资源管理器。

第 5 步:测试 MQTT

 
 
 
 
pYYBAGOYAXWAfJf2AAozQhn0vlE573.jpg
 
1 / 2
 

15 秒后,您应该会看到 ESP 推送消息。

要测试中继,您发布一条消息:

topic: /WiFi/ESPRouter_xxxxxx/command //(xxxxxx 是你的设备 HEX 值)

message: gpio 12 set high for 4 //(设置 gpio 12,继电器,为高 4 秒)

您应该听到继电器的咔嗒声,ESP 会将命令反馈发送到主题(“响应”)。

从现在开始,您可以使用 telnet 或 MQTT 来配置和更改设置。任何有效的命令都可以通过 MQTT 发布。

而已。您现在应该有一个低压 Sonoff、私有 Wifi SSID、MQTT 和一个可以控制的干继电器。

如果您觉得这很有用、我犯的任何错误、您发现的错误或改进,请在评论中告诉我!

谢谢。

第 6 步:改进...?

范围是马马虎虎

我有一些来自旧路由器的 2.4Ghz 迷你天线。

我将尝试将它安装在 Sonoff 上,看看它是否会稍微提高范围。

访问 AP/ST -锁定网页访问

默认情况下,网页是“打开的”。因此,理想情况下,当一切正常时,打开 Putty 并发送“锁定”命令并保存。默认情况下,它将使用您的 ST 密码来保护网页。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.lene-v.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'Sonoff基本Wifi扩展器——MQTT干接点继电器',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.lene-v.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);