Node-RED - Gravando vídeos e enviando para o Telegram

telegram

Fala Moçada!

Antes desse tutorial, tenha o Telegram integrado ao Home Assistant!

A quem interessar, disponibilizo um Fluxo onde é possível GRAVAR VÍDEOS (em uma determinada camera do HA) e enviar para o TELEGRAM.

Criei esse fluxo de exemplo, bem simples e instrutivo:

Pulando a parte do INJECT (timestamp) e indo diretamente para o GRAVAR VÍDEO, temos o seguinte node. No campo EntityId você deve colocar a SUA CÂMERA que deseja utilizar para gravar o vídeo. No campo DATA você deve indicar o caminho (no seu HA) onde quer que o vídeo seja armazenado. Aqui tem um comportamento bem legal que o “lookback” indica para voltar 15 segundos (delay da maioria das câmeras) e gravar por 15 segundos (“duration”).

Lógica:

{
    "filename": "/config/www/imgs/cameras/quintal_esquerda.mp4",
    "duration": "15",
    "lookback": "15"
}

Dou um DELAY de 60 segundos para dar tempo ao HA gravar corretamente o VÍDEO…
E em seguida, mando o TELEGRAM enviar o Vídeo. No campo Bot você deve escolher o SEU Bot. Qualquer dúvida, veja esse post onde ensino a configurar o TELEGRAM no Node-Red: https://forum.homeassistantbrasil.com.br/t/node-red-enviando-mensagens-com-o-telegram/107

No campo Chat ID você deve escolher o SEU Chat_Id.

Lógica:

{
    "video" : "/config/www/imgs/cameras/quintal_esquerda.mp4",
    "caption" : "QUINTAL ESQUERDA"
}

Segue a lógica do Fluxo:

[{"id":"a85700a8.ecea5","type":"tab","label":"Flow 2","disabled":false,"info":""},{"id":"672b876f.fd8858","type":"telegrambot-payload","z":"a85700a8.ecea5","name":"TELEGRAM","bot":"7e1e0c2c.846ab4","chatId":"seuChatId","sendMethod":"sendVideo","payload":"{\n    \"video\" : \"/config/www/imgs/cameras/quintal_esquerda.mp4\",\n    \"caption\" : \"QUINTAL ESQUERDA\"\n}","x":650,"y":40,"wires":[[]]},{"id":"127dabbc.3bddf4","type":"api-call-service","z":"a85700a8.ecea5","name":"","server":"ef4eb39d.410e6","version":1,"service_domain":"camera","service":"record","entityId":"camera.quintal_esquerda","data":"{\"filename\":\"/config/www/imgs/cameras/quintal_esquerda.mp4\",\"duration\":\"15\",\"lookback\":\"15\"}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":290,"y":40,"wires":[["972589c5.5019e8"]]},{"id":"972589c5.5019e8","type":"delay","z":"a85700a8.ecea5","name":"","pauseType":"delay","timeout":"60","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":480,"y":40,"wires":[["672b876f.fd8858"]]},{"id":"9f021e35.15fb6","type":"inject","z":"a85700a8.ecea5","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":100,"y":40,"wires":[["127dabbc.3bddf4"]]},{"id":"7e1e0c2c.846ab4","type":"telegrambot-config","z":"","botname":"nomedoseubot","usernames":"","chatIds":"seuChatId","pollInterval":"300"},{"id":"ef4eb39d.410e6","type":"server","z":"","name":"Home Assistant"}]

Por fim, faça o DEPLOY e clique no INJECT para testar!

image

Abraços,
José Henrique.

Tutoriais que recomendo:

3 curtidas

Obrigado meu nobre por compartilhar seu projeto. Fiquei uns dias tentando colocar pra funcionar pelo automation.yaml sem sucesso. Foi quando vi seu post. Pessoas como você contribui muito para evolução da nossa especie (usuários do HA)…

2 curtidas

Ficou uma duvida, consegui fazer o fluxo, quando aperto no inject ele manda o vídeo. Como faço para criar um gatilho automático quando um movimento for detectado?

deixa como on ao invés de true

Tenho a camera ic3 da intelbras e mando o o “Inject” da erro “Call-service API error. Error Message: camera.camera_do_fundo does not support record service”!

Eu consegui tirar o snapshot da foto e enviar, mas do video não!

Alguém que tenha essa camera teve o mesmo erro?

Olá, @Alesson!

Eu consegui.

{
    "filename": "/config/www/imgs/cameras/quintal_esquerda.mp4",
    "duration": "15",
    "lookback": "15"
}

Abraços,
José Henrique.

1 curtida

Olá, @jhbcosta
Qual código da sua câmera ?
Meu é http://ipcam/onvif/snapshot

Olá, @Alesson!
Se entendi sua pergunta, minha câmera está configurada assim:

Abraço,
José Henrique.

1 curtida

Alguém teve esse problema ? Funcionando normal e do nada da esse erro e dps n funciona mais !

@Alesson, bom dia!

Qual mensagem de erro está dando e quanto tempo de delay você colocou?

Geralmente dá erro pois não terminou de gravar o vídeo e aí o fluxo chama novamente o vídeo para gravar novamente.

Abraços,
José Henrique.

1 curtida

@jhbcosta

E minha câmera é a intelbras ic3 e já testei os dois códigos.
O erro é esse aí “API ERRO”. Delay de 70 segundo. Mais ele nem grava ! Funciona normal aí do nada aparece esse erro!

@Alesson, boa tarde.

A mensagem de erro indica que o Stream já está gravando…por isso o erro.

Sugiro você pensar em colocar um delay depois do sensor e antes da câmera para evitar que o sensor dispare novamente enquanto a câmera estiver gravando (porque é isso que está ocorrendo).

Abraços,
José Henrique.

1 curtida

@jhbcosta


Desse Jeito?

@Alesson,

Isso mesmo. É um caminho…qualquer coisa vai aumentando o DELAY, de 5s em 5s.

Abraços,
José Henrique.

1 curtida

Pelo que entendi você inicia o processo de gravação e antes de terminar você inicia outro e aparece a mensagem que a gravação já foi iniciada.

Você verificou na pasta imgs/cameras se gravou algum vídeo?

Pior que não grava ! Depois de um tempo ele volta eu apagando a config e colocando dnv !

@Alesson
Qual o valor que você configurou no duration dentro do Data no SVC? Ele precisa ser menor que o valor setado no Delay.

Outra opção de fluxo é essa aqui:


Nela eu seto uma variável no fluxo indicando que a gravação começou, quanto ela não acabar não deixa outra gravação iniciar, depois do Delay da gravação eu seto outro valor na variável para informar que a gravação parou.

Esse é o fluxo da imagem

[{"id":"d4a89eb2.90e59","type":"inject","z":"26622b21.cbc8c4","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":100,"y":360,"wires":[["9be3ca28.efd448"]]},{"id":"9be3ca28.efd448","type":"switch","z":"26622b21.cbc8c4","name":"Verifica se Gravando","property":"aindaGravando","propertyType":"flow","rules":[{"t":"neq","v":"gravando","vt":"str"},{"t":"eq","v":"gravando","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":180,"y":440,"wires":[["cbfa52b2.50a11"],["3fa2d0cb.cd67a"]]},{"id":"cbfa52b2.50a11","type":"change","z":"26622b21.cbc8c4","name":"Setar Gravando","rules":[{"t":"set","p":"aindaGravando","pt":"flow","to":"gravando","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":420,"y":440,"wires":[["66ccc4ea.3740ac"]]},{"id":"3fa2d0cb.cd67a","type":"debug","z":"26622b21.cbc8c4","name":"Gravando","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"{\"payload\": \"Gravando\"}","targetType":"jsonata","x":460,"y":560,"wires":[]},{"id":"66ccc4ea.3740ac","type":"delay","z":"26622b21.cbc8c4","name":"Nó que faz a gravação","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":640,"y":440,"wires":[["4923fb98.70b864"]]},{"id":"4923fb98.70b864","type":"delay","z":"26622b21.cbc8c4","name":"","pauseType":"delay","timeout":"20","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":660,"y":500,"wires":[["98d9f1f9.12af5"]]},{"id":"98d9f1f9.12af5","type":"change","z":"26622b21.cbc8c4","name":"Setar Gravado","rules":[{"t":"set","p":"aindaGravando","pt":"flow","to":"gravado","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":840,"y":500,"wires":[["a279958.5b9f168"]]},{"id":"a279958.5b9f168","type":"debug","z":"26622b21.cbc8c4","name":"Terminou de gravar","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"{\"payload\": \"Terminou de gravar\"}","targetType":"jsonata","x":830,"y":560,"wires":[]}]
2 curtidas

Boa ideia, @BentoAlves!

1 curtida

@BentoAlves
Valeu vou tentar aqui e depois mando o que deu.

1 curtida

Esse erro ta perseguindo! “API ERROR” dnv.