DivoomPCMonitorTool/divoom_mon.sh

74 lines
2.7 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Проверка установленных программ
check_dependencies() {
dependencies=("jq" "sensors" "mpstat")
for dep in "${dependencies[@]}"; do
if ! command -v "$dep" &>/dev/null; then
echo "Ошибка: Требуемая программа '$dep' не установлена."
echo "Установите её и повторите запуск скрипта."
exit 1
fi
done
}
# Получение IP устройства и его ID
get_device_info() {
response=$(curl -s https://app.divoom-gz.com/Device/ReturnSameLANDevice)
DevicePrivateIP=$(echo "$response" | jq -r '.DeviceList[0].DevicePrivateIP')
DeviceId=$(echo "$response" | jq -r '.DeviceList[0].DeviceId')
}
get_cpu_usage() {
# Получаем информацию о загрузке CPU через mpstat (1 секунда, 1 отчет)
CpuUse=$(mpstat 1 1 | grep "Average" | awk '{printf "%.0f", 100 - $12}')
}
# Функция для получения параметров системы
get_system_info() {
# Вычисляем использование CPU
get_cpu_usage
# GPU использование
GpuUse=$(nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits) || GpuUse="0"
# Температура CPU
CpuTemp=$(sensors | grep -m 1 "Tctl:" | awk '{printf "%.0f", $2}' | tr -d '+°C')
# Температура GPU
GpuTemp=$(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits) || GpuTemp="0"
# Использование RAM
RamUse=$(free | grep Mem | awk '{printf "%.0f", $3/$2 * 100.0}')
# Использование HDD
HardDiskUse=$(df / | tail -1 | awk '{print $5}' | tr -d '%')
}
# Функция для отправки данных
send_data() {
curl -s -X POST "http://$DevicePrivateIP:80/post" \
-H "Content-Type: application/json" \
-d '{"Command":"Device/UpdatePCParaInfo","ScreenList":[{"LcdId":'"$DeviceId"',"DispData":["'"$CpuUse"'","'"$GpuUse"'","'"$CpuTemp"'","'"$GpuTemp"'","'"$RamUse"'","'"$HardDiskUse"'"]}]}' \
> /dev/null 2>&1
}
# Проверяем установленные программы
check_dependencies
# Получаем DevicePrivateIP и DeviceId
get_device_info
# Проверяем успешность получения данных
if [[ -z "$DevicePrivateIP" || -z "$DeviceId" ]]; then
echo "Ошибка: Не удалось получить данные устройства."
exit 1
fi
# Запуск основного цикла
while true; do
get_system_info
send_data
sleep 1 # время задержки между вызовами
done