Update 27/07/21
Encontramos uma nova condição que não tinha sido verificada. Objeto tributado. Para não ter que recarregar todo o fluxo, vou colocar aqui só o conteúdo da function que trata os pacotes. Só copiar o código a seguir e substituir o que está na function. Trocar tudo.
// Monta a mensagem
msg.mensagem = "";
// Erro na leitura da mensagem
if (msg.headers["content-type"] != "application/json; charset=utf-8" || msg.payload.quantidade == undefined) {
msg.mensagem = msg.mensagem + "❌ Erro ao ler dados de " + msg.nome + ". Tentando novamente...";
return [null, null, msg, null, null]
}
// Data Padrão
var DataPadrao = new Date(2010,10,10,10,10,10);
// Verificação diária de objetos entregues p/ remoção
if (msg.inativos == true)
{
var tamanho = Object.keys(msg.payload).length;
if (tamanho == 0) return
if (msg.payload.eventos[0].status == "Objeto entregue ao destinatário" || msg.payload.eventos[0].status.includes("entregue"))
{
var nome = msg.nome
msg = {}
msg.adicionar = false
msg.inativos = true
msg.objeto = nome
msg.nome = nome
return [null, msg, null, null, null]
} else return
}
// Ainda não tem dados
if (msg.payload.quantidade == 0)
{
// Se for a primeira leitura ou pediu para resetar
if (Date.parse(msg.ultimaAtualizacao) == Date.parse(DataPadrao) || msg.resetar == true || msg.detalhes == true)
{
// Aguardando
msg.mensagem = msg.mensagem + "📦 " + msg.nome + " (" + msg.objeto + ") \n";
msg.mensagem = msg.mensagem + "⏰ Aguardando atualizações do objeto"
msg.ultimaAtualizacao = new Date();
// Marca que tem atualização
msg.atualizado = true;
return [msg, null, null, null, null];
}
else
{
msg.mensagem = msg.mensagem + "⏰ Sem Atualização " + msg.nome;
msg.atualizado = false;
return [null, null, null, null, msg];
}
}
//
// Se tiver dados, continua
//
// Lê a última data de atualização
var data = msg.payload.eventos[0].data;
var horas = msg.payload.eventos[0].hora;
var ano = data.split("/")[2]
var mes = data.split("/")[1] - 1
var dia = data.split("/")[0]
var hora = horas.split(":")[0]
var minuto = horas.split(":")[1]
var ultimaAtualizacaoCorreios = new Date(ano,mes,dia,hora,minuto,0);
msg.ultimaAtualizacaoCorreios = ultimaAtualizacaoCorreios;
// Verifica se a última atualização dos correios é maior que a da memória
if (Date.parse(msg.ultimaAtualizacaoCorreios) > Date.parse(msg.ultimaAtualizacao) || msg.resetar == true || msg.detalhes == true)
{
var atts = 0
var enter = ""
var single = ""
if (msg.resumo == true)
{
atts = 99
if (((msg.payload.eventos.length) - 1) < atts)
{
atts = (msg.payload.eventos.length) - 1
}
single = "\n"
enter = "\n\n"
}
if (msg.resetar !== true && msg.detalhes !== true)
{
msg.mensagem = msg.mensagem + "🔻 **Atualização de pacote** 🔻\n\n"
}
msg.mensagem = msg.mensagem + "📦 " + msg.nome + " (" + msg.objeto + ')\n' + single;
for (h = 0; h <= atts; h++)
{
if (msg.payload.eventos[h].status.toUpperCase().includes("PAGAMENTO"))
{
msg.mensagem = msg.mensagem + "💸 Objeto Tributado, " + msg.payload.eventos[h].status;
}
else
{
msg.mensagem = msg.mensagem + "📌 " + msg.payload.eventos[h].status;
}
msg.mensagem = msg.mensagem + "\n📆 " + msg.payload.eventos[h].data + " ⏰ " + msg.payload.eventos[h].hora + '\n';
if (msg.payload.eventos[h].status.toUpperCase().includes("POSTADO") || msg.payload.eventos[h].status.toUpperCase().includes("DESTINATÁRIO") || msg.payload.eventos[h].status.toUpperCase().includes("CORREIOS") || msg.payload.eventos[h].status.toUpperCase().includes("FISCALIZAÇÃO") || msg.payload.eventos[h].status.toUpperCase().includes("PAGAMENTO"))
{
msg.mensagem = msg.mensagem + "📍 " + msg.payload.eventos[h].local + enter;
if ((msg.payload.eventos[h].status == "Objeto saiu para entrega ao destinatário" || msg.payload.eventos[h].status.includes("ntrega")) && msg.resetar !== true && msg.detalhes !== true)
{
node.send([null, null, null, msg, null])
}
}
else
{
for (i = 0; i < msg.payload.eventos[h].subStatus.length; i++)
{
var re = "->"
var substatus = msg.payload.eventos[h].subStatus[i]
var resultado = substatus.split(re)
if (!resultado[1]) {
substatus = msg.payload.eventos[h].subStatus
msg.mensagem = msg.mensagem + "📤 " + substatus[0] + '\n';
msg.mensagem = msg.mensagem + "📥 " + substatus[1] + enter;
break
} else {
let distrib = resultado[1].replace(/Distribui��o/i, 'Distribuição')
msg.mensagem = msg.mensagem + "📤 " + resultado[0] + '\n';
msg.mensagem = msg.mensagem + "📥 " + distrib + enter;
}
}
}
}
// Marca que tem atualização
msg.atualizacaoAnterior = msg.ultimaAtualizacao;
msg.ultimaAtualizacao = msg.ultimaAtualizacaoCorreios;
msg.leituraRealizada = true;
msg.atualizado = true;
return [msg, null, null, null, null];
}
else
{
msg.mensagem = msg.mensagem + "⏰ Sem Atualização " + msg.nome;
msg.atualizado = false;
return [null, null, null, null, msg];
}
Novas atualizações 26/07/2021
Após umas dicas do @badwolf e depois de compartilhar o projeto com o @otomai que fez uma contribuição incrível em tudo, segue uma nova versão com muitas melhorias, totalmente integrada ao Telegram agora.
O projeto é uma integração do sistema de rastreamento dos correios, inteiramente dentro no Node-red, você pode utilizar com automações, avisos na Alexa, Google Home, Telegram etc.
É baseado em uma api publica do site linketrack
Link & Track → Rastreamento de Encomendas dos Correios (linketrack.com)
O fluxo é o seguinte:
[{"id":"102aab2a.e4c445","type":"tab","label":"Correios","disabled":false,"info":""},{"id":"bf1dd55b.a76b18","type":"group","z":"102aab2a.e4c445","name":"Verifica objetos","style":{"fill":"#ffffbf","label":true,"stroke":"#ffff00"},"nodes":["f0db72fc.11c73","aa557d1.d114e8","9de73acf.94de78","ba71d85a.ad8ba8","293ca4b.07e2a5c","edd32aaa.74f668","6a2ff30b.7498ec","47353582.4c2a4c","59ddf8ea.3473f8","49dcb8af.1f1888","3bcb9858.59d468","ca27bf70.97255","da3c6657.c636f8","f3efc5c7.f439e8","cdc633c8.5d42e","1ca30250.d1296e","e950a149.3bb91","dcdc5e52.8232c","c452d7e3.f81138","bc9e1b48.649ef8","a671a7bd.d43d08","3f44664c.186b5a","74b0d9db.95f898","a6671fdb.80a43","48390d36.950bd4","41ee9760.1ff678","6820f8c4.86aba8","4d59e8c9.e1cd68","a4816304.4c41e","52bce12.626712","eb7440e1.c2e1c","16f66efb.851ff1","fcf146f0.ebd018","3d14f0ef.2d59f","1b41ae27.22fa02","51604cb9.2f2b24","8443064f.437c88","35bd9a9d.045686","50fe2abb.9361f4","bb22fb88.c88168","20376ee0.ea7452","36675999.496e56","6a205e0.0a5e3a4","8d08a95f.3d8158","6690f237.e234ac","8b796b25.2bdaa8","7b866d44.027b84","626617af.35f7a8"],"x":14,"y":359,"w":2432,"h":622},{"id":"e0603566.fa85c8","type":"group","z":"102aab2a.e4c445","name":"Adicionar Remover Objeto","style":{"stroke":"#ff0000","fill":"#ffbfbf","label":true},"nodes":["174626b6.13a9d9","d6ddeefd.35b48","e3cc0844.cb75d8","678296a5.bf52b8","4d45f392.c9189c","3bfcda23.3b57e6","7323b40b.c22a1c","26c6a6dd.0d125a","9cc9ed92.bce18","12138951.272ae7","b549b517.0b6eb8","a6a3f9bc.b1e218","6a34f8f4.534608","5161013c.9b6b4","26b49442.4566fc"],"x":14,"y":1039,"w":1172,"h":222},{"id":"f2cead29.8a88e","type":"group","z":"102aab2a.e4c445","name":"Telegram => Comandos | Output","style":{"fill":"#c8e7a7","label":true},"nodes":["6e87b585.fc165c","1232a8f4.2b9aa7","bd699583.fc03b8","c38034d9.f33c18","b86ff78d.546328","32325494.8921dc","82e72011.f2a53","d03056c1.fac3b8","89bcab5.908ea58","aa546ee6.54e91","bddf743e.6322c8","1a7bac1c.c6fea4","b98e3e3c.9bdd5","1b6f36db.f32549","80cc10ca.2c6b1"],"x":14,"y":19,"w":652,"h":277},{"id":"174626b6.13a9d9","type":"file","z":"102aab2a.e4c445","g":"e0603566.fa85c8","name":"Salva no arquivo","filename":"/config/node-red/objetos_correios.json","appendNewline":true,"createDir":false,"overwriteFile":"true","encoding":"none","x":1070,"y":1100,"wires":[[]]},{"id":"d6ddeefd.35b48","type":"json","z":"102aab2a.e4c445","g":"e0603566.fa85c8","name":"","property":"payload","action":"","pretty":false,"x":910,"y":1100,"wires":[["174626b6.13a9d9"]]},{"id":"e3cc0844.cb75d8","type":"function","z":"102aab2a.e4c445","g":"e0603566.fa85c8","name":"Altera Dado","func":"var tamanho = Object.keys(msg.payload).length;\n \nif (msg.adicionar == true)\n{\n for (i = 0; i<tamanho; i++)\n {\n if (msg.payload[i].objeto.toUpperCase() == msg.objeto.toUpperCase() || msg.payload[i].nome.toUpperCase() == msg.nome.toUpperCase())\n {\n msg = {}\n msg.payload = {}\n msg.payload.content = \"❌ Objeto já cadastrado!\";\n return [null, null, msg];\n }\n }\n \n msg.payload[tamanho] = {};\n msg.payload[tamanho].objeto = msg.objeto;\n msg.payload[tamanho].nome = msg.nome;\n msg.payload[tamanho].ultimaAtualizacao = msg.ultimaAtualizacao;\n \n msg2 = {}\n msg2.payload = {}\n msg2.payload.content = \"✅ Objeto \" + msg.nome + \" cadastrado com sucesso!\"\n msg2.detalhes = true;\n msg2.nomeobj = msg.nome\n node.send([null, null, msg2]);\n node.send([null, msg2, null])\n}\nelse\n{\n if (!msg.objeto || !msg.nome)\n {\n msg.payload.content = \"❌ Objeto ou formato inválido!\\n📍 Use \\\"/del código (ou nome)\\\"\\n✏️ /del Luva de frio\\n✏️ /del OP012345678BR\";\n return [null, null, msg];\n }\n var numObjetos = tamanho;\n payloadOld = msg.payload;\n msg.payload = {};\n indice = 0;\n if (msg.objeto != undefined)\n {\n for (i=0; i<tamanho; i++)\n {\n if((payloadOld[i].objeto.toUpperCase() != msg.objeto.toUpperCase()) && (payloadOld[i].nome.toUpperCase() != msg.nome.toUpperCase()))\n {\n msg.payload[indice] = {};\n msg.payload[indice].nome = payloadOld[i].nome;\n msg.payload[indice].objeto = payloadOld[i].objeto;\n msg.payload[indice].ultimaAtualizacao = payloadOld[i].ultimaAtualizacao;\n indice = indice + 1;\n }\n else\n {\n var objetoremovido = `${payloadOld[i].nome} (${payloadOld[i].objeto})`\n }\n }\n }\n if (msg.inativos == true) {return msg}\n else\n {\n tamanho = Object.keys(msg.payload).length;\n var objetosRemovidos = numObjetos - tamanho;\n msg2 = {}\n msg2.payload = {}\n if (objetosRemovidos === 0) {\n msg2.payload.content = \"❌ Objeto não localizado!\"\n }\n else\n {\n msg2.payload.content = `✅ Objeto ${objetoremovido} removido com sucesso!`\n }\n node.send([null, null, msg2]);\n }\n}\nreturn msg;","outputs":3,"noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":1160,"wires":[["d6ddeefd.35b48"],["26b49442.4566fc"],["26c6a6dd.0d125a"]]},{"id":"678296a5.bf52b8","type":"json","z":"102aab2a.e4c445","g":"e0603566.fa85c8","name":"","property":"payload","action":"","pretty":false,"x":610,"y":1160,"wires":[["e3cc0844.cb75d8"]]},{"id":"4d45f392.c9189c","type":"file in","z":"102aab2a.e4c445","g":"e0603566.fa85c8","name":"Lê Arquivo","filename":"/config/node-red/objetos_correios.json","format":"utf8","chunk":false,"sendError":false,"encoding":"none","x":450,"y":1160,"wires":[["678296a5.bf52b8"]]},{"id":"3bfcda23.3b57e6","type":"link in","z":"102aab2a.e4c445","g":"e0603566.fa85c8","name":"Remover Objeto Correios","links":["8b796b25.2bdaa8","b86ff78d.546328"],"x":315,"y":1220,"wires":[["4d45f392.c9189c"]]},{"id":"7323b40b.c22a1c","type":"link in","z":"102aab2a.e4c445","g":"e0603566.fa85c8","name":"Adicionar Objeto Correios","links":["c38034d9.f33c18"],"x":135,"y":1080,"wires":[["9cc9ed92.bce18"]]},{"id":"26c6a6dd.0d125a","type":"link out","z":"102aab2a.e4c445","g":"e0603566.fa85c8","name":"Para Telegram","links":["89bcab5.908ea58"],"x":875,"y":1220,"wires":[]},{"id":"9cc9ed92.bce18","type":"function","z":"102aab2a.e4c445","g":"e0603566.fa85c8","name":"Valida o Objeto","func":"msg2 = {}\nmsg2.payload = {}\nmsg2.payload.content = \"❌ Objeto ou formato inválido!\\n📍 Use \\\"/add código nome do pacote\\\"\\n✏️ /add OP012345678BR Luva de frio\"; \n if (!msg.objeto || !msg.nome)\n {\n return([msg2, null]);\n }\n \n// Não tem 13 caracteres\nif (msg.objeto.length != 13)\n{\n return([msg2, null]);\n}\n\n// Separa o código em partes\nvar tipo = msg.objeto.substr(0,2)\nvar numero = msg.objeto.substr(2,9)\nvar pais = msg.objeto.substr(11,12)\n\n// Tipo\nif (!tipo.match(\"^[a-zA-Z]+$\"))\n{\n msg2.payload.content = \"❌ \" + msg2.payload.content + \" Erro no tipo!\";\n return([msg2, null]);\n}\n\n// Número\nif (!numero.match(\"^[0-9]+$\"))\n{\n msg2.payload.content = \"❌ \" + msg2.payload.content + \" Erro nos números!\";\n return([msg2, null]);\n}\n\n// Pais\nif (!pais.match(\"^[a-zA-Z]+$\"))\n{\n msg2.payload.content = \"❌ \" + msg2.payload.content + \" Erro no país!\";\n return([msg2, null]);\n}\n\nreturn [null, msg];","outputs":2,"noerr":0,"initialize":"","finalize":"","libs":[],"x":260,"y":1080,"wires":[["12138951.272ae7"],["4d45f392.c9189c"]]},{"id":"12138951.272ae7","type":"link out","z":"102aab2a.e4c445","g":"e0603566.fa85c8","name":"Para Telegram","links":["89bcab5.908ea58"],"x":395,"y":1080,"wires":[]},{"id":"b549b517.0b6eb8","type":"function","z":"102aab2a.e4c445","g":"e0603566.fa85c8","name":"Adicionar","func":"// NÓ DE TESTE! NÃO AFETADO PELOS COMANDOS NO TELEGRAM! //\n\nmsg = {};\nmsg.adicionar = true;\nmsg.nome = \"Balizadorteste\";\nmsg.objeto = \"QF643958646BR\"\nmsg.leituraRealizada = false;\nmsg.ultimaAtualizacao = new Date(2010,10,10,10,10,10); // Data padrão, de cadastro\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":280,"y":1140,"wires":[["4d45f392.c9189c"]]},{"id":"a6a3f9bc.b1e218","type":"function","z":"102aab2a.e4c445","g":"e0603566.fa85c8","name":"Remover","func":"// NÓ DE TESTE! NÃO AFETADO PELOS COMANDOS NO TELEGRAM! //\n\nmsg = {};\nmsg.adicionar = false;\nmsg.objeto = \"Hidrômetro_2\";\nmsg.nome = \"Hidrômetro_2\";\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":280,"y":1180,"wires":[["4d45f392.c9189c"]]},{"id":"6a34f8f4.534608","type":"inject","z":"102aab2a.e4c445","g":"e0603566.fa85c8","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":120,"y":1180,"wires":[["a6a3f9bc.b1e218"]]},{"id":"5161013c.9b6b4","type":"inject","z":"102aab2a.e4c445","g":"e0603566.fa85c8","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":120,"y":1140,"wires":[["b549b517.0b6eb8"]]},{"id":"6e87b585.fc165c","type":"telegrambot-command","z":"102aab2a.e4c445","g":"f2cead29.8a88e","name":"/add","bot":"","command":"/add","commandType":"re","commandCase":false,"x":90,"y":60,"wires":[["aa546ee6.54e91"]]},{"id":"1232a8f4.2b9aa7","type":"telegrambot-command","z":"102aab2a.e4c445","g":"f2cead29.8a88e","name":"/del","bot":"","command":"/del","commandType":"re","commandCase":false,"x":90,"y":100,"wires":[["1a7bac1c.c6fea4"]]},{"id":"bd699583.fc03b8","type":"telegrambot-command","z":"102aab2a.e4c445","g":"f2cead29.8a88e","name":"/detalhes","bot":"","command":"/detalhes","commandType":"re","commandCase":false,"x":100,"y":140,"wires":[["1b6f36db.f32549"]]},{"id":"c38034d9.f33c18","type":"link out","z":"102aab2a.e4c445","g":"f2cead29.8a88e","name":"add","links":["7323b40b.c22a1c"],"x":315,"y":60,"wires":[]},{"id":"b86ff78d.546328","type":"link out","z":"102aab2a.e4c445","g":"f2cead29.8a88e","name":"del","links":["3bfcda23.3b57e6"],"x":315,"y":100,"wires":[]},{"id":"32325494.8921dc","type":"link out","z":"102aab2a.e4c445","g":"f2cead29.8a88e","name":"lista","links":["da3c6657.c636f8"],"x":315,"y":180,"wires":[]},{"id":"82e72011.f2a53","type":"link out","z":"102aab2a.e4c445","g":"f2cead29.8a88e","name":"reset","links":["edd32aaa.74f668"],"x":315,"y":220,"wires":[]},{"id":"d03056c1.fac3b8","type":"telegrambot-notify","z":"102aab2a.e4c445","g":"f2cead29.8a88e","name":"Msg","bot":"","chatId":"123456789","message":"","parseMode":"Markdown","x":590,"y":60,"wires":[]},{"id":"89bcab5.908ea58","type":"link in","z":"102aab2a.e4c445","g":"f2cead29.8a88e","name":"Msg","links":["12138951.272ae7","26c6a6dd.0d125a","d2603ff3.98c26","ca27bf70.97255","dcdc5e52.8232c","eb7440e1.c2e1c","10b480ea.5b43ef","ea6137ac.3b8058","cc5ba967.5819a8","51604cb9.2f2b24","24cff8b7.e85498","8d08a95f.3d8158"],"x":355,"y":60,"wires":[["bddf743e.6322c8"]]},{"id":"aa546ee6.54e91","type":"function","z":"102aab2a.e4c445","g":"f2cead29.8a88e","name":"Adicionar","func":"msg.args = msg.telegram.text.slice(0).trim().split(/ +/g);\nmsg.adicionar = true;\nmsg.objeto = msg.args[1]\nmsg.args.splice(0, 2)\nmsg.nome = msg.args.join(\" \")\nmsg.leituraRealizada = false;\nmsg.ultimaAtualizacao = new Date(2010,10,10,10,10,10); // Data padrão, de cadastro\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":220,"y":60,"wires":[["c38034d9.f33c18"]]},{"id":"bddf743e.6322c8","type":"function","z":"102aab2a.e4c445","g":"f2cead29.8a88e","name":"Variável","func":"msg.payload = msg.payload.content\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":460,"y":60,"wires":[["d03056c1.fac3b8"]]},{"id":"1a7bac1c.c6fea4","type":"function","z":"102aab2a.e4c445","g":"f2cead29.8a88e","name":"Remover","func":"msg.args = msg.telegram.text.slice(0).trim().split(/ +/g);\nmsg.adicionar = false;\nmsg.args.splice(0, 1)\nmsg.nome = msg.args.join(\" \")\nmsg.objeto = msg.args.join(\" \")\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":220,"y":100,"wires":[["b86ff78d.546328"]]},{"id":"b98e3e3c.9bdd5","type":"telegrambot-switch","z":"102aab2a.e4c445","g":"f2cead29.8a88e","name":"Detalhes","bot":"","chatId":"","question":"","answers":["Lista","Status","Dispensar"],"outputs":4,"autoAnswerCallback":true,"verticalAnswers":false,"timeoutValue":"30","timeoutUnits":"s","x":100,"y":240,"wires":[["32325494.8921dc"],["82e72011.f2a53"],[],[]]},{"id":"1b6f36db.f32549","type":"function","z":"102aab2a.e4c445","g":"f2cead29.8a88e","name":"Variável","func":"msg.args = msg.telegram.text.slice(0).trim().split(/ +/g);\nif (msg.args[0] == \"/detalhes+\")\n{\n msg.resumo = true\n}\nif (msg.args[1]) {\nmsg.detalhes = true;\nmsg.args.splice(0, 1)\nmsg.nomeobj = msg.args.join(\" \")\nreturn [msg, null];\n} else {\nmsg.payload = \"🚩 Escolha a opção desejada!\\n🚩 Para consultar um objeto específico você também pode usar \\\"/detalhes nome (ou número)\\\"\\n✏️ /detalhes Luva de frio\\n✏️ /detalhes OP012345678BR\"\nreturn [null, msg];\n}","outputs":2,"noerr":0,"initialize":"","finalize":"","libs":[],"x":100,"y":185,"wires":[["80cc10ca.2c6b1"],["b98e3e3c.9bdd5"]]},{"id":"80cc10ca.2c6b1","type":"link out","z":"102aab2a.e4c445","g":"f2cead29.8a88e","name":"Dets","links":["52bce12.626712"],"x":315,"y":140,"wires":[]},{"id":"26b49442.4566fc","type":"link out","z":"102aab2a.e4c445","g":"e0603566.fa85c8","name":"Para Detalhes","links":["52bce12.626712"],"x":875,"y":1160,"wires":[]},{"id":"1d8b787f.5efb58","type":"comment","z":"102aab2a.e4c445","name":"Só atualize os nós do TELEGRAM à esquerda, colocando o seu bot na seleção. E o ALEXA TTS na grupo abaixo.","info":"","x":1060,"y":120,"wires":[]},{"id":"3cf091a5.84f28e","type":"comment","z":"102aab2a.e4c445","name":"Demais nós / fluxos / grupos dispensam / não necessitam nenhuma configuração.","info":"","x":960,"y":160,"wires":[]},{"id":"2ef8f2d7.a9540e","type":"comment","z":"102aab2a.e4c445","name":"Só faça alterações se tiver certeza e entedimento do que está fazendo. Há riscos.","info":"","x":960,"y":200,"wires":[]},{"id":"f0db72fc.11c73","type":"function","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Último URL","func":"var url = \"https://api.linketrack.com/track/json?user=teste&token=1abcd00b2731640e886fb41a8a9671ad1434c599dbaa0a0de9a5aa619f29a83f&codigo=\" \nmsg.url = url + msg.objeto;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":890,"y":760,"wires":[["9de73acf.94de78"]]},{"id":"aa557d1.d114e8","type":"www-request","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Lê informações","method":"GET","ret":"obj","url":"","follow-redirects":true,"persistent-http":true,"tls":"","x":1240,"y":680,"wires":[["e950a149.3bb91","7b866d44.027b84"]]},{"id":"9de73acf.94de78","type":"delay","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"","pauseType":"rate","timeout":"4","timeoutUnits":"seconds","rate":"1","nbRateUnits":"7","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1060,"y":680,"wires":[["aa557d1.d114e8"]]},{"id":"ba71d85a.ad8ba8","type":"inject","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Resetar","props":[{"p":"payload.chatId","v":"664449565","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":110,"y":640,"wires":[["6a2ff30b.7498ec"]]},{"id":"293ca4b.07e2a5c","type":"inject","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"","props":[{"p":"payload"}],"repeat":"300","crontab":"","once":true,"onceDelay":"120","topic":"","payload":"Check","payloadType":"str","x":120,"y":680,"wires":[["47353582.4c2a4c"]]},{"id":"edd32aaa.74f668","type":"link in","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Resetar Objetos Correios","links":["82e72011.f2a53"],"x":195,"y":600,"wires":[["6a2ff30b.7498ec"]]},{"id":"6a2ff30b.7498ec","type":"function","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Resetar","func":"msg = {};\nmsg.resetar = true;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":260,"y":640,"wires":[["47353582.4c2a4c"]]},{"id":"47353582.4c2a4c","type":"file in","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Lê Arquivo","filename":"/config/node-red/objetos_correios.json","format":"utf8","chunk":false,"sendError":false,"encoding":"none","x":430,"y":680,"wires":[["59ddf8ea.3473f8"]]},{"id":"59ddf8ea.3473f8","type":"json","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"","property":"payload","action":"","pretty":false,"x":570,"y":680,"wires":[["49dcb8af.1f1888"]]},{"id":"49dcb8af.1f1888","type":"function","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Separa Objetos","func":"var tamanho = Object.keys(msg.payload).length;\nvar msgInput = msg.payload;\nmsg.msgInput = msg.payload;\n\nif (msg.listar == true)\n{\n msg = {};\n msg.payload = \"\";\n \n if (tamanho > 0)\n {\n for (i = 0; i<tamanho; i++)\n {\n msg.payload = msg.payload + \"📦 \" + msgInput[i].nome + \" (\" + msgInput[i].objeto + \")\\n\"\n }\n \n msg.payload = msg.payload.slice(0, msg.payload.length-1);\n }\n else\n {\n msg.payload = \"❌ Nenhum objeto cadastrado\";\n }\n \n return [msg, null]\n}\nif (msg.detalhes == true) {\n var checarobj = 0\n if (msg.resumo == true)\n {\n var resumo = true\n }\n for (i = 0; i<tamanho; i++)\n{\n if (msgInput[i].objeto.toUpperCase() == msg.nomeobj.toUpperCase() || msgInput[i].nome.toUpperCase() == msg.nomeobj.toUpperCase())\n {\n checarobj++\n msg = {};\n msg.nome = msgInput[i].nome;\n msg.objeto = msgInput[i].objeto;\n msg.detalhes = true;\n if (resumo == true) {\n msg.resumo = true \n }\n msg.ultimaAtualizacao = msgInput[i].ultimaAtualizacao;\n return [null, msg]; \n }\n}\nif (checarobj === 0) {\n msg.payload = \"❌ Objeto não localizado!\\n📍 Use \\\"/detalhes código (ou nome)\\\"\\n✏️ /detalhes Luva de frio\\n✏️ /detalhes OP012345678BR\";\n return [msg, null]\n}\n}\n for (i = 0; i<tamanho; i++)\n {\n msg.nome = msgInput[i].nome;\n msg.objeto = msgInput[i].objeto;\n if (msg.resetar == true)\n {\n msg.resetar = true\n }\n msg.ultimaAtualizacao = msgInput[i].ultimaAtualizacao;\n node.send([null, msg]); \n }","outputs":2,"noerr":0,"initialize":"","finalize":"","libs":[],"x":720,"y":680,"wires":[["3bcb9858.59d468"],["f0db72fc.11c73","50fe2abb.9361f4"]]},{"id":"3bcb9858.59d468","type":"function","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Telegram","func":"var mensagem = msg.payload\n\nmsg.payload = {}\nmsg.payload.content = mensagem\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":880,"y":600,"wires":[["ca27bf70.97255"]]},{"id":"ca27bf70.97255","type":"link out","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Para Telegram","links":["89bcab5.908ea58"],"x":975,"y":600,"wires":[]},{"id":"da3c6657.c636f8","type":"link in","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Listar Objetos Correios","links":["32325494.8921dc"],"x":75,"y":600,"wires":[["f3efc5c7.f439e8"]]},{"id":"f3efc5c7.f439e8","type":"function","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Cadastrados","func":"msg = {};\nmsg.listar = true;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":250,"y":720,"wires":[["47353582.4c2a4c"]]},{"id":"cdc633c8.5d42e","type":"inject","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Listar","props":[{"p":"payload.chatId","v":"664449565","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":110,"y":720,"wires":[["f3efc5c7.f439e8"]]},{"id":"1ca30250.d1296e","type":"debug","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Atualização","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1610,"y":400,"wires":[]},{"id":"e950a149.3bb91","type":"function","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"","func":"// Monta a mensagem\nmsg.mensagem = \"\";\n\n// Erro na leitura da mensagem\nif (msg.headers[\"content-type\"] != \"application/json; charset=utf-8\" || msg.payload.quantidade == undefined) {\n msg.mensagem = msg.mensagem + \"❌ Erro ao ler dados de \" + msg.nome + \". Tentando novamente...\";\n return [null, null, msg, null, null]\n}\n\n// Data Padrão\nvar DataPadrao = new Date(2010,10,10,10,10,10);\n\n// Verificação diária de objetos entregues p/ remoção\nif (msg.inativos == true)\n{\n var tamanho = Object.keys(msg.payload).length;\n if (tamanho == 0) return\n if (msg.payload.eventos[0].status == \"Objeto entregue ao destinatário\" || msg.payload.eventos[0].status.includes(\"entregue\"))\n {\n var nome = msg.nome\n msg = {}\n msg.adicionar = false\n msg.inativos = true\n msg.objeto = nome\n msg.nome = nome\n return [null, msg, null, null, null]\n } else return\n}\n\n// Ainda não tem dados\nif (msg.payload.quantidade == 0)\n{\n // Se for a primeira leitura ou pediu para resetar\n if (Date.parse(msg.ultimaAtualizacao) == Date.parse(DataPadrao) || msg.resetar == true || msg.detalhes == true)\n {\n // Aguardando\n msg.mensagem = msg.mensagem + \"📦 \" + msg.nome + \" (\" + msg.objeto + \") \\n\";\n msg.mensagem = msg.mensagem + \"⏰ Aguardando atualizações do objeto\"\n msg.ultimaAtualizacao = new Date();\n \n // Marca que tem atualização\n msg.atualizado = true;\n return [msg, null, null, null, null];\n }\n else\n {\n msg.mensagem = msg.mensagem + \"⏰ Sem Atualização \" + msg.nome;\n msg.atualizado = false;\n return [null, null, null, null, msg];\n }\n}\n\n// \n// Se tiver dados, continua\n//\n\n// Lê a última data de atualização\nvar data = msg.payload.eventos[0].data;\nvar horas = msg.payload.eventos[0].hora;\nvar ano = data.split(\"/\")[2]\nvar mes = data.split(\"/\")[1] - 1\nvar dia = data.split(\"/\")[0]\nvar hora = horas.split(\":\")[0]\nvar minuto = horas.split(\":\")[1]\nvar ultimaAtualizacaoCorreios = new Date(ano,mes,dia,hora,minuto,0);\nmsg.ultimaAtualizacaoCorreios = ultimaAtualizacaoCorreios;\n\n// Verifica se a última atualização dos correios é maior que a da memória\nif (Date.parse(msg.ultimaAtualizacaoCorreios) > Date.parse(msg.ultimaAtualizacao) || msg.resetar == true || msg.detalhes == true)\n{\n var atts = 0\n var enter = \"\"\n var single = \"\"\n if (msg.resumo == true)\n {\n atts = 2\n if (((msg.payload.eventos.length) - 1) < atts)\n {\n atts = (msg.payload.eventos.length) - 1\n }\n single = \"\\n\"\n enter = \"\\n\\n\"\n }\n if (msg.resetar !== true && msg.detalhes !== true)\n {\n msg.mensagem = msg.mensagem + \"🔻 **Atualização de pacote** 🔻\\n\\n\"\n }\n msg.mensagem = msg.mensagem + \"📦 \" + msg.nome + \" (\" + msg.objeto + ')\\n' + single;\n for (h = 0; h <= atts; h++)\n {\n msg.mensagem = msg.mensagem + \"📌 \" + msg.payload.eventos[h].status;\n msg.mensagem = msg.mensagem + \"\\n📆 \" + msg.payload.eventos[h].data + \" ⏰ \" + msg.payload.eventos[h].hora + '\\n';\n \n if (msg.payload.eventos[h].status.toUpperCase().includes(\"POSTADO\") || msg.payload.eventos[h].status.toUpperCase().includes(\"DESTINATÁRIO\") || msg.payload.eventos[h].status.toUpperCase().includes(\"CORREIOS\") || msg.payload.eventos[h].status.toUpperCase().includes(\"FISCALIZAÇÃO\"))\n {\n msg.mensagem = msg.mensagem + \"📍 \" + msg.payload.eventos[h].local + enter;\n if ((msg.payload.eventos[h].status == \"Objeto saiu para entrega ao destinatário\" || msg.payload.eventos[h].status.includes(\"ntrega\")) && msg.resetar !== true && msg.detalhes !== true)\n {\n node.send([null, null, null, msg, null])\n }\n }\n else \n {\n for (i = 0; i < msg.payload.eventos[h].subStatus.length; i++)\n {\n var re = \"->\"\n var substatus = msg.payload.eventos[h].subStatus[i]\n var resultado = substatus.split(re)\n if (!resultado[1]) {\n substatus = msg.payload.eventos[h].subStatus\n msg.mensagem = msg.mensagem + \"📤 \" + substatus[0] + '\\n';\n msg.mensagem = msg.mensagem + \"📥 \" + substatus[1] + enter;\n break\n } else {\n let distrib = resultado[1].replace(/Distribui��o/i, 'Distribuição')\n msg.mensagem = msg.mensagem + \"📤 \" + resultado[0] + '\\n';\n msg.mensagem = msg.mensagem + \"📥 \" + distrib + enter;\n }\n }\n }\n }\n\n // Marca que tem atualização\n msg.atualizacaoAnterior = msg.ultimaAtualizacao;\n msg.ultimaAtualizacao = msg.ultimaAtualizacaoCorreios;\n msg.leituraRealizada = true;\n \n msg.atualizado = true;\n return [msg, null, null, null, null];\n}\nelse\n{\n msg.mensagem = msg.mensagem + \"⏰ Sem Atualização \" + msg.nome;\n msg.atualizado = false;\n return [null, null, null, null, msg];\n}","outputs":5,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1400,"y":680,"wires":[["1ca30250.d1296e","bc9e1b48.649ef8","a6671fdb.80a43"],["3d14f0ef.2d59f","20376ee0.ea7452"],["c452d7e3.f81138","16f66efb.851ff1","8443064f.437c88"],["48390d36.950bd4","4d59e8c9.e1cd68"],["36675999.496e56"]]},{"id":"dcdc5e52.8232c","type":"link out","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Para Telegram","links":["89bcab5.908ea58"],"x":1695,"y":480,"wires":[]},{"id":"c452d7e3.f81138","type":"debug","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Erro","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1590,"y":640,"wires":[]},{"id":"bc9e1b48.649ef8","type":"function","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Telegram","func":"var mensagem = msg.mensagem;\n\nmsg.payload = {}\nmsg.payload.content = mensagem\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1600,"y":480,"wires":[["dcdc5e52.8232c"]]},{"id":"a671a7bd.d43d08","type":"function","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Update","func":"msgOut = {};\nmsgOut.payload = {};\n\nvar tamanho = Object.keys(msg.payload).length;\nmsg.tamanho = tamanho;\n\nnode.send(msg);\n\n// Atualiza o modificado\nfor (i = 0; i<tamanho; i++)\n{\n if (msg.payload[i].objeto == msg.objeto)\n {\n msg.payload[i].ultimaAtualizacao = msg.ultimaAtualizacao;\n }\n}\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":2040,"y":440,"wires":[["41ee9760.1ff678"]]},{"id":"3f44664c.186b5a","type":"file in","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Lê Arquivo","filename":"/config/node-red/objetos_correios.json","format":"utf8","chunk":false,"sendError":false,"encoding":"none","x":1770,"y":440,"wires":[["74b0d9db.95f898"]]},{"id":"74b0d9db.95f898","type":"json","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"","property":"payload","action":"","pretty":false,"x":1910,"y":440,"wires":[["a671a7bd.d43d08"]]},{"id":"a6671fdb.80a43","type":"delay","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"","pauseType":"rate","timeout":"4","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1610,"y":440,"wires":[["3f44664c.186b5a"]]},{"id":"48390d36.950bd4","type":"debug","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Saiu para entrega","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1630,"y":740,"wires":[]},{"id":"41ee9760.1ff678","type":"json","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"","property":"payload","action":"","pretty":false,"x":2170,"y":440,"wires":[["6820f8c4.86aba8"]]},{"id":"6820f8c4.86aba8","type":"file","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Salva no arquivo","filename":"/config/node-red/objetos_correios.json","appendNewline":true,"createDir":false,"overwriteFile":"true","encoding":"none","x":2330,"y":440,"wires":[[]]},{"id":"4d59e8c9.e1cd68","type":"function","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Saiu para entrega","func":"msg.payload = \"O objeto \" + msg.nome + \" saiu para entrega\"\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1630,"y":780,"wires":[["a4816304.4c41e"]]},{"id":"a4816304.4c41e","type":"api-call-service","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Alexa TTS","server":"d51d6f43.a17e3","version":3,"debugenabled":false,"service_domain":"notify","service":"alexa_media_echo_dot","entityId":"","data":"{\t \"message\":msg.payload,\t \"data\":{\"type\":\"announce\"}\t}","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1890,"y":780,"wires":[[]]},{"id":"52bce12.626712","type":"link in","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Detalhes","links":["80cc10ca.2c6b1","26b49442.4566fc"],"x":305,"y":602,"wires":[["47353582.4c2a4c"]]},{"id":"eb7440e1.c2e1c","type":"link out","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Para Telegram","links":["89bcab5.908ea58"],"x":1695,"y":680,"wires":[]},{"id":"16f66efb.851ff1","type":"function","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Telegram","func":"var mensagem = msg.mensagem;\nif (msg.resetar == true || msg.detalhes == true) {\nmsg.payload = {}\nmsg.payload.content = mensagem\nreturn msg; \n} else {\n return\n}\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1600,"y":680,"wires":[["eb7440e1.c2e1c"]]},{"id":"fcf146f0.ebd018","type":"function","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Inativos","func":"msg = {};\nmsg.inativos = true;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":260,"y":760,"wires":[["47353582.4c2a4c"]]},{"id":"3d14f0ef.2d59f","type":"delay","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"limit 1 msg/s","pauseType":"rate","timeout":"4","timeoutUnits":"seconds","rate":"1","nbRateUnits":"5","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1610,"y":580,"wires":[["1b41ae27.22fa02","8b796b25.2bdaa8"]]},{"id":"1b41ae27.22fa02","type":"function","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Telegram","func":"var mensagem = `🚩 O objeto ${msg.nome} foi removido devido ao status \"Entregue\"!`\nmsg.payload = {}\nmsg.payload.content = mensagem\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1760,"y":580,"wires":[["51604cb9.2f2b24"]]},{"id":"51604cb9.2f2b24","type":"link out","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Para Telegram","links":["89bcab5.908ea58"],"x":1855,"y":580,"wires":[]},{"id":"8443064f.437c88","type":"counter","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"< 10","init":"0","step":"1","lower":"","upper":"","mode":"increment","outputs":"1","x":1070,"y":760,"wires":[["35bd9a9d.045686"]]},{"id":"35bd9a9d.045686","type":"function","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Limite Erros","func":"// Reset\nif (msg.reset != undefined) return\n\n// Menos de 10 erros\nif (msg.count < 10) return ([msg, null])\n\n// 10 Erros\nif (msg.count == 10) return ([null, msg])\n\n// Mais de 10 erros - Já avisou\nif (msg.count > 10) return","outputs":2,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1230,"y":900,"wires":[["f0db72fc.11c73"],["bb22fb88.c88168","626617af.35f7a8"]]},{"id":"50fe2abb.9361f4","type":"function","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Zera Contador","func":"msg = {}\nmsg.reset = true;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":900,"y":900,"wires":[["8443064f.437c88"]]},{"id":"bb22fb88.c88168","type":"debug","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Erros Acumulados","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1630,"y":900,"wires":[]},{"id":"20376ee0.ea7452","type":"debug","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Remove Concluído","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1630,"y":540,"wires":[]},{"id":"36675999.496e56","type":"debug","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Sem atualização","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1630,"y":840,"wires":[]},{"id":"6a205e0.0a5e3a4","type":"function","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Telegram","func":"msg.payload = {} \nmsg.payload.content = `⚠️ Um ou mais pacotes retornaram muitos erros de verificação!\n⚠️ A atualização foi interrompida temporariamente!\n⚠️ Verifique quais pacotes retornam erros usando /detalhes e selecionando a opção status\n⚠️ Considere removê-los da lista de checagem para evitar maiores problemas!`\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1600,"y":940,"wires":[["8d08a95f.3d8158"]]},{"id":"8d08a95f.3d8158","type":"link out","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Para Telegram","links":["89bcab5.908ea58"],"x":1695,"y":940,"wires":[]},{"id":"6690f237.e234ac","type":"inject","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"00 00 * * *","once":false,"onceDelay":"120","topic":"","payload":"Limpar","payloadType":"str","x":120,"y":760,"wires":[["fcf146f0.ebd018"]]},{"id":"8b796b25.2bdaa8","type":"link out","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"Reset inativos","links":["3bfcda23.3b57e6"],"x":1855,"y":540,"wires":[]},{"id":"7b866d44.027b84","type":"debug","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1340,"y":800,"wires":[]},{"id":"626617af.35f7a8","type":"delay","z":"102aab2a.e4c445","g":"bf1dd55b.a76b18","name":"","pauseType":"rate","timeout":"6","timeoutUnits":"hours","rate":"1","nbRateUnits":"6","rateUnits":"hour","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":true,"x":1420,"y":940,"wires":[["6a205e0.0a5e3a4"]]},{"id":"d51d6f43.a17e3","type":"server","name":"Home Assistant","version":1,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]
O bot do Telegram utilizado para essa integração foi o node-red-contrib-telegrambot-home. Caso utilize outro, você vai precisar fazer algumas adaptações na parte do Telegram.
Para funcionar corretamente os passos são os seuinte:
1 - Criar um arquivo “objetos_correios.json” na sua pasta config\node-red
{ config\node-red\objetos_correios.json }, com o seguinte conteúdo. Nesse arquivo que vão ficar armazenados os seus pacotes e as atualizações, esse arquivo é um registro vazio.
[]
2 - Editar a parte do boot, que são todos esses nós em azuis referentes ao bot. Deve selecionar o seu bot em cada um deles, sendo que no nó mensagem, deve selecionar o seu chatId também.
3 - Ajustar o de envio de notificação de que saiu para entrega para a Alexa “Alexa TTS”. Coloquei apenas um exemplo, caso deseje pode usar essa saída para outras automações, ou apenas deletar esse nó.
O bot funciona checando seus pacotes a cada 5min, e enviando as notificações pelo telegram, sempre que tiver uma atualização.
No telegram, os seguintes comando estão disponíveis
/add
/del
/detalhes
Todos são auto explicativos se digitados separadamente
Adicionando um objeto:
Removendo um obejto:
Obtendo detalhes
No detalhes, você pode escolher apenas listar seus objetos cadastrados, ou mostrar o útimo status de todos.
-
Usando detalhes+ você traz o histórico completo do objeto.
detalhes+ Luva de Frio
Mais uma vez agradecimentos ao @badwolf e em especial ao @otomai que a partir de algumas modificações que eu já havia começado, implementou muito mais coisas.
Espero que gostem.