Project with PeppyMeter Screensaver Plugin for VOLUMIO v2.9xx and 3.0xx buster

Super thank you. Just loaded it.

I have this problem when instal PeppyMeter. Please help me to fix it

Unfortunately, the picture is not sharp, but I think it is due to the ALSA configuration, set it to DSD native

Hey there, thanks for this great project. I managed to get it working, I only have one issue: I can’t force 1920x1080 resolution. My tv is 4k and I can’t get any other resolution. I edited the userconfig.txt according to the 3rd post. Any help would be appreciated. Thanks!

EDIT: got it working eventually, this is how the config files are edited:

/boot/config.txt

framebuffer_width=1920
framebuffer_height=1080

/root/userconfig.txt

disable_overscan=1
hdmi_group=2
hdmi_mode=87
hdmi_cvt 1920 1080 60 3 0 0 0
hdmi_drive=2

Titles and bitrate aren’t still displayed while playing via tidal connect.

Titles and bitrate aren’t still displayed while playing via tidal connect.
Tidal!tidal2

Small update
Project with PeppyMeter Screensaver Plugin for VOLUMIO v2.9xx and 3.0xx buster - #738 by Gelo5?

1 Like

Hi … short question … do you find a way with extra oled display and peppymeter working?
When I start my extra python3 script for the oled > peppymeter don’t start anymore … :frowning:
Any idea? Many thx …

Peppy is a screensaver, running a python script in a while loop prevents the screensaver to become active. Hence Peppy assume your system is active. If you use the plugin MPD_OLED it will work.

ok thx … i will get it a try … thx a lot :slight_smile:

Short question: Is there a way to show Temp and CPU from Raspberry?

Short answer: Yes. See in the VOLUMIO plug-ins (system info by @balbuze )

Long answer :smile:
If you want to display it on your OLED:

import busio
import adafruit_ssd1306
import gpiozero as gz
import time
import psutil

from board import SCL, SDA
from PIL import Image, ImageDraw, ImageFont

# 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.
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
img = Image.new("1", (width, height))

# Get drawing object to draw on image.
draw = ImageDraw.Draw(img)

# Load fonts.
fontb = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 12)
fontc = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 14)
fontd = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 16)
fontk = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 30)

def cputemp():
	cmd = gz.CPUTemperature().temperature
	result = str('{0:.1f}'.format(cmd))
	return result
	
def cpuload():
	cmd = psutil.cpu_percent()
	return str('{:.1f}'.format(cmd)).zfill(4)
	
draw.text(( 0,  0), "CPU:"     , font=fontb, fill=255)   
draw.text((  40, 0), cputemp() , font=fontk, fill=255)
draw.text((115, 0), "°"        , font=fontk, fill=255)

draw.text((  30, 32), cpuload(), font=fontk, fill=255)
draw.text((110, 40), "%"       , font=fontd, fill=255)

disp.image(img)
disp.show()

Marvellous! Just what I’ve been thinking of doing but had no time until after Christmas. Saved me a lot head scratching - thanks!

Speaking of time, that would be my main objective, a simple clock display on the OLED. Any pointers to save me even more time! :wink:

Clock won’t work as this can only run in a loop, causing peppy to stop loading.
This is just a snippet of code, untested and as starting point.

from datetime import datetime
from board import SCL, SDA
from PIL import Image, ImageDraw, ImageFont

import adafruit_ssd1306
import busio

WIDTH = 128
HEIGHT = 64
IMGHEIGHT = 64#45
IMGWIDTH = 128#45
rows = 80

# 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.
disp = adafruit_ssd1306.SSD1306_I2C(WIDTH, HEIGHT, 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
img = Image.new("1", (width, height))
# Get drawing object to draw on image.
draw = ImageDraw.Draw(img)

fontb = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 12)
fontc = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", 24)

def CenterText(inpstr,font,offset,ypos,fill):
	draw.text((getXPosCenterStr(inpstr,offset,font), ypos),inpstr, font=font, fill=fill)

def SetTime():
	now = datetime.now()
	sTime = now.strftime("%H:%M")
	sDate = now.strftime("%d-%b-%Y")
	CenterText(str(sTime),fontc,0, 17, 255)
	CenterText(str(sDate),fontb,0, 52, 255)

SetTime()
disp.image(img)
disp.show()