CORREIOS - Sistema de rastreio no Home Assistant + adicionar, excluir e notificações telegram (nodered+card homeassistant)

Aqui esta normal amigo. Inclusive recebi a pouco uma notificação de status

É estranho, porque eu não alterei nada, e funcionava antes…
Outro detalhe, é que vira e mexe perco todos os cadastros, eles apagam sozinho.

Alguma dica de como posso debugar, e tentar corrigir isso ?

@fabianomga Verifica se esta tudo atualizado (addon, integração no hacs e paletas)

Eu fiz algumas alterações no fluxo do kelvinrafaeli para meu uso, se quiser testar:

  • Remoção dos sub-flows
  • Remoção dos helpers. Tudo é criado usando o node red. ( Os nós usados para isso ainda estão na versão beta, mas esta funcionando tudo normal por enquanto)
  • Adicionar rastreios pelo Telegram enviando msg no formato: Teste / NM471076999BR / sim
    (tem que habilitar e configurar os nós para isso)
  • Acho que removi a parte que apaga os rastreios automaticamente :thinking:
  • Mudanças nos nós que gravam os rastreios em arquivo
  • Mais algumas coisa que não me lembro

Fluxo:

[{"id":"a79c03486459c6c8","type":"tab","label":"Correios","disabled":false,"info":"","env":[]},{"id":"f2c90c6b2db09388","type":"group","z":"a79c03486459c6c8","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["bb7ad635364d8f85","fc7e36ea7d95d35d","ae3248fb88ebafb3","683da37594845817","9ebb54c67629f053","7e18bb798c58efe3","b8519a4afdd3a317","0f92785d5aa6274a","e2035d886fc674b7"],"x":54,"y":679,"w":1052,"h":149.5},{"id":"214d29bdd74385e1","type":"group","z":"a79c03486459c6c8","name":"Mudança de status","style":{"label":true},"nodes":["0c3ac19265a3db18","346d8557fdba1a04","cc3513557d3e7dbc","0405a73dfc16925c","ab6cc7c258ac5e1e","99b9c74f5e97ef4b","a1def123038ad0e0","eba6f26651d44ffb","847d72c30481827f","622eb83b073642f7","e74ed48ae4640a18"],"x":54,"y":179,"w":1342,"h":162},{"id":"94fa28ae0e629086","type":"group","z":"a79c03486459c6c8","name":"Atualização","style":{"label":true},"nodes":["97743002073c0dda","7fd965e17382d880","cf5331c8c6002452","51b72149e9653038","6494e811268c1a12","8f100ae5af1baa9e","b67c28f2692bec5f","04fbd1ea0757f708","96abe99b2cf42cbf","fee2a02a9187719b","64dce67d84eb7967","e4c9dce3eb69949a","4fccdd304eb40de2","a8690319ecb8b892","f213d423e8295017","24830b2b312f08b1","587f5b97bcedaed5","4c0f5ecf0a06e111","b9921cc413f1ede8","60850bf887b2bc0e","c30428f6f697958a","32636e87678747f6","b153f5e9eaef8ecb","ddeb7971ea9d1c0d","e61a0c7c2f0ea6af","7ec9f299b1ad8ff5","64a675dc6850b375"],"x":54,"y":379,"w":1932,"h":262},{"id":"0a05b3e2b2f5d771","type":"group","z":"a79c03486459c6c8","name":"Adicionar Rastreio","style":{"label":true},"nodes":["20103fce5a92a1d4","c7a5408f8cc5dbdf","cf9439e6e43cd887","acf2ac1079f62b18","d3c47e986ae2c3ec","d5a56adb75958012","5bd760b668a3ba07","6566bdf22e4ef401","9a8cac12b789e0d4"],"x":68,"y":873,"w":1138,"h":248},{"id":"1b3fae49edc700db","type":"group","z":"a79c03486459c6c8","name":"Excluir Rastreio","style":{"label":true},"nodes":["e009644eca2c0bbe","85d7fbe8076d8971","07f03b0b1517a9dc","9eed622a5b173721","bbb5b85ef360ead6","9189ac6b2959bf4d","55315b25d3bd2bc7","0f1466ceac244b09","956317a64a3970f7"],"x":74,"y":1339,"w":792,"h":162},{"id":"c6f0e1c2d91567a6","type":"group","z":"a79c03486459c6c8","name":"","style":{"label":true},"nodes":["21c696455939a9c4","0143491d19454720","e4541e788d014c8b"],"x":54,"y":19,"w":342,"h":122},{"id":"3f1acc5cba86dbe3","type":"group","z":"a79c03486459c6c8","name":"Verificar status","style":{"label":true},"nodes":["bab36cc485f6623c","6450dc296ad6236b","58b4466a9de89c83","6f756044e04c990d","175c8e789e776ecb","9d83a3897eaffce3","df23a8c3996c1117","da3f645f1b8d26d0","f131902ccbd0fe9e","027b2e30872861f3","5df9ea2b2e73395f"],"x":74,"y":1159,"w":1052,"h":142},{"id":"d5a56adb75958012","type":"group","z":"a79c03486459c6c8","g":"0a05b3e2b2f5d771","name":"Telegram","style":{"label":true},"nodes":["e2400ff4e6403679","779e5eb7b4da8c63","de3eaa1736d4fced"],"x":94,"y":899,"w":552,"h":82},{"id":"e009644eca2c0bbe","type":"ha-button","z":"a79c03486459c6c8","g":"1b3fae49edc700db","name":"Correios Excluir","version":0,"debugenabled":false,"outputs":1,"entityConfig":"34df51b33a4efd6f","outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"x":180,"y":1380,"wires":[["07f03b0b1517a9dc"]]},{"id":"20103fce5a92a1d4","type":"ha-button","z":"a79c03486459c6c8","g":"0a05b3e2b2f5d771","name":"Correios Salvar","version":0,"debugenabled":false,"outputs":1,"entityConfig":"06032357ce6a46e1","outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"x":180,"y":1020,"wires":[["5bd760b668a3ba07"]]},{"id":"c7a5408f8cc5dbdf","type":"ha-text","z":"a79c03486459c6c8","g":"0a05b3e2b2f5d771","name":"Correios Rastreio","version":1,"debugenabled":false,"inputs":1,"outputs":1,"entityConfig":"6b6144652fd3f35e","mode":"get","value":"payload","valueType":"msg","outputProperties":[{"property":"rastreio","propertyType":"msg","value":"","valueType":"value"}],"x":460,"y":1080,"wires":[["cf9439e6e43cd887"]]},{"id":"cf9439e6e43cd887","type":"ha-select","z":"a79c03486459c6c8","g":"0a05b3e2b2f5d771","name":"Correios Notificação","version":1,"debugenabled":false,"inputs":1,"outputs":1,"entityConfig":"affcb1b3ab97b12c","mode":"get","value":"payload","valueType":"msg","outputProperties":[{"property":"notificacao","propertyType":"msg","value":"","valueType":"value"}],"x":670,"y":1080,"wires":[["acf2ac1079f62b18"]]},{"id":"acf2ac1079f62b18","type":"ha-text","z":"a79c03486459c6c8","g":"0a05b3e2b2f5d771","name":"Correios Nome Objeto","version":1,"debugenabled":false,"inputs":1,"outputs":1,"entityConfig":"f960d0b45b5a3d96","mode":"get","value":"payload","valueType":"msg","outputProperties":[{"property":"nome_objeto","propertyType":"msg","value":"","valueType":"value"}],"x":900,"y":1080,"wires":[["d3c47e986ae2c3ec"]]},{"id":"bab36cc485f6623c","type":"function","z":"a79c03486459c6c8","g":"3f1acc5cba86dbe3","name":"Headers","func":"msg.url = \"https://www.linkcorreios.com.br/?id=\" + msg.rastreio\nmsg.headers = {\n    \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/50.0.2661.102 Safari/537.36\",\n}\n\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":240,"y":1200,"wires":[["6450dc296ad6236b"]]},{"id":"6450dc296ad6236b","type":"http request","z":"a79c03486459c6c8","g":"3f1acc5cba86dbe3","name":"Site","method":"GET","ret":"txt","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":370,"y":1200,"wires":[["58b4466a9de89c83"]]},{"id":"58b4466a9de89c83","type":"html","z":"a79c03486459c6c8","g":"3f1acc5cba86dbe3","name":"Status","property":"payload","outproperty":"status","tag":"#page > main > div.container.margin_30_5 > div > div > div.singlepost > ul:nth-child(3) > li:nth-child(1) > b","ret":"text","as":"single","x":490,"y":1200,"wires":[["6f756044e04c990d"]]},{"id":"6f756044e04c990d","type":"html","z":"a79c03486459c6c8","g":"3f1acc5cba86dbe3","name":"Data","property":"payload","outproperty":"data","tag":"#page > main > div.container.margin_30_5 > div > div > div.singlepost > ul:nth-child(3) > li:nth-child(2)","ret":"text","as":"single","x":610,"y":1200,"wires":[["175c8e789e776ecb"]]},{"id":"175c8e789e776ecb","type":"html","z":"a79c03486459c6c8","g":"3f1acc5cba86dbe3","name":"Local","property":"payload","outproperty":"local","tag":"#page > main > div.container.margin_30_5 > div > div > div.singlepost > ul:nth-child(3) > li:nth-child(3)","ret":"text","as":"single","x":730,"y":1200,"wires":[["9d83a3897eaffce3"]]},{"id":"9d83a3897eaffce3","type":"html","z":"a79c03486459c6c8","g":"3f1acc5cba86dbe3","name":"Destino","property":"payload","outproperty":"destino","tag":"#page > main > div.container.margin_30_5 > div > div > div.singlepost > ul:nth-child(3) > li:nth-child(4)","ret":"text","as":"single","x":860,"y":1200,"wires":[["df23a8c3996c1117"]]},{"id":"df23a8c3996c1117","type":"function","z":"a79c03486459c6c8","g":"3f1acc5cba86dbe3","name":"dados sensor","func":"let arrayRastreio = flow.get(\"rastreio\") || [];\narrayRastreio.push(msg.rastreio);\nflow.set(\"rastreio\", arrayRastreio);\n\n\nlet arrayObjeto = flow.get(\"nome_objeto\") || [];\narrayObjeto.push(msg.nome_objeto);\nflow.set(\"nome_objeto\", arrayObjeto);\n\nlet arrayNotificacao = flow.get(\"notificacao\") || [];\narrayNotificacao.push(msg.notificacao);\nflow.set(\"notificacao\", arrayNotificacao);\n\nmsg.entity_id = 'sensor.correios_' + msg.rastreio.toUpperCase()\nmsg.state =  msg.status\nmsg.attributes = {\n    rastreio: msg.rastreio,\n    status: msg.status,\n    notificacao: msg.notificacao,\n    data: msg.data,\n    local: msg.local,\n    destino: msg.destino,\n    friendly_name: msg.nome_objeto.toUpperCase() + ' - ' + msg.rastreio.toUpperCase(),\n}\nreturn msg\n","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":1020,"y":1200,"wires":[["f131902ccbd0fe9e"]]},{"id":"97743002073c0dda","type":"debug","z":"a79c03486459c6c8","g":"94fa28ae0e629086","name":"Atualização","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1070,"y":420,"wires":[]},{"id":"d3c47e986ae2c3ec","type":"api-call-service","z":"a79c03486459c6c8","g":"0a05b3e2b2f5d771","name":"Limpar texto","server":"33803899.487d48","version":5,"debugenabled":false,"domain":"text","service":"set_value","areaId":[],"deviceId":[],"entityId":["text.correios_nome_objeto","text.correios_rastreio"],"data":"{\"value\":\"\"}","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1110,"y":1020,"wires":[["bab36cc485f6623c","b8519a4afdd3a317"]]},{"id":"bb7ad635364d8f85","type":"debug","z":"a79c03486459c6c8","g":"f2c90c6b2db09388","name":"Select Rastreio","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":980,"y":720,"wires":[]},{"id":"fc7e36ea7d95d35d","type":"file","z":"a79c03486459c6c8","g":"f2c90c6b2db09388","name":"Criar/Atualizar rastreios.txt","filename":"/config/node-red/correios/rastreios.txt","filenameType":"str","appendNewline":false,"createDir":true,"overwriteFile":"true","encoding":"none","x":620,"y":780,"wires":[["ae3248fb88ebafb3"]]},{"id":"85d7fbe8076d8971","type":"debug","z":"a79c03486459c6c8","g":"1b3fae49edc700db","name":"Correios Excluir","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":600,"y":1460,"wires":[]},{"id":"ae3248fb88ebafb3","type":"debug","z":"a79c03486459c6c8","g":"f2c90c6b2db09388","name":"Criar/Atualizar rastreios.txt","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":900,"y":780,"wires":[]},{"id":"da3f645f1b8d26d0","type":"debug","z":"a79c03486459c6c8","g":"3f1acc5cba86dbe3","name":"Verificar status","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":540,"y":1260,"wires":[]},{"id":"683da37594845817","type":"ha-update-config","z":"a79c03486459c6c8","g":"f2c90c6b2db09388","name":"Select Rastreio","server":"33803899.487d48","entityConfig":"7b253b9f418ac1dc","version":0,"outputProperties":[],"x":780,"y":720,"wires":[["bb7ad635364d8f85","04fbd1ea0757f708"]]},{"id":"9ebb54c67629f053","type":"function","z":"a79c03486459c6c8","g":"f2c90c6b2db09388","name":"Atualizar Select","func":"if (msg.rastreio_count == 0){\n\nmsg.payload = {\"options\": [\" \"]}\n\n} else {\n// msg.payload = JSON.parse(msg.payload);\n// Função para ler msg.payload e juntar nome_objeto e rastreio separados por \" - \"\nfunction juntarNomeERastreio(msg) {\n    // Verificar se msg.payload é um array\n    if (Array.isArray(msg.payload)) {\n        const objetosConcatenados = msg.payload.map(objeto => `${objeto.nome_objeto} - ${objeto.rastreio}`);\n        return { options: objetosConcatenados };\n    } else {\n        return { options: [] }; // Retorna um array vazio se msg.payload não for um array\n    }\n}\n\n// Exemplo de utilização da função\nconst resultadoConcatenado = juntarNomeERastreio(msg);\n// console.log(resultadoConcatenado); // Saída do resultado concatenado\n\nmsg.rastreio_count = msg.payload.length;\nmsg.payload = resultadoConcatenado;\n    }\n\nreturn msg;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":580,"y":720,"wires":[["683da37594845817"]]},{"id":"f131902ccbd0fe9e","type":"function","z":"a79c03486459c6c8","g":"3f1acc5cba86dbe3","name":"Criar sensor ","func":"function removerAcentosECedilhas(texto) {\n    var mapaAcentosHex = {\n        a: /[\\xE0-\\xE6]/g,\n        e: /[\\xE8-\\xEB]/g,\n        i: /[\\xEC-\\xEF]/g,\n        o: /[\\xF2-\\xF6]/g,\n        u: /[\\xF9-\\xFC]/g,\n        c: /\\xE7/g,\n        n: /\\xF1/g,\n    };\n\n    for (var letra in mapaAcentosHex) {\n        var expressaoRegular = mapaAcentosHex[letra];\n        texto = texto.replace(expressaoRegular, letra);\n    }\n\n    // Remover \"-\" e substituir por \"_\"\n    texto = texto.replace(/-/g, 'e');\n\n    texto = texto.replace(/\\|/g, 'e');\n\n    return texto;\n}\n\nvar textoComAcentosECedilhas = msg.entity_id;\nvar textoSemAcentosECedilhas = removerAcentosECedilhas(textoComAcentosECedilhas.toLowerCase());\n\nmsg.entity_id = textoSemAcentosECedilhas;\nmsg.payload = {\n    data: {\n        state: msg.state,\n        attributes: msg.attributes\n    }\n};\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":250,"y":1260,"wires":[["027b2e30872861f3"]]},{"id":"027b2e30872861f3","type":"ha-api","z":"a79c03486459c6c8","g":"3f1acc5cba86dbe3","name":"","server":"33803899.487d48","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":390,"y":1260,"wires":[["da3f645f1b8d26d0"]]},{"id":"07f03b0b1517a9dc","type":"ha-select","z":"a79c03486459c6c8","g":"1b3fae49edc700db","name":"Rastreio","version":1,"debugenabled":false,"inputs":1,"outputs":1,"entityConfig":"7b253b9f418ac1dc","mode":"get","value":"payload","valueType":"msg","outputProperties":[{"property":"rastreio","propertyType":"msg","value":"","valueType":"value"}],"x":340,"y":1380,"wires":[["bbb5b85ef360ead6"]]},{"id":"9eed622a5b173721","type":"function","z":"a79c03486459c6c8","g":"1b3fae49edc700db","name":"Correios Excluir","func":"// Função para procurar e apagar o valor de msg.rastreio no array msg.payload\nfunction procurarEApagarRastreio(msg) {\n    // Verificar se msg.rastreio está definido\n    if (msg.rastreio) {\n        // Extrair o código de rastreio de msg.rastreio\n        const codigoRastreioPartes = msg.rastreio.split('-');\n        const codigoRastreio = codigoRastreioPartes.pop().trim(); // Pegando o último elemento após o \"-\"\n        msg.entity_id = codigoRastreio;\n\n        // // Adicionar variáveis de depuração\n        // msg.codigoRastreioPartes = codigoRastreioPartes;\n        // msg.codigoRastreio = codigoRastreio;\n\n        // Converter msg.payload para JSON, se for uma string\n        if (typeof msg.payload === 'string') {\n            msg.payload = JSON.parse(msg.payload);\n        }\n\n        // Se msg.payload não for um array ou não existir, inicializar como um espaço em branco\n        if (!Array.isArray(msg.payload)) {\n            msg.payload = \" \";\n            msg.rastreio.count = 0; // Definir count como 0 se não houver objetos\n        } else {\n            // Verificar se msg.payload é um array com mais de um objeto\n            const indiceDoObjeto = msg.payload.findIndex(objeto => objeto.rastreio === codigoRastreio);\n            if (indiceDoObjeto !== -1) {\n                // Remove o objeto do array\n                msg.payload.splice(indiceDoObjeto, 1);\n\n                // Atualizar count com a quantidade restante de objetos\n                msg.rastreio_count = msg.payload.length;\n            }\n        }\n    } else {\n        console.error(\"Erro: msg.rastreio não está definido.\");\n    }\n\n    return msg; // Retorna a mensagem modificada\n}\n\n// Exemplo de utilização da função\nconst mensagemModificada = procurarEApagarRastreio(msg);\nreturn mensagemModificada;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":680,"y":1380,"wires":[["9189ac6b2959bf4d","0f1466ceac244b09"]]},{"id":"bbb5b85ef360ead6","type":"file in","z":"a79c03486459c6c8","g":"1b3fae49edc700db","name":"Ler rastreios.txt","filename":"/config/node-red/correios/rastreios.txt","filenameType":"str","format":"utf8","chunk":false,"sendError":false,"encoding":"none","allProps":false,"x":500,"y":1380,"wires":[["9eed622a5b173721"]]},{"id":"9189ac6b2959bf4d","type":"link out","z":"a79c03486459c6c8","g":"1b3fae49edc700db","name":"link in Atualizar Select e TXT","mode":"link","links":["7e18bb798c58efe3"],"x":825,"y":1380,"wires":[]},{"id":"7e18bb798c58efe3","type":"link in","z":"a79c03486459c6c8","g":"f2c90c6b2db09388","name":"link in Atualizar Select e TXT","links":["9189ac6b2959bf4d"],"x":355,"y":720,"wires":[["9ebb54c67629f053","fc7e36ea7d95d35d"]]},{"id":"55315b25d3bd2bc7","type":"http request","z":"a79c03486459c6c8","g":"1b3fae49edc700db","name":"Deleta sensor","method":"DELETE","ret":"txt","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":420,"y":1460,"wires":[["85d7fbe8076d8971"]]},{"id":"0f1466ceac244b09","type":"function","z":"a79c03486459c6c8","g":"1b3fae49edc700db","name":"Filtro","func":"msg.headers = {\n    \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/50.0.2661.102 Safari/537.36\",\n    \"Authorization\": \"Bearer \" + global.get(\"token\"),\n}\n\nmsg.url = 'http://' + global.get(\"ip\") + '/api/states/sensor.correios_' + msg.entity_id.toLowerCase();\n\n\nreturn msg\n","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":270,"y":1460,"wires":[["55315b25d3bd2bc7"]]},{"id":"21c696455939a9c4","type":"inject","z":"a79c03486459c6c8","g":"c6f0e1c2d91567a6","name":"Digitar Chave token e IP","props":[],"repeat":"1800","crontab":"","once":true,"onceDelay":"2","topic":"","x":125,"y":100,"wires":[["0143491d19454720"]],"l":false},{"id":"0143491d19454720","type":"change","z":"a79c03486459c6c8","g":"c6f0e1c2d91567a6","name":"Digitar Chave token e IP","rules":[{"t":"set","p":"token","pt":"global","to":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiI3ZGM5YWFjZjBmMTI0NDExOGIxZDE2ZmIyNWQ2NDQ1MSIsImlhdCI6MTcyMDQ2MjI3NywiZXhwIjoyMDM1ODIyMjc3fQ.V3MO5RZN4VT8BlLzXIhkQ4hJVp4WoDV2ne8w3O31kAM","tot":"str"},{"t":"set","p":"ip","pt":"global","to":"192.168.0.186:8123","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":260,"y":100,"wires":[[]]},{"id":"e4541e788d014c8b","type":"comment","z":"a79c03486459c6c8","g":"c6f0e1c2d91567a6","name":"IP + Token","info":"","x":140,"y":60,"wires":[]},{"id":"7fd965e17382d880","type":"inject","z":"a79c03486459c6c8","g":"94fa28ae0e629086","name":"Atualizar de X em X min","props":[{"p":"payload"}],"repeat":"180","crontab":"","once":false,"onceDelay":"6","topic":"","payload":"Inject","payloadType":"str","x":210,"y":420,"wires":[["b9921cc413f1ede8","587f5b97bcedaed5"]]},{"id":"cf5331c8c6002452","type":"function","z":"a79c03486459c6c8","g":"94fa28ae0e629086","name":"Atualizar Sensores","func":"if (msg.rc.code == 0){\n// Converter msg.payload para JSON, se for uma string\nif (typeof msg.payload === 'string') {\n    msg.payload = JSON.parse(msg.payload);\n}\n// Verificar se msg.payload é um array\nif (Array.isArray(msg.payload)) {\n    // Percorrer os objetos em msg.payload\n    for (let i = 0; i < msg.payload.length; i++) {\n        // Criar uma nova mensagem com os valores do objeto atual\n        const novaMsg = {\n            rastreio: msg.payload[i].rastreio,\n            notificacao: msg.payload[i].notificacao,\n            nome_objeto: msg.payload[i].nome_objeto,\n            rastreio_count: msg.payload.length\n        };\n        \n        // msg.rastreio_count = msg.payload.length;\n\n        // Enviar a nova mensagem\n        node.send(novaMsg);\n    }\n} else {\n    // console.error(\"Erro: msg.payload não é um array.\");\n}\nreturn [null, msg]\n}","outputs":2,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":688.5713882446289,"y":480.00002098083496,"wires":[["51b72149e9653038"],[]]},{"id":"51b72149e9653038","type":"delay","z":"a79c03486459c6c8","g":"94fa28ae0e629086","name":"","pauseType":"rate","timeout":"2","timeoutUnits":"seconds","rate":"1","nbRateUnits":"3","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":898.5713882446289,"y":480.00002098083496,"wires":[["97743002073c0dda","6494e811268c1a12","a8690319ecb8b892"]]},{"id":"5df9ea2b2e73395f","type":"link in","z":"a79c03486459c6c8","g":"3f1acc5cba86dbe3","name":"Verificar status","links":["6494e811268c1a12"],"x":115,"y":1200,"wires":[["bab36cc485f6623c"]]},{"id":"6494e811268c1a12","type":"link out","z":"a79c03486459c6c8","g":"94fa28ae0e629086","name":"Verificar status","mode":"link","links":["5df9ea2b2e73395f"],"x":1053.571388244629,"y":480.00002098083496,"wires":[]},{"id":"8f100ae5af1baa9e","type":"server-events","z":"a79c03486459c6c8","g":"94fa28ae0e629086","name":"HA Restart","server":"33803899.487d48","version":3,"exposeAsEntityConfig":"","eventType":"home_assistant_client","eventData":"","waitForRunning":true,"outputProperties":[{"property":"entity_id","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"$outputData(\"eventData\").event_type","valueType":"jsonata"},{"property":"event_type","propertyType":"msg","value":"$outputData(\"eventData\").event_type","valueType":"jsonata"}],"x":140,"y":540,"wires":[["b67c28f2692bec5f"]]},{"id":"b67c28f2692bec5f","type":"switch","z":"a79c03486459c6c8","g":"94fa28ae0e629086","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"ready","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":270,"y":540,"wires":[["60850bf887b2bc0e"]]},{"id":"0c3ac19265a3db18","type":"server-state-changed","z":"a79c03486459c6c8","g":"214d29bdd74385e1","name":"Aviso mudança de status","server":"33803899.487d48","version":5,"outputs":1,"exposeAsEntityConfig":"","entityId":"sensor.correios_","entityIdType":"regex","outputInitially":false,"stateType":"str","ifState":"","ifStateType":"str","ifStateOperator":"is","outputOnlyOnStateChange":true,"for":"","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":190,"y":260,"wires":[["a1def123038ad0e0"]]},{"id":"346d8557fdba1a04","type":"switch","z":"a79c03486459c6c8","g":"214d29bdd74385e1","name":"Notificacao = Sim / Saiu para entrega","property":"data.new_state.attributes.notificacao","propertyType":"msg","rules":[{"t":"eq","v":"Sim","vt":"str"},{"t":"eq","v":"Saiu para entrega","vt":"str"},{"t":"eq","v":"Objeto entregue","vt":"str"}],"checkall":"true","repair":false,"outputs":3,"x":590,"y":260,"wires":[["0405a73dfc16925c"],["ab6cc7c258ac5e1e"],["eba6f26651d44ffb"]]},{"id":"cc3513557d3e7dbc","type":"link out","z":"a79c03486459c6c8","g":"214d29bdd74385e1","name":"Todas notificações","mode":"link","links":[],"x":995,"y":220,"wires":[]},{"id":"0405a73dfc16925c","type":"template","z":"a79c03486459c6c8","g":"214d29bdd74385e1","name":"Todas notificações","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"📦 {{{data.new_state.attributes.friendly_name}}} \n__\n\n{{{data.new_state.attributes.status}}}\n\n{{{data.new_state.attributes.data}}}\n\n{{{data.new_state.attributes.destino}}}\n\n{{{data.new_state.attributes.local}}}\n\n\n","output":"str","x":870,"y":220,"wires":[["cc3513557d3e7dbc"]]},{"id":"ab6cc7c258ac5e1e","type":"switch","z":"a79c03486459c6c8","g":"214d29bdd74385e1","name":"= Objeto saiu para entrega ao destinatário","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"['Objeto saiu para entrega ao destinatário']","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":940,"y":260,"wires":[["99b9c74f5e97ef4b"]]},{"id":"99b9c74f5e97ef4b","type":"template","z":"a79c03486459c6c8","g":"214d29bdd74385e1","name":"Saiu para entrega","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"📦 {{{data.new_state.attributes.friendly_name}}} \n__\n\n{{{data.new_state.attributes.status}}}\n\n{{{data.new_state.attributes.data}}}\n\n{{{data.new_state.attributes.destino}}}\n\n{{{data.new_state.attributes.local}}}\n\n\n","output":"str","x":1230,"y":260,"wires":[["622eb83b073642f7"]]},{"id":"a1def123038ad0e0","type":"function","z":"a79c03486459c6c8","g":"214d29bdd74385e1","name":"!= Null","func":"if (msg.data.new_state.attributes.data.length === 0) {\n    msg.data.new_state.attributes.data[0] = null;\n    return [msg, null];\n}\nelse {\n    return [null, msg];\n}\n","outputs":2,"noerr":0,"initialize":"","finalize":"","libs":[],"x":370,"y":260,"wires":[[],["346d8557fdba1a04"]]},{"id":"eba6f26651d44ffb","type":"switch","z":"a79c03486459c6c8","g":"214d29bdd74385e1","name":"= Objeto entregue ao destinatário","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"['Objeto entregue ao destinatário']","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":920,"y":300,"wires":[["847d72c30481827f"]]},{"id":"847d72c30481827f","type":"template","z":"a79c03486459c6c8","g":"214d29bdd74385e1","name":"Objeto entregue","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"📦 {{{data.new_state.attributes.friendly_name}}} \n__\n\n{{{data.new_state.attributes.status}}}\n\n{{{data.new_state.attributes.data}}}\n\n{{{data.new_state.attributes.destino}}}\n\n{{{data.new_state.attributes.local}}}\n\n\n","output":"str","x":1220,"y":300,"wires":[["e74ed48ae4640a18"]]},{"id":"622eb83b073642f7","type":"link out","z":"a79c03486459c6c8","g":"214d29bdd74385e1","name":"Saiu para entrega","mode":"link","links":[],"x":1355,"y":260,"wires":[]},{"id":"e74ed48ae4640a18","type":"link out","z":"a79c03486459c6c8","g":"214d29bdd74385e1","name":"Objeto entregue","mode":"link","links":[],"x":1355,"y":300,"wires":[]},{"id":"04fbd1ea0757f708","type":"ha-get-entities","z":"a79c03486459c6c8","g":"94fa28ae0e629086","name":"","server":"33803899.487d48","version":1,"rules":[{"property":"entity_id","logic":"starts_with","value":"sensor.correios_","valueType":"str"}],"outputType":"array","outputEmptyResults":true,"outputLocationType":"msg","outputLocation":"payload","outputResultsCount":1,"x":1068.571388244629,"y":540.000020980835,"wires":[["96abe99b2cf42cbf","64dce67d84eb7967","e61a0c7c2f0ea6af","7ec9f299b1ad8ff5"]]},{"id":"96abe99b2cf42cbf","type":"function","z":"a79c03486459c6c8","g":"94fa28ae0e629086","name":"Saiu para entrega","func":"function verificarEntrega(array) {\n    // const targetPhrase = \"Objeto em transferência\";\n    const targetPhrase = \"Objeto saiu para entrega\";\n\n    // Array para armazenar as informações de friendly_name dos objetos que contêm a frase desejada\n    const nomesEntrega = [];\n\n    // Iterar sobre cada objeto no array\n    array.forEach(objeto => {\n        // Verificar se o estado do objeto contém a frase desejada\n        if (objeto.state.includes(targetPhrase)) {\n            // Se contiver, adicionar o nome friendly_name do objeto ao array de nomesEntrega\n            nomesEntrega.push(objeto.attributes.friendly_name);\n        }\n    });\n\n    return nomesEntrega.join(', '); // Convertendo o array para texto separando com \",\"\n}\n\n// Seu array de objetos\nconst arrayObjetos = msg.payload;\n\n// Chamada da função para verificar os objetos de entrega e atribuir o resultado ao msg.payload\nmsg.payload = verificarEntrega(arrayObjetos);\n\n// Verificar se o array de nomesEntrega está vazio e atribuir uma mensagem indicando isso ao msg.payload, se for o caso\nif (msg.payload.length === 0) {\n    msg.payload = \"Nenhuma entrega\";\n    msg.objetos = 0;\n} else {\n    // Adicionar o número de objetos de entrega a msg.objetos\n    msg.objetos = msg.payload.split(', ').length;\n}\n\nreturn msg;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1291.428611755371,"y":479.99997901916504,"wires":[["fee2a02a9187719b"]]},{"id":"fee2a02a9187719b","type":"ha-sensor","z":"a79c03486459c6c8","g":"94fa28ae0e629086","name":"Saiu para entrega","entityConfig":"a6b65574343e4d1e","version":0,"state":"payload","stateType":"msg","attributes":[{"property":"objetos","value":"objetos","valueType":"msg"}],"inputOverride":"allow","outputProperties":[],"x":1510,"y":480,"wires":[["e4c9dce3eb69949a"]]},{"id":"64dce67d84eb7967","type":"function","z":"a79c03486459c6c8","g":"94fa28ae0e629086","name":"Distribuição Contagem","func":"function verificarEntrega(array) {\n    // const targetPhrase = \"Objeto em transferência\";\n    // const targetPhrase = \"Objeto saiu para entrega\";\n    // const targetPhrase = \"para Unidade de Distribuição, CONTAGEM\";\n    const targetPhrase = \"Destino: Unidade de Distribuição - Contagem / MG\";\n    // const targetPhrase = \"Objeto em transferência - por favor aguarde\";\n\n    // Array para armazenar as informações de friendly_name dos objetos que contêm a frase desejada\n    const nomesEntrega = [];\n\n    // Iterar sobre cada objeto no array\n    array.forEach(objeto => {\n        // Verificar se o estado do objeto contém a frase desejada\n        if (objeto.attributes.destino.includes(targetPhrase)) {\n        // if (objeto.state.includes(targetPhrase)) {\n            // Se contiver, adicionar o nome friendly_name do objeto ao array de nomesEntrega\n            nomesEntrega.push(objeto.attributes.friendly_name);\n        }\n    });\n\n    return nomesEntrega.join(', '); // Convertendo o array para texto separando com \",\"\n}\n\n// Seu array de objetos\nconst arrayObjetos = msg.payload;\n\n// Chamada da função para verificar os objetos de entrega e atribuir o resultado ao msg.payload\nmsg.payload = verificarEntrega(arrayObjetos);\n\n// Verificar se o array de nomesEntrega está vazio e atribuir uma mensagem indicando isso ao msg.payload, se for o caso\nif (msg.payload.length === 0) {\n    msg.payload = \"Nenhum objeto em Contagem\";\n    msg.objetos = 0;\n} else {\n    // Adicionar o número de objetos de entrega a msg.objetos\n    msg.objetos = msg.payload.split(', ').length;\n}\n\nreturn msg;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1301.428611755371,"y":539.999979019165,"wires":[["4fccdd304eb40de2"]]},{"id":"e4c9dce3eb69949a","type":"debug","z":"a79c03486459c6c8","g":"94fa28ae0e629086","name":"Saiu entrega / Chegou na cidade","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1800,"y":540,"wires":[]},{"id":"4fccdd304eb40de2","type":"ha-sensor","z":"a79c03486459c6c8","g":"94fa28ae0e629086","name":"Distribuição Contagem","entityConfig":"af434e71709104d6","version":0,"state":"payload","stateType":"msg","attributes":[{"property":"objetos","value":"objetos","valueType":"msg"}],"inputOverride":"allow","outputProperties":[],"x":1520,"y":540,"wires":[["e4c9dce3eb69949a"]]},{"id":"a8690319ecb8b892","type":"trigger","z":"a79c03486459c6c8","g":"94fa28ae0e629086","name":"Watchdog 4s","op1":"","op2":"","op1type":"nul","op2type":"pay","duration":"4","extend":true,"overrideDelay":false,"units":"s","reset":"","bytopic":"all","topic":"topic","outputs":2,"x":888.5713882446289,"y":540.000020980835,"wires":[[],["04fbd1ea0757f708"]]},{"id":"f213d423e8295017","type":"function","z":"a79c03486459c6c8","g":"94fa28ae0e629086","name":"Atualizar Select","func":"if (msg.rc.code == 0){\n// Converter msg.payload para JSON, se for uma string\nif (typeof msg.payload === 'string') {\n    msg.payload = JSON.parse(msg.payload);\n}\n\n// Verificar se msg.payload é um array\nif (Array.isArray(msg.payload)) {\n    // Mapear o array original para criar o novo array com as concatenações\n    const novoArray = msg.payload.map(objeto => `${objeto.nome_objeto} - ${objeto.rastreio}`);\n\n    // Atribuir o novo array a msg.payload\n    msg.payload = { options: novoArray };\n} else {\n    console.error(\"Erro: msg.payload não é um array.\");\n}\n\nreturn msg;\n}","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":678.5713882446289,"y":540.000020980835,"wires":[["683da37594845817"]]},{"id":"24830b2b312f08b1","type":"ha-update-config","z":"a79c03486459c6c8","g":"94fa28ae0e629086","name":"Select Notificações","server":"33803899.487d48","entityConfig":"affcb1b3ab97b12c","version":0,"outputProperties":[],"x":650,"y":420,"wires":[["4c0f5ecf0a06e111","04fbd1ea0757f708"]]},{"id":"587f5b97bcedaed5","type":"change","z":"a79c03486459c6c8","g":"94fa28ae0e629086","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"options\": [\"Sim\",\"Não\"]}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":460,"y":420,"wires":[["24830b2b312f08b1"]]},{"id":"4c0f5ecf0a06e111","type":"debug","z":"a79c03486459c6c8","g":"94fa28ae0e629086","name":"Select Notificações","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":870,"y":420,"wires":[]},{"id":"b9921cc413f1ede8","type":"exec","z":"a79c03486459c6c8","g":"94fa28ae0e629086","command":"cat /config/node-red/correios/rastreios.txt","addpay":"","append":"","useSpawn":"false","timer":"","winHide":false,"oldrc":false,"name":"rastreios.txt existe?","x":470,"y":480,"wires":[["cf5331c8c6002452","f213d423e8295017"],[],[]]},{"id":"b8519a4afdd3a317","type":"exec","z":"a79c03486459c6c8","g":"f2c90c6b2db09388","command":"cat /config/node-red/correios/rastreios.txt","addpay":"","append":"","useSpawn":"false","timer":"","winHide":false,"oldrc":false,"name":"rastreios.txt existe?","x":190,"y":780,"wires":[["0f92785d5aa6274a"],[],[]]},{"id":"0f92785d5aa6274a","type":"function","z":"a79c03486459c6c8","g":"f2c90c6b2db09388","name":"function 2","func":"if (msg.rc.code == 0){\n\n    // Converter msg.payload para um array, se for uma string\n    if (typeof msg.payload === 'string') {\n        msg.payload = JSON.parse(msg.payload);\n    }\n\n// Função para verificar se o valor de msg.rastreio está presente no array\nfunction verificarEAtualizarOuAdicionar(msg) {\n    let rastreioPresente = false;\n\n    // Inicializa msg.payload como um array, se ainda não for\n    if (!Array.isArray(msg.payload)) {\n        msg.payload = [];\n    }\n\n    // Verificar se msg.payload é um array e se contém o valor de msg.rastreio\n    if (Array.isArray(msg.payload)) {\n        for (let i = 0; i < msg.payload.length; i++) {\n            if (msg.payload[i].rastreio === msg.rastreio) {\n                // Se o valor de msg.rastreio estiver presente, atualize o nome_objeto\n                msg.payload[i].nome_objeto = msg.nome_objeto.toUpperCase();\n                rastreioPresente = true;\n                break; // Interrompe o loop se o valor for encontrado\n            }\n        }\n    }\n\n    // Se o valor de msg.rastreio não estiver presente, adicione um novo objeto ao array\n    if (!rastreioPresente) {\n        const novoObjeto = {\n            rastreio: msg.rastreio,\n            notificacao: msg.notificacao,\n            nome_objeto: msg.nome_objeto.toUpperCase() // Convertendo para letras maiúsculas\n        };\n        msg.payload.push(novoObjeto);\n    }\n\n    return msg;\n}\n\n// Exemplo de utilização da função\nconst mensagemModificada = verificarEAtualizarOuAdicionar(msg);\nreturn mensagemModificada;\n\n\n\n\n    // return [msg, null];\n\n\n    } else {\n\n// Função para adicionar um novo objeto ao array\nfunction adicionarObjeto(msg) {\n    const objeto = {\n        rastreio: msg.rastreio,\n        notificacao: msg.notificacao,\n        nome_objeto: msg.nome_objeto.toUpperCase() // Convertendo para letras maiúsculas\n    };\n    msg.rastreio_count = msg.payload.length;\n    return objeto;\n}\n\n// Exemplo de adição de objetos ao array\nconst novoObjeto = adicionarObjeto(msg);\nmsg.payload = [novoObjeto]; // Coloca o objeto em um array, caso seja necessário mais de um objeto\nmsg.rastreio_count = 1;\n\n    return msg;\n\n    // return [null, msg]; \n\n\n    }\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":380,"y":780,"wires":[["9ebb54c67629f053","fc7e36ea7d95d35d"]]},{"id":"e2035d886fc674b7","type":"inject","z":"a79c03486459c6c8","d":true,"g":"f2c90c6b2db09388","name":"","props":[],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":150,"y":720,"wires":[["b8519a4afdd3a317"]]},{"id":"60850bf887b2bc0e","type":"delay","z":"a79c03486459c6c8","g":"94fa28ae0e629086","name":"","pauseType":"delay","timeout":"2","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":140,"y":480,"wires":[["587f5b97bcedaed5","b9921cc413f1ede8"]]},{"id":"c30428f6f697958a","type":"function","z":"a79c03486459c6c8","d":true,"g":"94fa28ae0e629086","name":"Sensor orfão","func":"// Verifica se msg.payload e msg.rastreio_count estão definidos\nif (typeof msg.payload !== 'undefined' && typeof msg.rastreio_count !== 'undefined') {\n    msg.lenght = msg.payload.length;\n    if (msg.lenght == msg.rastreio_count) {\n        msg.teste = \"iguais\"\n        // return msg;\n\n    } else {\n        msg.teste = \"diferentes\"\n        if (typeof msg.payload !== 'undefined') {\n            msg.payload.forEach(function (item) {\n                if (item.entity_id) {\n                    var entityId = item.entity_id.replace('sensor.correios_', '');\n                    var newMsg = {\n                        entity_id: entityId\n                    };\n                    node.send(newMsg);\n                }\n            });\n        }\n    }\n} //else {\n    // msg.teste = \"Não definidas\"\n\n    // return msg; // Ou outra ação desejada se uma das propriedades não estiver definida\n    // return null; // Ou outra ação desejada se uma das propriedades não estiver definida\n//}\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1450,"y":420,"wires":[["32636e87678747f6"]]},{"id":"32636e87678747f6","type":"delay","z":"a79c03486459c6c8","d":true,"g":"94fa28ae0e629086","name":"","pauseType":"rate","timeout":"2","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":1610,"y":420,"wires":[["b153f5e9eaef8ecb","ddeb7971ea9d1c0d"]]},{"id":"b153f5e9eaef8ecb","type":"trigger","z":"a79c03486459c6c8","d":true,"g":"94fa28ae0e629086","name":"Watchdog 2s","op1":"","op2":"","op1type":"nul","op2type":"pay","duration":"2","extend":true,"overrideDelay":false,"units":"s","reset":"","bytopic":"all","topic":"topic","outputs":2,"x":1830,"y":420,"wires":[[],["b9921cc413f1ede8"]]},{"id":"ddeb7971ea9d1c0d","type":"link out","z":"a79c03486459c6c8","g":"94fa28ae0e629086","name":"Excluir sensores orfãos","mode":"link","links":["956317a64a3970f7"],"x":1715,"y":420,"wires":[]},{"id":"956317a64a3970f7","type":"link in","z":"a79c03486459c6c8","g":"1b3fae49edc700db","name":"Excluir sensores orfãos","links":["ddeb7971ea9d1c0d"],"x":115,"y":1460,"wires":[["0f1466ceac244b09"]]},{"id":"e61a0c7c2f0ea6af","type":"trigger","z":"a79c03486459c6c8","d":true,"g":"94fa28ae0e629086","name":"Watchdog 30s","op1":"","op2":"","op1type":"nul","op2type":"pay","duration":"30","extend":true,"overrideDelay":false,"units":"s","reset":"","bytopic":"all","topic":"topic","outputs":2,"x":1280,"y":420,"wires":[[],["c30428f6f697958a"]]},{"id":"5bd760b668a3ba07","type":"api-current-state","z":"a79c03486459c6c8","g":"0a05b3e2b2f5d771","name":"text.correios_rastreio","server":"33803899.487d48","version":3,"outputs":1,"halt_if":"","halt_if_type":"re","halt_if_compare":"is","entity_id":"text.correios_rastreio","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"rastreio","propertyType":"msg","value":"","valueType":"entityState"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":380,"y":1020,"wires":[["6566bdf22e4ef401"]]},{"id":"6566bdf22e4ef401","type":"api-current-state","z":"a79c03486459c6c8","g":"0a05b3e2b2f5d771","name":"text.correios_nome_objeto","server":"33803899.487d48","version":3,"outputs":1,"halt_if":"","halt_if_type":"re","halt_if_compare":"is","entity_id":"text.correios_nome_objeto","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"nome_objeto","propertyType":"msg","value":"","valueType":"entityState"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":620,"y":1020,"wires":[["9a8cac12b789e0d4"]]},{"id":"9a8cac12b789e0d4","type":"api-current-state","z":"a79c03486459c6c8","g":"0a05b3e2b2f5d771","name":"select.correios_notificacao","server":"33803899.487d48","version":3,"outputs":1,"halt_if":"","halt_if_type":"re","halt_if_compare":"is","entity_id":"select.correios_notificacao","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"notificacao","propertyType":"msg","value":"","valueType":"entityState"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":880,"y":1020,"wires":[["d3c47e986ae2c3ec"]]},{"id":"e2400ff4e6403679","type":"telegram receiver","z":"a79c03486459c6c8","d":true,"g":"d5a56adb75958012","name":"Correios","bot":"58b3f415bf711c2f","saveDataDir":"","filterCommands":false,"x":180,"y":940,"wires":[["de3eaa1736d4fced"],[]]},{"id":"779e5eb7b4da8c63","type":"debug","z":"a79c03486459c6c8","d":true,"g":"d5a56adb75958012","name":"debug 261","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":530,"y":940,"wires":[]},{"id":"de3eaa1736d4fced","type":"function","z":"a79c03486459c6c8","d":true,"g":"d5a56adb75958012","name":"Telegram","func":"// Expressão regular para o padrão em qualquer lugar do texto\nconst regex = /\\b[A-Za-z]{2}\\d{9}[A-Za-z]{2}\\b/;\n\n// Função para capitalizar a primeira letra de uma string\nfunction capitalizeFirstLetter(string) {\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\n// Verificação se msg.payload.content contém o padrão\nif (msg.payload && msg.payload.content && regex.test(msg.payload.content)) {\n  // msg.teste = \"ok\";\n\n  // Dividindo o texto pelas barras (\"/\")\n  const partes = msg.payload.content.split(\"/\");\n\n  // Salvar as partes nas propriedades específicas\n  if (partes.length >= 3) {\n    msg.nome_objeto = partes[0].trim();\n    msg.rastreio = partes[1].trim();\n    msg.notificacao = capitalizeFirstLetter(partes[2].trim());\n    return msg;\n\n  } \n} else {\n  // msg.teste = \"não ok\";\n}\n\n// return msg;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":360,"y":940,"wires":[["779e5eb7b4da8c63","d3c47e986ae2c3ec"]]},{"id":"7ec9f299b1ad8ff5","type":"function","z":"a79c03486459c6c8","g":"94fa28ae0e629086","name":"Tributado","func":"function verificarEntrega(array) {\n    // const targetPhrase = \"Objeto em transferência\";\n    // const targetPhrase = \"Objeto saiu para entrega\";\n    // const targetPhrase = \"para Unidade de Distribuição, CONTAGEM\";\n    // const targetPhrase = \"Objeto em transferência - por favor aguarde\";\n    const targetPhrase = \"Fiscalização aduaneira concluída - aguardando pagamento\";\n\n    // Array para armazenar as informações de friendly_name dos objetos que contêm a frase desejada\n    const nomesEntrega = [];\n\n    // Iterar sobre cada objeto no array\n    array.forEach(objeto => {\n        // Verificar se o estado do objeto contém a frase desejada\n        if (objeto.state.includes(targetPhrase)) {\n            // Se contiver, adicionar o nome friendly_name do objeto ao array de nomesEntrega\n            nomesEntrega.push(objeto.attributes.friendly_name);\n        }\n    });\n\n    return nomesEntrega.join(', '); // Convertendo o array para texto separando com \",\"\n}\n\n// Seu array de objetos\nconst arrayObjetos = msg.payload;\n\n// Chamada da função para verificar os objetos de entrega e atribuir o resultado ao msg.payload\nmsg.payload = verificarEntrega(arrayObjetos);\n\n// Verificar se o array de nomesEntrega está vazio e atribuir uma mensagem indicando isso ao msg.payload, se for o caso\nif (msg.payload.length === 0) {\n    msg.payload = \"Nenhum objeto tributado\";\n    msg.objetos = 0;\n} else {\n    // Adicionar o número de objetos de entrega a msg.objetos\n    msg.objetos = msg.payload.split(', ').length;\n}\n\nreturn msg;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1260,"y":600,"wires":[["64a675dc6850b375"]]},{"id":"64a675dc6850b375","type":"ha-sensor","z":"a79c03486459c6c8","g":"94fa28ae0e629086","name":"Compras Tributadas","entityConfig":"e1a646cb6ccb8cec","version":0,"state":"payload","stateType":"msg","attributes":[{"property":"objetos","value":"objetos","valueType":"msg"}],"inputOverride":"allow","outputProperties":[],"x":1520,"y":600,"wires":[["e4c9dce3eb69949a"]]},{"id":"34df51b33a4efd6f","type":"ha-entity-config","z":"a79c03486459c6c8","server":"33803899.487d48","deviceConfig":"9fb062e6a3925fda","name":"Correios Excluir","version":"6","entityType":"button","haConfig":[{"property":"name","value":"Correios Excluir"},{"property":"icon","value":""},{"property":"entity_picture","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":""}],"resend":false,"debugEnabled":false},{"id":"06032357ce6a46e1","type":"ha-entity-config","z":"a79c03486459c6c8","server":"33803899.487d48","deviceConfig":"9fb062e6a3925fda","name":"Correios Salvar","version":"6","entityType":"button","haConfig":[{"property":"name","value":"Correios Salvar"},{"property":"icon","value":""},{"property":"entity_picture","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":""}],"resend":false,"debugEnabled":false},{"id":"6b6144652fd3f35e","type":"ha-entity-config","z":"a79c03486459c6c8","server":"33803899.487d48","deviceConfig":"9fb062e6a3925fda","name":"Correios Rastreio","version":"6","entityType":"text","haConfig":[{"property":"name","value":"Correios Rastreio"},{"property":"icon","value":""},{"property":"entity_picture","value":""},{"property":"entity_category","value":""},{"property":"mode","value":"text"},{"property":"min_length","value":""},{"property":"max_length","value":""},{"property":"pattern","value":""}],"resend":false,"debugEnabled":false},{"id":"affcb1b3ab97b12c","type":"ha-entity-config","z":"a79c03486459c6c8","server":"33803899.487d48","deviceConfig":"9fb062e6a3925fda","name":"Correios Notificação","version":"6","entityType":"select","haConfig":[{"property":"name","value":"Correios Notificação"},{"property":"icon","value":""},{"property":"entity_picture","value":""},{"property":"entity_category","value":""},{"property":"options","value":["option1"]}],"resend":false,"debugEnabled":false},{"id":"f960d0b45b5a3d96","type":"ha-entity-config","z":"a79c03486459c6c8","server":"33803899.487d48","deviceConfig":"9fb062e6a3925fda","name":"Correios Nome Objeto","version":"6","entityType":"text","haConfig":[{"property":"name","value":"Correios Nome Objeto"},{"property":"icon","value":""},{"property":"entity_picture","value":""},{"property":"entity_category","value":""},{"property":"mode","value":"text"},{"property":"min_length","value":""},{"property":"max_length","value":""},{"property":"pattern","value":""}],"resend":false,"debugEnabled":false},{"id":"33803899.487d48","type":"server","name":"Home Assistant","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":"30","areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true},{"id":"7b253b9f418ac1dc","type":"ha-entity-config","z":"a79c03486459c6c8","server":"33803899.487d48","deviceConfig":"9fb062e6a3925fda","name":"Rastreio","version":"6","entityType":"select","haConfig":[{"property":"name","value":"Rastreio"},{"property":"icon","value":""},{"property":"entity_picture","value":""},{"property":"entity_category","value":""},{"property":"options","value":[" "]}],"resend":false,"debugEnabled":false},{"id":"a6b65574343e4d1e","type":"ha-entity-config","z":"a79c03486459c6c8","server":"33803899.487d48","deviceConfig":"9fb062e6a3925fda","name":"Saiu para entrega","version":"6","entityType":"sensor","haConfig":[{"property":"name","value":"Saiu para entrega"},{"property":"icon","value":"mdi:truck-outline"},{"property":"entity_picture","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":""},{"property":"unit_of_measurement","value":""},{"property":"state_class","value":""}],"resend":false,"debugEnabled":false},{"id":"af434e71709104d6","type":"ha-entity-config","z":"a79c03486459c6c8","server":"33803899.487d48","deviceConfig":"9fb062e6a3925fda","name":"Distribuição Contagem","version":"6","entityType":"sensor","haConfig":[{"property":"name","value":"Distribuição Contagem"},{"property":"icon","value":"mdi:warehouse"},{"property":"entity_picture","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":""},{"property":"unit_of_measurement","value":""},{"property":"state_class","value":""}],"resend":false,"debugEnabled":false},{"id":"58b3f415bf711c2f","type":"telegram bot","z":"a79c03486459c6c8","botname":"Correios","usernames":"","chatids":"","baseapiurl":"","updatemode":"polling","pollinterval":"300","usesocks":false,"sockshost":"","socksprotocol":"socks5","socksport":"6667","socksusername":"anonymous","sockspassword":"","bothost":"","botpath":"","localbotport":"8443","publicbotport":"8443","privatekey":"","certificate":"","useselfsignedcertificate":false,"sslterminated":false,"verboselogging":false},{"id":"e1a646cb6ccb8cec","type":"ha-entity-config","z":"a79c03486459c6c8","server":"33803899.487d48","deviceConfig":"9fb062e6a3925fda","name":"Compras Tributadas","version":"6","entityType":"sensor","haConfig":[{"property":"name","value":"Compras Tributadas"},{"property":"icon","value":"mdi:currency-usd"},{"property":"entity_picture","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":""},{"property":"unit_of_measurement","value":""},{"property":"state_class","value":""}],"resend":false,"debugEnabled":false},{"id":"9fb062e6a3925fda","type":"ha-device-config","name":"Correios","hwVersion":"","manufacturer":"Node-RED","model":"","swVersion":""}]

Card 1:

type: vertical-stack
cards:
  - type: horizontal-stack
    cards:
      - type: custom:mushroom-template-card
        primary: Novo
        badge_icon: mdi:plus
        secondary: Rastreamento
        icon: mdi:package-variant-closed-plus
        fill_container: true
        layout: horizontal
        icon_color: green
        tap_action:
          action: fire-dom-event
          browser_mod:
            service: browser_mod.popup
            data:
              title: Adicionar Rastreio
              right_button: Salvar
              right_button_action:
                service: button.press
                data:
                  entity_id: button.correios_salvar
              content:
                type: entities
                entities:
                  - entity: select.correios_notificacao
                    name: Deseja receber notificações?
                    icon: mdi:bell-ring
                  - entity: text.correios_rastreio
                    name: Qual o Código de Rastreamento?
                    icon: mdi:package-variant-closed
                  - entity: text.correios_nome_objeto
                    name: Qual nome do Objeto?
                    icon: mdi:form-textbox
        entity: text.correios_rastreio
        card_mod:
          style: |
            ha-card { 
              --ha-card-background: black;
              --card-primary-color: green
            }
      - type: custom:mushroom-template-card
        primary: Excluir
        secondary: Rastreamento
        icon: mdi:package-variant-closed-remove
        icon_color: red
        text_color: red
        badge_icon: mdi:delete
        layout: horizontal
        multiline_secondary: false
        tap_action:
          action: fire-dom-event
          browser_mod:
            service: browser_mod.popup
            data:
              title: Excluir Rastreio
              right_button: Excluir
              right_button_action:
                service: button.press
                data:
                  entity_id: button.correios_excluir
              content:
                type: entities
                entities:
                  - entity: select.rastreio
                    name: Qual o Código de Rastreamento?
                    icon: mdi:package-variant-closed
                card_mod:
                  style: |
                    ha-card { 
                      height: 200px !important;
                    } 
        card_mod:
          style: |
            ha-card { 
              --ha-card-background: black;
              --card-primary-color: red
            }  
  - type: custom:button-card
    layout: icon_name
    name: Objetos Cadastrados
    icon: mdi:package-variant-closed
    styles:
      grid:
        - grid-template-areas: '"n i"'
        - grid-template-columns: 1fr 20%
      icon:
        - align-self: end
        - color: var(--text-primary-color)
        - height: 35px
      card:
        - padding: 4px
        - height: 40px
        - background: var(--primary-color)
      name:
        - color: var(--text-primary-color)
        - justify-self: start
        - padding-left: 10%
        - font-weight: 400
        - font-size: 18px
  - type: custom:auto-entities
    card:
      type: grid
      columns: 1
      square: false
    card_param: cards
    show_empty: false
    filter:
      include:
        - entity_id: sensor.correios_*
          options:
            type: custom:mushroom-template-card
            card_mod:
              style: |
                ha-card { 
                  --ha-card-background: black;
                  color: white;
                }
            entity: this.entity_id
            primary: '{{ state_attr(''this.entity_id'', ''friendly_name'') }}'
            secondary: >-
              {% if states['this.entity_id'].state == '[]' %} Objeto aguardando
              postagem nos Correios.   {% elif states['this.entity_id'].state ==
              "[{}]" %}Sincronizando com sistema dos correios  {% else
              %}              {{ state_attr('this.entity_id', 'status')|join()
              }}

              {{ state_attr('this.entity_id', 'data')|join() }}

              {{ state_attr('this.entity_id', 'local')|join() }}

              {{ state_attr('this.entity_id', 'destino')|join() }}

              {% endif %}
            icon: >-
              {% if states['this.entity_id'].state == "['Objeto entregue ao
              destinatário']" %}
                mdi:package-variant-closed-check
              {% elif states['this.entity_id'].state == "['Objeto entregue ao
              remetente']" %}
                mdi:package-variant-closed-check
              {% elif states['this.entity_id'].state == "['Objeto postado']" %}
                mdi:store-plus
              {% elif states['this.entity_id'].state == "[]" %}
                mdi:package-variant-closed-remove
              {% elif states['this.entity_id'].state == "[{}]" %}
                mdi:refresh
              {% elif states['this.entity_id'].state == "['Objeto saiu para
              entrega ao destinatário']" %}
                mdi:human-dolly
              {% elif states['this.entity_id'].state == "['Objeto está em rota
              de entrega']" %}
                mdi:human-dolly
              {% elif states['this.entity_id'].state == "['Objeto recebido pelos
              Correios do Brasil']" %}
                mdi:flag-variant
              {% elif states['this.entity_id'].state == "['Objeto em trânsito -
              por favor aguarde']" %}
                mdi:truck
              {% elif states['this.entity_id'].state == "['Objeto em
              transferência - por favor aguarde']" %}
                mdi:truck
              {% elif states['this.entity_id'].state == "['Informações
              eletrônicas enviadas para análise da autoridade aduaneira']" %}
                mdi:file-document-outline
              {% elif states['this.entity_id'].state == "['Análise concluída -
              importação autorizada']" %}
                mdi:file-document-outline
              {% elif states['this.entity_id'].state == "['Fiscalização
              aduaneira concluída - aguardando pagamento']" %}
                mdi:currency-usd
              {% else %}
                mdi:package-variant-closed
              {% endif %}
            icon_color: >-
              {% if states['this.entity_id'].state == "['Objeto entregue ao
              destinatário']" %}
                green
              {% elif states['this.entity_id'].state == "[]" %}
                red
              {% elif states['this.entity_id'].state == "[{}]" %}
                red
              {% elif states['this.entity_id'].state == "['Objeto saiu para
              entrega ao destinatário']" %}
                orange
              {% elif states['this.entity_id'].state == "['Objeto está em rota
              de entrega']" %}
                orange
              {% elif states['this.entity_id'].state == "['Objeto entregue ao
              remetente']" %}
                red
              {% elif states['this.entity_id'].state == "['Informações
              eletrônicas enviadas para análise da autoridade aduaneira']" %}
                blue
              {% elif states['this.entity_id'].state == "['Análise concluída -
              importação autorizada']" %}
                blue
              {% elif states['this.entity_id'].state == "['Fiscalização
              aduaneira concluída - aguardando pagamento']" %}
                red
              {% else %}
                yellow
              {% endif %}
            multiline_secondary: true
            badge_icon: >-
              {% if states['this.entity_id'].state == "['Objeto entregue ao
              destinatário']" %}
                mdi:check-bold
              {% elif states['this.entity_id'].state == "['Objeto postado']" %}
                mdi:share
              {% elif states['this.entity_id'].state == "['Objeto entregue ao
              remetente']" %}
                mdi:share
              {% elif states['this.entity_id'].state == "[]" %}
                mdi:alert-box
              {% elif states['this.entity_id'].state == "['Objeto saiu para
              entrega ao destinatário']" %}
                mdi:share
              {% elif states['this.entity_id'].state == "['Objeto está em rota
              de entrega']" %}
                mdi:share
              {% elif states['this.entity_id'].state == "['Objeto recebido pelos
              Correios do Brasil']" %}
                mdi:map-marker
              {% elif states['this.entity_id'].state == "['Objeto em trânsito -
              por favor aguarde']" %}
                mdi:share
              {% elif states['this.entity_id'].state == "['Objeto em
              transferência - por favor aguarde']" %}
                mdi:share
              {% elif states['this.entity_id'].state == "['Informações
              eletrônicas enviadas para análise da autoridade aduaneira']" %}
                mdi:share
              {% elif states['this.entity_id'].state == "['Análise concluída -
              importação autorizada']" %}
                mdi:share
              {% elif states['this.entity_id'].state == "['Fiscalização
              aduaneira concluída - aguardando pagamento']" %}
                mdi:currency-usd
              {% else %}
                mdi:map-marker
              {% endif %}
            badge_color: >-
              {% if states['this.entity_id'].state == "['Objeto entregue ao
              destinatário']" %}
                green
              {% elif states['this.entity_id'].state == "['Objeto entregue ao
              remetente']" %}
                red
              {% elif states['this.entity_id'].state != "['Objeto entregue ao
              destinatário']" %}
                grey
              {% endif %}
            tap_action:
              action: more-info
            order_by:
              last_changed: asc
    sort:
      method: last_changed
      count: 10
      reverse: true`Texto pré-formatado`

Card 2:

type: entities
entities:
  - entity: sensor.saiu_para_entrega
  - entity: sensor.distribuicao_contagem
  - entity: sensor.compras_tributadas

cara pode me ajudar com o no filtro na parte de excluir ?, as ecomendas não estão saindo automaticamente, e ao tentar excluir ele da erro no nó filtro TypeError: Cannot read properties of undefined (reading ‘toLowerCase’)

Card HA

Nod Red

Realmente tinha parado de funcionar, teve atualização do palette home-assistant-websocket e o nó de pegar entidades estava com um bug. Mas o pessoal já corrigiu, atualiza para essa versão:

node-red-contrib-home-assistant-websocket - 0.67.2

Aqui voltou ao normal depois dessa atualização. Não esquece que você precisa reiniciar o add-on depois de atualizar para dar certo

1 Like

aqui não consigo apagar, estou cheio de pacotes, e não consigo acessar o rastreio.txt para exluir

Meu rastreio de correio, parou de funcionar, alguem mais teve esse problema?

Eu cadastro a chave nele, e fica dizendo que esta aguardando o correio postar, mas se eu entro nos correios e verifico, a chave o pacote já tem várias atualizacoes, de vários outros dias.

Alguém pode dar uma dica ?

Eu tmb estou tendo problemas, mas acredito que seja o site

Não olhei ainda o que pode ser, mas tentando rastrear um pacote que já foi entregue aparece:

O rastreamento não está disponível no momento pois o sistema do Correios está passando por instabilidades. O sistema deve voltar ficar estável nas próximas 24 horas.

Mas no site dos correios esta como Objeto entregue ao destinatário

Pra mim sempre aparece que o objeto nao foi postado, isso no HA, mas já faz uns 15 dias, que não consigo rastrear nada pelo HA.

A integração não usa o site dos correios para fazer o rastreamento.
E o site esta com problema

O site começou a utilizar cloudflare como captcha, por isso parou de funcionar.

Aqui não pediu, mas dá o aviso que o site dos correios que está com problema

Até final de semana eu posto uma outra integração que fiz que abrange algumas transportadoras mais correios, ainda estou em testes mas já está se saindo bem

4 Likes