edit api
This commit is contained in:
84
app.js
84
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'
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user