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

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

[技术探讨] (已解决)求助在图片元素卡片中显示窗帘开合不正确

[复制链接]

1

主题

22

帖子

116

积分

注册会员

Rank: 2

积分
116
金钱
94
HASS币
0
发表于 7 天前 | 显示全部楼层 |阅读模式
本帖最后由 kloar 于 2025-2-2 02:13 编辑

我的窗帘可能有点阻挡的缘故.在开和关的时候执行完成后开合度不是0%和100%
导致执行关闭后结束后 又会变成开启状态

目前偶尔会开合度到0%,这段代码就是没有问题的
- type: image
        entity: cover.dooya_cn_413984086_m2_s_2
        tap_action:
          action: toggle
        style:
          top: 4%
          left: 78%
          width: 10%
        state_image:
          closed: /local/home2/窗帘关.jpg
          closing: /local/home2/窗帘正在关闭.gif
          open: /local/home2/窗帘开.jpg
          opening: /local/home2/窗帘正在打开.gif

尝试一:
通过代码判断开合度来实现图片的切换,结果好像不支持这样,反复修改多次代码都无法显示图片出来,包括直接返回图片路径(这个代码只是AI生成的初始代码,尝试过的没有保存)
type: image
entity: cover.dooya_cn_413984086_m2_s_2
tap_action:
  action: toggle
style:
  top: 4%
  left: 78%
  width: 10%
image: >
  [[[
    var position = states('cover.dooya_cn_413984086_m2_s_2.attributes.current_position');
    
    // 调试信息:将 position 值包含在路径中
    console.log('Cover position:', position);
    
    if (position >= 90) {
      return '/local/home2/窗帘开.jpg';
    } else if (position === 0) {
      return '/local/home2/窗帘关.jpg';
    } else if (position < 10) {
      return '/local/home2/窗帘关.jpg';
    } else {
      return '/local/home2/窗帘正在' + (position > 50 ? '打开' : '关闭') + '.gif';
    }
  ]]]




尝试二:
通过别的大佬的办法,想做一个数组的实体来代替窗帘,但是不知道是状态获取不对还是什么问题加载不出图片
https://bbs.hassbian.com/thread-8238-2-1.html
      - type: image
        entity: input_number.ce_shi_shu_zi
        style:
          top: 4%
          left: 78%
          width: 10%
        state_image:
          "1": /local/home2/窗帘开.jpg
          "2": /local/home2/窗帘关.jpg
          "3": /local/home2/窗帘正在打开.jpg
          "4": /local/home2/窗帘正在关闭.jpg




求助下论坛大佬们 有什么办法解决....感谢!!!

窗帘

窗帘
回复

使用道具 举报

1

主题

22

帖子

116

积分

注册会员

Rank: 2

积分
116
金钱
94
HASS币
0
 楼主| 发表于 前天 19:50 | 显示全部楼层
自行解决了...
使用方案根据
【Homeassistant如何简单的统计开灯数量-可自定义统计哪些实体】 https://www.bilibili.com/video/B ... aeca88d26dc86c7439b

创建一个窗帘传感器,通过代码进行开合度的判断
{% set current_state = states('cover.dooya_cn_413984086_m2_s_2') %}
{% set current_position = state_attr('cover.dooya_cn_413984086_m2_s_2', 'current_position') | default(0) %}

{# 判断并更新状态 #}
{% if current_state in ['open', 'closed'] %}
  {% if current_position < 3 %}
    {% set new_state = 'closed' %}
  {% elif current_position > 97 %}
    {% set new_state = 'open' %}
  {% else %}
    {% set new_state = current_state %}
  {% endif %}
{% else %}
  {# 如果当前状态不是open或closed,则保持原样 #}
  {% set new_state = current_state %}
{% endif %}

{{ new_state }}

然后调用这个传感器实体
回复

使用道具 举报

1

主题

22

帖子

116

积分

注册会员

Rank: 2

积分
116
金钱
94
HASS币
0
 楼主| 发表于 7 小时前 | 显示全部楼层
补充一个元素图片中切换开关代码
      - type: image
        entity: sensor.chuang_lian_zhuang_tai
        tap_action:
          action: call-service
          service: cover.toggle
          service_data:
            entity_id: cover.dooya_cn_413984086_m2_s_2
        style:
          top: 4%
          left: 78%
          width: 10%
        state_image:
          closed: /local/home2/窗帘关.jpg
          closing: /local/home2/窗帘正在关闭.gif
          open: /local/home2/窗帘开.jpg
          opening: /local/home2/窗帘正在打开.gif
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2025-2-2 10:01 , Processed in 0.107555 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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