예제 #1
0
def serial(self):

    global sernum  # save serial number

    try:
        self.log.info("READING SERIAL NUMBER")
        file_system = FileSystemAccess(str("skills/KukiSkill/"))
        file = file_system.open("kuki.serial", mode="r")
        data = file.read()
        file.close()

        sernum = data  # save data to sernum
        self.log.info("SERIAL: " + sernum)
        return sernum

    except Exception as e:
        self.log.error("SERIAL NOT READ FROM FILE")
        self.log.error(e)
        #return False

        self.log.info("GENERATING NEW SERIAL NUMBER AND SAVE")
        generate_serial(StringLength=56)  # generate new serial number and save
        self.log.info("SERIAL: " + sernum)

        try:
            file_system = FileSystemAccess(str("skills/KukiSkill/"))
            file = file_system.open("kuki.serial", mode="w")
            file.write(sernum)
            file.close()
            return True

        except Exception as e:
            self.log.error("SERIAL NOT SAVE TO FILE")
            self.log.error(e)
            return False
예제 #2
0
    def update_credentials(self):
        self.server = False  # False for an ics file, true for a caldav server -regardless of where the creds are stored
        self.no_creds = False

        self.server = True

        self.account = self.settings.get('username')
        self.password = self.settings.get('password')
        self.server = self.settings.get("server")
        self.folder = self.settings.get('folder')
        self.port = self.settings.get("port")

        if self.account is None or self.account == "" or self.server is None or self.server == "":
            # Using pw in config
            fs = FileSystemAccess(str(self.skill_id))
            if fs.exists("email_conf.yml"):
                #  Use yml file for config
                config = fs.open("email_conf.yml", "r").read()
                config = yaml.safe_load(config)
                self.account = config.get("username")
                self.password = config.get("password")
                self.server = config.get("server_address")
                self.folder = config.get("folder")
                self.port = config.get("port")

            else:
                self.no_creds = True
            if self.account is None or self.account == "":
                self.no_creds = True

        if self.no_creds is True:
            # Not set up in file/home
            self.speak_dialog("setup")
            return False
        return True
예제 #3
0
    def search_manual(self, situation):
        file_system = FileSystemAccess(str(self.skill_id))
        file = file_system.open('troubleshooting.json', 'r')
        data = json.load(file)

        commonCauses = [li for li in data if li['name'] == situation]
        commonCauses = commonCauses[0]['cause']
        return commonCauses
예제 #4
0
def get_knowledge(self, filename):
    file_system = FileSystemAccess(str(self.skill_id))
    file = file_system.open(filename, "r")
    data = []
    for line in file:
        data.append(line.rstrip('\n'))
    knowledge = ".".join(data)
    return knowledge
예제 #5
0
 def save_data_json(self, filename, data, mode="w"):
     try:
         file_system = FileSystemAccess(str(self.skill_id))
         file = file_system.open(filename, mode)
         json.dump(data, file)
         file.close()
         return True
     except Exception:
         self.log.info("ERROR: could not save skill file " + filename)
         return False
예제 #6
0
 def save_data_file(self, filename, data, mode="w"):
     try:
         file_system = FileSystemAccess(str(self.skill_id))
         file = file_system.open(filename, mode)
         file.write(data)
         file.close()
         return True
     except Exception:  #as e
         self.log.info("ERROR: could not save skill file " + filename)
         #LOG.error(e)
         return False
예제 #7
0
def save_knowledge(self, filename, knowledge, mode="w"):
    data = knowledge.split(".")
    data = "\n".join(data)
    try:
        file_system = FileSystemAccess(str(self.skill_id))
        file = file_system.open(filename, mode)
        file.write(data)
        file.close()
        return True
    except Exception as e:
        LOG.warning("could not save skill file " + filename)
        LOG.error(e)
        return False
예제 #8
0
class IdentityManager(object):
    def __init__(self):
        self.filesystem = FileSystemAccess('identity')
        self.identity = None
        self.initialize()

    def initialize(self):
        if self.filesystem.exists('identity.json'):
            self.identity = DeviceIdentity.load(self.filesystem.open('identity.json', 'r'))
        else:
            identity = DeviceIdentity(device_id=str(uuid4()))
            self.update(identity)

    def update(self, identity):
        self.identity = identity
        with self.filesystem.open('identity.json', 'w') as f:
            self.identity.save(f)

    def is_paired(self):
        return self.identity is not None and self.identity.owner is not None

    def get(self):
        return self.identity
예제 #9
0
class IdentityManager(object):
    def __init__(self):
        self.filesystem = FileSystemAccess('identity')
        self.identity = None
        self.initialize()

    def initialize(self):
        if self.filesystem.exists('identity.json'):
            self.identity = DeviceIdentity.load(
                self.filesystem.open('identity.json', 'r'))
        else:
            identity = DeviceIdentity(device_id=str(uuid4()))
            self.update(identity)

    def update(self, identity):
        self.identity = identity
        with self.filesystem.open('identity.json', 'w') as f:
            self.identity.save(f)

    def is_paired(self):
        return self.identity is not None and self.identity.owner is not None

    def get(self):
        return self.identity
예제 #10
0
 def write_file(self, filename, data):
     fs = FileSystemAccess(str(self.skill_id))
     data_file = fs.open(filename, "w")
     data_file.writelines(data)
     data_file.close()
     return True
예제 #11
0
 def read_file(self, filename):
     fs = FileSystemAccess(str(self.skill_id))
     data_file = fs.open(filename, "r")
     data = data_file.read()
     data_file.close()
     return data
예제 #12
0
myRobot = str(
    input('Please type the name of the robot you want to configure (None): ')
    or 'None')
if myRobot != 'None':
    for robot in account.robots:
        if robot.name == myRobot:
            n = base64.b64encode(robot.name.encode('ascii'))
            snr = base64.b64encode(robot.serial.encode('ascii'))
            sec = base64.b64encode(robot.secret.encode('ascii'))

            credentials = {'n': n, 'snr': snr, 'sec': sec}

            file_system = FileSystemAccess(join('skills', 'NeatoSkill'))

            with file_system.open('credentials.store', 'wb') as f:
                pickle.dump(credentials, f, pickle.HIGHEST_PROTOCOL)

            print('Name: {}'.format(robot.name))
            print('Serial: {}'.format(robot.serial))
            print('Secret: {}'.format(robot.secret))
            print('Created credentials.store for {} in {}'.format(
                robot.name, file_system.path))

            # Dump possible room configuration
            dummy = account.maps
            persMaps = account.persistent_maps
            if robot.serial in persMaps:
                maps = {}
                myRobotsMaps = persMaps[robot.serial]
                for mapData in myRobotsMaps: