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

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.

Será que é porque eu não tenho no configuration os “ffmepg:” E “stream:”?

@jhbcosta e @BentoAlves

O STREAM eu não tenho no CONFIG mas tenho o FFMPEG.

1 curtida

@Alesson

No node call service você colocou quanto tempo de duration? Talvez o problema seja que o duration esteja muito próximo do node de delay, como o Node-RED faz uma chamada para o HA isso nem sempre é instantâneo, pode demorar poucos milissegundos até alguns segundos e se o delay estiver muito perto do duration pode “encavalar” uma chamada na outra causando o erro do stream ainda gravando.

Isso tudo é meio suposição pois, não uso o node call service para fazer a captura das imagens. Não sei porque qual motivo não consigo escrever e ler arquivos pelo Node-RED, nem mesmo no HA, se eu faço uma automação por ele os arquivos somem, não consigo ter histórico.

Como eu resolvi o problema no meu caso, eu faço captura somente de um snapshot por evento das câmeras, minhas câmeras todas estão concentradas no ZoneMinder (concentro todas as câmeras nele pois fica mais fácil de expor elas para a internet e ele facilita a gestão de usuários e acessos às câmeras), o HA tem plataforma para o ZoneMinder. (ainda vou postar no tópico Câmeras compatíveis com o Home Assistant as minhas câmeras e como uso elas.)
Como não consigo escrever arquivos, então fiz um fluxo no Node-RED pra capturar e empacotar as imagens e enviar elas por email e por telegram, não foi algo trivial autenticar no ZM para depois capturar as imagens, mas com um pouquinho de empenho consegui fazer, olha como é o fluxo.


O ZM não tem a opção de Stream porque ele internamente captura cada frame como um Jpeg, ia precisaria pegar varias imagens para formar um video, para o que eu preciso está me atendendo.

1 curtida

@BentoAlves
Coloquei só 15 segundos e um lookback de 15 que irá voltar pra gravar antes

@Alesson
Acho que esse problema não é exclusivo seu, coloquei uma camera ffmpeg aki pra testar e consegui reproduzir o erro. Como o mesmo erro pesquisei nos foruns gringo pra ver se esse problema ja era conhecido, e é conhecido e tem uma Issue (issue #27166) aberta pra ele, agora precisa ver se vão corrigir isso.

De qualquer forma fiz um ajuste no fluxo para ‘parar’ a gravação para que uma nova gravação possa ser iniciada.


Coloquei um node do tipo catch para tratar erro no node do call service, se ocorrer um erro nele eu lanço o erro no debug e no system log para ficar mais facil de acompanhar o problema.
Segue o fluxo:

[{“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”:[[“3adfec37.3a41c4”]]},{“id”:“3fa2d0cb.cd67a”,“type”:“debug”,“z”:“26622b21.cbc8c4”,“name”:“Gravando”,“active”:true,“tosidebar”:true,“console”:false,“tostatus”:false,“complete”:"{“payload”: “Gravando”}",“targetType”:“jsonata”,“x”:380,“y”:520,“wires”:[]},{“id”:“4923fb98.70b864”,“type”:“delay”,“z”:“26622b21.cbc8c4”,“name”:"",“pauseType”:“delay”,“timeout”:“6”,“timeoutUnits”:“seconds”,“rate”:“1”,“nbRateUnits”:“1”,“rateUnits”:“second”,“randomFirst”:“1”,“randomLast”:“5”,“randomUnits”:“seconds”,“drop”:false,“x”:620,“y”:480,“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”:820,“y”:480,“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”:890,“y”:540,“wires”:[]},{“id”:“3adfec37.3a41c4”,“type”:“api-call-service”,“z”:“26622b21.cbc8c4”,“name”:"",“server”:“29487782.027118”,“version”:1,“debugenabled”:true,“service_domain”:“camera”,“service”:“record”,“entityId”:“camera.garagembruto”,“data”:"{“filename”:"/tmp/garagem.mp4",“duration”:“3”,“lookback”:“3”}",“dataType”:“json”,“mergecontext”:"",“output_location”:“payload”,“output_location_type”:“msg”,“mustacheAltTags”:true,“x”:630,“y”:420,“wires”:[[“4923fb98.70b864”]]},{“id”:“fa22fdbe.541a1”,“type”:“catch”,“z”:“26622b21.cbc8c4”,“name”:“Se Erro para de “gravar””,“scope”:[“3adfec37.3a41c4”],“uncaught”:false,“x”:610,“y”:540,“wires”:[[“98d9f1f9.12af5”,“7db36759.16ee28”]]},{“id”:“7db36759.16ee28”,“type”:“debug”,“z”:“26622b21.cbc8c4”,“name”:“Logar erro”,“active”:true,“tosidebar”:true,“console”:true,“tostatus”:false,“complete”:“true”,“targetType”:“full”,“x”:810,“y”:580,“wires”:[]},{“id”:“29487782.027118”,“type”:“server”,“z”:"",“name”:“Home Assistant”,“legacy”:false,“addon”:true,“rejectUnauthorizedCerts”:true,“ha_boolean”:“y|yes|true|on|home|open”,“connectionDelay”:true,“cacheJson”:true}]

1 curtida

@BentoAlves
Show! Pensei que era só comigo! Muito Obrigado!.

Olá, obrigado pela partilha. Um obrigado desde de Portugal :portugal:.

Às pasta www/imgs/ temos de criar manualmente, ou é suposto o sistema criar automaticamente?

1 curtida

Olá amigo! Bom tê-lo por aqui! Seja bem vindo!

Então, você deve criar esta pasta manualmente dentro do “config/www/”.

image

Abraços,
José Henrique.

1 curtida

Olá,

Estou a tentar por a funcionar o meu sistema, mas está com o seguinte erro :

Call-service API error.  Error Message: extra keys not allowed @ data['0']

Obrigado

Olá, @pedroware!

Consegue colocar o código do seu fluxo aqui para que eu possa simular no meu HA e te ajudar?

Abraços,
José Henrique.

1 curtida

Claro @jhbcosta

 [{"id":"3ea557b1.e7fec8","type":"tab","label":"Teste","disabled":false,"info":"Pagina de testes."},{"id":"f9aa9634.aff568","type":"inject","z":"3ea557b1.e7fec8","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":160,"y":120,"wires":[["f9713ede.16c01"]]},{"id":"f9713ede.16c01","type":"api-call-service","z":"3ea557b1.e7fec8","name":"Camera","server":"3e05aa42.de7f36","version":1,"debugenabled":false,"service_domain":"camera","service":"record","entityId":"camera.camara_telhado_frente","data":"{ “filename”: “/config/www/imgs/cameras/camara_telhado_frente.mp4”, “duration”: “15”, “lookback”: “15” }","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":330,"y":120,"wires":[["337d5b37.0d8444"]]},{"id":"6e5aab2e.4b5e74","type":"telegrambot-payload","z":"3ea557b1.e7fec8","name":"","bot":"110d62eb.e408ad","chatId":"293995835","sendMethod":"sendVideo","payload":"{\n “video” : “/config/www/imgs/cameras/camara_telhado_frente.mp4”,\n “caption” : “camara_telhado_frente”\n}","x":690,"y":120,"wires":[[]]},{"id":"337d5b37.0d8444","type":"delay","z":"3ea557b1.e7fec8","name":"","pauseType":"delay","timeout":"60","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":500,"y":120,"wires":[["6e5aab2e.4b5e74"]]},{"id":"3e05aa42.de7f36","type":"server","z":"","name":"Home Assistant"},{"id":"110d62eb.e408ad","type":"telegrambot-config","z":"","botname":"Bot-daisy","usernames":"pjmoreira695, tfernandes808","chatIds":"293995835, 957375066","pollInterval":"300"}]

@pedroware, boa tarde!

Acredito que tenha a ver com o CARACTERE ASPAS (") que você utilizou…veja a diferença entre o seu e o meu. O caractere está DIFERENTE.

Abraços,
José Henrique.

1 curtida

Uma dúvida:

Tenho de dar permissões para o criar arquivo no HA? Para criar os vídeos…

@pedroware,

Acho que não!

Era o problema As ASPAS :see_no_evil:

Obrigado

Ótimo tutorial, obrigado, parabens e continue assim. Precisamos de mais video aulas tambem sobre o conteudo.

Grande tutorial… uma dúvida, é normal o video começar a tocar no segundo 8 ? Aqui eu dou play pelo telegram e ele toca a partir do segundo 8… ele até gravou os 15 segundos configurados, mas achei estranho isso. Outro ponto que se eu abro o video pela pasta gravada, ele também faz isso, porém eu consigo voltar e assistir a partir do segundo 1, no telegram se tento voltar ele pula pro 8. Abraços

1 curtida