如何通过编程方式触发IFTTT Applet的开关?(C#实现需求)
用C#编程触发IFTTT Applet启停(控制Sonoff开关)
嘿,要实现用C#控制你的Sonoff开关Applet启停,核心是利用IFTTT的Webhooks服务——这是IFTTT专门给开发者留的编程控制入口。下面是一步步的实操方案:
1. 先搞定IFTTT端的配置
- 登录IFTTT,搜索并进入Webhooks服务页面。
- 点击页面右上角的Documentation,你会拿到自己的专属密钥(记下来,后面代码要用到),还有触发事件的基础URL格式:
https://maker.ifttt.com/trigger/{event_name}/with/key/{your_key}。 - 调整你的目标Applet(DKPUF3MH)的触发源:
进入Applet的编辑页面,把原来的触发方式(比如语音、手动按钮)替换成Webhooks,然后设置触发事件名称——比如分成两个事件
sonoff_turn_on和sonoff_turn_off,或者用一个sonoff_toggle事件配合参数来区分启停状态。
2. C#代码实现
我们用HttpClient发送HTTP POST请求来触发Webhooks事件,下面是完整的控制台程序示例,直接就能跑:
using System; using System.Net.Http; using System.Text; using System.Threading.Tasks; class SonoffIFTTTController { // 替换成你自己的Webhooks密钥 private const string IftttWebhookKey = "你的IFTTT密钥"; // Webhooks触发接口的基础模板 private const string IftttApiTemplate = "https://maker.ifttt.com/trigger/{0}/with/key/{1}"; private static readonly HttpClient _httpClient = new HttpClient(); static async Task Main(string[] args) { // 测试:先触发Sonoff开启 await TriggerIftttEvent("sonoff_turn_on"); Console.WriteLine("Sonoff开启请求已发送"); // 等3秒后触发关闭 await Task.Delay(3000); await TriggerIftttEvent("sonoff_turn_off"); Console.WriteLine("Sonoff关闭请求已发送"); } /// <summary> /// 触发指定的IFTTT Webhooks事件 /// </summary> /// <param name="eventName">Webhooks中配置的事件名称</param> private static async Task TriggerIftttEvent(string eventName) { try { var requestUrl = string.Format(IftttApiTemplate, eventName, IftttWebhookKey); // 如果需要传递参数(比如用一个事件控制启停,传"on"/"off"),可以取消下面的注释 // var payload = new { value1 = "on" }; // var jsonContent = System.Text.Json.JsonSerializer.Serialize(payload); // var content = new StringContent(jsonContent, Encoding.UTF8, "application/json"); // 无参数的POST请求(简单场景够用) var content = new StringContent(string.Empty, Encoding.UTF8, "application/json"); var response = await _httpClient.PostAsync(requestUrl, content); // 确保请求成功,失败会抛出异常 response.EnsureSuccessStatusCode(); } catch (HttpRequestException ex) { Console.WriteLine($"触发失败:{ex.Message}"); } } }
代码细节说明:
- 密钥替换:把
你的IFTTT密钥换成你从Webhooks页面拿到的专属密钥。 - 事件名称匹配:
sonoff_turn_on和sonoff_turn_off必须和你在IFTTT Applet里设置的Webhooks事件名称完全一致,大小写都不能错。 - 参数传递:如果想用一个事件控制启停,可以取消代码中JSON payload的注释,传递
value1参数(比如传"on"或"off"),然后在IFTTT的Applet动作里引用这个参数来判断执行开还是关操作。
3. 依赖补充
如果用JSON序列化传递参数,在.NET Core/.NET 5+里可以直接用System.Text.Json(无需额外安装);如果是老版本.NET Framework,需要通过NuGet安装Newtonsoft.Json:
Install-Package Newtonsoft.Json
4. 测试验证
- 运行程序,看控制台输出是否提示请求发送成功。
- 去IFTTT的Applet页面,查看Activity选项卡的执行记录,确认事件被触发,同时检查Sonoff设备是否正常响应。
内容的提问来源于stack exchange,提问作者NJS
相关产品推荐
相关产品推荐

