node-pumatronix
v0.2.1
Published
modulo de comunicacao com a camera Pumatronix ITSCAM
Downloads
2
Readme
node-pumatronix
Módulo para configuração e controle das câmeras Pumatronix ITSCAM
Resumo
O módulo
node-pumatronix
foi desenvolvido para facilitar o interfaceamento das câmeras Pumatronix ITSCAM com aplicações desenvolvidas em Node.js.
Todos os testes foram realizados com uma câmera Pumatronix ITSCAM 403.
ESTE PROJETO ENCONTRA-SE EM DESENVOLVIMENTO, PORTANTO, É ESPERADO QUE EXISTAM ERROS NO PROGRAMA.
Recursos
- Faz upload das configurações contidas em um arquivo .ini para a câmera. Configurações passiveis de serem alteradas via socket serão alteradas via socket. Algumas configurações só podem ser alteradas via http; para estas configurações, será utilizado o protocolo http, conforme especificado no datasheet da câmera.
- Cria um servidor FTP para que a câmera salve os arquivos de imagem capturados.
- Requisita imagens via socket TCP e as salva em um diretório definido pelo usuário.
Instalação
npm install node-pumatronix --save
API
var camera = require('node-pumatronix');
camera.findCameras(timeout, callback)
- Envia pacote broadcast UDP e lista respostas de cameras conectadas à rede
camera.iniciarFTP(porta, 'rootDir', logLevel)
- Cria um servidor FTP, útil se a camera estiver programada para utilizar um servidor ftp. logLevel controla o nivel de verbosidade do servidor FTP; 0= verbosidade mínima, 4= verbosidade máxima.
camera.calcCRC(buf)
- Calcula o CRC do buffer argumento para o envio de dados via socket.
camera.enviarComando('host', buffer)
- Envia buffer ao host. Nao é necessario incluir os bytes CRC, pois eles são calculados automaticamente.
camera.reset('host')
- Envia comando de reset à camera.
camera.uploadSettings('host', iniFile)
- Envia configurações contidas no arquivo .ini à camera.
camera.getImage('host', 'caminho', ntpEnable)
- Requisita imagem e salva na pasta indicada em 'caminho'. O nome do arquivo é a data e hora da captura. Caso a pasta não exista, cria a pasta.
- Se ntpEnable=1, compara o horário do sistema local com o de um servidor NTP.
- Se o horário local diferir do servidor em menos de 5 segundos, continua a rotina normalmente.
- Se o horário local diferir do servidor entre 5 e 60 segundos, mostra aviso no console e prossegue a execução do programa.
- Se o horário local diferir do servidor mais de 60 segundos, mostra aviso no console e para a execução do programa.
- Se o servidor NTP não estiver disponível, um aviso será mostrado no console e o programa seguirá normalmente.
camera.updateDateTime('hostname')
- Atualiza a data e a hora da câmera com base na data e hora do sistema local. Útil se a câmera não estiver programada para fazer uso de um servidor NTP, uma vez que a informação de data e hora é perdida em caso de falha na alimentação da câmera.
Uso
var camera = require('node-pumatronix');
var hostname = '192.168.1.192';
camera.findCameras(1500, function(camerasEncontradas){
if(camerasEncontradas.length > 0){
console.log('cameras encontradas:')
console.log(camerasEncontradas);
}
else
console.log('nenhuma camera encontrada');
});
camera.iniciarFTP(41237, 'FTP/', 2); //inicia servidor FTP com diretório raiz 'FTP/'.
//dentro do diretório raiz, será criada uma pasta
//para cada usuário conectado. Qualquer senha será aceita.
setInterval(function(){
camera.getImage(hostname,'./camera/')
},2000);
ini
Exemplo de arquivo .ini esperado pelo módulo:
[rede]
IP=192.168.1.192
netMask=255.255.255.0
gateway=192.168.1.251
DNS=208.67.222.222
[servidor]
;tipoServidor 0:nenhum 1:FTP 2:ITSCAM PRO 3:RTSP 4:K32 5:panoramica 6:porta serial 7:nao implementado 8:arquivos
nImagensRequisicaoRede=1
nImagensRequisicaoIO=1
tipoServidor=1
enderecoServidor=192.168.1.73
enderecoServidorRedundante=
portaServidor=41237
arquivoFTP=/%u
usuarioFTP=pumatronix1
senhaFTP=main
ativarNTP=1
enderecoNTP=a.st1.ntp.br
[imagem]
;tipoShutter: 0:fixo 1:automatico 2:fixo modo dia e automatico modo noite
;autoGanho 0:fixo 1:automatico
;formatoImagens 0:BMP 1:JPG
;modoTrigger 1:desabilitado 2:borda de subida 3:borda de descida 4:ambas as bordas 5:aproximacao
; 6:afastamento rapido 7:afastamento lento 8:continuo 9:periodico 10:nivel alto
; 11:nivel baixo 12:subida e aproximacao
;tipoSaida 1:flash 2:IO
;configSaidas 0:ambas desabilitadas 1:saida 1 habilitada 2:saida 2 habilitada 3:ambas as saidas habilitadas
;delayShutterFlash 100-25000, multiplo de 0.4us
;tMinNovaImagem 0-60000ms
;modoTeste 0:imagem capturada 1:padrao vertical 2:padrao horizontal 3:padrao diagonal
;nivelClaridade 7-62
;ganhoMaxDif 0-72
;configGanhoMaxDif 0:desabilitado 1:habilitado dia 2:habilitado noite
;balancoBranco [R, G, B] 0-255, sendo 0 ajuste automatico
;gamma 0:resposta linear 1:resposta logaritmica padrao 70-255 curvas personalizadas
;realceBordas 0:desabilidato 1:filtro de primeira ordem 2:filtro de segunda ordem 3:filtro de segunda ordem com deteccao suave
;colorNight 0:escala de cinza 1:imagem colorida
;modoGammaDif 0:desabilitado 1:habilitado modo dia 2:habilitado modo noite
;gammaDif 0:linear 1:log 70-255:curvas personalizadas
;modoOperacao 0:dia/noite automatico 1:dia 2:noite
;modoOCR 0:desabilitado 1:rapido 2:normal 3:lento 4:muito lento
;triggerAlternativo 0:desabilitado 1:habilitado dia 2:habilitado noite
;segundaConfOCR 0:desabilitado 1:habilitado dia 2:habilitado noite
HDR=1
tipoShutter=0
modoTrigger=2
valorShutterFixo=150
valorShutterMax=450
autoGanho=0
ganhoFixo=72
ganhoMax=72
nivelClaridade=53
tipoSaida=2
configSaidas=0
delayShutterFlash=200
tMinNovaImagem=0
modoTeste=0
ganhoMaxDif=40
configGanhoMaxDif=0
formatoImagens=1
qualidadeImagens=100
rotacao180=0
pesos=[15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15]
saturacao=85
nivelPreto=10
ganhoDigital=100
balancoBranco=[0, 0, 0]
gamma=1
realceBordas=0
colorNight=0
modoGammaDif=0
gammaDif=110
intensidadeFlashSegundoDisparo=10
atrasoMultExpDia=0
atrasoMultExpNoite=0
ganhoEletronicoSegundaFotoLuzVisivel=20
ganhoEletronicoSegundaFotoLuzIR=20
autoIrisDC=1
modoOperacao=2
modoOCR=0
triggerAlternativo=0
valorTriggerDif=2
segundaConfOCR=0
valorOCRDif=2