Skip to content

Instantly share code, notes, and snippets.

@harusametime
Created June 21, 2024 08:17
Show Gist options
  • Save harusametime/98f90a980e7caf543d4842d188a72407 to your computer and use it in GitHub Desktop.
Save harusametime/98f90a980e7caf543d4842d188a72407 to your computer and use it in GitHub Desktop.
const http = require('http');
const ADS1115 = require('ads1115')
const proxy = require('http-proxy');
const gpio = require('rpi-gpio');
const ws = require('ws');
drem = 'd1vy159ra4kdv0.cloudfront.net';
console.log('Starting timer...');
const sockets = new Set();
let debounce;
let debugLapCounter = 1;
// ADS1115デバイスを初期化
ADS1115.open(1).then(ads1115 => {
// 一定間隔でADS1115から値を読み取る
setInterval(async () => {
const value = await ads1115.measure('0+GND'); // チャンネル0とGNDの差を読み取る
console.log('value: ' + value + ', Lap: ' + debugLapCounter)
// 値が閾値を超えた場合にイベントハンドラを呼び出す
if (value > 3380 && value <15000) {
if (debounce) return;
debounce = true;
setTimeout(() => {
debounce = false;
}, 3000);
for (const sock of sockets) {
try {
++debugLapCounter;
console.log(debugLapCounter + ': Lap triggered :' + value);
sock.send('lap');
} catch (e) {}
}
}
}, 3); // 10ミリ秒ごとに値を読み取る
});
const p = proxy.createProxyServer();
const server = http.createServer((req, res) => {
p.web(req, res, { target: 'https://' + drem, headers: { Host: drem } });
});
server.listen(8080);
const wsServer = new ws.WebSocketServer({ server });
console.log('Timer started');
wsServer.on('connection', (sock) => {
sockets.add(sock);
sock.on('close', () => {
sockets.delete(sock);
console.log('Timer stopped');
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment