收起左侧

用GPT写了适配飞牛的海康威视R1小屏监控

5
回复
428
查看
[ 复制链接 ]

1

主题

2

回帖

0

牛值

江湖小虾

2025-5-3 12:06:16 显示全部楼层 阅读模式

这个小屏幕没法用,感觉挺可惜的,所以用GPT跟Deepseek写了一个温度监控,系统时间显示的小功能,目前很丑,但勉强能用,希望有大佬可以帮忙美化一下
微信图片_202505031203012.jpg

收藏
送赞 1
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

1

主题

2

回帖

0

牛值

江湖小虾

2025-5-3 12:07:15 楼主 显示全部楼层

源脚本

#!/bin/bash

Hikvision R1 small screen: Large character CPU temperature + time display script (updates every minute)

ANSI colors

RED='\033[1;31m'
ORANGE='\033[38;5;214m' # Orange, used for medium temperatures
YELLOW='\033[1;33m'
GREEN='\033[1;32m'
CYAN='\033[1;36m' # Cyan, used for time display
RESET='\033[0m'
BACKGROUND='\033[48;5;235m' # Dark gray background, for contrast
WHITE='\033[1;37m'

Digit and symbol patterns (uniform height: 5 lines)

DIGIT_0=(" ███ " "█ █" "█ █" "█ █" " ███ ")
DIGIT_1=(" █ " " ██ " " █ " " █ " " ███ ")
DIGIT_2=(" ███ " " █" " ███ " "█ " "█████")
DIGIT_3=("████ " " █" " ███ " " █" "████ ")
DIGIT_4=("█ █" "█ █" "█████" " █" " █")
DIGIT_5=("█████" "█ " "████ " " █" "████ ")
DIGIT_6=(" ███ " "█ " "████ " "█ █" " ███ ")
DIGIT_7=("█████" " █" " █ " " █ " " █ ")
DIGIT_8=(" ███ " "█ █" " ███ " "█ █" " ███ ")
DIGIT_9=(" ███ " "█ █" " ████" " █" " ███ ")
DEGREE_SYMBOL=(" " " ███ " "█ █" " ███ " " ")
CHAR_C=(" ███ " "█ " "█ " "█ " " ███ ")
DIGIT_DOT=(" " " " " " " █ " " ")
DIGIT_COLON=(" " " █ " " " " █ " " ")

Get CPU temperature

get_temp() {
TEMP=$(sensors | grep -i 'Core 0' | awk '{print $3}')
if [ -z "$TEMP" ]; then
TEMP="N/A"
fi
echo "$TEMP"
}

Set color based on temperature

get_temp_color() {
local TEMP=$1 if [[ "$TEMP" == "N/A" ]]; then
echo "$RESET"
else
TEMP_VALUE=​(echo "TEMP" | sed 's/[^0-9.]//g')
if (( ​(echo "TEMP_VALUE <= 50" | bc -l) )); then
echo "$GREEN"
elif (( ​(echo "TEMP_VALUE > 50 && $TEMP_VALUE <= 75" | bc -l) )); then
echo "$ORANGE"
else
echo "$RED"
fi
fi
}

Display temperature with large digit patterns

display_temp() {
local TEMP=$1 local NUM=​(echo "TEMP" | sed 's/[^0-9.]//g')
local -a lines=("" "" "" "" "")

for ((i = 0; i < ${#NUM}; i++)); do
    digit="${NUM:$i:1}"
    if [ "$digit" == "." ]; then
        digit_array="DIGIT_DOT[@]"
    else
        digit_array="DIGIT_$digit[@]"
    fi
    digit_lines=("${!digit_array}")
    for row in {0..4}; do
        lines[$row]+="${digit_lines[$row]}   "
    done
done

for row in {0..4}; do
    lines[$row]+="${DEGREE_SYMBOL[$row]} ${CHAR_C[$row]}"
done

for row in {0..4}; do
    echo -e "$TEMP_COLOR${lines[$row]}"
done

}

Display time with large digit patterns (HH:MM)

display_time() {
local TIME=$1 local -a lines=("" "" "" "" "")

for ((i = 0; i < ${#TIME}; i++)); do
    char="${TIME:$i:1}"
    if [ "$char" == ":" ]; then
        char_array="DIGIT_COLON[@]"
    else
        char_array="DIGIT_$char[@]"
    fi
    char_lines=("${!char_array}")
    for row in {0..4}; do
        lines[$row]+="${char_lines[$row]}   "
    done
done

for row in {0..4}; do
    echo -e "${CYAN}${lines[$row]}"
done

}

Check time and set screen based on whether it is between midnight and 8 AM

check_time_and_set_screen() {
while true; do
CURRENT_HOUR=$(date +"%H")

    # If time is between 00:00 and 08:00, turn off screen
    if [ "$CURRENT_HOUR" -ge 0 ] && [ "$CURRENT_HOUR" -lt 8 ]; then
        setterm --blank force --term linux </dev/tty1
    else
        setterm --blank poke --term linux </dev/tty1
    fi

    sleep 60  # Check every minute
done

}

Main monitoring loop (refreshes every minute)

monitor() {
while true; do
CPU_TEMP=$(get_temp)
TEMP_COLOR=​(get_temp_color "CPU_TEMP")
CURRENT_TIME=$(date +"%H:%M")

    clear
    echo -e "$BACKGROUND$TEMP_COLOR=========================="
    echo -e "      CPU Temperature Monitor"
    echo
    display_temp "$CPU_TEMP"

    # Add extra space between temperature and time
    echo
    echo
    echo
    echo
    echo -e "       Current Time"
    display_time "$CURRENT_TIME"
    echo
    echo -e "$TEMP_COLOR=========================="
    echo -e "⏸ Updated every minute... Press Ctrl+C to exit$RESET"

    sleep 60
done

}

Startup message

clear
echo -e "${GREEN}Starting Hikvision R1 Temperature Monitor..."
sleep 1

Start background time check + main monitor

check_time_and_set_screen & # Background process: Set screen based on time
monitor

给楼主赞一个 ,可以更新到Github,我star一下 持续观望~  详情 回复
2025-5-5 09:43

1

主题

2

回帖

0

牛值

江湖小虾

2025-5-3 12:19:29 楼主 显示全部楼层

对了,要在系统后台使用,gotty里用不知道为啥不生效

2

主题

10

回帖

0

牛值

江湖小虾

2025-5-5 09:43:14 显示全部楼层
海康威视用户 发表于 2025-5-3 12:07
源脚本
#!/bin/bash
Hikvision R1 small screen: Large character CPU temperature + time display script  ...

给楼主赞一个 ,可以更新到Github,我star一下 持续观望~

2

主题

13

回帖

0

牛值

江湖小虾

太好了,坐等更新

1

主题

6

回帖

0

牛值

江湖小虾

好有意思,虽然我没有海康,但羡慕楼主这样的折腾能力

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则