예제 #1
0
파일: driver.py 프로젝트: marionumza/saas
 def send_alldevices(self):
     """
     This method send IoT Box and devices informations to Harpiya database
     """
     server = helpers.get_harpiya_server_url()
     if server:
         subject = helpers.read_file_first_line('harpiya-subject.conf')
         if subject:
             domain = helpers.get_ip().replace('.',
                                               '-') + subject.strip('*')
         else:
             domain = helpers.get_ip()
         iot_box = {
             'name': socket.gethostname(),
             'identifier': helpers.get_mac_address(),
             'ip': domain,
             'token': helpers.get_token(),
             'version': helpers.get_version()
         }
         devices_list = {}
         for device in iot_devices:
             identifier = iot_devices[device].device_identifier
             devices_list[identifier] = {
                 'name': iot_devices[device].device_name,
                 'type': iot_devices[device].device_type,
                 'manufacturer': iot_devices[device].device_manufacturer,
                 'connection': iot_devices[device].device_connection,
             }
         data = {
             'params': {
                 'iot_box': iot_box,
                 'devices': devices_list,
             }
         }
         # disable certifiacte verification
         urllib3.disable_warnings()
         http = urllib3.PoolManager(cert_reqs='CERT_NONE')
         try:
             http.request('POST',
                          server + "/iot/setup",
                          body=json.dumps(data).encode('utf8'),
                          headers={
                              'Content-type': 'application/json',
                              'Accept': 'text/plain'
                          })
         except Exception as e:
             _logger.error('Could not reach configured server')
             _logger.error('A error encountered : %s ' % e)
     else:
         _logger.warning('Harpiya server not set')
예제 #2
0
파일: main.py 프로젝트: marionumza/saas
 def clear_drivers_list(self):
     for driver in os.listdir(get_resource_path('hw_drivers', 'drivers')):
         if driver != '__pycache__':
             helpers.unlink_file(
                 get_resource_path('hw_drivers', 'drivers', driver))
     return "<meta http-equiv='refresh' content='0; url=http://" + helpers.get_ip(
     ) + ":8069/list_drivers'>"
예제 #3
0
파일: main.py 프로젝트: marionumza/saas
    def connect_to_wifi(self, essid, password, persistent=False):
        if persistent:
            persistent = "1"
        else:
            persistent = ""

        subprocess.check_call([
            get_resource_path('point_of_sale',
                              'tools/posbox/configuration/connect_to_wifi.sh'),
            essid, password, persistent
        ])
        server = helpers.get_harpiya_server_url()
        res_payload = {
            'message': 'Connecting to ' + essid,
        }
        if server:
            res_payload['server'] = {
                'url': server,
                'message': 'Redirect to Harpiya Server'
            }
        else:
            res_payload['server'] = {
                'url': 'http://' + helpers.get_ip() + ':8069',
                'message': 'Redirect to IoT Box'
            }

        return json.dumps(res_payload)
예제 #4
0
파일: main.py 프로젝트: marionumza/saas
 def index(self):
     wifi = Path.home() / 'wifi_network.txt'
     remote_server = Path.home() / 'harpiya-remote-server.conf'
     if (wifi.exists() == False
             or remote_server.exists() == False) and helpers.access_point():
         return "<meta http-equiv='refresh' content='0; url=http://" + helpers.get_ip(
         ) + ":8069/steps'>"
     else:
         return homepage_template.render(self.get_homepage_data())
예제 #5
0
파일: main.py 프로젝트: marionumza/saas
 def connect_to_server(self, token, iotname):
     if token:
         credential = token.split('|')
         url = credential[0]
         token = credential[1]
         if len(credential) > 2:
             # IoT Box send token with db_uuid and enterprise_code only since V13
             db_uuid = credential[2]
             enterprise_code = credential[3]
             helpers.add_credential(db_uuid, enterprise_code)
     else:
         url = helpers.get_harpiya_server_url()
         token = helpers.get_token()
     reboot = 'reboot'
     subprocess.check_call([
         get_resource_path(
             'point_of_sale',
             'tools/posbox/configuration/connect_to_server.sh'), url,
         iotname, token, reboot
     ])
     return 'http://' + helpers.get_ip() + ':8069'
예제 #6
0
파일: main.py 프로젝트: marionumza/saas
    def get_homepage_data(self):
        hostname = str(socket.gethostname())
        ssid = helpers.get_ssid()
        wired = subprocess.check_output(
            ['cat',
             '/sys/class/net/eth0/operstate']).decode('utf-8').strip('\n')
        if wired == 'up':
            network = 'Ethernet'
        elif ssid:
            if helpers.access_point():
                network = 'Wifi access point'
            else:
                network = 'Wifi : ' + ssid
        else:
            network = 'Not Connected'

        iot_device = []
        for device in iot_devices:
            iot_device.append({
                'name':
                iot_devices[device].device_name + ' : ' +
                str(iot_devices[device].data['value']),
                'type':
                iot_devices[device].device_type.replace('_', ' '),
                'message':
                iot_devices[device].device_identifier +
                iot_devices[device].get_message()
            })

        return {
            'hostname': hostname,
            'ip': helpers.get_ip(),
            'mac': helpers.get_mac_address(),
            'iot_device_status': iot_device,
            'server_status': helpers.get_harpiya_server_url()
            or 'Not Configured',
            'six_terminal': self.get_six_terminal(),
            'network_status': network,
            'version': helpers.get_version(),
        }
예제 #7
0
파일: main.py 프로젝트: marionumza/saas
 def clear_six_payment_terminal(self):
     helpers.unlink_file('harpiya-six-payment-terminal.conf')
     subprocess.check_call(["sudo", "service", "harpiya", "restart"])
     return "<meta http-equiv='refresh' content='0; url=http://" + helpers.get_ip(
     ) + ":8069'>"
예제 #8
0
파일: main.py 프로젝트: marionumza/saas
 def add_six_payment_terminal(self, terminal_id):
     helpers.write_file('harpiya-six-payment-terminal.conf', terminal_id)
     subprocess.check_call(["sudo", "service", "harpiya", "restart"])
     return 'http://' + helpers.get_ip() + ':8069'
예제 #9
0
파일: main.py 프로젝트: marionumza/saas
 def clear_server_configuration(self):
     helpers.unlink_file('harpiya-remote-server.conf')
     return "<meta http-equiv='refresh' content='0; url=http://" + helpers.get_ip(
     ) + ":8069'>"
예제 #10
0
파일: main.py 프로젝트: marionumza/saas
 def clear_wifi_configuration(self):
     helpers.unlink_file('wifi_network.txt')
     return "<meta http-equiv='refresh' content='0; url=http://" + helpers.get_ip(
     ) + ":8069'>"
예제 #11
0
파일: main.py 프로젝트: marionumza/saas
 def clear_credential(self):
     helpers.unlink_file('harpiya-db-uuid.conf')
     helpers.unlink_file('harpiya-enterprise-code.conf')
     subprocess.check_call(["sudo", "service", "harpiya", "restart"])
     return "<meta http-equiv='refresh' content='20; url=http://" + helpers.get_ip(
     ) + ":8069'>"
예제 #12
0
파일: main.py 프로젝트: marionumza/saas
 def save_credential(self, db_uuid, enterprise_code):
     helpers.add_credential(db_uuid, enterprise_code)
     subprocess.check_call(["sudo", "service", "harpiya", "restart"])
     return "<meta http-equiv='refresh' content='20; url=http://" + helpers.get_ip(
     ) + ":8069'>"
예제 #13
0
파일: main.py 프로젝트: marionumza/saas
 def load_drivers(self):
     helpers.download_drivers(False)
     subprocess.check_call(["sudo", "service", "harpiya", "restart"])
     return "<meta http-equiv='refresh' content='20; url=http://" + helpers.get_ip(
     ) + ":8069/list_drivers'>"