diff --git a/i2c.py/statClick.py b/i2c.py/statClick.py new file mode 100644 index 0000000..ceac28f --- /dev/null +++ b/i2c.py/statClick.py @@ -0,0 +1,105 @@ +# This example is for use on (Linux) computers that are using CPython with +# Adafruit Blinka to support CircuitPython libraries. CircuitPython does +# not support PIL/pillow (python imaging library)! + +import time +import subprocess + +from board import SCL, SDA +import busio +from PIL import Image, ImageDraw, ImageFont +import adafruit_ssd1306 + + +# Create the I2C interface. +i2c = busio.I2C(SCL, SDA) + +# Create the SSD1306 OLED class. +# The first two parameters are the pixel width and pixel height. Change these +# to the right size for your display! +disp = adafruit_ssd1306.SSD1306_I2C(128, 64, i2c) + +# Clear display. +disp.fill(0) +disp.show() + +# Create blank image for drawing. +# Make sure to create image with mode '1' for 1-bit color. +width = disp.width +height = disp.height +image = Image.new("1", (width, height)) + +# Get drawing object to draw on image. +draw = ImageDraw.Draw(image) + +# Draw a black filled box to clear the image. +draw.rectangle((0, 0, width, height), outline=0, fill=0) + +# Draw some shapes. +# First define some constants to allow easy resizing of shapes. +padding = -2 +top = padding +bottom = height - padding +# Move left to right keeping track of the current x position for drawing shapes. +x = 0 + + +# Load default font. +#font = ImageFont.load_default() + +# Alternatively load a TTF font. Make sure the .ttf font file is in the +# same directory as the python script! +# Some other nice fonts to try: http://www.dafont.com/bitmap.php +font = ImageFont.truetype('/usr/share/fonts/truetype/wqy/wqy-microhei.ttc', 11) +font_clock = ImageFont.truetype('/usr/share/fonts/truetype/wqy/wqy-microhei.ttc', 24) +font_date = ImageFont.truetype('/usr/share/fonts/truetype/wqy/wqy-microhei.ttc', 16) + +# 添加图像切换状态变量 +show_system_info = True +last_switch_time = time.time() +switch_interval = 5 # 5秒切换一次 + +while True: + # 检查是否需要切换图像 + current_time = time.time() + if current_time - last_switch_time >= switch_interval: + show_system_info = not show_system_info + last_switch_time = current_time + + # Draw a black filled box to clear the image. + draw.rectangle((0, 0, width, height), outline=0, fill=0) + + if show_system_info: + # 显示系统信息 + # Shell scripts for system monitoring from here: + # https://unix.stackexchange.com/questions/119126/command-to-display-memory-usage-disk-usage-and-cpu-load + cmd = "hostname -I | cut -d' ' -f1" + IP = subprocess.check_output(cmd, shell=True).decode("utf-8") + cmd = 'cut -f 1 -d " " /proc/loadavg' + CPU = subprocess.check_output(cmd, shell=True).decode("utf-8") + cmd = "free -m | awk 'NR==2{printf "Mem: %s/%s MB %.2f%%", $3,$2,$3*100/$2 }'" + MemUsage = subprocess.check_output(cmd, shell=True).decode("utf-8") + cmd = 'df -h | awk \'$NF=="/data"{printf "Disk: %d/%d GB %s", $3,$2,$5}\'' + Disk = subprocess.check_output(cmd, shell=True).decode("utf-8") + + date_time = time.strftime("%Y-%m-%d, %H:%M:%S") + # Write four lines of text. + + draw.text((x, top + 1), "IP: " + IP, font=font, fill=255) + draw.text((x, top + 13), "CPU: " + CPU, font=font, fill=255) + draw.text((x, top + 23), MemUsage, font=font, fill=255) + draw.text((x, top + 35), Disk, font=font, fill=255) + draw.text((x, top + 47), date_time, font=font, fill=255) + else: + # 显示时钟信息 + text = time.strftime("%A") + draw.text((0, 0), text, font=font_date, fill=255) + text = time.strftime("%Y-%m-%d") + draw.text((0, 20), text, font=font_date, fill=255) + text = time.strftime("%X") + draw.text((0, 40), text, font=font_clock, fill=255) + + # Display image. + disp.image(image) + disp.show() + time.sleep(0.1) \ No newline at end of file diff --git a/i2c.py/status.py b/i2c.py/status.py index dcb6a23..9680003 100644 --- a/i2c.py/status.py +++ b/i2c.py/status.py @@ -61,43 +61,43 @@ switch_interval = 5 # 5秒切换一次 while True: # 检查是否需要切换图像 - current_time = time.time() - if current_time - last_switch_time >= switch_interval: - show_system_info = not show_system_info - last_switch_time = current_time + # current_time = time.time() + # if current_time - last_switch_time >= switch_interval: + # show_system_info = not show_system_info + # last_switch_time = current_time # Draw a black filled box to clear the image. draw.rectangle((0, 0, width, height), outline=0, fill=0) - if show_system_info: + # if show_system_info: # 显示系统信息 # Shell scripts for system monitoring from here: # https://unix.stackexchange.com/questions/119126/command-to-display-memory-usage-disk-usage-and-cpu-load - cmd = "hostname -I | cut -d' ' -f1" - IP = subprocess.check_output(cmd, shell=True).decode("utf-8") - cmd = 'cut -f 1 -d " " /proc/loadavg' - CPU = subprocess.check_output(cmd, shell=True).decode("utf-8") - cmd = "free -m | awk 'NR==2{printf \"Mem: %s/%s MB %.2f%%\", $3,$2,$3*100/$2 }'" - MemUsage = subprocess.check_output(cmd, shell=True).decode("utf-8") - cmd = 'df -h | awk \'$NF=="/data"{printf "Disk: %d/%d GB %s", $3,$2,$5}\'' - Disk = subprocess.check_output(cmd, shell=True).decode("utf-8") + cmd = "hostname -I | cut -d' ' -f1" + IP = subprocess.check_output(cmd, shell=True).decode("utf-8") + cmd = 'cut -f 1 -d " " /proc/loadavg' + CPU = subprocess.check_output(cmd, shell=True).decode("utf-8") + cmd = "free -m | awk 'NR==2{printf \"Mem: %s/%s MB %.2f%%\", $3,$2,$3*100/$2 }'" + MemUsage = subprocess.check_output(cmd, shell=True).decode("utf-8") + cmd = 'df -h | awk \'$NF=="/data"{printf "Disk: %d/%d GB %s", $3,$2,$5}\'' + Disk = subprocess.check_output(cmd, shell=True).decode("utf-8") - date_time = time.strftime("%Y-%m-%d, %H:%M:%S") - # Write four lines of text. + date_time = time.strftime("%Y-%m-%d, %H:%M:%S") + # Write four lines of text. - draw.text((x, top + 1), "IP: " + IP, font=font, fill=255) - draw.text((x, top + 13), "CPU: " + CPU, font=font, fill=255) - draw.text((x, top + 23), MemUsage, font=font, fill=255) - draw.text((x, top + 35), Disk, font=font, fill=255) - draw.text((x, top + 47), date_time, font=font, fill=255) - else: - # 显示时钟信息 - text = time.strftime("%A") - draw.text((0, 0), text, font=font_date, fill=255) - text = time.strftime("%Y-%m-%d") - draw.text((0, 20), text, font=font_date, fill=255) - text = time.strftime("%X") - draw.text((0, 40), text, font=font_clock, fill=255) + draw.text((x, top + 1), "IP: " + IP, font=font, fill=255) + draw.text((x, top + 13), "CPU: " + CPU, font=font, fill=255) + draw.text((x, top + 23), MemUsage, font=font, fill=255) + draw.text((x, top + 35), Disk, font=font, fill=255) + draw.text((x, top + 47), date_time, font=font_date, fill=255) + # else: + # # 显示时钟信息 + # text = time.strftime("%A") + # draw.text((0, 0), text, font=font_date, fill=255) + # text = time.strftime("%Y-%m-%d") + # draw.text((0, 20), text, font=font_date, fill=255) + # text = time.strftime("%X") + # draw.text((0, 40), text, font=font_clock, fill=255) # Display image. disp.image(image)