Exemple #1
0
def main():
    global settings, hmqtt, log, imageHub, imageQ
    # process args - port number,
    ap = argparse.ArgumentParser()
    ap.add_argument("-c",
                    "--conf",
                    required=True,
                    type=str,
                    help="path and name of the json configuration file")
    args = vars(ap.parse_args())

    # logging setup
    logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(message)s')
    log = logging.getLogger('ML_Tracker')

    settings = Settings(log, (args["conf"]))
    hmqtt = Homie_MQTT(settings, ctrlCB)
    settings.print()

    # load the pre-computed models...
    init_models()

    log.info(f'listen on {settings.our_IP}:{settings.image_port}')
    imageHub = imagezmq.ImageHub(open_port=f'tcp://*:{settings.image_port}')
    imageQ = Queue.Queue(maxsize=60)
    log.info('tracker running')
    server = HTTPServer(('', 5000), CamHandler)
    log.info("http server started")
    server.serve_forever()
Exemple #2
0
 def __init__(self, usersProvider=None):
     self.logger = Logger(__name__)
     self.userProvider = usersProvider or UsersProvider()
     self.settings = Settings().getSettings()
     self.mysql = MySQLUserCreator()
     self.fs = FileSystem()
     self.mongoForgotPass = MongoForgotPassword()
Exemple #3
0
 def __init__(self, name):
     if 'UNITTESTING' in os.environ:
         self.logging = NullLogger()
     else:
         settings = Settings().getSettings()
         logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
                             level=settings["logs"]["level"])
         self.logging = logging.getLogger(name)
Exemple #4
0
    def __init__(self):
        self._console = Console()
        self._console.printLogo()
        self._exceptionStack = list()

        self._fileManager = FileManager()
        self._logger = Logger()
        self._settingsFile = Settings()

        self._dialog = Dialog('en') if self._settingsFile.getLanguage(
        ) == '-' else Dialog(self._settingsFile.getLanguage())

        #---------------------------------------------------------------------------------------------------------------#
        #                                   FILLING THE SETTINGS FILE WITH USER INPUT                                   #

        settingsMethods = self._settingsFile.getMethodsToResolveErrors()
        for methodname, method in settingsMethods.items():
            if methodname == "lang":  # print a list of supporting languages and get user input for language setting
                self._console.write(self._dialog.getMessageFor("chooseLang"))

                langs = self._settingsFile.getSupportingLangs()
                for key, value in langs.items():
                    self._console.write('[' + str(key) + ']')
                    self._console.write(value.upper() + ' ')
                self._console.write('\n')

                while (True):
                    langInput = int(self._console.readLine("\n--> "))

                    if langInput in langs.keys():
                        method(langs[langInput])
                        break

                    else:
                        self._console.writeLine(
                            self._dialog.getMessageFor("wrongInput"))

                self._dialog.changeLanguage(self._settingsFile.getLanguage())

            elif methodname == "username":  # just get username fron input
                while (True):
                    self._console.writeLine(
                        self._dialog.getMessageFor("getName"))
                    usernameInput = (self._console.readLine("\n--> "))

                    # checking the spelling of the username
                    if len(sub('[\t, \n, \r \s]', '', usernameInput)) >= 2:
                        method(usernameInput)
                        break

            else:
                continue

        #---------------------------------------------------------------------------------------------------------------#

        self._amelie = Amelie(self._settingsFile.getLanguage())

        return
Exemple #5
0
 def __init__(self):
     self.settings = Settings().getSettings()
     self.user = None
     self.firstname = None
     self.surname = None
     self.password = None
     self.repassword = None
     self.domain = None
     self.email = None
Exemple #6
0
def main():
    global isDarwin, settings, hmqtt, applog, audiodev
    # process cmdline arguments
    loglevels = ('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL')
    ap = argparse.ArgumentParser()
    ap.add_argument("-c",
                    "--conf",
                    required=True,
                    type=str,
                    help="path and name of the json configuration file")
    ap.add_argument("-s",
                    "--syslog",
                    action='store_true',
                    default=False,
                    help="use syslog")
    ap.add_argument("-d",
                    "--debug",
                    action='store',
                    type=int,
                    default='3',
                    nargs='?',
                    help="debug level, default is 3")
    args = vars(ap.parse_args())

    # logging setup
    applog = logging.getLogger('mqttalarm')
    #applog.setLevel(args['log'])
    if args['syslog']:
        applog.setLevel(logging.DEBUG)
        handler = logging.handlers.SysLogHandler(address='/dev/log')
        # formatter for syslog (no date/time or appname. Just  msg.
        formatter = logging.Formatter(
            '%(name)s-%(levelname)-5s: %(message)-40s')
        handler.setFormatter(formatter)
        applog.addHandler(handler)
    else:
        logging.basicConfig(
            level=logging.DEBUG,
            datefmt="%H:%M:%S",
            format='%(asctime)s %(levelname)-5s %(message)-40s')

    audiodev = AudioDev()
    isDarwin = audiodev.isDarwin
    settings = Settings(args["conf"], audiodev, applog)

    hmqtt = Homie_MQTT(settings, playUrl, chimeCb, sirenCb, strobeCb)
    settings.print()

    # fix debug levels
    if args['debug'] == None:
        debug_level = 3
    else:
        debug_level = args['debug']

    # All we do now is loop over a 5 minute delay
    while True:
        time.sleep(5 * 60)
Exemple #7
0
    def __init__(self):
        # Initialize the game and settings from Settings class
        pygame.init()

        # Initialize the game screen in fullscreen mode
        self.screen = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)

        # Creates instances of te other classes
        self.settings = Settings(self)
        self.playerscreen = Cards(self, "Player")
        self.computerscreen = Cards(self, "Dealer")
        self.pictures = Pictures(self)

        # Deal first hand to each player
        self.computerscreen.dealHand()
        self.playerscreen.dealHand()
Exemple #8
0
 def __init__(self,
              injected_open=None,
              injected_eyeos_apps_storage=None,
              injected_json=None,
              injected_eyeos_apps_validator=None,
              injected_application_api=None,
              injected_principals_api=None,
              injected_base_group=None,
              injected_login_api=None):
     self.eyeos_apps_storage = injected_eyeos_apps_storage or EyeosAppsStorage(
     )
     self.open = injected_open or open
     self.json = injected_json or json
     self.logger = Logger(__name__)
     self.eyeos_apps_validator = injected_eyeos_apps_validator or EyeosAppsJsonValidator(
     )
     self.application_api = injected_application_api or Application()
     self.principals_api = injected_principals_api or Principals()
     self.principal_base_group = injected_base_group or Settings(
     ).getSettings()['principalservice']['base_group']
     self.login_api = injected_login_api or Login()
Exemple #9
0
    def __init__(self, parent=None):
        title = _("Preferences")
        gtk.Dialog.__init__(self,
                            title=title,
                            parent=parent,
                            flags=gtk.DIALOG_MODAL
                            | gtk.DIALOG_DESTROY_WITH_PARENT
                            | gtk.DIALOG_NO_SEPARATOR,
                            buttons=(gtk.STOCK_CLOSE, gtk.RESPONSE_ACCEPT))

        self.set_position(gtk.WIN_POS_CENTER)
        self.set_border_width(6)
        self.set_resizable(False)
        self.set_icon_from_file(common.APP_ICON)

        self.props.skip_taskbar_hint = True

        self.gconf_client = Settings()

        self._initialize_dialog_widgets()
        self._populate_fields()
        self._connect_fields()
        self.connect("response", lambda self, *args: self.destroy())
Exemple #10
0
 def __init__(self):
     self.logger = Logger(__name__)
     self.settings = Settings().getSettings()
Exemple #11
0
 def __init__(self):
     self.settings = Settings().getSettings()
     self.key_manager = KeyManager(paths.keys_path)
Exemple #12
0
 def __init__(self, eyeos_apps=None):
     self.eyeos_apps = eyeos_apps or EyeosApps()
     self.settings = Settings().getSettings()
     self.admin_username = self.settings['general']['administrator_username']
     self.admin_domain = self.settings['general']['default_domain']
Exemple #13
0
 def __init__(self, proxy_ip=None, injected_eyeos_api_call=None):
     self.proxy_ip = proxy_ip or Settings().getServiceIp('proxy')
     self.systemgroups_url = 'https://{0}/systemgroups/v1/systemgroups'.format(
         self.proxy_ip)
     self.logger = Logger(__name__)
     self.eyeos_api_call = injected_eyeos_api_call or EyeosApiCall()
Exemple #14
0
 def __init__(self, injected_mongo_client=None):
     self.settings = Settings().getSettings()
     self.forgot_password = injected_mongo_client or MongoClient(
         Settings().getServiceIp('mongo')).eyeos.forgotpassword
Exemple #15
0
 def __init__(self, settings=None):
     self.settings = settings or Settings()
     self.logger = Logger(__name__)
Exemple #16
0
 def __init__(self, injected_proxy_ip=None, injected_api_call=None):
     self.proxy_ip = injected_proxy_ip or Settings().getServiceIp('proxy')
     self.api_call = injected_api_call or EyeosApiCall()
     self.logger = Logger(__name__)
 def __init__(self, injected_applications=None):
     self.controlpanel_applications = injected_applications or MongoClient(
         Settings().getServiceIp('mongo')).eyeos.controlpanelapplications
Exemple #18
0
def main(args=None):
  global logwriter, csvfile, ml_dict, applog, cur_state, dimcap, video_dev
  global settings, hmqtt, show_windows, read_cam, read_local_resize, remote_cam
  global camera_spin, camera_capture_to_file
  global cap_prefix, backup_ml, have_cuda,  use_three_arg
  # process cmdline arguments
  ap = argparse.ArgumentParser()
  loglevels = ('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL')
  ap.add_argument("-c", "--conf", required=True, type=str,
    help="path and name of the json configuration file")
  ap.add_argument("-d", "--debug", action='store', type=bool, default=False,
    nargs='?', help="show rectangles - no remote ml")
  ap.add_argument("-s", "--syslog", action = 'store_true',
    default=False, help="use syslog")
  ap.add_argument("-a", "--algorithm", required=False, type=str, default=None,
    help="detection algorithm override")
  ap.add_argument("-m", "--movement", required=False, type=str,
    help="movement algorithm override")
  ap.add_argument("-e", "--events", required=False, action = "store_true", default=False,
    help="log events to events.csv file")
  ap.add_argument("-r", "--remote", required=False, action = "store_true", default=False,
    help="log events to file")
  ap.add_argument("-p", "--port", action='store', type=int, default='4466',
    nargs='?', help="server port number, 4466 is default")
  ap.add_argument('-l', '--log', default='DEBUG', choices=loglevels)
  #ap.add_argument("-f", "--capture", required=False, type=str,
  #  help="path and name for image captures")
  ap.add_argument('-3', "--three_arg", action = 'store_true',
    default=False, help="findContours has 3 return values")
  
  args = vars(ap.parse_args())
  
  # frame capture setup
  #if args['capture']:
  #  cap_prefix = args['capture']
  #else:
  #  cap_prefix = None
  
  # logging setup
  applog = logging.getLogger('mqttcamera')
  #applog.setLevel(args['log'])
  if args['syslog']:
    applog.setLevel(logging.DEBUG)
    handler = logging.handlers.SysLogHandler(address = '/dev/log')
    # formatter for syslog (no date/time or appname. Just  msg, lux, luxavg
    formatter = logging.Formatter('%(name)s-%(levelname)-5s: %(message)-30s %(lux)s %(sum)s')
    handler.setFormatter(formatter)
    f = LuxLogFilter()
    applog.addFilter(f)
    applog.addHandler(handler)
  else:
    logging.basicConfig(level=logging.DEBUG,datefmt="%H:%M:%S",format='%(asctime)s %(message)-40s %(lux)s %(sum)s')
    f = LuxLogFilter()
    applog.addFilter(f)
    
  show_windows = False;
  
  # state_machine log file
  logwriter = None
  csvfile = None
  if args['events']:
    csvfile = open('events.csv', 'w', newline='')
    logwriter = csv.writer(csvfile, delimiter=',', quotechar='|')
    print("logging...")
  
  # Lets spin it up.  
  settings = Settings(args["conf"], 
                      "/var/local/etc/mqtt-camera.json",
                      applog,
                      next_state)
  
  # cmd line args override settings file.
  if args['algorithm']:
    settings.ml_algo = args['algorithm']
    applog.debug("cmd line algo override: %s", settings.ml_algo)
  if args['movement']:
    settings.mv_algo = args['movement']
    applog.debug("cmd line movement override: %s", settings.mv_algo)
  if args['remote']:
    settings.use_ml = 'remote'
  '''
  if args['port']:
    print('override port')
    settings.ml_port = args['port']
  '''
  if args['debug']:
    show_windows = True
    settings.use_ml = 'local'
  if args['three_arg']:
    # yet another damn global for a bug
    use_three_arg = True
    
  hmqtt = Homie_MQTT(settings, 
                    settings.get_active_hold,
                    settings.set_active_hold)
  settings.display()
  settings.log = applog
  if logwriter:
    logwriter.writerow([settings.settings_serialize])
    
    
  # setup ml_dict. Dealing with the backup is a bit hackish.
  # Rpc proxy's are setup the first time they are needed. 
  have_cuda = is_cuda_cv()
  applog.info(f"Have CUDA: {check_cuda()}")
  if settings.use_ml == 'local':
   applog.info(f"Will use CUDA: {have_cuda}")
   ml_dict = build_ml_dict(False, None, None, applog)
   
  cur_state = State.motion_wait
  dimcap = (settings.camera_width, settings.camera_height)
  # Almost Done with setup. Maybe.
  
  if settings.camera_type == 'capture':
    video_dev = cv2.VideoCapture(settings.camera_number)
    read_cam = capture_read_cam
    read_local_resize = capture_read_local_resize
    remote_cam = capture_remote_cam
    camera_spin = capture_camera_spin
    camera_capture_to_file = capture_camera_capture_to_file
  elif settings.camera_type == 'nvidia-rtsp':
    video_dev = nvidia_cam_rtsp(settings.camera_number, settings.camera_width,
			settings.camera_height, 0)
    read_cam = stream_read_cam
    read_local_resize = stream_read_local_resize
    remote_cam = stream_remote_cam
    camera_spin = stream_camera_spin
    camera_capture_to_file = stream_camera_capture_to_file
  elif settings.camera_type == 'ffmpeg-rtsp':
    os.environ["OPENCV_FFMPEG_CAPTURE_OPTIONS"] = "rtsp_transpo rt;udp"
    video_dev = cv2.VideoCapture(settings.camera_number,cv2.CAP_FFMPEG)
    read_cam = stream_read_cam
    read_local_resize = stream_read_local_resize
    remote_cam = stream_remote_cam
    camera_spin = stream_camera_spin
    camera_capture_to_file = stream_camera_capture_to_file
  elif settings.camera_type == 'gst':
    video_dev = cv2.VideoCapture(settings.camera_prep,cv2.CAP_GSTREAMER)
    read_cam = stream_read_cam
    read_local_resize = stream_read_local_resize
    remote_cam = stream_remote_cam
    camera_spin = stream_camera_spin
    camera_capture_to_file = stream_camera_capture_to_file
  elif settings.camera_type == 'stream':
    video_dev = VideoStream(src=settings.camera_number, resolution = dimcap).start()
    read_cam = imstream_read_cam
    read_local_resize = imstream_read_local_resize
    remote_cam = imstream_remote_cam
    camera_spin = imstream_camera_spin
    camera_capture_to_file = imstream_camera_capture_to_file
  else:
    log('bad camera_type in settings file')
    exit()

  # a cross coupling hack? 
  hmqtt.capture = camera_capture_to_file

  init_timers(settings)
  atexit.register(cleanup)
  # now we pick between movement detectors and start the choosen one
  if settings.mv_algo == 'adrian_1':
    while True:
      adrian_1_init()
      while True:
        adrian_1_movement(show_windows)
        if cur_state == State.restart:
          #log("restarting adrian_1 loop")
          break
      if show_windows and cv2.waitKey(40) == 27:
        break
  elif settings.mv_algo == 'intel':
    while True:
      intel_init()
      while True:
        intel_movement(show_windows, read_local_resize)
        if cur_state == State.restart:
          log("restarting intel loop")
          breakl
  else:
    print("No Movement Algorithm chosen")
  cleanup()
Exemple #19
0
 def __init__(self, injected_proxy_ip=None, injected_eyeos_api_call=None):
     self.settings = Settings().getSettings()
     self.proxy_ip = injected_proxy_ip or self.settings['general']['public_hostname']
     self.logger = Logger(__name__)
     self.eyeos_api_call = injected_eyeos_api_call or EyeosApiCall()
Exemple #20
0
    def __init__(self, screen):
        ''' 
        This class loads the pictures, buttonts and text messages that will 
        show up in the different stages of the game
        '''
        # Initialize the game screen and load dependent classes
        self.screen = screen.screen
        self.settings = Settings(self)

        # Get coordinates of screen size and center points
        self.screen_rect = self.screen.get_rect()
        self.screen_rect_center = self.screen_rect.center

        self.screen_x = self.screen_rect[2]
        self.screen_y = self.screen_rect[3]

        self.screen_center_x = self.screen_rect_center[0]
        self.screen_center_y = self.screen_rect_center[1]

        # Initalize flags and other variables
        self.intro = True
        self.player_has_hit = self.play_stage = self.end_stage = False
        self.bet_stage = self.over_21 = self.player_hit = self.update = False
        self.bankroll = 1000
        self.current_bet = 0
        '''Load up the pictures'''
        # Load INTRO menu pictures
        self.intro_text_1 = pygame.image.load("assets/intro_text_1.png")
        self.intro_text_2 = pygame.image.load("assets/intro_text_2.png")
        self.intro_cards = pygame.image.load("assets/intro_cards.png")
        self.intro_quit = pygame.image.load("assets/Quit.png")
        self.intro_play = pygame.image.load("assets/Play.png")

        # Load BET STAGE menu pictures
        self.bet_100 = pygame.image.load("assets/100.png")
        self.bet_200 = pygame.image.load("assets/200.png")
        self.bet_500 = pygame.image.load("assets/500.png")
        self.bet_done = pygame.image.load("assets/submit.png")
        self.bet_reset = pygame.image.load("assets/reset.png")

        # Load ACTUAL GAME STAGE menu pictures
        self.play_hit = pygame.image.load("assets/Hit.png")
        self.play_double = pygame.image.load("assets/Double.png")
        self.play_stand = pygame.image.load("assets/Stand.png")
        ''' Initialise onscreen text objects'''
        # Load BET STAGE text objects
        self.bet_text = self.settings.font.render("Please make your bets!",
                                                  True,
                                                  self.settings.textColor)
        ''' Set up the coordinates of each picture/text object'''
        # set up INTRO stage elements' coordinates
        self.intro_play_x = int(self.screen_x / 5 -
                                self.intro_play.get_rect()[2] / 2)
        self.intro_play_y = int(self.screen_center_y -
                                self.intro_play.get_rect()[3] / 2)

        self.intro_quit_x = int(self.screen_x * 4 / 5 -
                                self.intro_quit.get_rect()[2] / 2)
        self.intro_quit_y = int(self.screen_center_y -
                                self.intro_quit.get_rect()[3] / 2)

        self.intro_cards_x = int(self.screen_center_x -
                                 self.intro_cards.get_rect()[2] / 2)
        self.intro_cards_y = int(self.screen_center_y -
                                 self.intro_cards.get_rect()[3] / 2)

        self.intro_text_1_x = int(self.screen_center_x -
                                  self.intro_text_1.get_rect()[2] / 2)
        self.intro_text_1_y = int(self.screen_center_y / 3 -
                                  self.intro_text_1.get_rect()[3] / 2)

        self.intro_text_2_x = int(self.screen_center_x -
                                  self.intro_text_2.get_rect()[2] / 2)
        self.intro_text_2_y = int(self.screen_y -
                                  self.screen_center_y * 1 / 3 -
                                  self.intro_text_2.get_rect()[3] / 2)

        # Set up BET STAGE elements' coordinates
        self.bet_done_x = int(self.screen_x // 8 -
                              self.bet_done.get_rect()[2] // 2)
        self.bet_done_y = int(self.screen_y * 3 // 5)

        self.bet_100_x = int(self.screen_x * 2 // 8 -
                             self.bet_100.get_rect()[2] // 2)
        self.bet_100_y = int(self.screen_y * 3 // 5 +
                             self.bet_100.get_rect()[3] // 4)

        self.bet_200_x = int(self.screen_x * 4 // 8 -
                             self.bet_200.get_rect()[2] // 2)
        self.bet_200_y = int(self.screen_y * 3 // 5 -
                             self.bet_200.get_rect()[3] // 4)

        self.bet_500_x = int(self.screen_x * 6 // 8 -
                             self.bet_500.get_rect()[2] // 2)
        self.bet_500_y = int(self.screen_y * 3 // 5 +
                             self.bet_500.get_rect()[3] // 4)

        self.bet_reset_x = int(self.screen_x * 7 // 8 -
                               self.bet_reset.get_rect()[2] // 2)
        self.bet_reset_y = int(self.screen_y * 3 // 5)
        ''' Card Game elements'''
        # Set up ACTUAL GAME stage elements' coordinates
        self.play_hit_x = int(self.screen_center_x // 2 -
                              self.play_hit.get_rect()[2] // 2)
        self.play_hit_y = int(self.screen_center_y * 1.5)

        self.play_double_x = int(self.screen_center_x -
                                 self.play_double.get_rect()[2] // 2)
        self.play_double_y = int(self.screen_center_y * 1.6)

        self.play_stand_x = int(self.screen_center_x * 1.5 -
                                self.play_stand.get_rect()[2] // 2)
        self.play_stand_y = int(self.screen_center_y * 1.5)
Exemple #21
0
def main():
  global settings, hmqtt, applog, turrets, tur_locks
  # process cmdline arguments
  loglevels = ('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL')
  ap = argparse.ArgumentParser()
  ap.add_argument("-c", "--conf", required=True, type=str,
    help="path and name of the json configuration file")
  ap.add_argument("-s", "--syslog", action = 'store_true',
    default=False, help="use syslog")
  ap.add_argument("-d", "--debug", action='store', type=int, default='3',
    nargs='?', help="debug level, default is 3")
  args = vars(ap.parse_args())
  
  # logging setup
  applog = logging.getLogger('mqttlaser')
  #applog.setLevel(args['log'])
  if args['syslog']:
    applog.setLevel(logging.DEBUG)
    handler = logging.handlers.SysLogHandler(address = '/dev/log')
    # formatter for syslog (no date/time or appname. Just  msg.
    formatter = logging.Formatter('%(name)s-%(levelname)-5s: %(message)-40s')
    handler.setFormatter(formatter)
    applog.addHandler(handler)
  else:
    logging.basicConfig(level=logging.DEBUG,datefmt="%H:%M:%S",format='%(asctime)s %(levelname)-5s %(message)-40s')

  #GPIO.setmode(GPIO.BOARD)

  settings = Settings(args["conf"], 
                      applog)
  # init turrets from settings. Do any of the turret
  # use PCA9685, if so, we init that device here.
  init_pca = False
  kit = None
  for t in settings.turrets:
    if t.get('laser_pin', False):
      init_pca = True
  if init_pca:
    applog.info('initializing PCA9685')
    kit = ServoKit(channels=16)
    
  # init mqtt server connection
  hmqtt = Homie_MQTT(settings, turretCB)
  
  for i in range(0, len(settings.turrets)):
     turrets.append(Turret(settings.turrets[i], kit, applog))
     tur_locks.append(Lock())
                       
  settings.print()
  
  # fix debug levels
  if args['debug'] == None:
    debug_level = 3
  else:
    debug_level = args['debug']
    
  atexit.register(cleanup)
  # All we do now is loop over a 5 minute delay
  # and let the threads work.
  while True:
    time.sleep(5 * 60)
Exemple #22
0
 def __init__(self):
     self.settings = Settings()
     self.logger = Logger(__name__)
     self.entrypoint = "proxy"
Exemple #23
0
    def configure(self, *, settings=None):
        action = (settings
                  or Settings().getSettings())['logs']['warning_action']

        self.warnings.filterwarnings(action)
        self.warnings.formatwarning = self._format_warning
Exemple #24
0
def main():
  global settings, hmqtt, log,  env_home, mq_thr
  global mainwin,menu_fr,alarm_btn,voice_btn,laser_btn,login_btn,logoff_btn
  global menu_fr, panel_fr, center_img, pnl_middle, message
  global pnl_hdr, status_hdr, msg_hdr, content
  global device,saver_cvs,stroke_fill, screen_height, screen_width
  global font1,font2,font3,devFnt
  env_home = os.getenv('HOME')
  if sys.platform == 'darwin':
    isOSX = True
    print('Darwin not really supported')
  ap = argparse.ArgumentParser()
  ap.add_argument("-c", "--conf", required=True, type=str,
    help="path and name of the json configuration file")
  ap.add_argument("-s", "--syslog", action = 'store_true',
    default=False, help="use syslog")

  args = vars(ap.parse_args())
  
  # logging setup
  log = logging.getLogger('testbear')
  #applog.setLevel(args['log'])
  if args['syslog']:
    log.setLevel(logging.DEBUG)
    handler = logging.handlers.SysLogHandler(address = '/dev/log')
    # formatter for syslog (no date/time or appname. Just  msg, lux, luxavg
    formatter = logging.Formatter('%(name)s-%(levelname)-5s: %(message)-30s')
    handler.setFormatter(formatter)
    log.addHandler(handler)
  else:
    logging.basicConfig(level=logging.DEBUG,datefmt="%H:%M:%S",format='%(asctime)s %(levelname)-5s %(message)-40s')

  settings = Settings(args["conf"], 
                      log)
  settings.print()

  try:
    hmqtt = Homie_MQTT(settings, on_mqtt_msg)
  except:
    log.fail('failed mqtt setup')
    exit()
    
  tkroot = Tk()
  mainwin = Toplevel(tkroot)
  # new:
  #root.wait_visibility(saver_cvs)
  mainwin.wm_attributes("-topmost", True)
  mainwin.attributes('-fullscreen', True)    # required, else ghost window on top
  # old:
  #root.geometry('900x580')

  mainwin.protocol("WM_DELETE_WINDOW", do_quit)
  st = ttk.Style()
  st.theme_use('alt') # better than 'default', IMO
  st.configure("Menlo.TButton", font = ('Menlo', 16, 'bold'), 
    height=20, width=10)
  
  st = ttk.Style()
  st.configure("Menlo.TRadiobutton", font = ('Menlo', 12))
  
  st = ttk.Style()
  st.configure("MenloSm.TLabel", font = ('Menlo', 14))
  st = ttk.Style()
  st.configure("MenloMd.TLabel", font = ('Menlo', 16))
  st = ttk.Style()
  st.configure("MenloMd.TLabel", font = ('Menlo', 18))
  
  st = ttk.Style()
  st.configure("Menlo.TCheckbutton", font = ('Menlo', 16), 
    height=10, width=10)
    
  st = ttk.Style()
  st.configure("Menlo.TCombobox", font = ('Menlo', 16), 
    height=16, width=10)
  
  content = ttk.Frame(mainwin)
  menu_fr = ttk.Frame(content, width=100, height=580, borderwidth=5)
  menu_fr.pack(side=LEFT, expand=True)
  
  st_p = 4
  alarm_btn = ttk.Button(menu_fr, text ="Alarm", style='Menlo.TButton', 
      command=alarm_panel)
  alarm_btn['state'] = 'disabled'
  alarm_btn.grid(row=st_p + 2)
  voice_btn = ttk.Button(menu_fr, text = "Voice", style='Menlo.TButton',
      command=mycroft_panel)
  voice_btn.grid(row=st_p + 3)
  voice_btn['state'] = 'disabled'
  laser_btn = ttk.Button(menu_fr, text = "Lasers", style='Menlo.TButton',
      command=laser_panel)
  laser_btn.grid(row=st_p + 4)
  laser_btn['state'] = 'disabled'
  login_btn = ttk.Button(menu_fr, text = "Login", style='Menlo.TButton', 
      command = on_login)
  login_btn.grid(row=st_p + 5)
  logoff_btn = ttk.Button(menu_fr, text = "Logoff", style='Menlo.TButton',
      command = on_logoff)
  logoff_btn.grid(row=st_p + 6)
  logoff_btn['state'] = 'disabled'
  start_panel(True)

  # fill in the right side panel. 
  content.pack()
  
  # ----- Now the screen saver panel ---
  device= Toplevel(tkroot)
  
  # Tkinter Window Configurations
  #device.wait_visibility(saver_cvs)
  device.wm_attributes('-alpha',1)
  device.wm_attributes("-topmost", False)
  #device.overrideredirect(1)
  device.attributes('-fullscreen', True)
  device.attributes("-zoomed", True)
  #device.attributes("-toolwindow", 1)
  screen_width = device.winfo_screenwidth()
  screen_height = device.winfo_screenheight()
  # create canvas 
  saver_cvs = Canvas(device, background='black', borderwidth = 0)
  saver_cvs.create_rectangle(0, 0, screen_width, screen_height, fill = 'black')
  saver_cvs.pack(expand="yes",fill="both")
 
  
  font1 = font.Font(family=settings.font1, size=settings.font1sz[0])
  font2 = font.Font(family=settings.font2, size=settings.font2sz[0])
  font3 = font.Font(family=settings.font3, size=settings.font3sz[0])
  fnt = settings.deflt_font
  set_font(fnt)
  stroke_fill = settings.stroke_fill
  for seq in ['<Any-KeyPress>', '<Any-Button> ', '<Any-Motion>']:
    device.bind_all(seq, saver_closing)

  # arrange toplevel windows
  saver_running = False
  device.withdraw()
  mainwin.state('normal')
  log.info(f'starting mainloop fg: {mainwin.state()}, bg: {device.state()}')
  
  # set screensaver timer
  screen_timer_reset()
  
  # NOTE: mqtt messages seem to arrive just fine. Even though we
  # don't seem to accomodate them
  mainwin.mainloop()
  while True:
    time.sleep(10)
Exemple #25
0
                help="path and name of the json configuration file")
ap.add_argument("-d",
                "--debug",
                action='store',
                type=int,
                default='3',
                nargs='?',
                help="debug level, default is 3")
args = vars(ap.parse_args())
# fix debug levels
if args['debug'] == None:
    debug_level = 3
else:
    debug_level = args['debug']

settings = Settings(args["conf"], None, log)
hmqtt = Homie_MQTT(settings)
settings.print()

# Now we loop forever
unresp = 0
while True:
    # get the ups data
    status = {}
    try:
        with PyNUTClient() as s:
            status = s.list_vars(settings.nut_ups)
    except:
        pass

    # did we get good values?
 def __init__(self, settings=None):
     self.settings = settings or Settings()
Exemple #27
0
 def __init__(self):
     self.logger = Logger(__name__)
     self.userManagement = UsersManagement()
     self.settings = Settings().getSettings()
     self.domain = Domain()
Exemple #28
0
 def __init__(self, injectedSettings=None, injectedSubprocess=None):
     self.logger = Logger(__name__)
     self.settings = injectedSettings or Settings().getSettings()
     self.subprocess = injectedSubprocess or subprocess