如何实现Python程序与Particle Internet Button代码的联动触发?
嘿,我来帮你搞定这个需求——让Python代码触发Particle Internet Button的逻辑,而且只在灯亮的时候同步执行。下面是一步步的实现方案:
第一步:在Particle端准备可远程调用的函数
首先你需要在Internet Button的代码里注册一个云函数,这样Python就能通过Particle云平台调用它。这个函数会先检查灯的状态,只有灯亮的时候才执行你要的逻辑:
// Internet Button 端代码 #include "InternetButton/InternetButton.h" InternetButton button = InternetButton(); // 注册给Python调用的云函数 int runWhenLightOn(String unused) { // 先检查灯的状态(这里假设你用D7引脚控制灯,根据实际接线调整) if (digitalRead(D7) == HIGH) { // 这里写你要同步执行的代码,比如触发按钮的LED特效 button.allLedsOn(255, 0, 0); // 全亮红灯 delay(1000); button.allLedsOff(); return 1; // 返回1表示执行成功(灯亮状态) } else { return 0; // 返回0表示灯没亮,不执行逻辑 } } void setup() { button.begin(); pinMode(D7, INPUT_PULLUP); // 根据你的灯电路配置引脚模式 // 把函数注册到Particle云,名字是"runWhenLightOn" Particle.function("runWhenLightOn", runWhenLightOn); } void loop() { // 你的常规循环逻辑(比如检测按钮按下等) button.update(); }
解释一下:这个runWhenLightOn函数会被Python远程调用,它先判断灯的状态,符合条件才执行目标动作,返回值用来告诉Python是否执行了逻辑。
第二步:Python端实现触发逻辑
接下来用Python通过Particle的API来调用这个云函数。首先安装Particle的Python客户端库:
pip install particle-api-client
然后写Python代码,实现登录Particle云、调用设备函数的逻辑:
from particle import Particle, ParticleCloudError # 初始化Particle客户端 client = Particle() # 方式1:用账号密码登录(不建议硬编码,最好用环境变量) # client.login("你的Particle邮箱", "你的Particle密码") # 方式2:用AccessToken更安全(在Particle控制台的Settings里生成) client = Particle(access_token="你的Particle Access Token") # 获取你的Internet Button设备(用设备名称或ID,在Particle控制台能看到) device = client.get_device("你的设备名称/ID") def trigger_particle_logic(): try: # 调用Particle端的runWhenLightOn函数,参数这里不需要所以传空字符串 response = device.call_function("runWhenLightOn", "") return_value = response.get("return_value") if return_value == 1: print("✅ 灯处于点亮状态,已同步执行Particle端代码!") else: print("❌ 灯未点亮,未执行Particle端代码。") except ParticleCloudError as e: print(f"⚠️ 调用出错:{str(e)}") # 这里可以根据你的需求触发这个函数,比如: # 1. 定时检查后触发 # 2. 当Python端检测到某个事件(比如传感器信号)时触发 # 3. 直接手动调用测试 trigger_particle_logic()
关键细节说明:
- 安全性:别把账号密码硬写在代码里!去Particle控制台生成一个AccessToken,用它登录更安全,而且权限可以控制。
- 同步执行:
call_function是同步调用,Python会等待Particle设备执行完函数并返回结果,完全符合你“同步执行”的需求。 - 灯状态判断:上面的方案是让Particle端自己判断灯的状态,这样更可靠——毕竟设备本身最清楚自己的硬件状态。如果Python端也能获取灯的状态(比如通过其他传感器),也可以先在Python端判断,再决定是否调用,能减少云请求次数。
第三步:测试验证
- 把Particle代码烧录到Internet Button,确保设备在线(Particle控制台显示Online)。
- 点亮你的灯(用现有逻辑让D7为高电平)。
- 运行Python代码,看控制台输出,同时观察Internet Button是否执行了你设置的动作。
这样就能完美实现“当灯亮时,Python触发Particle代码同步执行”的需求啦~
内容的提问来源于stack exchange,提问作者S.S
相关产品推荐
相关产品推荐

