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

 找回密码
 立即注册
查看: 4591|回复: 5

[技术探讨] 问题已解决,求删帖

[复制链接]

21

主题

188

帖子

1483

积分

金牌会员

Rank: 6Rank: 6

积分
1483
金钱
1290
HASS币
60
发表于 2019-2-26 05:30:36 | 显示全部楼层 |阅读模式
本帖最后由 chiunownow 于 2019-2-26 08:10 编辑

把data换成data_template,已经初步测试成功。后面全部写好后发成果

目标:控客插座实现控制空调

事项:

  1. 滑块(input number组件)实现控制温度
  2. 下拉选单(input select组件)实现风速选择
  3. 点击按键关机(script组件,这个最简单)

思路:

  1. 将学码的slot拆成温度+风速,00自动 01 02 03 小中大风,即

2400:24度自动风速

2401:24度小风

2503:25度大风

学码部分直接call service搞定

  1. input_number,input_select部分也不
input_number:
  remote_temp_bedroom:
    min: 2400
    max: 2500
    initial: 2400
    step: 100
    name: 空调温度
    unit_of_measurement: "℃"

input_select:
  remote_fanspeed_bedroom:
    name: 风速
    icon: mdi:fan
    options:
      - "自动"
      - "小"
      - "中"
      - "大"
  1. (踩坑警告)使用自动化,在改变滑块或下拉选单时,触发自动化,让插座发送ir信号
automation:
  - alias: "控客黑-主卧-空调发射ir"
    trigger:
      - platform: state
        entity_id: input_number.remote_temp_bedroom
      - platform: state
        entity_id: input_select.remote_fanspeed_bedroom
    action:
    - service: remote.send_command
      data:
        entity_id: remote.wo_shi_yao_kong

        # 坑就在下面这里了!

        command: ir_"{{ states('input_number.remote_temp_bedroom') | int }}">
          {% if states.input_select.remote_fanspeed_bedroom.state  == "自动" %}"00"
          {% elif states.input_select.remote_fanspeed_bedroom.state  == "小" %}"01"
          {% elif states.input_select.remote_fanspeed_bedroom.state  == "中" %}"02"
          {% elif states.input_select.remote_fanspeed_bedroom.state  == "大" %}"03"
          {% endif %}

测试一下,自然是不通过的。那就用call service来测试一下

为了一步步排除测试,先搞定温度控制部分,修改一下input_number

input_number:
  remote_temp_bedroom:
    min: 2400
    max: 2500
    initial: 2400
    step: 100

然后去call service测试一下

#服务 remote.send_command
#实体 remote.wo_shi_yao_kong
#Service Data
{
  "entity_id": "remote.wo_shi_yao_kong",
  "command": "ir_{{ states('input_number.remote_temp_bedroom' | int)}}"
}

至此,卡住,扑街……

没有完整学过yaml和json,都是看着ha教程依样画葫芦。感觉问题应该出在引号和|int上。

向大家求教,这个案例如何解决(以及求个好懂的yaml 101)



回复

使用道具 举报

21

主题

188

帖子

1483

积分

金牌会员

Rank: 6Rank: 6

积分
1483
金钱
1290
HASS币
60
 楼主| 发表于 2019-2-26 05:33:51 | 显示全部楼层
{
  "entity_id": "remote.wo_shi_yao_kong",
  "command": "ir_'{{ states(''input_number.remote_temp_bedroom'') | int}}'"
}

用一个单引号框柱整个变量,用两个单引号框柱inputnumber,也不行

回复

使用道具 举报

21

主题

188

帖子

1483

积分

金牌会员

Rank: 6Rank: 6

积分
1483
金钱
1290
HASS币
60
 楼主| 发表于 2019-2-26 06:08:40 | 显示全部楼层

input_number:
  remote_temp_bedroom:
    min: 2400
    max: 2500
    initial: 2400
    step: 100

script:
  send_ir_minik_ac:
    alias: 发送信号
    sequence:
      - service: remote.send_command
        data:
          entity_id: remote.wo_shi_yao_kong
          command: "ir_'{{ states(''input_number.remote_temp_bedroom'') | int }}'"

尝试调整command后面的各种引号使用方式,不行(摊手)


回复

使用道具 举报

21

主题

188

帖子

1483

积分

金牌会员

Rank: 6Rank: 6

积分
1483
金钱
1290
HASS币
60
 楼主| 发表于 2019-2-26 07:36:53 | 显示全部楼层

Error while executing automation automation.miniksendfds. Invalid data for call_service at pos 1: Entity ID script.remoteminik{{ states.input_number.xxxx.state | int }} is an invalid entity id for dictionary value @ data['entity_id']

尝试使用script包一下command,报错。不知道如何让input number输出的数字成为脚本名的一部分(摊手)

回复

使用道具 举报

40

主题

2176

帖子

8286

积分

元老级技术达人

积分
8286
金钱
6095
HASS币
110
发表于 2019-2-26 09:47:58 | 显示全部楼层
抱紧大腿,坐等上车
控客接入后一直觉得红外学习是个麻烦,一直拖着没做
现在把家里能接的都接进来后,发现了此贴 关注大佬
回复

使用道具 举报

21

主题

188

帖子

1483

积分

金牌会员

Rank: 6Rank: 6

积分
1483
金钱
1290
HASS币
60
 楼主| 发表于 2019-2-26 10:17:53 | 显示全部楼层
ghostist 发表于 2019-2-26 09:47
抱紧大腿,坐等上车
控客接入后一直觉得红外学习是个麻烦,一直拖着没做
现在把家里能接的都接进来后,发现 ...

https://bbs.hassbian.com/thread-6453-1-1.html

帖子已发,但是没有解决学码问题(我是初学者 力所不能及)
只做到了有个好看的UI来控制,学码还是得费点功夫
参考一下
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 17:48 , Processed in 0.341250 second(s), 29 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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