You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过编程方式触发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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:27:32