开开心心的在外面玩,突然想起自己走时忘记关了水电。或者家中漏水了,自己第一时间不知道,"人在外面玩,家在水中泡"。哪么,如何解决自己出行时的顾虑呢?跟随作者,一期来解决吧!
第一部分:控制你的“电”
当下,物联网的广泛普及。对“远程”控制电已经成为现实。在上期文章中,作者介绍过利用模块,无需对线路进行大规模的改造,从而实现远程控制开关的状态、实时功率等。详情参考下方文章。
但在部分生活场景中,线路的改造相对比较麻烦。而智能插座彻底解决你的烦恼。本文以Plug CN Gen3这款为例,介绍它的使用和进阶玩法。
01产品实物展示



02 快速接入
接下来,我们快速接入设备到Shelly APP。轻松管理设备!

轻松三步 快速加入
03 小试牛刀
和其他市面上常见的智能插座一样,该有的功能一个也不会少。

04 接入HomeAssistant
设备支持WiFi接入和蓝牙网关接入。首先在蓝牙设置中开启蓝牙网关。

接下来,在HA集成中,会自动发现设备。(如发现不了,请用WiFi方式添加)

加入能源


实时功率
利用Bemfa插件,我们便可以接入米家,控制设备更方便。

05 进阶玩法
其实很多人会说,目前市面上这类产品多不盛数,这有什么可写的呢?其他Shelly系列的产品,最大的特色在于开放性。用户可以自己编写属于自己的特定脚本,支持MQTT、WSS、UDP等常见的开源协议,不仅让你用的愉快,更让你玩的开心。接下来,通过几个小场景来看看吧!
📧负载自动断电并通知
当功率大于阈值时,自动断电,并通过Server酱微信通知。方便我们第一时间掌握设备情况。
示例代码
var POWER_LIMIT = 50; // 功率阈值(W),超过即断电(当前为测试值,正式使用时改回 2500)
var CHECK_INTERVAL = 5000; // 检测周期(毫秒),建议 3~10 秒
var ALERT_COOLDOWN = 300000; // 报警冷却时间(毫秒),避免恢复供电后又超限时频繁刷屏
var SENDKEY = "SCxxxxxxxxxxxNG7o2r"; // Server酱 SendKey
var lastAlertAt = 0; // 上次推送时间戳
// 补零
function pad(n) { return (n < 10 ? "0" : "") + n; }
// Espruino 不支持 Date.toLocaleString,手动格式化本地时间
function formatTime(d) {
return d.getFullYear() + "-" + pad(d.getMonth() + 1) + "-" + pad(d.getDate()) +
" " + pad(d.getHours()) + ":" + pad(d.getMinutes()) + ":" + pad(d.getSeconds());
}
// 发送 Server酱 通知(新版 ServerChan API,JSON 格式,避免依赖 encodeURIComponent)
function notify(title, desp) {
Shelly.call("HTTP.Request", {
method: "POST",
url: "https://sctapi.ftqq.com/" + SENDKEY + ".send",
body: JSON.stringify({ title: title, desp: desp }),
headers: { "Content-Type": "application/json" }
}, function (res, errCode, errMsg) {
if (errCode === 0 && res && res.code === 200) {
console.log("[Server酱] 推送成功");
} else {
console.log("[Server酱] 推送失败:", "errCode=" + errCode,
"errMsg=" + errMsg, "http=" + (res ? res.code : "none"));
}
});
}
// 主检测逻辑
function checkPower() {
var st = Shelly.getComponentStatus("switch", 0);
if (!st) {
console.log("[检测] 未获取到 switch:0 状态,跳过(确认设备带功率计量)");
return;
}
var power = st.apower || 0; // 当前有功功率(W)
var isOn = st.output === true; // 继电器是否处于闭合(通电)状态
if (isOn && power > POWER_LIMIT) {
// 自动断电
Shelly.call("Switch.Set", { id: 0, on: false });
console.log("[断电] 功率 " + power + "W 超过阈值 " + POWER_LIMIT + "W,已自动断开继电器");
// 冷却期内不重复推送
var now = Date.now();
if (now - lastAlertAt >= ALERT_COOLDOWN) {
lastAlertAt = now;
var info = Shelly.getDeviceInfo();
notify(
"⚠️ 设备功率超限,已自动断电",
"设备名称: " + (info.name || info.id) + "\n" +
"设备 ID: " + info.id + "\n" +
"检测功率: " + power + " W\n" +
"功率阈值: " + POWER_LIMIT + " W\n" +
"处理动作: 自动断开继电器\n" +
"触发时间: " + formatTime(new Date())
);
}
}
}
// 启动周期检测(第二个参数 true 表示循环执行)
Timer.set(CHECK_INTERVAL, true, checkPower);
console.log("[启动] 功率过载保护已就绪,阈值 " + POWER_LIMIT + "W,检测周期 " + CHECK_INTERVAL + "ms");


聪明的你,也许会说自己不会写。但现在是AI时代,只要你有好的想法,剩下的交给AI就行了。
😘接入MQTT
对于Shelly的设备,最好玩的莫过于接入MQTT了,将数据接入数据库,小程序等,控制更方便。

配置MQTT✈️通过mqtt消息开启关闭设备
向主题shellyplugcng3-48f6eebe9b0c/command/switch:0发送数据如下:
#开启设备
on
#关闭设备
off🧲详细信息shellyplugcng3-48f6eebe9b0c/status监听主题,效果如下

了解MQTT的数据形式后,我们便可以轻松接入小程序。

此外,定时任务、场景联动等基础功能,可以根据自己的实际情况去部署,这里不在啰嗦。
第二部分:控制你的“水”
说完了电,现在谈谈水吧!相对而言,水的危害也相当大。外出游玩,水管爆裂,整个家浸在水中,而你却一无所知。这时我们仅需一个水浸传感器便可以解决你的烦恼。
这次,我们采用的设备型号为Shelly Flood Gen4。

01 部署和入手
设备的接入和之前一样,轻松几步接入APP

需要注意的是,设备采用4节干电池供电,虽然连接的WiFi网络,但它很省电,因为只有在监测到有水时才开机,其他时间处于休眠状态。
实物部署效果

线可以在接头能常见漏水的地方多绕几圈
当设备监测到水浸时,在APP中也能第一时间收到提示。

02 接入HA
支持WiFi和蓝牙两者形式接入HA,这里推荐以蓝牙的形式接入,相对而言比较省电。亦或者用MQTT接入。

03 进阶玩法
有时候,当监测到水浸时,我们有可能无法第一时间收到通知。因此,我们可以通过Server酱或者发送邮件。这样我们可以在第一时间收到通知,做出相关处理。


总结
两款小设备,一个管电、一个管水,让你出门在外也能安心玩耍,再也不用担心水电之忧。想入手的话,JD Shelly 旗舰店双十一有活动:10 月 31 号晚 8 点到 12 点前 5 名半价、全店 8 折,报我名字随时 8 折,有兴趣自己去旗舰店逛逛就行。
更多精彩文章 欢迎关注我们
本文首发于微信公众号,原文链接:人在外面玩,家在水中"浸"?你该如何安心出门