Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- import time
- import dothat.backlight as backlight
- import dothat.lcd as lcd
- import dothat.touch as nav
- from dot3k.menu import Menu, MenuOption
- from time import sleep, time
- sys.path.append ('/usr/local/lib/python2.7/dist-packages')
- sys.path.append('/home/pi/Pimoroni/displayotron/examples')
- sys.path.append('/home/pi/.local/lib/python2.7/site-packages')
- sys.path.append('/home/pi/Aquarium/')
- from Mycontroller import Myclock
- from plugins.clock import Clock
- from plugins.graph import IPAddress, GraphTemp, GraphCPU, GraphNetSpeed, GraphSysReboot, GraphSysShutdown
- from plugins.text import Text
- from plugins.utils import Backlight, Contrast
- import logging
- from logging.handlers import TimedRotatingFileHandler
- class Mymenu(MenuOption):
- def __init__(self):
- MenuOption.__init__(self)
- class TimeoutManager():
- def __init__(self):
- self.TIMEOUT = 5
- self.last_button_press = time()
- def button_press(self):
- self.last_button_press = time()
- # turn backlight on
- backlight.rgb(127,127,127)
- backlight.update()
- def check_timeout(self):
- # check if current time is more than TIMEOUT seconds later than last button press
- if time() - self.last_button_press > self.TIMEOUT:
- # Turn backlight off
- backlight.off()
- clock = Myclock()
- #Unordered menu
- menu = Menu(
- structure={
- 'Power Options': {
- 'Reboot':GraphSysReboot(),
- 'Shutdown':GraphSysShutdown(),
- },
- 'Aquarium': {
- 'Lighting': {
- 'Control': clock,
- }
- },
- 'Clock': Clock(backlight),
- 'Status': {
- 'IP': IPAddress(),
- 'CPU': GraphCPU(backlight),
- 'Temp': GraphTemp()
- },
- 'Settings': {
- 'Display': {
- 'Contrast': Contrast(lcd),
- 'Backlight': Backlight(backlight)
- }
- }
- },
- lcd=lcd,
- input_handler=Text())
- tm = TimeoutManager()
- nav.bind_defaults(menu)
- @nav.on(nav.UP)
- def handle_up(pin):
- menu.up()
- tm.button_press()
- @nav.on(nav.DOWN)
- def handle_down(pin):
- menu.down()
- tm.button_press()
- @nav.on(nav.BUTTON)
- def handle_button(pin):
- menu.select()
- tm.button_press()
- @nav.on(nav.LEFT)
- def handle_left(pin):
- menu.left()
- tm.button_press()
- @nav.on(nav.RIGHT)
- def handle_right(pin):
- menu.right()
- tm.button_press()
- @nav.on(nav.CANCEL)
- def handle_cancel(pin):
- menu.cancel()
- tm.button_press()
- def create_timed_rotating_log(path):
- logger = logging.getLogger("Rotating Log")
- logger.setLevel(logging.INFO)
- handler = TimedRotatingFileHandler(path,
- when="m",
- interval=1,
- backupCount=2)
- logger.addHandler(handler)
- for i in range(1):
- logging.basicConfig(format='%(asctime)s %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p')
- logger.info("This is a test!")
- log_file = "/home/pi/Aquarium/Logs/logfile.log"
- create_timed_rotating_log(log_file)
- while True:
- clock.check()
- menu.redraw()
- tm.check_timeout()
- sleep(3.0 / 20)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement