Project Icon

pixoo-homeassistant

Pixoo 64显示器与Home Assistant智能家居集成方案

该项目提供自定义组件,实现Divoom Pixoo 64显示器与Home Assistant的无缝集成。用户可利用Home Assistant数据,在Pixoo 64上展示个性化设计,包括多文本和图像显示、页面切换时间设置、亮度调节等功能。此外,还支持通过自动化触发特定页面显示,为智能家居系统增添动态视觉元素。集成简单易用,大大扩展了Pixoo 64在智能家居场景中的应用潜力。

# Divoom Pixoo 64 Home Assistant 集成

hacs_badge 捐赠 python 徽章 最后提交

这是一个自定义组件,用于在 Home Assistant 中方便地使用 Pixoo64。通过此集成,您可以显示不同的设计并使用来自 Home Assistant 的信息对其进行个性化设置。例如,您可以使用此集成在一个页面上显示多个文本 {{ 模板 }} 和图像。您还可以使用此集成来设定您希望看到页面的时间长度,比如您可以设置页面每15秒更换一次。此外,您还有一个灯光实体用于开关显示屏或调节亮度。最后但同样重要的是,您可以创建自动化,使用特定触发器来显示您可用的页面作为推送。

安装

  1. 通过 HACS 安装此集成(需要添加存储库),或将此存储库的 custom_components/divoom_pixoo 目录内容复制到您的 custom_components/divoom_pixoo 目录中。

在 Home Assistant 实例中打开并在 Home Assistant 社区商店中打开存储库。

  1. 重启 Home Assistant。

  2. 转到设置 / 集成并添加集成 "Divoom Pixoo 64"。

将集成添加到您的 Home Assistant 实例。

  1. 请从列表中选择一个已发现的 Pixoo 64 设备,或选择"手动 IP"以手动输入设备的 IP。

配置

基础设置

设置 > 设备 > Divoom Pixoo > 配置

设备的 IP 地址: 已发现或手动输入的 IP 扫描间隔(秒): 显示一个页面的时间 YAML 格式的页面列表: 见下文(可选)

页面类型与配置

每种页面类型都有其独特的配置选项。所有配置都应使用YAML编写

如果你是这个集成的新用户,我们建议从组件页面类型开始。

在YAML配置中,所有页面都嵌套在 - page_type: XXX

设置默认配置时,可以设置多个页面。这些页面将通过"duration"标签轮换显示,或默认使用"扫描间隔"中设置的时间。

YAML布局示例

- page_type: channel
  id: 0
- page_type: clock
  id: 182

此外,所有页面类型都可以根据HA实体动态设置启用/禁用。

配置选项必填默认值
enabledtrue布尔值或 {{ 模板 }} #期望状态为 'true', 'yes', 'on' 或 '1'
- page_type: 页面类型
  enabled: "{{ states.input_boolean.你的实体.state }}"

你还可以设置页面的持续时间(以秒为单位)。这将覆盖设备设置中的扫描间隔。

配置选项必填默认值
duration(扫描间隔时间)整数/浮点数(单位:秒)
- page_type: 页面类型
  duration: 10

[!注意] enabled标签和duration标签仅在配置中使用时生效。因此,它们在服务中不起作用。

页面:组件

组件页面将您的Pixoo变成您的画布!您可以将多个文本/图像配置绑定到单个页面。

- page_type: components
components:
- type: text
#[文本配置]
- type: text
#[文本配置]
- type: image
#[图像配置]
- type: rectangle
#[矩形配置]
- type: templatable
#[可模板化配置]

> [!注意] > 每个组件类型的X,Y坐标位置需要手动配置 #### XY定位 ## 组件配置 -类型: [ 文本 | 图像 | 矩形 ]

组件: 文本

配置选项必填默认值可选值
位置文本在64x64像素XY轴上的位置
内容你的消息! {{ 模板 }} 和 换行 支持
字体pico_8字体
颜色白色[R, G, B] 或 预设颜色

示例

- 类型: 文本
  位置: [0,0]
  内容: 欢迎回家!

组件: 图像

配置选项必填默认值可选值
位置图像在64x64像素XY轴上的位置
图像路径是(三选一)图像路径,如 /config/img/haus.png
图像URL是(三选一)图像URL,如模板 {{ entity image }} 或 https://raw.githubusercontent.com/gickowtf/pixoo-homeassistant/main/images/fuel.png
图像数据是(三选一)base64格式的图像数据。在这里转换图像。
高度如果未选择,图像将保持原始尺寸。如果选择一个,它将成为最长边。按比例缩放
宽度如果未选择,图像将保持原始尺寸。如果选择一个,它将成为最长边。按比例缩放
重采样模式boxbox, nearest, bilinear, hamming, bicubic, lanczos

示例

- 类型: 图像
  位置: [5,5]
  图像路径: /config/image/haus.png
  重采样模式: box
  高度: 64

组件: 矩形

配置选项必填默认值可选值
位置矩形在64x64像素XY轴上的位置
尺寸矩形的最终尺寸。格式为 [宽度, 高度]
颜色[R, G, B] 或 预设颜色
填充布尔值

示例

- 类型: 矩形
  位置: [20, 20]
  尺寸: [10, 10]
  颜色: 黄色
  填充: "{{ states.input_boolean.YOURS.state }}"  #可选

组件: 可模板化

配置选项必填默认值可选值
模板jinja2 模板

示例

- 类型: 可模板化
  模板: >-
    {% set entities = [["input_boolean.sw1", "input_boolean.sw2"],
    ["input_boolean.sw2"]] %} {% set origin = [1, 62] %}

    {% set output = namespace(list=[], position_x = origin[0], position_y =
    origin[1]) %} {% for entity_group in entities -%} {# {%- if loop.first
    %}The {% elif loop.last %} and the {% else %}, the {% endif -%} #}

    {% for entity in entity_group -%} {# {%- if loop.first %}The {% elif
    loop.last %} and the {% else %}, the {% endif -%} #} {% set entity_state
    = states(entity) %}

    {## 选择颜色 ##} {% if entity_state=="off" or
    entity_state=="not_home" or entity_state == "standby" %} {% set
    color="red" %} {% elif entity_state=="on" or entity_state=="home" %} {%
    set color="green" %} {% elif entity_state=="playing" or
    entity_state=="idle" or entity_state=="paused" %} {% set color="blue" %}
    {% else %} {% set color="white" %} {% endif %}

    {% set component = {"type": "rectangle", "size": [1,1], "color": color,
    "position": [output.position_x, output.position_y]}%}

    {## 下一个像素高2像素 ##} {% set output.position_y =
    output.position_y - 2 %} {## 添加到输出列表 ##} {% set
    output.list = output.list + [component] %}

    {%- endfor %} {## 下一个像素右移2像素 ##} {% set
    output.position_x = output.position_x + 2 %} {## 重置y ##} {% set
    output.position_y = origin[1] %} {%- endfor %} {{output.list}}

变量 (可选) (仅适用于组件页面)

如果你希望更容易地共享自定义组件页面,可以在变量标签中定义变量。这些变量可以在任何模板中使用。

[!注意] 服务调用中不支持变量标签。对于那些情况,你必须使用 Home Assistant 的变量功能(通过自动化/脚本)

使用示例:

- 页面类型: 组件
  变量:
    power: "{{ states('input_number.power') }}"
    storage: "{{ states('input_number.storage') }}"
  组件:
    - 类型: 图像
      图像路径: /config/custom_components/divoom_pixoo/img/sunpower.png
      位置: [2,1]
    - 类型: 文本
      内容: "{{ power }}"
      颜色: "{{ [255,175,0] if power|int >= 1 else [131,131,131] }}"
      字体: gicko
      位置: [17,8]
    - 类型: 图像
      图像路径: "{{ '/config/custom_components/divoom_pixoo/img/akku80-100.png' if storage|int >= 80 else '/config/custom_components/divoom_pixoo/img/akku60-80.png' if storage|int >= 60 else '/config/custom_components/divoom_pixoo/img/akku40-60.png' if storage|int >= 40 else '/config/custom_components/divoom_pixoo/img/akku20-40.png' if storage|int >= 20 else '/config/custom_components/divoom_pixoo/img/akku00-20.png'}}"
      位置: [2, 17]
    - 类型: 文本
      内容: "{{ storage }}"
      颜色: "{{ [255,0,68] if storage|int <= 0 else [4,204,2] }}"
      字体: gicko
      位置: [17, 18]

页面:动图

动画GIF

  1. 将动图下载到你的电脑上。
  2. 将你的动图调整为16x16、32x32或64x64的尺寸。我知道一些网站说是64x64,但它实际上必须是64x64。你可以在多个网站上调整动图尺寸。这里有一个例子。(你只需要在页面下方手动选择宽度和高度的尺寸)。
  3. 重新下载动图。
  4. 重新上传动图。你可以使用许多图片服务,比如这个。(确保你使用的是动图文件的链接,而不是"动图查看页面"。你可以在网站上右击动图,然后点击"复制图片链接"来获取。你剪贴板中的链接可能现在以.gif结尾,就像你的文件一样。(尽管这可能不是100%的情况。))
配置选项是否必需默认值可选值
gif_urlURL

示例:

- page_type: gif
  gif_url: https://i.ibb.co/tKnvLs2/ezgif-5-30ff95e9ca.gif

页面:频道

在Divoom应用中,你可以设置三个不同的自定义频道,并在此处选择。

[!注意] Divoom自定义频道的图片循环速率必须在应用内设置。

  • 频道1 = id: 0
  • 频道2 = id: 1
  • 频道3 = id: 2 | 配置选项 | 必填 | 默认值 | 值类型 | |--------------|:--------:|------------|------------| | id | 是 | | 整数 | 示例:
- page_type: channel
  id: 0

页面:时钟

在Divoom应用中,有一大列表的时钟可供你设置到你的设备上。 - page_type: clock

配置选项必填默认值可选值
id时钟ID 时钟ID列表
示例:
- page_type: clock
id: 182

查找时钟面板ID的替代方法

  1. 导航至设置 > 集成 > Divoom Pixoo 64
  2. 激活调试日志
  3. 在你的智能手机上打开Divoom应用并选择你喜欢的时钟面板。
  4. 一旦这个面板显示在你的Pixoo64上,你就会在日志中找到"Device Data",然后是"CurClockId"。
  5. CurClockId就是你要找的数字。

页面:可视化器

这将可视化器页面添加到集成中。

配置选项必填默认值可选值
id时钟(可视化器)ID

*id 从零开始,它代表从左上角到右下角的时钟,就像在应用程序中看到的那样。* 示例: ```yaml - page_type: visualizer id: 2 ``` ## 页面:光伏

光伏 - PV 是一个预设计的页面。图标会根据电池容量变化,字体颜色从红色变为绿色 这里可能需要使用辅助实体

- page_type: PV
enabled: "{{ states.input_boolean.YOURS.state }}"  #仅在状态为 'true'、'yes'、'on' 或 '1' 时显示
power: "{{ states.sensor.YOUR_SENSOR.state }}"
storage: "{{ states.sensor.YOUR_SENSOR.state }}"
discharge: "{{ states.sensor.YOUR_SENSOR.state }}"
powerhousetotal: "{{ states.sensor.YOUR_SENSOR.state }}"
vomNetz: "{{ states.sensor.YOUR_SENSOR.state }}"
time: "{{ now().strftime('%H:%M') }}"

页面:进度条

预设的带有进度条的页面,例如用于洗碗机的状态或汽车的充电状态 - page_type: progress_bar

配置选项是否必需默认值可选值
header字符串或使用 {{ template }} 例如:洗碗机
progress整数或使用 {{ template }}
footer字符串或使用 {{ template }} 例如:日期
bg_colorblue使用 "[R, G, B]" 或 颜色预设
header_offset2整数
header_font_colorwhite使用 "[R, G, B]" 或 颜色预设
progress_bar_colorred使用 "[R, G, B]" 或 颜色预设
progress_text_colorwhite使用 "[R, G, B]" 或 颜色预设
time_colorgrey使用 "[R, G, B]" 或 颜色预设
footer_offset2整数
footer_font_colorwhite使用 "[R, G, B]" 或 颜色预设
示例:
- page_type: progress_bar
enabled: >-
{% if is_state('sensor.DISHWASCHER_STATE', 'Run') %} true {% else %} false {% endif %}
header: 洗碗机
progress: "{{ states.sensor.DISHWASHER_PROGRESS.state }}"
footer: 任意页脚
header_font_color: "[255, 255, 255]"

页面:燃料

加油站价格的特殊页面。此处可能需要使用辅助实体 - page_type: fuel

配置选项必填默认值
title字符串 - 可使用 {{ 模板 }} 例如:加油站名称
name1字符串 - 可使用 {{ 模板 }} 例如:燃料类型
price1使用 {{ 模板 }} 例如:燃料价格
name2字符串 - 可使用 {{ 模板 }}
price2使用 {{ 模板 }}
name3字符串 - 可使用 {{ 模板 }}
price3使用 {{ 模板 }} 例如:燃料价格
status字符串 - 可使用 {{ 模板 }} 任何额外字段,在我的例子中是营业状态
font_color白色"[R, G, B]" 或 颜色
bg_color黄色 (255, 230, 0)"[R, G, B]" 或 颜色
price_color白色"[R, G, B]" 或 颜色
title_color黑色"[R, G, B]" 或 颜色
stripe_colorfont_color"[R, G, B]" 或 颜色
title_offset2整数 用于居中文本

图片示例:

- page_type: Fuel
enabled: "{{ states.input_boolean.YOURS.state }}"
title: 经典
name1: 柴油
price1: "{{ states.sensor.diesel.state }}"
name2: 高级汽油
price2: "{{ states.sensor.super.state }}"
name3: E10
price3: "{{ states.sensor.e10.state }}"
status: >-
{% if is_state('binary_sensor.status', 'on') %} 营业中 {%
else %} 已关闭 {% endif %}
title_offset: "10"
font_color: "[255, 255, 255]"

换行

content: 中的换行支持示例:

content: |-
文本 1
{{ states.*.state }}

除了64像素的限制外,没有最大换行次数的限制 ;)

服务

服务:发送页面到Divoom Pixoo(show_message)推送通知

您可以将其用于推送通知。通过任何方式触发!使用"Divoom Pixoo 64:发送页面到Divoom Pixoo"服务调用它。

您可以在_页面数据_字段中输入一个页面的数据,使用常规YAML格式。它可以是任何内容!

[!注意] 这旨在临时覆盖您的默认配置。此处不会遵守任何启用/禁用行。

一些页面数据示例:

page_type: clock
id: 182

page_type: components
components:
- type: text
  position: [10, 0]
  content: 2 github/gickowtf
  font: gicko
  color: [255, 0, 0]
- type: image
  image_path: /config/img/haus.png
  position: [30, 30]

服务:播放蜂鸣器

在Divoom Pixoo上播放蜂鸣器。请注意,这可能会损坏设备。使用风险自负。

每个周期的蜂鸣时间(毫秒)默认:500毫秒
每个周期蜂鸣器的工作时间。蜂鸣器不会持续蜂鸣;它会在周期内开启和关闭(中间的持续时间不可控)。

每个周期的空闲时间(毫秒)默认:500毫秒
每个周期蜂鸣器的空闲时间。

总时间(毫秒)默认:3000毫秒
蜂鸣器将工作的总时间。


服务:重启Divoom Pixoo

重启Divoom Pixoo设备。(会有一点延迟,请耐心等待。)



模板

如上所述,模板允许您将实体状态和属性直接带到您的Pixoo上(例如温度、亮度、存在、实体开/关)。它们可以在集成的大多数设置中使用。如需深入了解,请参阅https://www.home-assistant.io/docs/configuration/templating/,或者甚至https://jinja.palletsprojects.com/en/latest/templates/(模板背后的语言)

您可以在Home Assistant的开发者 > 状态下找到实体ID(尽管您可能不需要这个)。

模板使用示例

报告原始传感器读数

二进制传感器是最容易上手的,因为它们只有开和关两种状态。

- page_type: components
components:
- type: text
position: [0,0]
color: white
content: "动作-FL1: {{ states('binary_sensor.MotionDetector') }}"

在上面的例子中,Pixoo 将显示 动作-FL1: [开/关]

根据传感器读数有条件地替换文本

如果你想把 on -> 检测到off -> 清除 怎么办? 一种方法是使用 If/then/else 组合(下面是简短形式)和状态比较器(is_state)

content: >-
动作-FL1: {{ '检测到' if
is_state('binary_sensor.MotionDetector', ['on']) else
'清除' }}

你可能会说"这很不错,但我还想动态改变颜色,因为美观。" 好消息是我们可以做到!

使用模板动态改变文本颜色

我们可以将用于文本的相同概念应用于颜色。我们只需要将文本替换为颜色代码。 如果检测到动作,颜色 = 红色 (255,0,0); 否则颜色 = 绿色 (0,255,0)

color: >-
{{ [255,0,0] if is_state('binary_sensor.motionDetector',
['on']) else [0,255,0] }}

通过自动化实现动画

[!注意] 在这个例子中,我们使用计数助手作为倒计时。这也使用自动化而不是配置。

alias: pixoo64 - 自动动画
description: ""
trigger: []
condition: []
action:
- service: counter.reset
metadata: {}
data: {}
target:
entity_id: counter.pixoo_5s_count_down
- repeat:
count: 20
sequence:
- service: divoom_pixoo.show_message
target:
entity_id: sensor.divoom_pixoo_64_current_page
data:
page_data:
page_type: components
components:
- type: text
position:
- 0
- 30
content: "认证检查: {{ states('counter.pixoo_5s_count_down') }}"
font: pico_8
color: white
- type: image
image_url: https://pub.inflowbogie.dev/lock_closed.png
position:
- 0
- 40
resample_mode: box
height: 20
- type: image
image_url: https://pub.inflowbogie.dev/key.png
position:
- "{{ 2 * states('counter.pixoo_5s_count_down') }}"
- 50
resample_mode: box
height: 7
- service: counter.decrement
metadata: {}
data: {}
target:
entity_id: counter.pixoo_5s_count_down
- delay:
hours: 0
minutes: 0
seconds: 1
milliseconds: 0
- if:
- condition: state
entity_id: counter.pixoo_5s_count_down
state: "0"
then:
- service: counter.reset
metadata: {}
data: {}
target:
entity_id: counter.pixoo_5s_count_down
mode: single

动画

参考资料

字体

字体名称图片
gickoFONT_GICKO.png
five_pixfive_pix.png
pico_8PICO_8.png
eleven_pixeleven_pix.png
clockCLOCK.png

-------------- ## 颜色预设 此图表中的颜色可用作预设,以替代 [R,G,B] 颜色编码。
-------------- ## 问题 有时显示屏会崩溃,尤其是在显示动态图像时。我在网上经常看到有人说这是由于电源太弱或亮度太高导致的。现在我将显示屏的亮度固定设置为**90%**,它就不再崩溃了。
-------------- ## 讨论 如果你能在讨论区展示自己的配置/使用方法或提出问题,我会很高兴! https://github.com/gickowtf/pixoo-homeassistant/discussions
-------------- ## 免责声明 这不是Divoom的官方软件。 这是由我(gickowtf)创建的自定义集成,因此Divoom不对此集成造成的任何损坏/问题负责,Divoom也不为此集成提供任何最终用户支持。 使用此集成的风险由您自行承担。
-------------- ## ❤️ 特别感谢 @Mrredstone5230 - 感谢将其转换为配置流程以及做出的诸多贡献
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号