【Homeassistant指难】三、过气网红像素灯Awtrix接入 Homeassistant 实现歌曲名显示

By | 2024-12-17

网红像素灯 Awtrix 红极一时。复刻产品卖了不少。估计很多人都吃灰了把。主要也是因为当时2.0产品的设计并不完美。所有的通知都需要一个服务器做中转,而且ESP8266性能有限。真正好用的通知APP也非常少。而且在2024年11月之后Awtrix2.0的APP商店等服务全部下线了,除非自己编译,否则Awtrix2.0各类APP无法在线下载了。

然而实际上,在服务器上设置号mqtt服务器之后,就能接入Homeassistant了。接入Homeassistant任何数据都能够通过编写自动化的方式在Awtrix进行展示。
如下示例为接入Homeassistant的任意音乐播放器展示当前播放歌曲信息的功能。
首先在Homeassistant中建立能对接Awtrix的mqtt服务。需要注意几个数据。首先在Awtrix中打开MQTT功能。

image

建立input数据。在configuration.yaml或者单独的input.yaml建立如下内容。

input_text:
  awtrix_notify:
    name: Awtrix Notify
    initial: Hello, World!
    icon: mdi:form-textarea

input_number:
  awtrix_duration:
    name: Awtrix Duration (seconds)
    min: 1
    max: 60
    initial: 5
    icon: mdi:timer
  awtrix_repeat:
    name: Awtrix Repeat Times
    min: 1
    max: 10
    initial: 2
    icon: mdi:repeat
  awtrix_icon:
    name: Awtrix Icon ID
    min: 1
    max: 1500
    initial: 1208
    icon: mdi:image-filter-center-focus

此目的是建立一个可调节选项的输入用实体。

然后建立一个通知脚本,scripts.yaml

awtrix_notify:
  sequence:
  - service: mqtt.publish
    data:
      topic: awtrix/notify
      payload: >
        {
          "name": "HASS Notify",
          "force": true,
          "duration": {{ states('input_number.awtrix_duration') }},
          "repeat": {{ states('input_number.awtrix_repeat') }},
          "icon": {{ states('input_number.awtrix_icon') }},
          "text": "{{ states('input_text.awtrix_notify') }}"
        }
  mode: single
  icon: mdi:message

最后建立一个蓝图位置在blueprints/automation/homeassistant/awtrix.yaml

blueprint:
  name: AWTRIX now playing
  description: Show the current playing track
  domain: automation
  input:
    media_player:
      name: Media player
      description: Media player what you want to control.
      selector:
        entity:
          filter:
            - domain: media_player
          multiple: false

trigger:
  - platform: state
    entity_id: !input media_player

action:
  - variables:
     media_state: >
        {% set state = states[trigger.entity_id] %}
        {% if state and state.state == 'playing' %}
          {
            "title": "{{ state.attributes.media_title | default('Unknown Title') }}",
            "artist": "{{ state.attributes.media_artist | default('Unknown Artist') }}",
          }
        {% else %}
          {
            "title": "Not Playing",
            "artist": "",
            "album": ""
          }
        {% endif %}

  - service: input_text.set_value
    target:
      entity_id: input_text.awtrix_notify
    data:
      value: >
        {{ media_state.title }} - {{ media_state.artist }}

  - service: script.turn_on
    target:
      entity_id: script.awtrix_notify

都设置完成后。在HA中配置一蓝图的自动化。设置—-自动化与场景—-蓝图
找到awtrix now playing

选择一个播放器实体,起名保存一下。

image

然后这个播放器在播放的时候就会在Awtrix上显示当前歌曲的演唱者和歌曲名字啦,可惜的是只能显示英文。另外icon id 758 是tiktok。1296是网易云音乐。其他图标可自行尝试。如下都是spotify播放器推送到Chromecast后的效果。awtrix now playing调用的是Google Home实体。其实任意音乐播放软件的时候airplay到支持airplayer的音箱也可以实现。

image

image

另外,别忘了添加添加实体卡片。这样当播放器不播放的时候可以播放自定义的通知.

image

或者你写一个推送任意数据的蓝图自动化也可以。只要调用scripts.yaml即可进行推送。实在在蓝图中写如如下即可调用。

  - service: script.turn_on
    target:
      entity_id: script.awtrix_notify

另外完整版的Awtrix是支持tf卡中存放mp3文件进行音频通知播放的,感兴趣的去完善一下scripts.yaml文件以及input数据即可。