Listagem dinâmica dos feriados (Fácil)

Resultado final:

image image

Requisitos:

1 → Node-red
2 → Custom Component: flex-table-card
3 → Auxiliar de Ano

Passos:

1 → Criar um auxiliar de Ano, preferencialmente o que seja Menu Suspenso e colocar alguns anos ali, fiz até 2024.

2 → Importar o código no node-red.
Caso tenha feito um auxiliar com nome diferente do meu precisará alterar ali no primeiro nó.

[{"id":"289d80fa96e6d533","type":"http request","z":"f727fdcc.c16a4","name":"","method":"GET","ret":"obj","paytoqs":"body","url":"","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":450,"y":1040,"wires":[["9496a96ed708b14f"]]},{"id":"9496a96ed708b14f","type":"split","z":"f727fdcc.c16a4","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":590,"y":1040,"wires":[["a4547f1dcf0c42fa"]]},{"id":"a4547f1dcf0c42fa","type":"moment","z":"f727fdcc.c16a4","name":"","topic":"","input":"payload.date","inputType":"msg","inTz":"America/Sao_Paulo","adjAmount":0,"adjType":"days","adjDir":"add","format":"DD/MM/YYYY","locale":"C","output":"payload.date","outputType":"msg","outTz":"America/Sao_Paulo","x":760,"y":1040,"wires":[["784dd97ae951b249"]]},{"id":"784dd97ae951b249","type":"join","z":"f727fdcc.c16a4","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":930,"y":1040,"wires":[["0a4b71f7cb63ad08"]]},{"id":"0a4b71f7cb63ad08","type":"function","z":"f727fdcc.c16a4","name":"","func":"msg.entity_id = 'sensor.listagem_feriados'\n\nmsg.payload = {\n    data: {\n        state: msg.payload.length,\n        attributes: {\n            feriados: msg.payload,\n            icon: 'mdi:calendar-plus',    \n            friendly_name: 'Listagem dos Feriados - BR'\n        }\n    }\n};\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1060,"y":1040,"wires":[["b97a4d78c00e6e48"]]},{"id":"b97a4d78c00e6e48","type":"ha-api","z":"f727fdcc.c16a4","name":"","server":"d854bbe5.321208","version":1,"debugenabled":false,"protocol":"http","method":"post","path":"/api/states/{{entity_id}}","data":"","dataType":"json","responseType":"json","outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"results"}],"x":1190,"y":1040,"wires":[[]]},{"id":"e1441b1af6be2b97","type":"comment","z":"f727fdcc.c16a4","name":"Listagem Feriados","info":"","x":110,"y":1000,"wires":[]},{"id":"53807de8e9f99160","type":"server-state-changed","z":"f727fdcc.c16a4","name":"","server":"d854bbe5.321208","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_select.selecao_ano","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"year","propertyType":"msg","value":"","valueType":"entityState"}],"x":180,"y":1080,"wires":[["fec7bf44a8231381"]]},{"id":"fec7bf44a8231381","type":"function","z":"f727fdcc.c16a4","name":"","func":"\n\nmsg.url = 'https://date.nager.at/api/v3/PublicHolidays/' + msg.year + '/BR'\n\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":300,"y":1040,"wires":[["289d80fa96e6d533"]]},{"id":"d854bbe5.321208","type":"server","name":"Home Assistant","version":2,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":"30"}]

Código do front-end:

square: false
columns: 1
type: grid
cards:
  - type: entities
    entities:
      - entity: input_select.selecao_ano
  - type: custom:flex-table-card
    title: Tabela Feriados
    entities:
      include: sensor.listagem_feriados
    columns:
      - name: Data
        attr_as_list: feriados
        modify: x.date
      - name: Nome
        attr_as_list: feriados
        modify: x.localName

E está feito :slight_smile:

To-Dos:
1 → Talvez mostrar em forma de calendário? Não sei se é possível.
2 → Fazer um filtro dos que já se passaram e mostrar somente os futuros.
3 → Contagem dos dias a partir de hoje até data do feriado e incluir na tabela.

De resto deixo para vcs sugerirem e realizerem melhorias \o

vlw povo.

4 Likes