Example #1
0
def barcode_displayer(displayed_code: str) -> None:
    try:
        epd = epd2in9.EPD()

        epd.init(epd.lut_full_update)
        epd.Clear(0xFF)
        
        ean = barcode.get('code39', displayed_code, writer = barcode.writer.ImageWriter())
        image = ean.render()

        epd.display(epd.getbuffer(image.resize((epd.height, epd.width))))

        time.sleep(1)

    except IOError as e:
        logging.info(e)
        
    except KeyboardInterrupt:    
        logging.info("ctrl + c:")
        epd2in9.epdconfig.module_exit()
        exit()

    except Exception as e:
        logging.info(str(e))

    finally:
        epd.Clear(0xFF)
Example #2
0
def close_epd(channel):
    global loop
    loop = False
    logging.info("Clear...")
    epd = epd2in9.EPD()
    epd.init(epd.lut_full_update)
    epd.Clear(0xFF)
    GPIO.remove_event_detect(channel)
Example #3
0
    def __init__(self):
        # Initialise epd
        self.epd = epd2in9.EPD()
        self.epd.init(self.epd.lut_full_update)
        self.epd.Clear(0XFF)

        self.midpoint = (self.epd.height // 2, self.epd.width // 2)

        self.font = ImageFont.truetype('Font.ttc', 36)
Example #4
0
    def __init__(self, queue):
        self.queue = queue

        self.epd = epd2in9.EPD()
        self.epd.init(self.epd.lut_full_update)
        self.epd.Clear(0xFF)
        self.smol_font = ImageFont.truetype('DejaVuSansMono.ttf', 10)
        self.medium_font = ImageFont.truetype('DejaVuSansMono.ttf', 16)
        self.large_font = ImageFont.truetype('DejaVuSansMono.ttf', 34)

        self.pressures = np.array([])
Example #5
0
def updateScreen():
    logging.info(">> updating screen")
    global current_height

    logging.info("collect data")
    data = Data()

    logging.info("clear screen")
    epd = epd2in9.EPD()
    MAX_W, MAX_H = epd.width, epd.height
    epd.init(epd.lut_full_update)

    logging.info("write data to screen")
    image = Image.new('1', (epd.width, epd.height), 255)
    draw = ImageDraw.Draw(image)

    writeInfo(draw, 'Time:', data.time)
    writeInfo(draw, 'Uptime:', data.uptime)
    writeInfo(draw, 'Online:', data.connectionStatus)
    writeInfo(draw, 'IP:', data.ip)
    writeInfo(draw, 'Temp:', "{:.2f}C".format(data.temp))
    writeInfo(draw, 'Humidity:', "{:.2f}%".format(data.humidity))

    writePowerLevels(draw, data.powerLevel1.title, data.powerLevel1.voltage,
                     data.powerLevel1.power, data.powerLevel1.current,
                     data.powerLevel1.shunt_voltage)
    writePowerLevels(draw, data.powerLevel2.title, data.powerLevel2.voltage,
                     data.powerLevel2.power, data.powerLevel2.current,
                     data.powerLevel2.shunt_voltage)
    writePowerLevels(draw, data.powerLevel3.title, data.powerLevel3.voltage,
                     data.powerLevel3.power, data.powerLevel3.current,
                     data.powerLevel3.shunt_voltage)

    image = image.transpose(Image.ROTATE_180)
    epd.display(epd.getbuffer(image))
    epd.sleep()
    current_height = 0
    logging.info("<< screen updated")
Example #6
0
def showtime():
    global loop
    loop = True
    logging.basicConfig(level=logging.DEBUG)
    GPIO.add_event_detect(TouchPin,
                          GPIO.RISING,
                          callback=close_epd,
                          bouncetime=200)
    try:
        logging.info("epd2in9 Demo")
        epd = epd2in9.EPD()
        logging.info("init and Clear")
        epd.init(epd.lut_full_update)
        epd.Clear(0xFF)

        font24 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 24)
        font18 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 18)

        epd.init(epd.lut_partial_update)
        epd.Clear(0xFF)
        # 24h update
        time_image = Image.new('1', (epd.height, epd.width), 255)
        time_draw = ImageDraw.Draw(time_image)
        #paste image
        logging.info("4.read bmp file on window")
        bmp1 = Image.open(os.path.join(picdir, '789.bmp'))
        bmp = Image.open(os.path.join(picdir, '2in13d.bmp'))
        bmp.thumbnail((106, 52))
        bmp1.thumbnail((130.9, 56.28))
        time_image.paste(bmp1, (241, 75))
        time_image.paste(bmp, (142, 92))
        time_draw.line([(135, epd.height - 10), (epd.height - 10, epd.width)],
                       fill=0,
                       width=3)
        #date,week,time
        time_now = datetime.datetime.now()
        date_string = time_now.strftime('%Y-%m-%d')
        week_string = [
            u'MONDAY', u'TUESDAY', u'WEDNESDAY', u'THUESDAY', u'FRIDAY',
            u'SATURDAY', u'SUNDAY'
        ][time_now.isoweekday() - 1]
        time_draw.text((10, 70), date_string, font=font18, fill=0)
        time_draw.text((10, 95), week_string, font=font18, fill=0)
        #畫直線
        time_draw.line([(135, 0), (135, epd.height)], fill=0, width=3)

        while loop:

            #溫溼度計
            temp, hum = getDHTdata()
            temp_val = str(temp)
            hum_val = str(hum)

            time_draw.rectangle((195, 85, 235, 20), fill=255)
            time_draw.text((144, 19),
                           "Temp: " + temp_val + " *C",
                           font=font18,
                           fill=0)
            time_draw.text((144, 55),
                           "Hum : " + hum_val + " %",
                           font=font18,
                           fill=0)

            newimage_1 = time_image.crop([195, 85, 235, 20])
            time_image.paste(newimage_1, (144, 19))

            num = 0
            # partial update
            logging.info("5.show time")

            while (num < 9 and loop):

                time_draw.rectangle((10, 10, 120, 50), fill=0)
                time_draw.text((10, 15),
                               time.strftime('%H:%M:%S'),
                               font=font24,
                               fill=255)
                newimage_3 = time_image.crop([10, 10, 120, 50])
                time_image.paste(newimage_3, (10, 15))

                epd.display(epd.getbuffer(time_image))
                num = num + 1

        logging.info("Clear...")
        epd.init(epd.lut_full_update)
        epd.Clear(0xFF)

        #logging.info("Goto Sleep...")
        #epd.sleep()

    except IOError as e:
        logging.info(e)

    except KeyboardInterrupt:
        logging.info("ctrl + c:")
        epd2in9.epdconfig.module_exit()
        exit()
Example #7
0
import os
import time
import random
from PIL import Image

dir = '/home/pi/code/e-paper'

import sys
sys.path.append(dir)

from waveshare_epd import epd2in9

path = '/home/pi/code/e-paper/calendar/bmps'

epd = epd2in9.EPD()
epd.init(lut=epd.lut_full_update)

images = os.listdir(path)
images_order = [int(os.path.splitext(img)[0].split("-")[1]) for img in images]
images_ordered = [images[index] for index in images_order]
images_ordered.append(images_ordered[0])
for img in images_ordered[1:]:
    print(img)
    epd.init(lut=epd.lut_full_update)
    time.sleep(1)
    epd.reset()
    time.sleep(1)
    img = Image.open(os.path.join(path, img))
    epd.display(epd.getbuffer(img))
    time.sleep(60)
Example #8
0
def main_func():
    #host_file_url = "https://ralph.bakerlab.org/stats/host.gz"
    host_file_url = "https://boinc.bakerlab.org/rosetta/stats/host.gz"

    print("Downloading")
    r = requests.get(host_file_url, stream=True)
    with open("/home/pi/download.gz", "wb") as data:
        total_length = int(r.headers.get('content-length'))
        for chunk in progress.bar(r.iter_content(chunk_size=1024),
                                  expected_size=(total_length / 1024) + 1):
            if chunk:
                data.write(chunk)

    print("Decompressing")
    with open('/home/pi/download.xml',
              'wb') as f_out, gzip.open('/home/pi/download.gz', 'rb') as f_in:
        shutil.copyfileobj(f_in, f_out)

    print("Parsing")
    arm_count = 0
    credit = 0.0
    arm_flag = 0
    tree = ET.iterparse("/home/pi/download.xml", events=("start", "end"))
    is_first = True
    for event, elem in tree:
        if elem.tag == "total_credit" and event == "end":
            tcredit = float(elem.text)
            elem.clear()
        if elem.tag == "p_vendor" and event == "end" and elem.text == "ARM":
            arm_flag = 1
            elem.clear()
        elif elem.tag == "p_vendor" and event == "end" and elem.text != "ARM":
            arm_flag = 0
            elem.clear()
        if arm_flag == 1 and elem.tag == "os_name" and event == "end" and elem.text != "Android":
            arm_count = arm_count + 1
            credit = credit + tcredit
            print(elem.text)
            elem.clear()
        if elem.tag == "host" and event == "end":
            elem.clear()
        if elem.tag == "hosts" and event == "end":
            elem.clear()

    print("Non Android ARM machine count = %s" % arm_count)
    print("Combined Credit = %f" % credit)

    logging.basicConfig(level=logging.DEBUG)

    try:
        logging.info("epd2in9 Demo")

        epd = epd2in9.EPD()
        logging.info("init and Clear")
        epd.init(epd.lut_full_update)
        epd.Clear(0xFF)

        font24 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 24)
        font18 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 18)

        logging.info("1.Drawing on the Horizontal image...")
        Himage = Image.new('1', (epd.height, epd.width),
                           255)  # 255: clear the frame
        draw = ImageDraw.Draw(Himage)

        draw.text((10, 0), "Linux-Aarch64 Machines:", font=font24, fill=0)
        draw.text((10, 20), str(arm_count), font=font24, fill=0)
        draw.text((10, 50), "Linux-Aarch64 Credits:", font=font24, fill=0)
        draw.text((10, 70), str("%.1f" % credit), font=font24, fill=0)

        epd.display(epd.getbuffer(Himage))

    except IOError as e:
        logging.info(e)