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

 找回密码
 立即注册
查看: 3093|回复: 12

[求助] 求助,脚本调用API方式接入HA

[复制链接]

2

主题

29

帖子

176

积分

注册会员

Rank: 2

积分
176
金钱
147
HASS币
0
发表于 2022-5-18 03:09:53 | 显示全部楼层 |阅读模式
我想自己用 写yaml脚本的方式 控制 我家(某牌空调)的空调,小弟我是 这个公司的程序员用了generic_thermostat

但是每次 调温度的时候 都需要 调用shell 脚本去呼叫云端服务
看了半天各路大神的帖子也没看明白,能否给指点一下

climate:
  - platform: dualmode_generic
    name: Frontdesk
    unique_id: climate.frontdesk
    cooler: switch.cooler
    fan: switch.fan
    fan_behavior: cooler
    dryer: switch.dryer
    dryer_behavior: cooler
    target_sensor: sensor.lcac_temperature
    min_temp: 16
    max_temp: 32
    # ac_mode: true
    target_temp: 26
    cold_tolerance: 1
    hot_tolerance: 0
    min_cycle_duration:
      seconds: 5
    keep_alive:
      minutes: 3
    initial_hvac_mode: "off"
    away_temp: 16
    precision: 1



sensor:
  - platform: command_line
    name: lcac temperature
    command: "/bin/bash -c /config/scripts/get_temperature.sh"
    scan_interval: 4
    unit_of_measurement: "°C"
    value_template: "{{ value_json.payload.reported.indoorTemperature }}"


switch:
  - platform: command_line
    switches:
      cooler:
        friendly_name: 空调制冷开关
        command_on: '/bin/bash -c /config/scripts/lcac_poweron.sh'
        command_off: '/bin/bash -c /config/scripts/lcac_poweroff.sh'
      dryer:
        command_on: '/bin/bash -c /config/scripts/lcac_dryon.sh'
        command_off: '/bin/bash -c /config/scripts/lcac_dryoff.sh'
      fan:
        command_on: '/bin/bash -c /config/scripts/lcac_fanon.sh'
        command_off: '/bin/bash -c /config/scripts/lcac_fanoff.sh'

上面的都运行正常,就差控制温度了 怎么取到面板的target_temperature值 然后放在下面的 脚本里 然后这个脚本随着 generic_thermostat 变动而变动

ac_set_temp: '/bin/bash -c "/config/scripts/lcac_set_temperature.sh  temp_value #23 温度值

我不知道我表述清楚了没有,还是我想的太麻烦了,请指点下
回复

使用道具 举报

14

主题

430

帖子

2699

积分

金牌会员

Rank: 6Rank: 6

积分
2699
金钱
2269
HASS币
0
发表于 2022-5-18 05:11:40 来自手机 | 显示全部楼层
shell 怎么调用的,转到ha中呗,直接写成yaml恐怕不好实现,起码我不会,若是我用nodered
回复

使用道具 举报

1

主题

70

帖子

589

积分

高级会员

Rank: 4

积分
589
金钱
519
HASS币
0
发表于 2022-5-18 09:00:16 | 显示全部楼层
首先,可以的话请公开空调品牌。
其次,根据你的描述和配置文件,你的功能主要在shell中实现的,不提供shell脚本大家也没法指点。
回复

使用道具 举报

2

主题

29

帖子

176

积分

注册会员

Rank: 2

积分
176
金钱
147
HASS币
0
 楼主| 发表于 2022-5-18 10:05:43 | 显示全部楼层
本帖最后由 tjaol 于 2022-5-18 10:15 编辑
hang1993 发表于 2022-5-18 09:00
首先,可以的话请公开空调品牌。
其次,根据你的描述和配置文件,你的功能主要在shell中实现的,不提供shel ...

1、空调品牌是海尔
2、目前只开放了海外型号接入home assistant,国内小伙伴估计得等一段时间    3、目前此项目还没有公开,请大家不要外传,否则,我本人会有不必要的麻烦,我发一些样例代码上来,将来希望以我的能力弄成 (integration) 集成
4、我的本意是不想用node red,但如果解决不了的话只能用node red
5、海尔的模块需要调用云服务,其实是模拟登录的过程,登录之后,需要有 systemid、systemkey,申请token,从而来控制家电
systemid、systemkey 的目的是控制区域、国家、经销商等,请见下图








haier.png

Shell.zip

4.8 KB, 下载次数: 6

代码

回复

使用道具 举报

1

主题

70

帖子

589

积分

高级会员

Rank: 4

积分
589
金钱
519
HASS币
0
发表于 2022-5-18 14:39:32 | 显示全部楼层
tjaol 发表于 2022-5-18 10:05
1、空调品牌是海尔
2、目前只开放了海外型号接入home assistant,国内小伙伴估计得等一段时间    3、目前 ...

正好我家也是海尔中央空调,不知道以后能不能用上
shell里面都是调用API,其实HA自身也支持REST API调用,比如你要获取的面板温度:
curl -X GET -H "Authorization: Bearer ABCDEFGH" \
  -H "Content-Type: application/json" \
  http://localhost:8123/api/states/climate.target_temp
其中ABCDEFGH是HA的长效令牌,localhost:8123是你的HA访问地址,climate.target_temp是你要查询对应的状态实体。
加油,希望你们早点做出来推广到国内,到时最好给我们论坛的朋友留个本地控制的方式
回复

使用道具 举报

2

主题

29

帖子

176

积分

注册会员

Rank: 2

积分
176
金钱
147
HASS币
0
 楼主| 发表于 2022-5-18 15:09:31 | 显示全部楼层
hang1993 发表于 2022-5-18 14:39
正好我家也是海尔中央空调,不知道以后能不能用上
shell里面都是调用API,其实HA自身也支持REST API调用 ...

会的,本地化控制也是我们盼望的
回复

使用道具 举报

2

主题

29

帖子

176

积分

注册会员

Rank: 2

积分
176
金钱
147
HASS币
0
 楼主| 发表于 2022-5-20 15:41:45 | 显示全部楼层
hang1993 发表于 2022-5-18 14:39
正好我家也是海尔中央空调,不知道以后能不能用上
shell里面都是调用API,其实HA自身也支持REST API调用 ...

还没有完全解决我的问题我是想在 configuration.yaml 写触发指令能够调用脚本,思路如下:
1. 现在通过脚本 写sensor 返回当前温度和目标温度,这个已经没问题了
2. 就剩 thermostat 温度控制部分了,从外部调用 home assistant的 api 我不知道怎么用?逻辑是怎么样的?
请帮忙指点下
回复

使用道具 举报

1

主题

70

帖子

589

积分

高级会员

Rank: 4

积分
589
金钱
519
HASS币
0
发表于 2022-5-23 11:02:39 | 显示全部楼层
tjaol 发表于 2022-5-20 15:41
还没有完全解决我的问题我是想在 configuration.yaml 写触发指令能够调用脚本,思路如下:
1. 现在通过脚 ...

我理解你的thermostat没有通用的温控部分,这里的温控其实是调用厂家的云端API,这个是你们内部提供的吧?至于调用ha的API就和普通的RESTFUL API一模一样的。
回复

使用道具 举报

2

主题

29

帖子

176

积分

注册会员

Rank: 2

积分
176
金钱
147
HASS币
0
 楼主| 发表于 2022-5-23 14:16:31 | 显示全部楼层
hang1993 发表于 2022-5-23 11:02
我理解你的thermostat没有通用的温控部分,这里的温控其实是调用厂家的云端API,这个是你们内部提供的吧 ...

1. thermostat 的温控部分,我有shell脚本写好的调用 api requests,关键是thermostat 怎么调用脚本
2. 调用HA的api 我调用成功了但是我没想好放哪,相当于告诉第三方系统面板的状态
回复

使用道具 举报

2

主题

8

帖子

88

积分

注册会员

Rank: 2

积分
88
金钱
80
HASS币
0
发表于 2022-5-23 17:20:34 | 显示全部楼层
使用mqtt调用服务的方式不是更方便
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-26 00:41 , Processed in 0.084963 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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