def _read_all_parameters_internal(): current_installation = installationHandler.get_installation() now = datetime.datetime.now() tags = tag_dao.get_tags() num_logs_read = 0 for tag in tags: #current_value = modbus_connector.get_value(tag) :: Put this in the log_item['value'] instead of 666 log_item = { 'name': tag['name'], 'controller_ip': tag['controller_ip'], 'value': 666, 'time': now, 'address': tag['address'], 'type': tag['type'] } log_entries = sync_queue_dao.select_data_like(log_item.get('name'), log_item.get('controller_ip')) for log_entry in log_entries: data = json.loads(log_entry.get('data')) if data.get('name') == log_item.get('name'): if data.get('controller_ip') == log_item.get('controller_ip'): sync_queue_dao.delete(log_entry.get('id'), current_installation.get('serial_number')) num_logs_read += sync_queue_dao.insert_params(current_installation.get('serial_number'), 'log', 'insert', log_item) print('Added %s tags to sync.' % (num_logs_read,))
def send_ping(): try: if LOCAL: print('Local sending ping') SyncManager.send_ping(installationHandler.get_installation()['serial_number']) else: print('Central sending pings') failed = [] for key in SYNC_USERS: print('pinging ', key) ok = SyncManager.send_ping(key) if not ok: failed.append(key) for fail in failed: SyncManager.un_register(fail) except: traceback.print_exc() pass
def opened(self): print('sync ws opened') current_installation = installationHandler.get_installation() SyncManager.register(current_installation['serial_number'], self) connect = {'connect': True, "installation": current_installation['serial_number'], "model": current_installation['model']} self.sendData(json.dumps(connect))
@cherrypy.expose def sync_ws(self): handler = cherrypy.request.ws_handler def get_handlers(package): handlers = {} for member_name, member in [module for module in inspect.getmembers(package) if inspect.ismodule(module[1])]: print("Adding handler %s" % member_name) handlers[member_name] = member return handlers #To trigger new devices to set correct serial number before "workers" below does it at the same time installation = installationHandler.get_installation() print("installation is: ", installation.get('serial_number')) LAST_RECIVED_PING['ping'] = datetime.datetime.now() HANDLERS = get_handlers(api) if False: #if SSL is needed CFG_DIR = "" SSL_CRT = os.path.join(CFG_DIR, 'ssl/domain.se.crt') SSL_KEY = os.path.join(CFG_DIR, 'ssl/domain.se.key') SSL_BUNDLE = os.path.join(CFG_DIR, 'ssl/ssl_bundle.pem') cherrypy.server.ssl_certificate = SSL_CRT cherrypy.server.ssl_private_key = SSL_KEY cherrypy.server.ssl_certificate_chain = SSL_BUNDLE cherrypy.server.ssl_module = 'pyopenssl'