如何在IFTTT中实现Nordic Thingy 52按键触发智能设备开关切换
实现Nordic Thingy 52按键触发Smart Life设备的开关切换功能
我来帮你解决这个按键切换Smart Life设备的问题!核心思路就是记录上一次的动作状态,每次按键触发时执行相反操作,下面给你几个可行的方案,按需选择:
方案1:用IFTTT + Google Sheets 实现无代码状态切换
这个方案适合不想碰代码的用户,用现成的自动化工具组合就能搞定:
- 第一步:准备状态存储表格
新建一个Google Sheets表格,在A1单元格输入last_action,B1单元格初始值设为off(假设你的设备初始是关闭状态,要是初始是开就设为on)。 - 第二步:用IFTTT的多步骤Applet实现逻辑
打开IFTTT创建一个新的Multi-step Applet:- 触发条件:选择
Webhooks服务,触发事件设为button_press(和你Nordic Thingy 52发送的事件名称一致)。 - 第一步动作:选择
Google Sheets服务,动作选Get cell value,指定你刚才创建的表格,单元格选B1(读取上一次的动作状态)。 - 添加条件判断:用IFTTT的
If功能,判断读取到的last_action值:- 如果是
off,就执行Smart Life的“开启”动作,然后再用Google Sheets的Update cell动作把B1单元格改成on; - 如果是
on,就执行Smart Life的“关闭”动作,然后把B1单元格改成off。
- 如果是
- 触发条件:选择
方案2:用Node-RED做中间代理(灵活可控)
如果你有一点编程基础,这个方案更灵活,能自定义更多逻辑:
- 第一步:搭建Node-RED环境
可以本地安装、用Docker部署,或者用云服务(比如IBM Cloud的Node-RED实例),快速搞定环境。 - 第二步:配置节点流
- 拖入
http in节点:设置接收POST请求,路径设为/thingy-toggle,这个就是你Nordic Thingy 52要发送Webhook的地址。 - 拖入
function节点,写入状态切换逻辑:// 从Node-RED上下文读取上一次动作,默认初始为'off' let lastAction = context.get('lastAction') || 'off'; // 计算当前要执行的相反动作 let currentAction = lastAction === 'off' ? 'on' : 'off'; // 更新上下文里的状态记录 context.set('lastAction', currentAction); // 把动作传给下一个节点 msg.payload = { action: currentAction }; return msg; - 拖入
http request节点:调用Smart Life的API执行开关动作。你需要先获取Smart Life的API密钥和设备ID(参考官方开发者文档或者第三方集成工具),根据msg.payload.action的值发送对应的开启/关闭请求。 - 拖入
http response节点:给Nordic Thingy 52返回成功响应,确保请求链路完整。
- 拖入
- 第三步:把Nordic Thingy 52的Webhook地址改成Node-RED的
http in节点地址(比如http://你的Node-RED地址:1880/thingy-toggle)。
方案3:直接查询Smart Life设备状态(最准确)
这个方案不需要额外存储状态,直接查询设备当前的实际状态,再执行相反动作,避免状态不同步:
- 第一步:获取Smart Life API权限
参考Smart Life官方开发者文档,申请API密钥,拿到你的设备ID和访问凭证。也可以用第三方工具(比如pySmartPlugPython库)简化API调用。 - 第二步:部署逻辑到云函数
把查询+切换的代码部署到云函数(比如AWS Lambda、Google Cloud Functions):from pySmartPlug import SmartPlug def toggle_device(event, context): # 替换成你的设备信息 plug = SmartPlug("设备IP地址", "Smart Life账号", "密码") current_state = plug.state # 执行相反动作 if current_state == 'ON': plug.turn_off() else: plug.turn_on() return {"status": "success"} - 第三步:把Nordic Thingy 52的Webhook地址设为云函数的触发地址,每次按键就会触发云函数查询设备状态并切换。
内容的提问来源于stack exchange,提问作者mheavers
相关产品推荐
相关产品推荐

