text: # SPDX-FileCopyrightText: 2017 Tony DiCola for Adafruit Industries
  # SPDX-FileCopyrightText: 2017 James DeVito for Adafruit Industries
  # SPDX-License-Identifier: MIT
  
  # 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
  import socket
  
  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, 32, 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/dejavu/DejaVuSans.ttf', 9)
  
  while True:
  
      # Draw a black filled box to clear the image.
      draw.rectangle((0, 0, width, height), outline=0, fill=0)
  
      # 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")
      
      HOSTNAME = socket.gethostbyaddr(socket.gethostname())[0]
      
      cmd = "vcgencmd measure_temp"
      TEMP = subprocess.check_output(cmd, shell=True).decode("utf-8").replace("=", ": ")
  
      cmd = 'df -h | awk \'$NF=="/"{printf "Disk: %d/%d GB  %s", $3,$2,$5}\''
      Disk = subprocess.check_output(cmd, shell=True).decode("utf-8")
  
      # Write four lines of text.
  
      #Hostname, Local IP, SOC Temp, Disk usage
      draw.text((x, top + 0), "Host: " + HOSTNAME, font=font, fill=255)
      draw.text((x, top + 8), "IP: " + IP, font=font, fill=255)
      draw.text((x, top + 16), "SOC " + TEMP, font=font, fill=255)
      draw.text((x, top + 25), Disk, font=font, fill=255)
  
      # Display image.
      disp.image(image)
      disp.show()
  
      #Number of seconds between refreshes
      time.sleep(3)