Created
June 21, 2024 08:17
-
-
Save harusametime/98f90a980e7caf543d4842d188a72407 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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