diff --git a/app.js b/app.js index c98b691..1768d3a 100644 --- a/app.js +++ b/app.js @@ -78,34 +78,33 @@ app.get('/api/summary', async (req, res) => { } }) -// Эндпоинт: статистика майнера -app.get('/api/stats', async (req, res) => { - const abortController = new AbortController() - const timeout = setTimeout(() => abortController.abort(), 5000) - - try { - const stats = await client.stats(abortController.signal) - - clearTimeout(timeout) - - res.json({ - success: true, - timestamp: new Date().toISOString(), - data: stats - }) - } catch (err) { - clearTimeout(timeout) - errorHandler(err, res, 'Failed to fetch stats') - } -}) - // Эндпоинт: информация об устройствах (чипах) app.get('/api/devs', async (req, res) => { const abortController = new AbortController() const timeout = setTimeout(() => abortController.abort(), 5000) try { - const devs = await client.devs(abortController.signal) + const devs = await client.edevs(abortController.signal) + + clearTimeout(timeout) + + res.json({ + success: true, + timestamp: new Date().toISOString(), + data: devs + }) + } catch (err) { + clearTimeout(timeout) + errorHandler(err, res, 'Failed to fetch devices') + } +}) + +app.get('/api/devdetails', async (req, res) => { + const abortController = new AbortController() + const timeout = setTimeout(() => abortController.abort(), 5000) + + try { + const devs = await client.devDetails(abortController.signal) clearTimeout(timeout) @@ -147,16 +146,24 @@ app.get('/api/temperature', async (req, res) => { const timeout = setTimeout(() => abortController.abort(), 5000) try { - const summary = await client.summary(abortController.signal) + const devs = await client.edevs(abortController.signal) clearTimeout(timeout) // Извлечение температурных данных const temperatureData = { - board_temp: summary.BoardTemp || summary.temp || null, - chip_temp: summary.ChipTemp || summary.temp2 || null, - fan_speed: summary.FanSpeed || summary.fan || null, - fan_percent: summary.FanPercent || null + chip1: { + temp_current: devs[0]['Temperature'] || null, + temp_awg: devs[0]['Chip Temp Avg'] || null, + temp_min: devs[0]['Chip Temp Min'] || null, + temp_max: devs[0]['Chip Temp Max'] || null + }, + chip2: { + temp_current: devs[1]['Temperature'] || null, + temp_awg: devs[1]['Chip Temp Avg'] || null, + temp_min: devs[1]['Chip Temp Min'] || null, + temp_max: devs[1]['Chip Temp Max'] || null + } } res.json({ @@ -174,17 +181,25 @@ app.get('/api/temperature', async (req, res) => { app.get('/api/hashrate', async (req, res) => { const abortController = new AbortController() const timeout = setTimeout(() => abortController.abort(), 5000) - + function format(num) { + const del = 1_000_000 + return Math.round(num / del * 100) / 100 + } try { const summary = await client.summary(abortController.signal) clearTimeout(timeout) const hashrateData = { - current: summary.GHS_5s || summary.hashrate || 0, - average: summary.GHS_av || summary.hashrate_avg || 0, - realtime: summary.GHS_rt || summary.hashrate_rt || 0, - unit: 'GH/s' + current: format(summary[0]['HS RT']), + average: format(summary[0]['MHS av']), + '1_sec': format(summary[0]['MHS 5s']), + '1_min': format(summary[0]['MHS 1m']), + '5_min': format(summary[0]['MHS 5m']), + '15_min': format(summary[0]['MHS 15m']), + unit: 'TH/s', + power_watt: summary[0]['Power'], + 'watt/th': summary[0]['Power Rate'] } res.json({ @@ -308,16 +323,15 @@ app.get('/', (req, res) => { }, endpoints: { 'GET /api/summary': 'Общая информация о майнере', - 'GET /api/stats': 'Статистика майнера', 'GET /api/devs': 'Информация об устройствах (чипах)', + 'GET /api/devdetails': 'Информация об устройствах', 'GET /api/pools': 'Информация о пулах', 'GET /api/temperature': 'Температура и вентиляторы', 'GET /api/hashrate': 'Текущий хешрейт', 'GET /api/health': 'Проверка состояния', 'GET /api/all': 'Все данные (агрегированные)', 'POST /api/reboot': 'Перезагрузка майнера' - }, - documentation: 'https://github.com/thermocline-labs/whats-miner' + } }) })