fxwebserial
v1.0.0
Published
Módulo completo para conexão com balança via WebSerial, coleta de dados e integração com API
Maintainers
Readme
WebSerial Balança
Módulo completo para conexão com balança via WebSerial, coleta de dados e integração com API back-end.
🚀 Instalação
npm install webserial-balanca📦 Funcionalidades
- ✅ Conexão WebSerial com balança
- ✅ Coleta e processamento automático de dados
- ✅ Histórico de leituras com estatísticas
- ✅ Integração com API back-end
- ✅ Retry automático em caso de falha
- ✅ Exportação de dados (JSON/CSV)
- ✅ TypeScript completo
🎯 Uso Básico
Exemplo Simples
import { BalançaManager } from 'webserial-balanca';
const manager = new BalançaManager({
serial: {
baudRate: 9600
}
});
// Conectar
await manager.conectar();
// Solicitar peso
await manager.solicitarPeso();
// Obter última leitura
const leitura = manager.getUltimaLeitura();
console.log('Peso:', leitura?.valor, 'kg');Com API Back-end
import { BalançaManager } from 'webserial-balanca';
const manager = new BalançaManager({
serial: {
baudRate: 9600
},
api: {
baseURL: 'https://api.exemplo.com',
endpoint: '/api/balanca/leituras',
headers: {
'Authorization': 'Bearer token123'
},
onSuccess: (response) => {
console.log('Dados enviados com sucesso:', response);
},
onError: (error) => {
console.error('Erro ao enviar:', error);
}
},
autoEnviarAPI: true // Envia automaticamente cada leitura
});
await manager.conectar();📚 API Completa
BalançaManager
Gerenciador principal que integra tudo.
const manager = new BalançaManager(config);
// Métodos
await manager.conectar(port?);
await manager.desconectar();
await manager.solicitarPeso(comando?);
manager.getUltimaLeitura();
manager.getHistorico(quantidade?);
manager.getEstatisticas();
manager.exportarHistorico('json' | 'csv');
await manager.enviarParaAPI(leitura?);
await manager.enviarLoteParaAPI(leituras?);
manager.setAutoEnviarAPI(ativo);
manager.isConectado();
manager.on(event, callback);
manager.off(event, callback);WebSerialBalança
Conexão WebSerial pura.
import { WebSerialBalança } from 'webserial-balanca';
const serial = new WebSerialBalança({
baudRate: 9600
});
serial.on('peso', (leitura) => {
console.log('Peso:', leitura.valor);
});
await serial.openPort();BalançaDataCollector
Coletor de dados com histórico.
import { BalançaDataCollector } from 'webserial-balanca';
const collector = new BalançaDataCollector(1000);
collector.adicionarLeitura(leitura);
const historico = collector.getHistorico();
const stats = collector.getEstatisticas();
const csv = collector.exportarCSV();BalançaAPIClient
Cliente para API.
import { BalançaAPIClient } from 'webserial-balanca';
const api = new BalançaAPIClient({
baseURL: 'https://api.exemplo.com',
endpoint: '/api/balanca/leituras'
});
await api.enviarLeitura(leitura);
await api.enviarLote(leituras);🎨 Uso no React
import { useEffect, useState } from 'react';
import { BalançaManager } from 'webserial-balanca';
function BalançaComponent() {
const [manager] = useState(() => new BalançaManager({
serial: { baudRate: 9600 },
api: {
baseURL: 'https://api.exemplo.com',
endpoint: '/api/balanca/leituras'
},
autoEnviarAPI: true
}));
const [peso, setPeso] = useState<number | null>(null);
useEffect(() => {
manager.on('peso', (leitura) => {
setPeso(leitura.valor);
});
return () => {
manager.desconectar();
};
}, []);
return (
<div>
<button onClick={() => manager.conectar()}>Conectar</button>
<div>Peso: {peso} kg</div>
</div>
);
}📊 Eventos
connect- Quando conecta à balançadisconnect- Quando desconectadata- Dados brutos recebidospeso- Nova leitura de peso processadaerror- Erro ocorridoapi-success- Sucesso ao enviar para APIapi-error- Erro ao enviar para API
🔧 Configuração
Configuração Serial
{
baudRate: 9600,
dataBits: 8,
stopBits: 1,
parity: 'none',
bufferSize: 255,
autoOpen: true
}Configuração API
{
baseURL: 'https://api.exemplo.com',
endpoint: '/api/balanca/leituras',
headers: { 'Authorization': 'Bearer token' },
timeout: 10000,
retryAttempts: 3,
retryDelay: 1000
}📝 Licença
MIT
