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) => {
|
app.get('/api/devs', async (req, res) => {
|
||||||
const abortController = new AbortController()
|
const abortController = new AbortController()
|
||||||
const timeout = setTimeout(() => abortController.abort(), 5000)
|
const timeout = setTimeout(() => abortController.abort(), 5000)
|
||||||
|
|
||||||
try {
|
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)
|
clearTimeout(timeout)
|
||||||
|
|
||||||
@@ -147,16 +146,24 @@ app.get('/api/temperature', async (req, res) => {
|
|||||||
const timeout = setTimeout(() => abortController.abort(), 5000)
|
const timeout = setTimeout(() => abortController.abort(), 5000)
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const summary = await client.summary(abortController.signal)
|
const devs = await client.edevs(abortController.signal)
|
||||||
|
|
||||||
clearTimeout(timeout)
|
clearTimeout(timeout)
|
||||||
|
|
||||||
// Извлечение температурных данных
|
// Извлечение температурных данных
|
||||||
const temperatureData = {
|
const temperatureData = {
|
||||||
board_temp: summary.BoardTemp || summary.temp || null,
|
chip1: {
|
||||||
chip_temp: summary.ChipTemp || summary.temp2 || null,
|
temp_current: devs[0]['Temperature'] || null,
|
||||||
fan_speed: summary.FanSpeed || summary.fan || null,
|
temp_awg: devs[0]['Chip Temp Avg'] || null,
|
||||||
fan_percent: summary.FanPercent || 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({
|
res.json({
|
||||||
@@ -174,17 +181,25 @@ app.get('/api/temperature', async (req, res) => {
|
|||||||
app.get('/api/hashrate', async (req, res) => {
|
app.get('/api/hashrate', async (req, res) => {
|
||||||
const abortController = new AbortController()
|
const abortController = new AbortController()
|
||||||
const timeout = setTimeout(() => abortController.abort(), 5000)
|
const timeout = setTimeout(() => abortController.abort(), 5000)
|
||||||
|
function format(num) {
|
||||||
|
const del = 1_000_000
|
||||||
|
return Math.round(num / del * 100) / 100
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
const summary = await client.summary(abortController.signal)
|
const summary = await client.summary(abortController.signal)
|
||||||
|
|
||||||
clearTimeout(timeout)
|
clearTimeout(timeout)
|
||||||
|
|
||||||
const hashrateData = {
|
const hashrateData = {
|
||||||
current: summary.GHS_5s || summary.hashrate || 0,
|
current: format(summary[0]['HS RT']),
|
||||||
average: summary.GHS_av || summary.hashrate_avg || 0,
|
average: format(summary[0]['MHS av']),
|
||||||
realtime: summary.GHS_rt || summary.hashrate_rt || 0,
|
'1_sec': format(summary[0]['MHS 5s']),
|
||||||
unit: 'GH/s'
|
'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({
|
res.json({
|
||||||
@@ -308,16 +323,15 @@ app.get('/', (req, res) => {
|
|||||||
},
|
},
|
||||||
endpoints: {
|
endpoints: {
|
||||||
'GET /api/summary': 'Общая информация о майнере',
|
'GET /api/summary': 'Общая информация о майнере',
|
||||||
'GET /api/stats': 'Статистика майнера',
|
|
||||||
'GET /api/devs': 'Информация об устройствах (чипах)',
|
'GET /api/devs': 'Информация об устройствах (чипах)',
|
||||||
|
'GET /api/devdetails': 'Информация об устройствах',
|
||||||
'GET /api/pools': 'Информация о пулах',
|
'GET /api/pools': 'Информация о пулах',
|
||||||
'GET /api/temperature': 'Температура и вентиляторы',
|
'GET /api/temperature': 'Температура и вентиляторы',
|
||||||
'GET /api/hashrate': 'Текущий хешрейт',
|
'GET /api/hashrate': 'Текущий хешрейт',
|
||||||
'GET /api/health': 'Проверка состояния',
|
'GET /api/health': 'Проверка состояния',
|
||||||
'GET /api/all': 'Все данные (агрегированные)',
|
'GET /api/all': 'Все данные (агрегированные)',
|
||||||
'POST /api/reboot': 'Перезагрузка майнера'
|
'POST /api/reboot': 'Перезагрузка майнера'
|
||||||
},
|
}
|
||||||
documentation: 'https://github.com/thermocline-labs/whats-miner'
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user