『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 2869|回复: 10

[技术探讨] 求教HA自动化动作中如何跳转一个URL

[复制链接]

4

主题

32

帖子

308

积分

中级会员

Rank: 3Rank: 3

积分
308
金钱
276
HASS币
0
发表于 2022-10-30 11:32:10 | 显示全部楼层 |阅读模式
如题,我想在打开某个开关后,自动化动作执行时跳转到某个网页
比如我按下某个开关,然后执行一个网页,这个网页执行一次在网页后台数据库+1来进行计数
回复

使用道具 举报

147

主题

2276

帖子

7034

积分

元老级技术达人

积分
7034
金钱
4753
HASS币
30
发表于 2022-10-30 13:06:54 | 显示全部楼层
# shell_command命令get请求url
shell_command:
#请求url
  get_url: curl -G "http://********/abc.php"

以上代码配置在configuration.yaml里,然后在 服务里可以找到 get_url的服务,以后调用这个服务,就能触发指定网址了,url换成自己的,调用服务名可以自定义,这个只是get请求触发url,在ha里并不会显示请求结果。
回复

使用道具 举报

4

主题

32

帖子

308

积分

中级会员

Rank: 3Rank: 3

积分
308
金钱
276
HASS币
0
 楼主| 发表于 2022-10-30 15:38:47 | 显示全部楼层
本帖最后由 hnqtj312 于 2022-10-30 15:42 编辑
bugensui 发表于 2022-10-30 13:06
# shell_command命令get请求url
shell_command:
#请求url

强,网页联动了,可是如果我要在网址后面加参数如何实现,总不能在configuration.yaml里添加N条url吧

比如:自动化发现某个开关被打开过一次,自动化执行针对这个开关的记录+1,另一个开关打开过一次,另一个开关对应的数据库记录+1,当我有2000多个开关时总不能添加2000多条URL吧,如何在自动化的代码里实现网页后面的参数添加?继续求教
action:
  - service: shell_command.get_url


指定开关1:http://192.168.1.120/111/111.asp?id=1
指定开关2:http://192.168.1.120/111/111.asp?id=2
回复

使用道具 举报

147

主题

2276

帖子

7034

积分

元老级技术达人

积分
7034
金钱
4753
HASS币
30
发表于 2022-10-30 15:53:21 | 显示全部楼层
hnqtj312 发表于 2022-10-30 15:38
强,网页联动了,可是如果我要在网址后面加参数如何实现,总不能在configuration.yaml里添加N条url吧

比 ...

curl -d "pagenum=1&pagesize=2"
-d 请求携带的参数,多个参数使用&分隔
不过好像,还是没有达到你的要求,这个参数也是写死的,你想在自动化里动态赋值,我也没有想到,或者你可以换个思路,不知道ha的api能不能实现
回复

使用道具 举报

4

主题

32

帖子

308

积分

中级会员

Rank: 3Rank: 3

积分
308
金钱
276
HASS币
0
 楼主| 发表于 2022-10-30 15:55:31 | 显示全部楼层
bugensui 发表于 2022-10-30 15:53
curl -d "pagenum=1&pagesize=2"
-d 请求携带的参数,多个参数使用&分隔
不过好像,还是没有达到你的要求 ...

是的,这样还是写死在了config里面,能不能在config里面写成id=n,然后这个n由自动化里面给过去
回复

使用道具 举报

4

主题

32

帖子

308

积分

中级会员

Rank: 3Rank: 3

积分
308
金钱
276
HASS币
0
 楼主| 发表于 2022-10-30 16:06:28 | 显示全部楼层
bugensui 发表于 2022-10-30 15:53
curl -d "pagenum=1&pagesize=2"
-d 请求携带的参数,多个参数使用&分隔
不过好像,还是没有达到你的要求 ...

service: shell_command.get_url
data: ""
其实从自动化的yaml里可以看到有个data,这个data能给数据到url后面不
回复

使用道具 举报

147

主题

2276

帖子

7034

积分

元老级技术达人

积分
7034
金钱
4753
HASS币
30
发表于 2022-10-30 16:17:48 | 显示全部楼层
hnqtj312 发表于 2022-10-30 16:06
service: shell_command.get_url
data: ""
其实从自动化的yaml里可以看到有个data,这个data能给数据到ur ...

你如果会写代码的话,可以在接收端url的代码里,写下接收data的函数,比如:Request.QueryString("data"),看下有没有接收到数据,1234随便写,如果能接收到1234,那就好操作了。其他的都是程序代码逻辑判断的事情。

另外你这样操作,有什么必要性了。直接走ha的api查询日志,是不是也一样呢,
回复

使用道具 举报

4

主题

32

帖子

308

积分

中级会员

Rank: 3Rank: 3

积分
308
金钱
276
HASS币
0
 楼主| 发表于 2022-10-30 16:23:03 | 显示全部楼层
bugensui 发表于 2022-10-30 16:17
你如果会写代码的话,可以在接收端url的代码里,写下接收data的函数,比如:Request.QueryString("data") ...

config里面
get_url: curl -G "http://192.168.1.120/111/111.asp"

自动化里面
service: shell_command.get_url
data:
  sqw: 10

这样还是没有把10传递过去
回复

使用道具 举报

147

主题

2276

帖子

7034

积分

元老级技术达人

积分
7034
金钱
4753
HASS币
30
发表于 2022-10-30 16:26:49 | 显示全部楼层
hnqtj312 发表于 2022-10-30 16:23
config里面
get_url: curl -G "http://192.168.1.120/111/111.asp"

如果ha不支持这种形式,那确实没有办法,
回复

使用道具 举报

17

主题

800

帖子

5744

积分

论坛元老

Rank: 8Rank: 8

积分
5744
金钱
4939
HASS币
0
发表于 2022-10-30 16:29:34 | 显示全部楼层
geturl: 'curl -G http://192.168.1.120/111/111.asp?parm={{ states("input_text.xxxxxxxxxxxxx") }}'

类似这种感觉

评分

参与人数 1金钱 +8 收起 理由
XCray + 8 没错!模板是HA自动化的灵魂

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-28 21:58 , Processed in 0.083172 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表