Tutorial: criando sensor da lua com imagens e atributos [iniciante]

:vulcan_salute: Saldações, homeassistanters! :vulcan_salute:

Venho por meio desse tutorial (meu primeiro), mostrar uma integração bem simples, mas que pode ser bastante útil a você.

É exatamento o que está no título:

Nosso satélite natural que está a 1s luz de nós.

PASSO I
Pois bem, primeiro tem que se verificar se já está criada a pasta sensors.yaml e a pasta multiscrape.yaml no seu configuration.yaml:

image

caso não esteja, você pode criá-la ou colocar os textos que vou disponibilizar direto na pasta configuration.yaml, nesse caso, com a observação de que deve ser colocados os arquivos embaixo de uma linha como esta:
sensor:, bem como abaixo do multiscrape: (não recomendo desse modo, mas segue ex. abaixo)

PASSO II
Adicione o sensor de lua ao seu Homeassistant por meio desse link abaixo:

OU, caso dê erro acima, adicione seguindo os passos para de implementação manual do sensor, conforme site do Homeassistant:

PASSO III
A seguir, deve-se criar uma pasta na pasta www chamada fases_da_lua para colocar as imagens das fases da lua .png lá nessa pasta criada (upload feito clicando-se no círculo laranja, utilizando-se o add-on file editor):

PASSO IV - sensores via multiscrape
Instale a integração MULTISCRAPE da loja da comunidade conhecida por HACS. Caso não essa loja, siga o tutorial do Douglas aqui no fórum ou do Patte Tech no youtube: TUTORIAL: Instalação do HACS e do primeiro TEMA no HOME ASSISTANT - YouTube
Assim, com tudo instalado, agora cole as seguintes linhas no seu arquivo chamado multiscrape.yaml:

#################################################################
#                                                               #
#                            LUA                                #
#                                                               #
#################################################################

### INFOS DA LUA - MULTISCRAPE - CALENDARR ###
# Sensores comentados com a ####2 podem ser apagados, pois não serão usados.. foram usados apenas para coleta dos seus dados via 'value.split'
  - resource: https://www.calendarr.com/brasil/lua-hoje/
    scan_interval: 28800 #8h
    sensor:
      - unique_id: imagem_atual_lua
        name: Imagem Atual da Lua 
        icon: mdi:file-jpg-box
        select: 'div#desc-lua_hoje img' 
        attribute: 'src'
        #attributes: 
        #  - name: teste câmera
        #    select: '#desc-lua_hoje > div > div > div > img' - funciona para pegar a imagem tbm
        #    attribute: 'src'
        
      - unique_id: descricao_hoje_lua
        name: Descrição da Lua Hoje
        icon: mdi:shield-moon-outline
        select: ".moon-desc"
        attributes:
          - name: Visibilidade da Lua
            select: ".moon-desc"
            value_template: '{{ value.split(" ")[5] }} e {{ value.split(" ")[9] | replace(".", " ")}}'
          - name: Dias_ate_prox_fase_lua
            select: ".moon-desc > p:nth-child(1) > strong:nth-child(2)"
          - name: Prox_fase_da_lua
            select: ".moon-desc > p:nth-child(1) > strong:nth-child(3)"

      - unique_id: infos_gerais_lua ####2
        name: Infos Gerais Lua
        icon: mdi:shield-moon-outline
        select: ".infos"
        attributes:
          - name: Lua-Terra
            select: ".infos"
            value_template: '{{ (value.split (" ")[5]) }}0 km'
            #unit_of_measurement: 'km'
          - name: Idade da Lua
            select: ".infos"
            value_template: '{{ (value.split(":")[2]) | replace("Próxima fase da Lua", " ") }}'
          - name: Fase anterior da Lua
            select: ".infos"
            value_template: '{{ (value.split(":")[4]) | replace("Visibilidade da Lua", " ") }}'
            
      - unique_id: visibilidade_lua
        name: Visibilidade da Lua
        icon: mdi:find-replace
        select: ".moon-desc"
        value_template: '{{ value.split(" ")[5] }} e {{ value.split(" ")[9] | replace(".", " ")}}'

      - unique_id: dias_restantes_prox_fase_lua
        name: Dias até próx. fase da Lua
        icon: mdi:counter
        select: ".moon-desc > p:nth-child(1) > strong:nth-child(2)"
        value_template: '{{ value.replace ("0 dias","hoje") }}'

      - unique_id: prox_fase_lua
        name: Próx. fase da Lua
        icon: mdi:crosshairs-question
        select: ".moon-desc > p:nth-child(1) > strong:nth-child(3)"

# cria sensor para ser usado como base para o sensor de s-luz
      - unique_id: distancia_lua_terra
        name: Distância Lua-Terra
        icon: mdi:theme-light-dark
        select: ".infos"
        value_template: '{{ (value.split (" ")[5]) | replace(".", "") | replace(",", "") }}8' #km
        
      - unique_id: distancia_lua_terra_km
        name: Distância Lua-Terra km
        icon: mdi:theme-light-dark
        select: ".infos"
        value_template: '{{ (value.split (" ")[5]) }} km'
        attributes: 
          - name: Segundos-luz
            value_template: "{{ states('sensor.distancia_lua_terra_segundos_luz') }}"
            #segundo testes, o valor acima aparecerá após a próxima atualização do scan interval
            
      - unique_id: idade_lua
        name: Idade da Lua
        icon: mdi:weather-night
        select: ".infos"
        value_template: '{{ (value.split(":")[2]) | replace("Próxima fase da Lua", " ") }}'

      - unique_id: fase_anterior_lua
        name: Fase anterior da Lua
        icon: mdi:backburger
        select: ".infos"
        value_template: '{{ (value.split(":")[4]) | replace("Visibilidade da Lua", " ") }}'

#################################################################
#                                                               #
#                            LUA                                #
#                                                               #
#################################################################

PASSO V - criação do sensor da lua e distância lua-terra
Por fim, aqui estão os arquivos para colocar no HA, observando as orientações do PASSO I:

OBS: Não se esqueça de mudar a palavra Brasília pela sua cidade assim como o sensor.climate_now pelo sensor que informa o clima da sua cidade (ensolarado; nublado; chuvoso etc)

#################################################################
#                                                               #
#                            LUA                                #
#                                                               #
#################################################################

### LUA COM IMAGENS E ATRIBUTOS ###
###### NOMES DAS FASES DA LUA EM PORTUGUÊS + INFOS NOS ATRIBUTOS ######
  - platform: template
    sensors:
      moon_phases:
        friendly_name: "LUA"
        value_template: >
          {% set phases = { 'new_moon':'Nova', 'waxing_crescent':'Crescente', 'first_quarter':'Quarto Crescente', 'waxing_gibbous':'Crescente Gibosa', 'full_moon':'Cheia', 'waning_gibbous':'Minguante Balsâmica', 'last_quarter':'Quarto Minguante', 'waning_crescent':'Minguante'} %}
          {% set phase = states('sensor.moon') %}
          {{ phases[phase] if phase in phases.keys() else 'Fase Lunar Desconhecida' }}
###### ÍCONES DAS FASES DA LUA ######
        entity_picture_template: >
          {% set state = states('sensor.moon').title().replace('_','') %}
          {{ '/local/fases_da_lua/{}.png'.format(states('sensor.moon')) }}
###### ATRIBUTOS DO SENSOR ##########
        attribute_templates:
          Próxima fase: "{{states('sensor.prox_fase_lua')}}"
          Dias restantes: "{{states('sensor.dias_restantes_prox_fase_lua')}}"
          Fase anterior: "{{states('sensor.fase_anterior_lua')}}"
          Visibilidade: "{{states('sensor.visibilidade_lua')}}"
          Idade atual: "{{states('sensor.idade_lua')}}"
          Distância km lua-terra: "{{states('sensor.distancia_lua_terra_km')}}"
          Distância s-luz lua-terra: "{{states('sensor.distancia_lua_terra_segundos_luz')}}"
          Próximo eclipse lunar: "{{states('sensor.proximo_eclipse_lunar')}}"
          Fenômeno brilho da terra: >
            {%- if is_state('sensor.moon_phases', 'Minguante') and
                  is_state('sensor.dias_restantes_prox_fase_lua', '2 dias') or
                  is_state('sensor.dias_restantes_prox_fase_lua', '1 dia') -%}
              Como a Terra reflete muito mais luz do Sol que a Lua, nosso planeta acaba iluminando seu satélite por reflexão (veja a imagem no card). E embora essa luz seja muito mais fraca que a solar, a porção escura da Lua acaba se tornando visível por contraste.
            {%- elif is_state('sensor.moon_phases', 'Crescente') and
                    is_state('sensor.dias_restantes_prox_fase_lua', '7 dias') or
                    is_state('sensor.dias_restantes_prox_fase_lua', '6 dias') -%}
              Como a Terra reflete muito mais luz do Sol que a Lua, nosso planeta acaba iluminando seu satélite por reflexão (veja a imagem no card). E embora essa luz seja muito mais fraca que a solar, a porção escura da Lua acaba se tornando visível por contraste.
            {%- else -%}
              Também chamado de Lua Cínerea (cinzenta), no momento, este evento não está ocorrendo. Aguarde o antes e depois da fase: Lua Nova.
            {% endif %}
            
          #CONSIDERANDO:
          # https://canaltech.com.br/espaco/como-saber-em-que-fase-da-lua-estamos-215807/
          # https://moon.nasa.gov/moon-in-motion/moon-phases/
          # https://www.calendarr.com/brasil/fases-da-lua/
          #ENTÃO:
          Fenômeno lua diurna: >-
            {%- if is_state('sensor.moon_phases', 'Nova') -%}
              A Lua pode ser vista no céu diurno em qualquer fase, exceto na lua nova, quando está invisível para nós.

            {%- elif is_state('sun.sun', 'above_horizon') and
                     is_state('sensor.moon_phases', 'Crescente') or
                     is_state('sun.sun', 'above_horizon') and
                     is_state('sensor.moon_phases', 'Minguante') -%}
              Atualmente o satélite natural está visível durante o dia com uma presença fraca e pálida no céu azul {{states('sensor.climate_now')}} de Brasília.

            {%- elif is_state('sun.sun', 'above_horizon') and
                     now() < now().replace(hour=12).replace(minute=0).replace(second=0) and
                     is_state('sensor.moon_phases', 'Quarto Crescente') -%}
              Atualmente o satélite natural está visível durante o dia com uma presença fraca e pálida no céu azul {{states('sensor.climate_now')}} de Brasília.

            {%- elif is_state('sun.sun', 'above_horizon') and
                     now() > now().replace(hour=14).replace(minute=0).replace(second=0) and
                     is_state('sensor.moon_phases', 'Crescente Gibosa') and 
                     is_state('sensor.dias_restantes_prox_fase_lua', '7 dias') or
                     is_state('sun.sun', 'above_horizon') and
                     now() > now().replace(hour=14).replace(minute=0).replace(second=0) and
                     is_state('sensor.moon_phases', 'Crescente Gibosa') and
                     is_state('sensor.dias_restantes_prox_fase_lua', '6 dias') or
                     is_state('sun.sun', 'above_horizon') and
                     now() > now().replace(hour=14).replace(minute=0).replace(second=0) and
                     is_state('sensor.moon_phases', 'Crescente Gibosa') and
                     is_state('sensor.dias_restantes_prox_fase_lua', '5 dias') or
                     is_state('sun.sun', 'above_horizon') and
                     now() > now().replace(hour=14).replace(minute=30).replace(second=0) and
                     is_state('sensor.moon_phases', 'Crescente Gibosa') and 
                     is_state('sensor.dias_restantes_prox_fase_lua', '4 dias') or
                     is_state('sun.sun', 'above_horizon') and
                     now() > now().replace(hour=15).replace(minute=0).replace(second=0) and
                     is_state('sensor.moon_phases', 'Crescente Gibosa') and 
                     is_state('sensor.dias_restantes_prox_fase_lua', '3 dias') or
                     is_state('sun.sun', 'above_horizon') and
                     now() > now().replace(hour=15).replace(minute=30).replace(second=0) and
                     is_state('sensor.moon_phases', 'Crescente Gibosa') and 
                     is_state('sensor.dias_restantes_prox_fase_lua', '2 dias') or
                     is_state('sun.sun', 'above_horizon') and
                     now() > now().replace(hour=16).replace(minute=0).replace(second=0) and
                     is_state('sensor.moon_phases', 'Crescente Gibosa') and 
                     is_state('sensor.dias_restantes_prox_fase_lua', '1 dia') -%}
              Atualmente o satélite natural está visível durante o dia com uma presença fraca e pálida no céu azul {{states('sensor.climate_now')}} de Brasília.
              
            {%- elif now() > now().replace(hour=6).replace(minute=0).replace(second=0) and
                     now() < now().replace(hour=18).replace(minute=0).replace(second=0) and
                     is_state('sensor.moon_phases', 'Cheia') -%}
              A Lua pode ser vista no céu diurno em qualquer fase, exceto na lua cheia, quando está abaixo do horizonte durante o dia.

            {%- elif is_state('sun.sun', 'above_horizon') and
                     now() < now().replace(hour=12).replace(minute=0).replace(second=0) and
                     is_state('sensor.moon_phases', 'Minguante Balsâmica') -%}
              Fenômeno possivelmente indisponível no momento.

            {%- elif is_state('sun.sun', 'above_horizon') and
                     now() < now().replace(hour=12).replace(minute=0).replace(second=0) and
                     is_state('sensor.moon_phases', 'Quarto Minguante') or
                     is_state('sun.sun', 'above_horizon') and
                     now() < now().replace(hour=12).replace(minute=0).replace(second=0) and
                     is_state('sensor.moon_phases', 'Minguante') -%}
              Atualmente o satélite natural está visível durante o dia com uma presença fraca e pálida no céu azul {{states('sensor.climate_now')}} de Brasília.
            {%- else -%}
              Fenômeno possivelmente indisponível no momento.
            {% endif %}
          Descrição da lua atual: >-
            {%- if is_state('sensor.moon_phases', 'Nova') -%}
              Esta é a fase invisível da Lua, com o lado iluminado da Lua voltado para o Sol e o lado noturno voltado para a Terra. Nesta fase, a Lua está na mesma parte do céu que o Sol e nasce e se põe com o Sol. Não só o lado iluminado fica de costas para a Terra, mas também fica para cima durante o dia! Lembre-se, nesta fase, a Lua não costuma passar diretamente entre a Terra e o Sol, devido à inclinação da órbita da Lua. Ele só passa perto do Sol da nossa perspectiva na Terra.
            {%- elif is_state('sensor.moon_phases', 'Crescente') -%}
              Esta lasca prateada da Lua ocorre quando a metade iluminada dela está voltada principalmente para longe da Terra, com apenas uma pequena porção visível para nós do nosso planeta. Ela cresce diariamente à medida que a órbita da Lua leva o lado diurno da Lua mais longe. Todos os dias, a Lua nasce um pouco mais tarde.
            {%- elif is_state('sensor.moon_phases', 'Quarto Crescente') -%}
              A Lua está agora a um quarto de sua jornada mensal e você vê metade de seu lado iluminado. As pessoas podem casualmente chamar isso de meia lua, mas lembre-se, isso não é realmente o que você está testemunhando no céu. Você está vendo apenas uma fatia da Lua inteira – metade da metade iluminada. Uma lua crescente nasce por volta do meio-dia e se põe por volta da meia-noite. É alto no céu à noite e contribui para uma excelente visualização.
            {%- elif is_state('sensor.moon_phases', 'Crescente Gibosa') -%}
              Agora, a maior parte do lado diurno da Lua está à vista, e a Lua parece mais brilhante no céu.
            {%- elif is_state('sensor.moon_phases', 'Cheia') -%}
              Isso é o mais próximo que chegamos de ver a iluminação do Sol de todo o lado diurno da Lua (então, tecnicamente, essa seria a meia-lua real). A Lua está oposta ao Sol, vista da Terra, revelando o lado diurno da Lua. A lua cheia nasce ao pôr do sol e se põe ao nascer do sol. A Lua aparecerá cheia por alguns dias antes de se mudar para a fase Minguante Balsâmica.
            {%- elif is_state('sensor.moon_phases', 'Minguante Balsâmica') -%}
              À medida que a Lua começa sua jornada de volta ao Sol, o lado oposto da Lua agora reflete a luz da Lua. O lado iluminado parece encolher, mas a órbita da Lua está simplesmente levando-o para fora de nossa perspectiva. A Lua nasce cada vez mais tarde a cada noite.
            {%- elif is_state('sensor.moon_phases', 'Quarto Minguante') -%}
              A Lua parece meio iluminada da perspectiva da Terra, mas na verdade você está vendo metade da metade da Lua que é iluminada pelo Sol – ou um quarto. A lua minguante, também conhecida como lua minguante, nasce por volta da meia-noite e se põe por volta do meio-dia.
            {%- elif is_state('sensor.moon_phases', 'Minguante') -%}
              A Lua está quase de volta ao ponto em sua órbita onde seu lado diurno está voltado diretamente para o Sol, e tudo o que vemos de nossa perspectiva é uma curva fina.
            {% endif %}
          Descrição geral: "{{states('sensor.descricao_hoje_lua')}}"

### CONVERTE OS KM DA DISTÂNCIA DA LUA-TERRA PARA SEGUNDOS LUZ ###
      distancia_lua_terra_segundos_luz:
        friendly_name: Lua-Terra segundos-luz
        value_template: '{{ (states("sensor.distancia_lua_terra")|float (0) / 299792458|float (0)) | round(2) }}'
        icon_template: mdi:map-marker-distance
        unit_of_measurement: 's-luz'
        attribute_templates:
          distância em km: "{{ states('sensor.distancia_lua_terra_km') }}"

#################################################################
#                                                               #
#                            LUA                                #
#                                                               #
#################################################################

PASSO VI - SAIBA OS DETALHES DO PRÓXIMO ECLIPSE LUNAR [OPCIONAL]

Este passo será incluído posteriormente!

PASSO VII - IMAGENS DA LUA PARA COLOCAR NA PASTA CRIADA:




Estou à disposição, grato pela atenção!

fonte: Custom Images not shown on moon sensor - #84 by Mariusthvdb - Configuration - Home Assistant Community

Quem quiser criar um card:

10 Likes

Excelente, fiz por aqui e funcionou perfeitamente. Like.

Valeu…

2 Likes

aqui só baixou 7 imagens. …é isso mesmo?

1 Like

Não, amigo, provavelmente você não baixou a new_moon, certo?
Logo, se sim, dei uma atualizada lá com a informação de como baixar a que não deu. Abs

Entendi . .foi essa mesmo que deu problema. Acabei pegando os arquivos no Telegram . .valeu

1 Like

Boa… Tranquilo então… tmj, man :handshake:

não consigo fazer aparecerem as imagens, qual o card que usaram?

1 Like

beleza, man? não precisa de card para as imagens aparecerem… tem que adicionar elas ao HA mesmo e aparecerão no sensor