Skip to content

Instantly share code, notes, and snippets.

@theskanthunt42
Created March 19, 2022 21:32
Show Gist options
  • Save theskanthunt42/cabbe87f2df5d34102b4b116aacbbb34 to your computer and use it in GitHub Desktop.
Save theskanthunt42/cabbe87f2df5d34102b4b116aacbbb34 to your computer and use it in GitHub Desktop.
A rather useless script to show some infomations on your i2c-connected 1602 LCD using https://github.com/sterlingbeason/LCD-1602-I2C
from LCD import LCD
import time
import os
lcd_object = LCD()
#lcd_object.message("Test", 1)
wait_time = 5
def clock_n_temp():
temp_reading = os.popen("vcgencmd measure_temp").read().split("=")[1].split("\\")[0]
arm_clock_freq_hz = int(os.popen("vcgencmd measure_clock arm").read().split("=")[1].split("\\")[0])
arm_clock_freq = round(arm_clock_freq_hz/1000000000, 2)
lcd_object.message(f"SoC TEMP: {temp_reading}", 1)
lcd_object.message(f"ARM CLK: {arm_clock_freq} GHz", 2)
def vc_freq_n_volts():
soc_volts = os.popen("vcgencmd measure_volts core").read().split("=")[1].split("\\")[0]
vc_clock_freq_hz = int(os.popen("vcgencmd measure_clock arm").read().split("=")[1].split("\\")[0])
vc_clock_freq = int(vc_clock_freq_hz/1000000)
lcd_object.message(f"VC4 CLK: {vc_clock_freq}MHz", 1)
lcd_object.message(f"SoC VOLT: {soc_volts}", 2)
def current_time_readout():
up_time_raw = os.popen("uptime").read().split(" ")
#current_time = up_time_raw.split(" ")[1]
current_time = up_time_raw[1].split(":")[0] + ":" + up_time_raw[1].split(":")[1]
lcd_object.message(" CURRENT TIME ", 1)
lcd_object.message(f"{current_time} UTC+8", 2)
def date_n_zone():
current_date = os.popen("date").read().split(" ")
#print(current_date[6])
lcd_object.message(f"DATE: {current_date[0]}", 1)
lcd_object.message(f"{current_date[1]} {current_date[2]} {current_date[3]} {current_date[6][:3]}", 2)
def uptime_show():
uptime_raw = os.popen("uptime").read().split(" ")
uptime = uptime_raw[3].split(",")[0]
#user = up_time_raw[6]
lcd_object.message(f"UPTIME: {uptime}", 1)
lcd_object.message(f"USER: {uptime_raw[5]}", 2)
def load_average_status():
load_average = os.popen("uptime").read().split(" ")
#print(load_average)
load_average_finale = load_average[10].split(",")[0] + " " + load_average[11].split(",")[0] + " " + load_average[12][:4]
#load_average_finale = load_average_finale - load_average_finale[]
lcd_object.message("LOAD AVERGE:", 1)
lcd_object.message(load_average_finale[:13], 2)
def ip_addresses():
rawinput = os.popen("hostname -I").read()
ipv4_address = rawinput.split(" ")[0]
#ipv6_address = rawinput.split(" ")[-1] #Always get that last one, for my case
#if len(ipv6_address) >= 16:
# ipv6_address_a = ipv6_address[:5]
# ipv6_address_b = ipv6_address[4:]
#else:
# pass
lcd_object.message("IPv4 addr: ", 1)
lcd_object.message(f"{ipv4_address}", 2)
#time.sleep(5)
#lcd_object.clear()
#lcd_object.message(f"IPv6 addr: {ipv6_address_a}", 1)
#lcd_object.message(f"{ipv6_address_b}", 2)
def vlc_info():
print("Dummy here.")
while True:
lcd_object.clear()
clock_n_temp()
time.sleep(wait_time)
lcd_object.clear()
vc_freq_n_volts()
time.sleep(wait_time)
lcd_object.clear()
current_time_readout()
time.sleep(wait_time)
lcd_object.clear()
date_n_zone()
time.sleep(wait_time)
lcd_object.clear()
uptime_show()
time.sleep(wait_time)
lcd_object.clear()
load_average_status()
time.sleep(wait_time)
ip_addresses()
time.sleep(wait_time)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment