
本文介绍了如何使用 Shelly 脚本通过身份验证来控制另一个 Shelly 设备。由于 Shelly.call("http.get") 方法无法将 URL 中的用户名和密码转换为 HTTP 认证头部,我们需要使用 HTTP.Request 方法,并手动生成 Authorization: Basic 头部来实现身份验证。文章提供了详细的代码示例,展示了如何构建带有身份验证信息的 HTTP 请求,并处理请求结果。
直接在 URL 中包含用户名和密码的方式 (http://USERNAME:PASSWORD@IP/relay/0?turn=on&timer=10) 并不总是有效,尤其是在 Shelly 的 Shelly.call("http.get") 方法中。更可靠的方法是使用 HTTP.Request,并手动添加 Authorization: Basic 头部。
以下是一个示例脚本,展示了如何使用 HTTP.Request 方法来控制需要身份验证的 Shelly 设备:
let CONFIG = {
host: "your_shelly_ip_or_hostname", // 目标 Shelly 设备的 IP 地址或主机名
username: "your_username", // 目标 Shelly 设备的用户名
password: "your_password", // 目标 Shelly 设备的密码
duration: 10 // 开关持续时间,单位秒
};
function turnOnShelly() {
let shelly_url = "http://" + CONFIG.host + "/relay/0?turn=on&timer=" + CONFIG.duration;
let user_pass = btoa(CONFIG.username + ":" + CONFIG.password); // 将用户名和密码编码为 Base64 字符串
let header = {
method: "GET",
url: shelly_url,
headers: {},
timeout: 20,
};
if (CONFIG.username) {
header.headers.Authorization = "Basic " + user_pass; // 添加 Authorization 头部
}
print("Calling URL ", shelly_url);
Shelly.call("HTTP.Request", header, function (result, error_code, error_message) {
if (error_code === 200) {
print("Success: " + JSON.stringify(result));
} else {
print("Error code: " + error_code);
print("Errormessage: " + error_message);
}
}, null);
}
// 调用 turnOnShelly 函数来打开 Shelly 设备
turnOnShelly();代码解释:
使用步骤:
注意事项:
总结:
通过使用 HTTP.Request 方法,并手动添加 Authorization: Basic 头部,我们可以轻松地通过身份验证来控制 Shelly 设备。这种方法比直接在 URL 中包含用户名和密码更安全、更可靠。希望本教程能帮助你成功地使用 Shelly 脚本控制其他 Shelly 设备。
以上就是使用 Shelly 脚本通过身份验证控制 Shelly 设备的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号