コード例 #1
0
ファイル: piSchedule.py プロジェクト: neandr/piSchedule
def renewSchedule():
    if 'iniFile' in xP.prefs:

        daySchedule = getWeekDaySchedule()
        if daySchedule != "--":
            xP.prefs['iniFile'] = daySchedule

        aSchedule = xP.prefs['iniFile']

        sched.remove_all_jobs()

        log2DayFile(True, 'renew Schedule')

        xP.switchTime = datetime.now().replace(hour=0,minute=0,second=0,microsecond=0)+  timedelta(hours=24)

        suntime()
        jobLines = jobsRead(aSchedule)
        jobs2Schedule(jobLines)

        tab = scheduleActive()

        cJob = sched.add_job(renewSchedule, 'date', run_date=str(xP.switchTime), id="renew")

        msg = " renew Schedule  next Switch Time   " + str(xP.switchTime)[:19]
        print(msg)
        log2DayFile(True, msg)
        prefsSaveJSON(None, None)

    else:
        pass
        logERR(False)
コード例 #2
0
ファイル: piSchedule.py プロジェクト: neandr/piSchedule
def jobsRead(cIniFile = 'piSchedule.ini'):
    if cIniFile == "":
        cIniFile = 'piSchedule.ini'

    jobLines = ""
    try:
        msg = "read INI Jobs file >> " + cIniFile + "<<"

        jobLines = jobsReadFile(cIniFile)
        logSys (msg + "\n" + str(jobLines))
        logInfo (msg)

    except:
        pass            #if fails get 'piSchedule.ini' or initialize it
        logERR(True)

    return jobLines
コード例 #3
0
ファイル: piSchedule.py プロジェクト: neandr/piSchedule
def main():
    global xP, piPortDelta

    try:
        logInfo('\n________Started   piSchedule  (cMain)________')
        logSys ('\n________Started   piSchedule  (cMain)________')

        debug(mode=False)        # Bottle debug mode <<<<<<<<<<<<<<<<<

        xP.switchTime = datetime.now().replace(hour=0,minute=0,second=0,microsecond=0)+  timedelta(hours=24)

        prefsRead()
        xP.prefs = prefsSetup()            # includes geoDetails, suntime

        info = logPrefsDetails(xP.prefs)
        print(info)
        logInfo(info)

        if xP.prefs['ssdp'] != "OK":
            print ("\n ** NO 'ssdp' connection! **")
            return xP.prefs['ssdp']

        if (len(sys.argv) == 2) and sys.argv[1] == "-prefs":
            return 0

        #x= 1/0            # logERR Testing only

        sched.start()    # start the scheduler
        renewSchedule()  # if iniFile is set, load jobList of it

        # starting bottle with web page
        app.run(host = xP.prefs['server'], port = xP.prefs['port'], reloader=False)

    except:
        logERR(True)


    logInfo('Finished Main\n')
    logSys('Finished Main\n')
コード例 #4
0
ファイル: piDiscover.py プロジェクト: neandr/piSchedule
def piDiscover(service, timeout=2, retries=1):
#---------------------------------
    global xP
    try:
        prefsFile = open(xP.prefsJSONfile, 'r')
        fPrefs = json.loads(prefsFile.read())
    except:
        fPrefs = {}

    group = ("239.255.255.250", 1900)
    message = "\r\n".join([
        'M-SEARCH * HTTP/1.1',
        'HOST: {0}:{1}'.format(*group),
        'MAN: "ssdp:discover"',
        'ST: {st}','MX: 3','',''])

    responses = {}
    try:
        server =  str(fPrefs['server'])
    except:
        server = ""
    port = ''
    error = 'OK'

    i = 0;
    for _ in range(retries):
        i += 1
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
        sock.setsockopt(socket.SOL_SOCKET, socket.SO_RCVTIMEO, struct.pack('LL', 0, 10000));
        sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 2)
        sock.sendto(message.format(st=service), group)
        while True:
            try:
                responses[i] = sock.recv(1024);
                break;
            except socket.timeout:
                error = 'timeout'
                break;
            except:
                error = 'no pilight ssdp connections found'
                break;

    r = responses.values()

    if len(r) > 0:
       locationsrc = re.search('Location:([0-9.]+):(.*)', str(r[0]), re.IGNORECASE)
       if locationsrc:
           server = locationsrc.group(1).strip()
           port = locationsrc.group(2).strip()


    configFile = '/etc/pilight/config.json'
    piPrefs = {}
    try:
        prefsFile = open(configFile, 'r')
        piPrefs = json.loads(prefsFile.read())

        if  'webserver-http-port' in piPrefs['settings']:
            port = piPrefs['settings']['webserver-http-port']
        if  'webserver-port' in piPrefs['settings']:
            port = piPrefs['settings']['webserver-port']

    except:
        logERR(True)    # will terminate / quiet

    pilightVersion = str(piPrefs['registry']['pilight']['version']['current'])

    rv = [server, port, pilightVersion, error]

    #print (" ** piDiscover  pilight (v." + version + ") **\n" 
    #       + (str(responses)).replace("\\x00","").replace("\\r\\n","\n"))

    logInfo (" ** piDiscover  pilight " + str(rv), xColor)
    logSys  (" ** piDiscover  pilight " + str(rv), xColor)

    return rv