Node-Red + Alexa: obter informação da rádio que está a tocar

Durante esta semana o @maxcalavera, a quem deixo já o meu obrigado pela partilha, veio com uma ideia espetacular para o canal do Telegram e se ao ouvir música, o HA me mostrasse o que estou a ouvir (Artista, Album, Música) e ainda uma imagem do album?

Depois de umas trocas de ideias ele lá me enviou o que pretendia fazer! O objetivo é este:


Ao selecionar uma rádio aparece um card com a informação do que está a passar online.

Depois de batalhar um pouco à procura de como as rádios atualizam a informação nos respetivos sites (através da network do browser) era preciso meter as mãos na massa.

Porquê o Node-Red?
Recentemente comecei a fazer umas coisas em Node-Red, começando por migrar as minhas automações todas!
Já que o @maxcalavera ia seguir uma abordagem através dos ficheiros YAML decidi ir por aqui pois era uma forma de explorar.

Pré Requisitos:

  1. Add-on Node-Red :smiley:
  2. Add-on Mosquitto broker instalado e configurado
  3. Add-on Alexa Media Player instalada (através de HACS) e configurado

1º Passo: Onde guardar as informações?
Para guardar as informações utlizei 3 sensores (Artista, Album e Música) e 1 câmara para a imagem.
Uma forma de enviar a informação do Node-Red para o HomeAssistante é utilizando tópicos MQTT e foi por aí que eu segui.

  1. Comecei por criar os sensores da seguinte forma acedendo a Developer Tools / Services:
  2. Escolher o service: mqtt.publish e colocar o payload abaixo:
    image
Artista: https://pastebin.com/CWpwdXgm
Album: https://pastebin.com/e0KZMZbV
Musica: https://pastebin.com/jt6gGFK2
Camera: https://pastebin.com/T3u7Jcg1

Seguindo esta abordagem conseguimos ter um device chamado “Radio Integration”:

Nota: para testar, e de modo a que as imagens apareçam façam o seguinte post: https://pastebin.com/ny7vg9hy

2º Passo: o Flow do Node-Red
O Flow consiste em:

  • Saber se o rádio está ligado
  • Em caso afirmativo de 15 em 15 segundos obter a informação da rádio que está a tocar
  • Obter o ficheiro de detalhes, tratar o mesmo e publicar a informação da rádio e da imagem no tópico MQTT acima configurado

Podem obter o flow neste link: https://pastebin.com/kA6YX4qR

Após importar o flow devem:

  1. Alterar a entidade que está no nó “Radio On”
    image
  2. Nos nós “Publish Radio” e “Publish Image” selecionar o vosso servidor MQTT
    image

3º Passo: mostrar a informação no Lovelace
Para o efeito criei um Conditional Card com:

  • Picture Glance para mostrar a imagem
  • Entities para mostrar os valores dos sensores

Link: https://pastebin.com/vxnGWz9R

Já agora deixo também aqui o YAML para os botãos das rádios: https://pastebin.com/hrQGkKgs

Espero que este “pequeno” tutorial seja útil.

Pedro

EDIT: Para os casos em que a rádio M80 não funciona há um pequeno workarround.

  1. Criar uma rotina na Alexa que indique ao Echo qual a estação a tocar:
  2. Alterar no botão o media_content_type para routine:
    image
5 Likes

Com automaçoes ficava mais top heheeh…

A sério está fenomenal
Parabens

1 Like

Com automações vai sair para breve…
Mas o node red vai ficar sempre presente. Por enquanto não há forma de dar a volta…

Está a acontecer-me isto , quando crio o topic !!!

Failed to call service mqtt/publish. UndefinedError: 'value_json' is undefined

Podes mandar um print de como estás a criar o sensor?

@Victor_Moreira tinha um erro num dos payloads.

Atualizei com um link para cada um.

@Victor_Moreira não coloques “topic: homeassistant/sensor/RadioAlbum/config”.

É apenas: “homeassistant/sensor/RadioAlbum/config”.

continua com o erro .

Failed to call service mqtt/publish. UndefinedError: 'value_json' is undefined

@Victor_Moreira atualizei o tutorial novamente para criar os sensores e a câmera utilizando “Developer Tools”.

Vê novamente o 1º passo.




Viva,

  1. Script de importar o sensor Music atualizada. Voltar por favor a executar o 1º passo para a “Music”
  2. Atualizei o 2º passo com tarefas a fazer depois de importar o flow.

image

Não consigo por isto a funcionar. Já executei o serviço para todos os sensores mas nenhum aparece…

Os sensores às vezes só aparecem depois de ter uma publicação. Já adicionei uma publicação dummy ao tutorial.

Para quem quiser um card vertical.

type: vertical-stack
title: Radio Sotão
cards:
  - type: horizontal-stack
    cards:
      - type: grid
        cards:
          - type: picture
            image: 'https://cdn-radiotime-logos.tunein.com/s16084q.png'
            tap_action:
              action: call-service
              service: media_player.play_media
              service_data:
                entity_id: media_player.sotao_echo_dot
                media_content_id: radio comercial
                media_content_type: TUNEIN
            hold_action:
              action: none
          - type: picture
            image: 'https://cdn-profiles.tunein.com/s16650/images/logoq.jpg?t=152882'
            tap_action:
              action: call-service
              service: media_player.play_media
              service_data:
                entity_id: media_player.sotao_echo_dot
                media_content_id: Cidade FM
                media_content_type: TUNEIN
          - type: picture
            image: 'https://cdn-profiles.tunein.com/s81784/images/logoq.jpg'
            tap_action:
              action: call-service
              service: media_player.play_media
              service_data:
                entity_id: media_player.sotao_echo_dot
                media_content_id: Rádio M80
                media_content_type: TUNEIN
  - type: horizontal-stack
    cards:
      - type: conditional
        conditions:
          - entity: media_player.sotao_echo_dot
            state: playing
          - entity: sensor.radioartist
            state_not: 'Off'
        card:
          type: vertical-stack
          cards:
            - type: picture-glance
              image: 'https://demo.home-assistant.io/stub_config/kitchen.png'
              entities: []
              camera_image: camera.radioimage
            - type: entities
              entities:
                - entity: sensor.radioartist
                  name: Artist
                - entity: sensor.radioalbum
                  name: Album
                - entity: sensor.radiomusic
                  name: Music

1 Like

Copyright © 2017-2021. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade