|
@@ -2365,15 +2365,18 @@ def modbus_broadcast_query():
|
|
|
return jsonify({'success': False, 'message': '串口未连接'}), 400
|
|
return jsonify({'success': False, 'message': '串口未连接'}), 400
|
|
|
|
|
|
|
|
responses = address_config.broadcast_query(timeout)
|
|
responses = address_config.broadcast_query(timeout)
|
|
|
- for r in responses:
|
|
|
|
|
- uid = r.get('uid', '').lower()
|
|
|
|
|
- if uid and uid not in address_config.get_stored_devices():
|
|
|
|
|
- addr = len(address_config.get_stored_devices()) + 1
|
|
|
|
|
- address_config.add_stored_device(uid, addr)
|
|
|
|
|
- logger.info(f"自动保存发现设备: UID={uid}, 地址={addr}")
|
|
|
|
|
|
|
+ assign_results = []
|
|
|
if responses:
|
|
if responses:
|
|
|
|
|
+ assign_results = address_config.process_responses(responses)
|
|
|
|
|
+ for r in assign_results:
|
|
|
|
|
+ uid_bytes = r.get('uid', r.get('request', ''))
|
|
|
save_device_config()
|
|
save_device_config()
|
|
|
- return jsonify({'success': True, 'responses': responses, 'count': len(responses)})
|
|
|
|
|
|
|
+ return jsonify({
|
|
|
|
|
+ 'success': True,
|
|
|
|
|
+ 'responses': responses,
|
|
|
|
|
+ 'assign_results': assign_results,
|
|
|
|
|
+ 'count': len(responses)
|
|
|
|
|
+ })
|
|
|
|
|
|
|
|
except Exception as e:
|
|
except Exception as e:
|
|
|
logger.error(f'广播查询失败: {str(e)}')
|
|
logger.error(f'广播查询失败: {str(e)}')
|
|
@@ -3414,6 +3417,8 @@ if __name__ == '__main__':
|
|
|
now = time.time()
|
|
now = time.time()
|
|
|
for uid in address_config.get_stored_devices():
|
|
for uid in address_config.get_stored_devices():
|
|
|
device_last_seen[uid] = now
|
|
device_last_seen[uid] = now
|
|
|
|
|
+ for pid in panel_config:
|
|
|
|
|
+ device_last_seen[pid] = now
|
|
|
except Exception as e:
|
|
except Exception as e:
|
|
|
logger.error(f"自动发现异常: {str(e)}")
|
|
logger.error(f"自动发现异常: {str(e)}")
|
|
|
import threading
|
|
import threading
|
|
@@ -3491,6 +3496,8 @@ if __name__ == '__main__':
|
|
|
|
|
|
|
|
if panel_ok:
|
|
if panel_ok:
|
|
|
online += 1
|
|
online += 1
|
|
|
|
|
+ device_last_seen[panel_id] = time.time()
|
|
|
|
|
+ device_last_seen[cfg.get('panel_uid', '')] = time.time()
|
|
|
dtu_publish_panel_status(panel_id, addr, panel_ports)
|
|
dtu_publish_panel_status(panel_id, addr, panel_ports)
|
|
|
else:
|
|
else:
|
|
|
offline += 1
|
|
offline += 1
|