def mon(client, device_id): """Monitor any device, displaying generic information about its status. """ device = client.get_device(device_id) model = client.model_info(device) with wideq.Monitor(client.session, device_id) as mon: try: while True: time.sleep(1) print('Polling...') res = mon.poll() if res: for key, value in res.items(): try: desc = model.value(key) except KeyError: print('- {}: {}'.format(key, value)) if isinstance(desc, wideq.EnumValue): print('- {}: {}'.format( key, desc.options.get(value, value))) elif isinstance(desc, wideq.RangeValue): print('- {0}: {1} ({2.min}-{2.max})'.format( key, value, desc, )) except KeyboardInterrupt: pass
def mon(client, device_id): """Monitor any device, displaying generic information about its status. """ device = client.get_device(device_id) model = client.model_info(device) with wideq.Monitor(client.session, device_id) as mon: try: while True: time.sleep(1) print('Polling...') res = mon.poll() if res: if isinstance(res, list): for key, item in enumerate(res): protocol = model.data['Monitoring']['protocol'] values = model.data['Value'] try: print('key: ', key) desc = protocol[key]['value'] print('desc: ', desc) value = values[desc] if value['type'] == "Enum": info = value['option'][str(item)] elif value['type'] == "Range": info = item else: info = 'data not supported: ' + str(item) print('{}: {}'.format(desc, info)) except KeyError as e: print( 'Invalid Key: {} - {} -- error: {}'.format( key, item, e.args[0])) else: for key, value in res.items(): try: desc = model.value(key) except KeyError: print('- {}: {}'.format(key, value)) if isinstance(desc, wideq.EnumValue): print('- {}: {}'.format( key, desc.options.get(value, value))) elif isinstance(desc, wideq.RangeValue): print('- {0}: {1} ({2.min}-{2.max})'.format( key, value, desc, )) except KeyboardInterrupt: pass
def gen_mon(client, device_id): """Monitor any other device but AC device, displaying generic information about its status. """ device = client.get_device(device_id) model = client.model_info(device) with wideq.Monitor(client.session, device_id) as mon: try: while True: time.sleep(1) print("Polling...") data = mon.poll() if data: try: res = model.decode_monitor(data) except ValueError: print("status data: {!r}".format(data)) else: for key, value in res.items(): try: desc = model.value(key) except KeyError: print("- {}: {}".format(key, value)) if isinstance(desc, wideq.EnumValue): print( "- {}: {}".format( key, desc.options.get(value, value) ) ) elif isinstance(desc, wideq.RangeValue): print( "- {0}: {1} ({2.min}-{2.max})".format( key, value, desc, ) ) except KeyboardInterrupt: pass
def mon(client, device_id): """Monitor any device, displaying generic information about its status. """ device = client.get_device(device_id) model = client.model_info(device) device.load_model_info device.load_lang_pack_product device.load_lang_pack_model with wideq.Monitor(client.session, device_id) as mon: try: #while True: data = mon.poll() time.sleep(2) now = datetime.datetime.now() print('polling... {}:{}:{}'.format(now.hour, now.minute, now.second)) data = mon.poll() if data: try: res = model.decode_monitor(data) if DEBUG_MODE: with open(device.name + '_polling.json', 'w', -1, 'utf-8') as outfile: #json.dump(res, outfile, ensure_ascii=False, indent="\t") data = json.loads(outfile) print(data['SensorPM1']) except ValueError: print('status data: {!r}'.format(data)) else: print('-----------------------') print(res['SensorPM1']) print(res['SensorPM2']) print(res['SensorPM10']) print(res['SensorHumidity']) print('-----------------------') sys.exit(0) except KeyboardInterrupt: pass
def monitor(device_id): """Monitor any device, displaying generic information about its status. """ backup_id = device_id check_headers(request.headers) logging.debug("monitor {}".format(backup_id)) try: # client = wideq.Client.load(state) device = client.get_device(backup_id) model = client.model_info(device) except wideq.NotLoggedInError as err: logging.error('mon {} NotLoggedInError: refresh session and try again. ({})'.format(backup_id, err)) client.refresh(); device = client.get_device(backup_id) model = client.model_info(device) except wideq.APIError as err: if err.code == 9003: logging.error('mon {} APIError: refresh session and try again. ({})'.format(backup_id, err)) client.refresh(); device = client.get_device(backup_id) model = client.model_info(device) with wideq.Monitor(client.session, backup_id) as mon: try: i = 0 while i < 10: i += 1 data = mon.poll() if data: try: res = model.decode_monitor(data) except ValueError: logging.error('status data: {!r}'.format(data)) else: result = {} for key, value in res.items(): try: desc = model.value(key) except KeyError: logging.error('- {}: {}'.format(key, value)) if isinstance(desc, wideq.EnumValue): # print('- {}: {}'.format( key, desc.options.get(value, value) )) result[key] = desc.options.get(value, value) elif isinstance(desc, wideq.RangeValue): # print('- {0}: {1} ({2.min}-{2.max})'.format( key, value, desc, )) result[key] = value result[key + '.min'] = desc.min result[key + '.max'] = desc.max return Response(result) time.sleep(1) print('Polling...') except KeyboardInterrupt: pass raise InvalidUsage('Error, no response from LG cloud', 401)