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

 找回密码
 立即注册
查看: 867|回复: 6

[技术探讨] POST/GET 语法

[复制链接]

14

主题

173

帖子

1217

积分

金牌会员

Rank: 6Rank: 6

积分
1217
金钱
1044
HASS币
10
发表于 2023-8-6 09:45:35 | 显示全部楼层 |阅读模式
首先搭建一个web测试环境,  目的是以什么方式POST/GET提交,以及提交间隔,
<?php
header('content-type:application/json;charset=utf8');
$method = $_SERVER['REQUEST_METHOD'];
$requestData = $_REQUEST;
$data_time = date("h:i:sa");
$dataArray = array(
      "method" => $method,
      "data"   =>array(
             "requestData" => $requestData,
                 "returnData"=> $data_time
          )
);

$dataJson = json_encode($dataArray);
$fileJson = 'hotel.json';
$fp_license  = fopen($fileJson,'a');
$flag=fwrite($fp_license,$dataJson.'\r\n'); 
fclose($fp_license);
echo $dataJson;
?>
configuration.yaml 建立
sensor:
- platform: rest
  name: a1
  unique_id: "sensor_a1_1"
  resource: http://192.168.18.83/a/?POST=test
  method: POST
  scan_interval: 1860
  payload: 'a=1&b=2&c=3'
  headers:
    Content-Type:  'application/x-www-form-urlencoded;charset=utf-8'
  value_template: >
    {{ value_json["data"] }}
  json_attributes:
    - data
- platform: template
  sensors:
    b1:
      value_template: '{{states.sensor.a1.attributes.data}}'
      friendly_name: 'c1'
      unique_id: "sensor_c1_1"
结论:
服务器保存
{"method":"POST","data":{"requestData":{"POST":"test","a":"1","b":"2","c":"3"},"returnData":"03:25:57am"}}
是我想要的以POST方式发送数据,  也返回了服务器响应的JSON

                               
登录/注册后可看大图


服务器收到请求时间为 scan_interval 参数决定频率.


问题:  怎么做一个开关或按钮,  人工主动点击再次刷新,  场景如:  向web 发送JSON,  响应到解析的JSON
回复

使用道具 举报

16

主题

211

帖子

1632

积分

论坛DIY达人

积分
1632
金钱
1416
HASS币
20
发表于 2023-8-6 12:13:38 来自手机 | 显示全部楼层
没看懂,帮顶。猜你是想用HA向服务器发送post,建议文整一下,有点难理解。
回复

使用道具 举报

14

主题

173

帖子

1217

积分

金牌会员

Rank: 6Rank: 6

积分
1217
金钱
1044
HASS币
10
 楼主| 发表于 2023-8-6 12:15:47 | 显示全部楼层
大意是 一个开关或按钮,  主动点击刷新,   发送新的JSON参数,  以及获得新的返回JSON数据
回复

使用道具 举报

18

主题

555

帖子

3990

积分

元老级技术达人

积分
3990
金钱
3400
HASS币
182
发表于 2023-8-6 20:22:51 | 显示全部楼层
首先,你还使用这个sensor.a1,也就是先创建的restful sensor来请求外部服务,并储存结果,按照scan_interval来确定调用间隔。

如果你希望在两次间隔期间,利用按钮刷新这个sensor。你可以在lovelace页面新建一个按钮卡片,“点击动作”选择“调用服务”,具体服务选择“Home Assistant Core Integration: Update entity”,“选择实体”填入你创建的这个“sensor.a1”即可。这样你就可以实现按钮手动刷新。
回复

使用道具 举报

14

主题

173

帖子

1217

积分

金牌会员

Rank: 6Rank: 6

积分
1217
金钱
1044
HASS币
10
 楼主| 发表于 2023-8-7 01:12:34 | 显示全部楼层
本帖最后由 zg990725 于 2023-8-7 19:17 编辑

谢谢。我试感谢楼上,经过测试达到我的要求:
show_name: false
show_icon: false
type: button
tap_action:
  action: call-service
  service: homeassistant.update_entity
  target:
    entity_id: sensor.a1
  data: {}
entity: sensor.a1
show_state: true
先建立一个a1实体的按钮,  选择调用服务,  然后再选择这个 a1
经过测试,  a1 按钮上显示服务器的JSON  数据,  点击一次, 手动刷新一次.
回复

使用道具 举报

14

主题

173

帖子

1217

积分

金牌会员

Rank: 6Rank: 6

积分
1217
金钱
1044
HASS币
10
 楼主| 发表于 2023-8-7 02:52:33 来自手机 | 显示全部楼层
Screenshot_20230807_024923_io.homeassistant.companion.android_edit_307513748618180.jpg Screenshot_20230807_024853_io.homeassistant.companion.android.jpg
回复

使用道具 举报

14

主题

173

帖子

1217

积分

金牌会员

Rank: 6Rank: 6

积分
1217
金钱
1044
HASS币
10
 楼主| 发表于 2023-8-7 02:53:43 来自手机 | 显示全部楼层
Screenshot_20230807_024853_io.homeassistant.companion.android.jpg Screenshot_20230807_024923_io.homeassistant.companion.android_edit_307513748618180.jpg

没有UI,也只能这样了。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-5-12 01:45 , Processed in 0.068822 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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