def triggerNewGmail(resultFile, iterNum=100, interval=1, timeLimit=1000):
    resultFd = open(resultFile, "a")
    #gmailController = GmailController("xianghangmi")
    gmailSenderController = GmailController("senmuxing")
    testUuid = uuid.uuid4()
    startTime = time.time()
    index = 0
    while True:
        currTimeCost = time.time() - startTime
        if currTimeCost > timeLimit:
            print("time out, quit")
            return
        nowDate = datetime.datetime.now()
        nowStr = nowDate.strftime("%Y-%m-%d %H-%M-%S")
        #send email from [email protected] to [email protected]
        subject = "ifttt test at {}".format(nowStr)
        messageBody = subject
        message = GmailController.create_message(sender="*****@*****.**",
                                                 to="*****@*****.**",
                                                 subject=subject,
                                                 message_text=messageBody)
        gmailSenderController.sendMessage(message)
        triggerTime = datetime.datetime.now()
        statStr = "testUuid: {}->triggerGeneratedTime: {}->gmail_newEmail".format(
            index, triggerTime.strftime(datetimeFormat))
        print(statStr)
        resultFd.write(statStr + "\n")
        resultFd.flush()
        index += 1
        if index >= iterNum:
            break
        time.sleep(interval)
    resultFd.close()
def triggerNewGmailWithAttach(resultFile,
                              iterNum=100,
                              interval=1,
                              timeLimit=1000):
    resultFd = open(resultFile, "a")
    #gmailController = GmailController("xianghangmi")
    gmailSenderController = GmailController("senmuxing")
    testUuid = uuid.uuid4()
    startTime = time.time()
    for index in range(iterNum):
        currTimeCost = time.time() - startTime
        if currTimeCost > timeLimit:
            print("time out, quit")
            return
        nowDate = datetime.datetime.now()
        nowStr = nowDate.strftime("%Y-%m-%d %H-%M-%S")
        #send email from [email protected] to [email protected]
        subject = "ifttt test at {}".format(nowStr)
        tempFile = "ifttTest_{}.txt".format(nowStr)
        open(tempFile, "w").write(subject)
        messageBody = subject
        message = GmailController.create_message_with_attachment(
            sender="*****@*****.**",
            to="*****@*****.**",
            subject=subject,
            message_text=messageBody,
            file=tempFile)
        gmailSenderController.sendMessage(message)
        triggerTime = datetime.datetime.now()
        statStr = "testUuid: {}->triggerGeneratedTime: {}->hueBed".format(
            testUuid, triggerTime.strftime(datetimeFormat))
        print(statStr)
        resultFd.write(statStr + "\n")
        resultFd.flush()
        os.remove(tempFile)
        time.sleep(interval)
    resultFd.close()
Exemplo n.º 3
0
def testGmailDrive(argv):
    parser = argparse.ArgumentParser()
    parser.add_argument("resultFile")
    parser.add_argument("-timeLimit", default=100, type=int)
    parser.add_argument("-interval", default=0.1, type=float)
    parser.add_argument("-gmailSenderName", default="senmuxing", type=str)
    parser.add_argument("-gmailName", default="xianghangmi", type=str)
    parentId = "0B2Edbo2pC3d4MzEzSzRBN1BnSVU"
    options = parser.parse_args(argv)
    gmailController = GmailController(options.gmailName)
    gmailSenderController = GmailController(options.gmailSenderName)
    driveController = GoogleDriveController()
    resultStatList = []
    resultFd = open(options.resultFile, "a")
    index = -1
    overallStartTime = time.time()
    while True:
        index += 1
        currTime = time.time()
        if currTime - overallStartTime >= options.timeLimit:
            break
        preMsgList = gmailController.listMessagesMatchingQuery()
        preFileList = driveController.ls(parentId=parentId, isFolder=False)
        print("pre File list is ", preFileList)
        nowDate = datetime.datetime.now()
        nowStr = nowDate.strftime("%Y-%m-%d %H-%M-%S")
        #send email from [email protected] to [email protected]
        subject = "ifttt test at {}".format(nowStr)
        tempFile = "ifttTest_{}.txt".format(nowStr)
        open(tempFile, "w").write(subject)
        messageBody = subject
        message = GmailController.create_message_with_attachment(
            sender="*****@*****.**",
            to="*****@*****.**",
            subject=subject,
            message_text=messageBody,
            file=tempFile)
        gmailSenderController.sendMessage(message)
        sentTime = datetime.datetime.now()

        #detect reception of the email
        while True:
            latestMsgList = gmailController.listMessagesMatchingQuery()
            latestMsgId = latestMsgList[0]["id"]
            preMsgId = preMsgList[0]["id"]
            if latestMsgId == preMsgId:
                time.sleep(options.interval)
                continue
            else:
                preMsgList = latestMsgList
                receiveTime = datetime.datetime.now()
                break
        #detect new attachments
        while True:
            currentFileList = driveController.ls(parentId=parentId,
                                                 isFolder=False)
            if len(currentFileList) != len(preFileList):
                print("current File list is ", currentFileList)
                break
            else:
                time.sleep(options.interval)
        endTime = datetime.datetime.now()
        timeDiffSent = receiveTime - sentTime
        timeDiff = endTime - sentTime
        timeCostForSend = timeDiffSent.seconds + timeDiffSent.microseconds / float(
            1000000)
        timeCost = timeDiff.seconds + timeDiff.microseconds / float(1000000)
        statStr = "time cost for iter {} is send {} seconds and  applet  {} seconds".format(
            index, timeCostForSend, timeCost)
        print(statStr)
        resultStatList.append(statStr)
        resultFd.write(statStr + "\n")
        resultFd.flush()
        os.remove(tempFile)
        time.sleep(5)
    print(resultStatList)
    resultFd.close()
Exemplo n.º 4
0
def testGmailHueRecipe(argv):
    '''
    test the following recipe:
    If You say "Alexa trigger turn on hue light", then turn on lights in  Living room
    '''
    parser = argparse.ArgumentParser()
    parser.add_argument("resultFile")
    parser.add_argument("-timeLimit", default=100, type=int)
    parser.add_argument("-gmailSenderName", default="senmuxing", type=str)
    parser.add_argument("-gmailName", default="xianghangmi", type=str)
    parser.add_argument("-lightId", default=2, type=int)
    parser.add_argument("-interval", default=0.1, type=float)
    options = parser.parse_args(argv)
    hueController = hue.HueController()
    lightId = options.lightId
    gmailController = GmailController(options.gmailName)
    gmailSenderController = GmailController(options.gmailSenderName)
    resultStatList = []
    hueController.turnoffLight(lightId)
    resultFd = open(options.resultFile, "a")
    #test recipe: when wemo switch is truned on, turn on lights in living room
    index = -1
    overallStartTime = time.time()
    while True:
        index += 1
        currTime = time.time()
        if currTime - overallStartTime >= options.timeLimit:
            break
        time.sleep(5)
        preMsgList = gmailController.listMessagesMatchingQuery()
        nowDate = datetime.datetime.now()
        nowStr = nowDate.strftime("%Y-%m-%d %H-%M-%S")
        #send email from [email protected] to [email protected]
        subject = "ifttt test at {}".format(nowStr)
        messageBody = subject
        message = GmailController.create_message(sender="*****@*****.**",
                                                 to="*****@*****.**",
                                                 subject=subject,
                                                 message_text=messageBody)
        gmailSenderController.sendMessage(message)
        sentTime = datetime.datetime.now()
        print("sent email at ", sentTime.strftime("%Y-%m-%d %H-%M-%S"))

        #detect reception of the email
        while True:
            latestMsgList = gmailController.listMessagesMatchingQuery()
            latestMsgId = latestMsgList[0]["id"]
            preMsgId = preMsgList[0]["id"]
            if latestMsgId == preMsgId:
                time.sleep(options.interval)
                continue
            else:
                preMsgList = latestMsgList
                receiveTime = datetime.datetime.now()
                break
        print("receive email at ", receiveTime.strftime("%Y-%m-%d %H-%M-%S"))
        triggerGeneratedTime = datetime.datetime.now()
        while (True):
            if hueController.isLightAlert(lightId):
                hueController.clearAlert(lightId)
                break
            time.sleep(options.interval)
        endTime = datetime.datetime.now()
        timeDiffSent = receiveTime - sentTime
        timeDiff = endTime - sentTime
        timeCostForSend = timeDiffSent.seconds + timeDiffSent.microseconds / float(
            1000000)
        timeCost = timeDiff.seconds + timeDiff.microseconds / float(1000000)
        testUuid = uuid.uuid4()
        statStr = "testUuid: {}->triggerGeneratedTime: {}->gmail_hue".format(
            testUuid, triggerGeneratedTime.strftime(datetimeFormat))
        print(statStr)
        resultStatList.append(statStr)
        resultFd.write(statStr + "\n")
        resultFd.flush()

        statStr = "testUuid: {}->actionResultObservedTime: {}->gmail_hue".format(
            testUuid, endTime.strftime(datetimeFormat))
        print(statStr)
        resultStatList.append(statStr)
        resultFd.write(statStr + "\n")
        resultFd.flush()

        statStr = "testUuid: {}->time cost for iter {} is {} seconds".format(
            testUuid, index, timeCost)
        print(statStr)
        resultStatList.append(statStr)
        resultFd.write(statStr + "\n")
        resultFd.flush()
    resultFd.close()
    open(options.resultFile, "w").write("\n".join(resultStatList) + "\n")
def testGmailHueRecipe(argv):
    '''
    test the following recipe:
    If You say "Alexa trigger turn on hue light", then turn on lights in  Living room
    '''
    parser = argparse.ArgumentParser()
    parser.add_argument("resultFile")
    parser.add_argument("-iterNum", default=5, type=int)
    #parser.add_argument("-gmailSenderName", default = "senmuxing", type = str)
    parser.add_argument("-gmailName", default="xianghangmi", type=str)
    parser.add_argument("-lightId", default=2, type=int)
    parser.add_argument("-interval", default=0.1, type=float)
    options = parser.parse_args(argv)
    hueController = hue.HueController()
    lightId = options.lightId
    gmailController = GmailController(options.gmailName)
    resultStatList = []
    resultFd = open(options.resultFile, "a")
    #test recipe: when wemo switch is truned on, turn on lights in living room
    preMsgList = gmailController.listMessagesMatchingQuery()
    for index in range(options.iterNum):
        #check new emails
        #hueController.clearAlert(lightId)
        nowDate = datetime.datetime.now()
        nowStr = nowDate.strftime("%Y-%m-%d %H-%M-%S")
        #detect reception of the email
        while True:
            latestMsgList = gmailController.listMessagesMatchingQuery()
            latestMsgId = latestMsgList[0]["id"]
            preMsgId = preMsgList[0]["id"]
            if latestMsgId == preMsgId:
                time.sleep(options.interval)
                continue
            else:
                preMsgList = latestMsgList
                triggerObservedTime = datetime.datetime.now()
                break
        print("receive email at ",
              triggerObservedTime.strftime("%Y-%m-%d %H-%M-%S"))
        hueController.alertLight(lightId)
        endTime = datetime.datetime.now()
        timeDiff = endTime - triggerObservedTime
        timeCost = timeDiff.seconds + timeDiff.microseconds / float(1000000)
        testUuid = uuid.uuid4()
        statStr = "testUuid: {}->triggerObservedTime: {}->gmail_hue".format(
            testUuid, triggerObservedTime.strftime(datetimeFormat))
        print(statStr)
        resultStatList.append(statStr)
        resultFd.write(statStr + "\n")
        resultFd.flush()

        statStr = "testUuid: {}->actionExecutionTime: {}->gmail_hue".format(
            testUuid, endTime.strftime(datetimeFormat))
        print(statStr)
        resultStatList.append(statStr)
        resultFd.write(statStr + "\n")
        resultFd.flush()

        statStr = "testUuid: {}->time cost for iter {} is {} seconds".format(
            testUuid, index, timeCost)
        print(statStr)
        resultStatList.append(statStr)
        resultFd.write(statStr + "\n")
        resultFd.flush()
    resultFd.close()
    open(options.resultFile, "w").write("\n".join(resultStatList) + "\n")
def testGmailDrive(argv):
    parser = argparse.ArgumentParser()
    parser.add_argument("resultFile")
    parser.add_argument("-iterNum", default=5, type=int)
    parser.add_argument("-interval", default=0.1, type=float)
    parser.add_argument("-gmailName", default="xianghangmi", type=str)
    parentId = "0B2Edbo2pC3d4MzEzSzRBN1BnSVU"
    options = parser.parse_args(argv)
    gmailController = GmailController(options.gmailName)
    driveController = GoogleDriveController()
    resultStatList = []
    resultFd = open(options.resultFile, "a")
    for index in range(options.iterNum):
        preMsgList = gmailController.listMessagesMatchingQuery()
        nowDate = datetime.datetime.now()
        nowStr = nowDate.strftime("%Y-%m-%d %H-%M-%S")
        #send email from [email protected] to [email protected]
        subject = "ifttt test at {}".format(nowStr)
        tempFile = "ifttTest_engine_{}.txt".format(nowStr)
        open(tempFile, "w").write(subject)

        #detect reception of the email
        while True:
            latestMsgList = gmailController.listMessagesMatchingQuery()
            latestMsgId = latestMsgList[0]["id"]
            preMsgId = preMsgList[0]["id"]
            if latestMsgId == preMsgId:
                time.sleep(options.interval)
                continue
            else:
                preMsgList = latestMsgList
                triggerObservedTime = datetime.datetime.now()
                break
        driveController.uploadFile(tempFile,
                                   tempFile,
                                   dstParentList=[parentId])
        endTime = datetime.datetime.now()
        timeDiff = endTime - triggerObservedTime
        timeCost = timeDiff.seconds + timeDiff.microseconds / float(1000000)
        testUuid = uuid.uuid4()
        statStr = "testUuid: {}->triggerObservedTime: {}->gmail_drive".format(
            testUuid, triggerObservedTime.strftime(datetimeFormat))
        print(statStr)
        resultStatList.append(statStr)
        resultFd.write(statStr + "\n")
        resultFd.flush()

        statStr = "testUuid: {}->actionExecutionTime: {}->gmail_drive".format(
            testUuid, endTime.strftime(datetimeFormat))
        print(statStr)
        resultStatList.append(statStr)
        resultFd.write(statStr + "\n")
        resultFd.flush()

        statStr = "testUuid: {}->time cost for iter {} is {} seconds".format(
            testUuid, index, timeCost)
        print(statStr)
        resultStatList.append(statStr)
        resultFd.write(statStr + "\n")
        resultFd.flush()
        os.remove(tempFile)
        time.sleep(10)
    print(resultStatList)
    resultFd.close()
Exemplo n.º 7
0
def testGmailHueWemoRecipe(argv):
    '''
    test the following recipe:
    If You say "Alexa trigger turn on hue light", then turn on lights in  Living room
    '''
    parser = argparse.ArgumentParser()
    parser.add_argument("resultFile")
    parser.add_argument("-iterNum", default=5, type=int)
    parser.add_argument("-gmailSenderName", default="senmuxing", type=str)
    parser.add_argument("-gmailName", default="xianghangmi", type=str)
    parser.add_argument("-lightId", default=2, type=int)
    parser.add_argument("-interval", default=1, type=float)
    parser.add_argument("-wemoport", type=int, default=10085)
    options = parser.parse_args(argv)
    hueController = hue.HueController()
    lightId = options.lightId
    gmailController = GmailController(options.gmailName)
    gmailSenderController = GmailController(options.gmailSenderName)
    bind = "0.0.0.0:{}".format(options.wemoport)
    switchName = "WeMo Switch"
    wemoController = wemo.WemoController(bind=bind)
    switch = wemoController.discoverSwitch(switchName)
    if switch is None:
        print("error to locate the switch")
        sys.exit(1)
    else:
        print("switch discoverred")
    resultStatList = []
    hueController.turnoffLight(lightId)
    resultFd = open(options.resultFile, "a")
    #test recipe: when wemo switch is truned on, turn on lights in living room
    for index in range(options.iterNum):
        time.sleep(5)
        hueController.clearAlert(lightId)
        wemoController.turnoffSwitch(switchName)
        preMsgList = gmailController.listMessagesMatchingQuery()
        nowDate = datetime.datetime.now()
        nowStr = nowDate.strftime("%Y-%m-%d %H-%M-%S")
        #send email from [email protected] to [email protected]
        subject = "ifttt test at {}".format(nowStr)
        messageBody = subject
        message = GmailController.create_message(sender="*****@*****.**",
                                                 to="*****@*****.**",
                                                 subject=subject,
                                                 message_text=messageBody)
        gmailSenderController.sendMessage(message)
        sentTime = datetime.datetime.now()
        print("sent email at ", sentTime.strftime("%Y-%m-%d %H-%M-%S"))
        triggerGeneratedTime = datetime.datetime.now()

        #detect reception of the email
        while True:
            latestMsgList = gmailController.listMessagesMatchingQuery()
            latestMsgId = latestMsgList[0]["id"]
            preMsgId = preMsgList[0]["id"]
            if latestMsgId == preMsgId:
                time.sleep(options.interval)
                continue
            else:
                preMsgList = latestMsgList
                receiveTime = datetime.datetime.now()
                break
        print("receive email at ", receiveTime.strftime("%Y-%m-%d %H-%M-%S"))
        actionHue = False
        actionWemo = False
        actionHueTime = None
        actionWemoTime = None
        while (True):
            if actionHue == False and hueController.isLightAlert(lightId):
                print("got hue action")
                hueController.clearAlert(lightId)
                actionHueTime = datetime.datetime.now()
                actionHue = True
            if actionWemo == False and wemoController.isSwitchOn(switchName):
                actionWemo = True
                print("got wemo action")
                actionWemoTime = datetime.datetime.now()
                wemoController.turnoffSwitch(switchName)
            if actionHue and actionWemo:
                break
            time.sleep(options.interval)
        endTime = datetime.datetime.now()
        timeDiffSent = receiveTime - sentTime
        timeDiff = endTime - sentTime
        timeCostForSend = timeDiffSent.seconds + timeDiffSent.microseconds / float(
            1000000)
        timeCost = timeDiff.seconds + timeDiff.microseconds / float(1000000)
        testUuid = uuid.uuid4()
        statStr = "1testUuid: {}->triggerGeneratedTime: {}->gmail".format(
            index, triggerGeneratedTime.strftime(datetimeFormat))
        print(statStr)
        resultStatList.append(statStr)
        resultFd.write(statStr + "\n")
        resultFd.flush()

        statStr = "2testUuid: {}->actionResultObservedTime: {}->hue".format(
            index, actionHueTime.strftime(datetimeFormat))
        print(statStr)
        resultStatList.append(statStr)
        resultFd.write(statStr + "\n")
        resultFd.flush()
        statStr = "3testUuid: {}->actionResultObservedTime: {}->wemo".format(
            index, actionWemoTime.strftime(datetimeFormat))
        print(statStr)
        resultStatList.append(statStr)
        resultFd.write(statStr + "\n")
        resultFd.flush()

    resultFd.close()