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

 找回密码
 立即注册
查看: 5538|回复: 2

[技术探讨] input调用mqtt问题求解答

[复制链接]

10

主题

97

帖子

587

积分

高级会员

Rank: 4

积分
587
金钱
490
HASS币
0
发表于 2020-6-18 12:41:50 | 显示全部楼层 |阅读模式
自己做了个风扇,能通过MQTT调转数,想做成在HA上可以滑动条滑动调节速度。

官网找了一下有个input插件
input_number

其中例程有一个

# Example configuration.yaml entry using 'input_number' in an action in an automation
input_number:
  target_temp:
    name: Target Heater Temperature Slider
    min: 1
    max: 30
    step: 1
    unit_of_measurement: step
    icon: mdi:target

# This automation script runs when a value is received via MQTT on retained topic: setTemperature
# It sets the value slider on the GUI. This slides also had its own automation when the value is changed.
automation:
  - alias: Set temp slider
    trigger:
      platform: mqtt
      topic: 'setTemperature'
    action:
      service: input_number.set_value
      data_template:
        entity_id: input_number.target_temp
        value: "{{ trigger.payload }}"

# This second automation script runs when the target temperature slider is moved.
# It publishes its value to the same MQTT topic it is also subscribed to.
  - alias: Temp slider moved
    trigger:
      platform: state
      entity_id: input_number.target_temp
    action:
      service: mqtt.publish
      data_template:
        topic: 'setTemperature'
        retain: true
        payload: "{{ states('input_number.target_temp') | int }}"


正好符合我的要求。
应该是在configuration.yaml里加一个input,之后在自动化里调用mqtt.publish。

我按照例程仿写了一个
其中MQTT的部分
payload: '{{ states(''input_number.fanspeed'') | int }}'
topic: fantest/speed/set

这么写的。但是用mqtt.fx查看,payload直接显示的是

{{ states('input_number.fanspeed') | int }}


也就是没有根据既定规则转换成数字。

于是用HA自带的‘开发者工具-服务‘调试。

结果还是一样,但是我看了一眼服务下边的例程

TIM截图20200618123457.png

我理解是如果要是调用转换函数的话,需要用payload_template。

在服务调试里把payload改为payload_template确实成功向MQTT输出了数字。

不过在自动化里使用payload_template,则完全没有任何输出,只有换成payload才会有输出,但是payload又没法转换成数字。

求问各位大佬有没有好的解决办法。
回复

使用道具 举报

30

主题

493

帖子

4795

积分

论坛元老

佑桑

Rank: 8Rank: 8

积分
4795
金钱
4287
HASS币
156

教程狂人

发表于 2020-6-18 15:43:03 | 显示全部楼层
    - service: mqtt.publish
      data_template:
        topic: myHASS/livingroom/ac/temperature/state
        payload: '{{ states("sensor.rpieasy_lywsd02_temp") }}'

試試這樣

评分

参与人数 1金钱 +5 收起 理由
lnight + 5 感谢,可还是不行。

查看全部评分

ASRock H370 PRO4, 48GB, 8TBx3 + 2TBx3
ESXi 6.7 + Ununtu + Docker + HASS.IO -> Homeassistant OS
(Home Assistant Supervised 官方文件)
回复

使用道具 举报

11

主题

143

帖子

1242

积分

论坛技术达人

积分
1242
金钱
1094
HASS币
20
发表于 2020-6-24 08:08:45 | 显示全部楼层
我的zA1 zM1调整风速和亮度都想做成这样 就是用的input+自动化实现 后来发现太不好用了  还是改成了ha自带的fan和light来调整风速亮度

评分

参与人数 1金钱 +5 收起 理由
lnight + 5 但是自带的fan没法直接输入转数,不得已用.

查看全部评分

回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-26 05:28 , Processed in 0.090924 second(s), 30 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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