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

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

[技术探讨] 使用Command line Switch添加的开关无法反馈状态

[复制链接]

9

主题

181

帖子

1297

积分

金牌会员

Rank: 6Rank: 6

积分
1297
金钱
1116
HASS币
0
发表于 2019-2-8 18:13:28 | 显示全部楼层 |阅读模式
本帖最后由 befantasy 于 2019-2-8 18:17 编辑

根据home assistant文档, 使用command line switch组件添加了一个TV的开关.
https://www.home-assistant.io/components/switch.command_line/

switches
(map)(Required)The array that contains all command switches.

identifier
(map)(Required)Name of the command switch as slug. Multiple entries are possible.

command_on
(string)(Required)The action to take for on.

command_off
(string)(Required)The action to take for off.

command_state
(string)(Optional)If given, this command will be run. Returning a result code 0 will indicate that the switch is on.


value_template
(string)(Optional)If specified, command_state will ignore the result code of the command but the template evaluating to true will indicate the switch is on.

friendly_name
(string)(Optional)The name used to display the switch in the frontend.

confrontation.yaml中的代码如下:

switch:
  - platform: command_line
    switches:
      tv:
        command_on: curl "http://192.168.1.6:9876/send?deviceMac=001994362b28&codeId=l1523072382580"
        command_off: curl "http://192.168.1.6:9876/send?deviceMac=001994362b28&codeId=l1523072382580"
        command_state: 'ping -c 1 -W 100 192.168.1.5 &> /dev/null && echo 0||echo 1'



现在无论电视是否开启, 开关的状态都是开启的.
但在ssh下执行ping -c 1 -W 100 192.168.1.5 &> /dev/null && echo 0||echo 1 的命令, 电视开机的状态返回的是0, 关机状态返回的是1. 看起来没有问题.

关机状态:

root@localhost:/home/homeassistant/.homeassistant# ping -c 1 -W 1 192.168.1.5 &> /dev/null && echo 0 || echo 1
1

开机状态:
root@localhost:/home/homeassistant/.homeassistant# ping -c 1 -W 1 192.168.1.5 &> /dev/null && echo 0 || echo 1
0


回复

使用道具 举报

6

主题

743

帖子

5956

积分

论坛元老

Rank: 8Rank: 8

积分
5956
金钱
5208
HASS币
20
发表于 2019-2-8 21:43:15 | 显示全部楼层
本帖最后由 mitu 于 2019-2-8 21:44 编辑

用下面的命令试一下看行不行。我以前试过,可以的。
ping -c 1 192.168.1.100 | grep "1 received" | wc -l
回复

使用道具 举报

9

主题

181

帖子

1297

积分

金牌会员

Rank: 6Rank: 6

积分
1297
金钱
1116
HASS币
0
 楼主| 发表于 2019-2-9 11:00:16 | 显示全部楼层
mitu 发表于 2019-2-8 21:43
用下面的命令试一下看行不行。我以前试过,可以的。
ping -c 1 192.168.1.100 | grep "1 received" | wc -l ...

这个在shell下执行结果是反的.
开机状态返回的是1. 关机状态返回的是0.

但实际加到configuration.yaml之后, 这个开关还是永远是开的状态...
回复

使用道具 举报

8

主题

870

帖子

5218

积分

论坛元老

Rank: 8Rank: 8

积分
5218
金钱
4348
HASS币
0
发表于 2019-2-9 12:04:45 | 显示全部楼层
过来学习学习
回复

使用道具 举报

27

主题

2143

帖子

8932

积分

论坛元老

Rank: 8Rank: 8

积分
8932
金钱
6784
HASS币
30

论坛元老

发表于 2019-2-9 15:51:38 | 显示全部楼层
有没有想过是权限的问题,我之前测试Command line sensor的时候,发现hassio可行的代码,docker下homeassistant没有反馈
回复

使用道具 举报

9

主题

181

帖子

1297

积分

金牌会员

Rank: 6Rank: 6

积分
1297
金钱
1116
HASS币
0
 楼主| 发表于 2019-2-9 16:20:26 | 显示全部楼层
情非殇 发表于 2019-2-9 15:51
有没有想过是权限的问题,我之前测试Command line sensor的时候,发现hassio可行的代码,docker下homeassis ...

应该不是权限的问题, ping命令应该不需要特殊的权限. 我的homeassistant是用virtulenv安装在ubuntu上. 刚才查了一下log,也没有任何报错...
我怀疑是value passing上出了点问题吧.
回复

使用道具 举报

27

主题

2143

帖子

8932

积分

论坛元老

Rank: 8Rank: 8

积分
8932
金钱
6784
HASS币
30

论坛元老

发表于 2019-2-9 17:05:12 | 显示全部楼层
befantasy 发表于 2019-2-9 16:20
应该不是权限的问题, ping命令应该不需要特殊的权限. 我的homeassistant是用virtulenv安装在ubuntu上. 刚 ...

不太清楚,我之前用的nz命令查小米盒子6095端口,docker下的homeassistant就没有反馈,hassio可以,ubuntu里直接nz也可以
回复

使用道具 举报

9

主题

181

帖子

1297

积分

金牌会员

Rank: 6Rank: 6

积分
1297
金钱
1116
HASS币
0
 楼主| 发表于 2019-2-10 11:36:02 | 显示全部楼层
求助. 有人了解吗?
回复

使用道具 举报

7

主题

348

帖子

1084

积分

金牌会员

Rank: 6Rank: 6

积分
1084
金钱
736
HASS币
0
发表于 2019-7-12 15:23:38 | 显示全部楼层
大佬,搞定没?
回复

使用道具 举报

9

主题

181

帖子

1297

积分

金牌会员

Rank: 6Rank: 6

积分
1297
金钱
1116
HASS币
0
 楼主| 发表于 2019-7-15 23:21:55 | 显示全部楼层
本帖最后由 befantasy 于 2019-7-15 23:23 编辑

没搞定, 后来用template switch+sensor来替代command line switch+ping了。

  - platform: template
    switches:
      aroma:
        value_template: "{{ is_state('switch.aroma', 'on') }}"
        turn_on:
          service: climate.xiaomi_miio_send_command
          data:
            command: 'FE0000000000000000000000000800282250003600AC00E501C803860FB3138825CC4300000000000000000101010101010101000000000000000101010101010101000542074207420699'
        turn_off:
          service: climate.xiaomi_miio_send_command
          data:
            command: 'FE0000000000000000000000000800282250003600AC00E501C803860FB3138825CC4300000000000000000101010101010101000000000000000101010101010101000542074207420699'

回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-25 15:34 , Processed in 0.317414 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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