开源智能家居中枢搭建:从架构解析到自动化场景实践

news2026/5/14 22:51:43
1. 项目概述与核心价值最近在折腾智能家居中枢时发现了一个挺有意思的开源项目叫contextzero/nest_hub。乍一看名字很容易让人联想到谷歌的 Nest Hub 智能显示屏但深入探究后你会发现它其实是一个旨在“模拟”或“桥接”这类设备核心功能的软件项目。简单来说它试图在非官方的硬件比如一台树莓派、一台旧笔记本甚至是一台虚拟机上复现出类似 Nest Hub 那样的智能家居控制中枢体验让你能在一个统一的界面上管理灯光、温控器、摄像头等设备并可能集成语音助手。这个项目的核心价值在我看来是为那些对谷歌生态依赖不深或者希望拥有更高自定义权限和本地化控制能力的极客、开发者以及智能家居爱好者提供了一个极具吸引力的替代方案。市面上的商业中枢设备功能虽好但往往被厂商的生态墙所限制数据隐私、功能扩展性、设备兼容性都是痛点。contextzero/nest_hub这类项目正是瞄准了这些痛点试图用开源软件的力量打造一个更开放、更可控的智能家居“大脑”。它解决的不仅仅是“有没有中枢”的问题更是“这个中枢听谁的、能干什么、数据去哪了”的根本性问题。2. 项目架构与核心组件拆解要理解contextzero/nest_hub是如何工作的我们需要把它拆解成几个核心的软件层。虽然我无法获取其最新的、未公开的详细源码但基于同类开源智能家居中枢项目的常见架构我们可以推断出其大致的组成和运作逻辑。2.1 核心服务层通信与设备管理这是整个项目的基石。它需要实现与各种智能家居设备的通信。智能家居世界协议林立Zigbee、Z-Wave、Wi-FiMQTT、HTTP、蓝牙等是主流。因此这个服务层很可能包含或依赖多个“适配器”或“集成”模块。协议适配器例如通过zigbee2mqtt或ZHAZigbee Home Automation来连接和管理 Zigbee 设备通过zwave-js来管理 Z-Wave 设备。这些通常是独立的开源项目nest_hub项目需要将它们作为子模块或依赖进行集成和配置。设备抽象与统一模型不同协议、不同品牌的设备上报的数据格式千差万别。核心服务层需要定义一个统一的设备模型例如一个“灯”有开关、亮度、色温属性一个“传感器”有温度、湿度状态。然后编写具体的“驱动程序”或“转换器”将特定设备的数据映射到这个统一模型上。这是实现跨品牌、跨协议控制的关键。状态管理与事件总线所有设备的实时状态需要被集中管理。当某个设备状态变化比如灯被手动关闭或接收到用户指令通过界面或语音这个变化需要被快速、可靠地通知到所有关心它的组件如界面UI、自动化引擎、日志系统。这通常通过一个内部的“事件总线”Event Bus或消息队列如 MQTT Broker即便是内部通信也常用来实现。注意在这一层最大的挑战是设备兼容性。并非所有设备都能被完美支持。项目维护者需要为大量设备编写和维护“集成”代码。社区贡献在这里至关重要。作为使用者在选型设备时最好优先选择项目文档中明确列出已支持或拥有活跃社区驱动的型号。2.2 用户界面层Web DashboardNest Hub 的标志性特性之一是其直观的触摸屏界面。contextzero/nest_hub要实现类似体验一个响应式、美观的 Web 控制面板是必不可少的。这通常是一个独立的前端项目可能是用 Vue.js、React 或 Svelte 等现代前端框架构建的。实时数据绑定前端需要与后端的核心服务层建立实时连接通常通过 WebSocket以确保界面上显示的设备状态如灯是否亮着、当前温度是即时更新的无需手动刷新。设备控制组件为每种类型的设备开关、调光灯、温控器、摄像头流开发对应的 UI 控件。这些控件不仅用于显示状态还要能发送控制指令。场景与自动化配置界面提供图形化或表单式的界面让用户可以创建复杂的联动规则如“当人体传感器检测到移动且环境光暗时自动打开走廊灯”。2.3 自动化引擎规则与场景这是让智能家居真正“智能”起来的大脑。它需要提供一个强大的规则引擎允许用户基于设备状态、时间、甚至外部信息如天气API来触发一系列动作。触发器Trigger例如“当温度传感器数值高于28℃”、“在每天日落时间”、“当大门门锁状态变为‘已解锁’”。条件Condition可选的判断逻辑例如“并且是工作日”、“并且客厅没人”。动作Action满足条件后执行的操作例如“打开空调并设定为26℃”、“向手机发送一条通知”、“播放一段语音提示”。这个引擎可能是项目自研的也可能是集成了成熟的第三方开源规则引擎。它的稳定性和性能直接决定了自动化响应的速度和可靠性。2.4 语音助手集成可选但关键为了媲美 Nest Hub 的体验语音控制几乎是必选项。但这部分也是最复杂、法律风险最高的。项目不太可能自研一个完整的语音识别ASR和自然语言理解NLU引擎更可行的方案是桥接。本地语音识别方案集成像Vosk、Coqui STT这样的开源、可离线运行的语音识别库。这能实现基本的本地语音指令识别隐私性最好但对硬件有一定要求需要一定的CPU算力且识别准确率和自然语言处理能力有限。桥接主流助手通过模拟设备或开发技能Skill/Action的方式与现有的语音助手平台如开源的Rhasspy或通过非官方API与某些商业平台进行交互。用户对“桥接设备”说话指令被转发到nest_hub的核心引擎执行。这种方式体验更接近商业产品但依赖于外部服务的稳定性和可用性且可能存在法律合规风险。3. 部署实践与核心配置解析假设我们想在树莓派4B上部署contextzero/nest_hub这是一个非常典型的场景。以下是基于开源项目通用实践的一个详细部署和配置推演。3.1 基础环境准备与项目获取首先需要一个干净的操作系统。对于树莓派Raspberry Pi OS Lite无桌面是首选节省资源。# 更新系统 sudo apt update sudo apt upgrade -y # 安装基础依赖如 Git、Python3、Node.js版本需根据项目要求、Docker如果项目采用容器化部署 sudo apt install git curl python3-pip nodejs npm -y # 安装 Docker 和 Docker Compose假设项目推荐容器化部署 curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo usermod -aG docker $USER sudo pip3 install docker-compose # 注销并重新登录或执行 newgrp docker 使组权限生效 newgrp docker接下来获取项目代码。通常项目会托管在 GitHub 或 GitLab 上。git clone https://github.com/contextzero/nest_hub.git cd nest_hub3.2 核心配置文件详解开源项目通常通过配置文件来定制化所有功能。我们需要重点关注几个文件configuration.yaml(或config.yaml)这是主配置文件定义了核心参数。# 示例结构非真实配置 server: host: 0.0.0.0 # 监听所有网络接口 port: 8123 # Web 访问端口 ssl_certificate: /path/to/cert.pem # HTTPS证书内网可不用 ssl_key: /path/to/key.pem # 日志配置 log: level: info # 日志级别: debug, info, warning, error file: /var/log/nest_hub/nest_hub.log # 数据库配置用于存储设备状态、自动化规则等 database: type: sqlite # 简单场景用SQLite生产可用PostgreSQL path: /opt/nest_hub/data/home-assistant.db # 前端界面配置 frontend: themes: true # 是否启用主题 development: false # 开发模式生产环境应为falseintegrations/目录或配置段这里是设备集成的核心。你需要为你拥有的每一种协议或设备平台添加配置。# 示例MQTT集成用于连接ESPHome、Tasmota等Wi-Fi设备 mqtt: broker: 192.168.1.100 # 你的MQTT服务器地址 port: 1883 username: mqtt_user password: !secret mqtt_password # 密码建议存储在secrets.yaml # 示例Zigbee集成通过zigbee2mqtt # 注意这里可能不是直接配置而是通过MQTT接入zigbee2mqtt网关 # 需要在zigbee2mqtt的配置中将设备事件发布到MQTTnest_hub通过MQTT集成来发现它们。 # 示例HTTP RESTful设备某些简单的Wi-Fi插座 rest: - resource: http://192.168.1.101/status sensor: - name: Living Room Plug Power value_template: {{ value_json.power }} unit_of_measurement: Wsecrets.yaml非常重要所有敏感信息密码、API密钥、令牌都应放在这个文件并在主配置中引用。此文件不应提交到版本库。mqtt_password: your_secure_mqtt_password_here weather_api_key: your_openweathermap_api_key telegram_bot_token: your_telegram_bot_tokenautomations.yaml自动化规则定义文件。- alias: Turn on hallway light at sunset trigger: platform: sun event: sunset action: - service: light.turn_on target: entity_id: light.hallway_ceiling - alias: Notify if garage door left open trigger: platform: state entity_id: binary_sensor.garage_door to: on for: minutes: 10 action: - service: notify.mobile_app data: message: 车库门已经打开超过10分钟3.3 硬件适配与外围设备连接要让中枢真正控制硬件需要连接相应的无线适配器。Zigbee协调器将 Zigbee USB 棒如 CC2652P、EZSP 等插入树莓派 USB 口。在系统中它通常会被识别为/dev/ttyACM0或/dev/ttyUSB0。你需要在zigbee2mqtt的配置中指定这个端口。Z-Wave控制器类似地插入 Z-Wave USB 棒如 Aeotec Z-Stick。系统识别后在zwave-js配置中指定端口。注意事项USB延长线强烈建议使用 USB 延长线最好带磁环将无线适配器远离树莓派主板放置以减少主板电磁干扰对无线信号接收的影响。这是提升 Zigbee/Z-Wave 网络稳定性的一个关键小技巧。权限问题确保运行nest_hub服务的用户如docker容器内的用户或指定的系统用户有读写对应/dev/tty*设备的权限。在 Docker 中通常需要通过--device参数将设备映射进容器。3.4 启动与初始化如果项目提供了docker-compose.yml部署会非常简单。# 假设的 docker-compose.yml 示例 version: 3.8 services: nest_hub: image: contextzero/nest_hub:latest # 假设有官方镜像 container_name: nest_hub restart: unless-stopped ports: - 8123:8123 # 映射Web端口 volumes: - ./config:/config # 挂载配置文件目录 - ./data:/data # 挂载数据目录 # 挂载设备如果使用USB适配器 - /dev/ttyACM0:/dev/ttyACM0:rwm - /dev/ttyUSB0:/dev/ttyUSB0:rwm devices: - /dev/ttyACM0:/dev/ttyACM0 - /dev/ttyUSB0:/dev/ttyUSB0 environment: - TZAsia/Shanghai # 设置时区启动服务docker-compose up -d启动后通过浏览器访问http://你的树莓派IP:8123即可进入初始化向导开始添加设备、配置区域和房间。4. 设备集成实战与避坑指南添加设备是智能家居中枢搭建中最具实操性的环节也是踩坑最多的地方。我们以添加一个 Zigbee 智能插座和一个 Wi-Fi 摄像头为例。4.1 Zigbee设备配对以智能插座为例确保协调器就绪首先确认zigbee2mqtt服务如果作为独立容器运行或集成的 Zigbee 组件已正确配置并运行且能识别到你的 Zigbee USB 协调器。进入配对模式在nest_hub的 Web 界面中找到“集成”或“设备添加”页面选择“Zigbee”或“Zigbee2MQTT”开始扫描新设备。同时根据你的智能插座说明书使其进入配对模式通常是长按按钮直到指示灯快速闪烁。处理配对结果成功几秒到几十秒内设备会出现在“发现的新设备”列表中。你可以为其命名如“书房台灯插座”并分配到某个房间。失败如果长时间未发现尝试以下步骤距离将设备尽可能靠近协调器进行配对成功后再移至最终位置。干扰远离大型金属物体、微波炉、无绳电话等2.4GHz干扰源。重置设备有些设备需要先彻底重置通常有特定的长按序列才能被新网络接纳。查看日志在zigbee2mqtt或nest_hub的日志中查看是否有错误信息。常见的错误是“不支持该设备型号”。这时你需要去zigbee2mqtt的官方设备支持列表页面查找你的设备型号看是否需要特定的“转换器”converter或配置。你可能需要手动编辑zigbee2mqtt的configuration.yaml添加或修改设备定义。实操心得Zigbee 设备配对“先近后远”是黄金法则。先放在协调器旁边配对成功建立起通信链路再断电移到需要的位置上电成功率远高于直接远程配对。另外建立一个由路由器设备如常供电的智能插座、灯泡组成的网状网络能极大增强边缘设备如电池供电的传感器的信号覆盖和稳定性。4.2 Wi-Fi摄像头集成RTSP流接入很多家用摄像头支持 RTSP实时流传输协议流。nest_hub可以通过FFmpeg集成来接入并显示这些视频流。获取摄像头RTSP地址这是最关键的一步。通常格式为rtsp://username:passwordcamera_ip:port/stream_path。你需要查阅摄像头说明书或登录摄像头管理界面查找。不同品牌路径差异很大例如海康威视rtsp://admin:password192.168.1.20:554/h264/ch1/main/av_stream大华rtsp://admin:password192.168.1.21:554/cam/realmonitor?channel1subtype0通用ONVIF可能需要用 ONVIF 设备管理工具如ONVIF Device Manager来探测流地址。在配置中添加摄像头# 在 configuration.yaml 中 camera: - platform: ffmpeg name: Front Door Camera input: rtsp://admin:your_password192.168.1.20:554/stream1 extra_arguments: -pred 1 -q:v 2 -rtsp_transport tcp # 额外的FFmpeg参数-rtsp_transport tcp 能提高稳定性性能与稳定性调优硬件解码如果树莓派负载过高可以尝试启用硬件解码。对于树莓派可以在extra_arguments中添加-c:v h264_mmal针对H.264编码。子流很多摄像头支持主码流高清和子码流标清。在卡片上显示时使用子码流地址如.../stream2可以显著降低CPU占用和网络延迟。TCP传输-rtsp_transport tcp参数强制使用TCP传输RTSP流比默认的UDP更稳定不易花屏但延迟稍高。5. 自动化进阶打造实用场景自动化是智能家居的灵魂。contextzero/nest_hub的规则引擎应该支持丰富的触发器和条件。下面设计几个复杂一点的实用场景。5.1 场景一智能起床唤醒目标工作日早上根据日出时间逐渐亮起卧室灯并播放轻柔的音乐或新闻。- alias: Weekday Morning Wake-up trigger: # 触发器1在工作日日出时间前10分钟触发 - platform: sun event: sunrise offset: -00:10 # 触发器2作为备用设定一个固定时间如7:00防止阴天日出计算过早或过晚 - platform: time at: 07:00:00 condition: # 条件必须是工作日 - condition: time weekday: - mon - tue - wed - thu - fri action: # 动作1缓慢打开卧室主灯亮度从0%到70%持续20分钟 - service: light.turn_on target: entity_id: light.bedroom_main data: brightness_pct: 0 transition: 1200 # 20分钟单位秒 - delay: 00:00:30 # 等待30秒后开始增加亮度 - service: light.turn_on target: entity_id: light.bedroom_main data: brightness_pct: 70 # 动作2在开始亮灯5分钟后通过媒体播放器播放指定播放列表 - delay: 00:05:00 - service: media_player.play_media target: entity_id: media_player.bedroom_speaker data: media_content_id: playlist://morning_chill media_content_type: music5.2 场景二离家布防与节能目标当最后一个家庭成员离开家时自动执行一系列安全与节能操作。这个场景的关键是判断“最后一个家庭成员离开”。我们可以利用每个人的手机通过家庭Wi-Fi的在线状态作为“在家”判断依据通过路由器集成或手机上的追踪应用或者使用地理围栏通过官方App或OwnTracks等开源方案。这里假设我们使用device_tracker组件追踪了两部手机。- alias: Away Mode - Security Energy Save trigger: # 触发器当所有被追踪的设备手机状态变为 not_home 时触发 platform: state entity_id: - device_tracker.phone_mom - device_tracker.phone_dad to: not_home for: minutes: 5 # 持续5分钟不在家才触发避免误判如临时下楼 condition: # 条件确保在触发时没有其他人在家例如通过一个手动设置的“客人在家”虚拟开关来覆盖 - condition: state entity_id: input_boolean.guest_mode state: off action: # 动作序列 - service: scene.turn_on target: entity_id: scene.all_lights_off - service: climate.turn_off target: entity_id: - climate.living_room_ac - climate.bedroom_ac - service: switch.turn_off target: entity_id: switch.coffee_maker # 启动安防开启摄像头移动侦测录像激活门窗传感器警报 - service: camera.turn_on target: entity_id: camera.front_door - service: alarm_control_panel.alarm_arm_away target: entity_id: alarm_control_panel.house # 发送通知到手机 - service: notify.mobile_app data: message: 全家已外出安防模式已启动。 title: 离家模式激活5.3 场景三基于环境传感器的舒适度调节目标根据室内温湿度、空气质量传感器数据自动控制空调、加湿器、空气净化器。- alias: Auto Comfort Control - Living Room trigger: # 多种触发器温度、湿度、CO2浓度变化 - platform: numeric_state entity_id: sensor.living_room_temperature above: 26 # 温度高于26℃ - platform: numeric_state entity_id: sensor.living_room_temperature below: 18 # 温度低于18℃ - platform: numeric_state entity_id: sensor.living_room_humidity below: 40 # 湿度低于40% - platform: numeric_state entity_id: sensor.living_room_co2 above: 1000 # CO2高于1000ppm condition: # 条件仅当有人在客厅时执行通过人体传感器或手动状态 - condition: or conditions: - condition: state entity_id: binary_sensor.living_room_motion state: on - condition: state entity_id: input_boolean.living_room_occupied state: on action: # 根据不同的触发条件选择不同的动作 - choose: - conditions: - {{ trigger.entity_id sensor.living_room_temperature and trigger.to_state.state | float 26 }} sequence: - service: climate.turn_on target: entity_id: climate.living_room_ac - service: climate.set_temperature target: entity_id: climate.living_room_ac data: temperature: 25 - conditions: - {{ trigger.entity_id sensor.living_room_temperature and trigger.to_state.state | float 18 }} sequence: - service: climate.turn_on target: entity_id: climate.living_room_ac - service: climate.set_hvac_mode target: entity_id: climate.living_room_ac data: hvac_mode: heat - service: climate.set_temperature target: entity_id: climate.living_room_ac data: temperature: 21 - conditions: - {{ trigger.entity_id sensor.living_room_humidity and trigger.to_state.state | float 40 }} sequence: - service: switch.turn_on target: entity_id: switch.humidifier - conditions: - {{ trigger.entity_id sensor.living_room_co2 and trigger.to_state.state | float 1000 }} sequence: - service: fan.turn_on target: entity_id: fan.air_purifier - service: fan.set_percentage target: entity_id: fan.air_purifier data: percentage: 80 default: []6. 常见问题排查与性能优化在长期运行contextzero/nest_hub这类中枢系统的过程中一定会遇到各种问题。以下是一些典型问题的排查思路和优化建议。6.1 设备无响应或延迟高现象在App里点击开关灯要等好几秒才响应或者干脆没反应。排查步骤检查设备状态首先在nest_hub的“开发者工具” - “状态”页面查看该设备对应的实体entity状态。如果状态更新缓慢或不变问题出在通信链路上。区分协议Zigbee/Z-Wave设备检查协调器/控制器的日志看指令是否成功发送设备是否应答。使用网络地图工具如zigbee2mqtt的frontend查看设备链路质量LQI和信号强度RSSI。如果数值很差如RSSI -80考虑添加中继路由器如常供电的智能插座或调整设备位置。Wi-Fi/MQTT设备检查你的MQTT服务器如 Mosquitto是否运行正常网络是否通畅。在MQTT客户端订阅设备主题看指令消息是否被发布、设备是否回复状态更新。检查自动化与脚本如果延迟只发生在特定自动化触发时检查该自动化是否包含耗时的操作如调用外部API或delay。复杂的条件判断也可能引入延迟。优化建议网络分层对于 Zigbee/Z-Wave确保网络中有足够多的“路由器”设备常供电设备形成健壮的网状网络。MQTT优化确保MQTT Broker运行在性能足够的设备上并配置合理的持久化策略。对于高频更新的传感器可以考虑增加qos: 0并设置retain: false以减少 Broker 负担。减少轮询对于通过HTTP REST集成的设备避免设置过短的扫描间隔scan_interval。6.2 系统运行缓慢或卡顿现象Web界面加载慢自动化执行迟缓日志中出现超时错误。排查与优化资源监控通过htop或docker stats命令查看CPU、内存占用。树莓派4B运行完整的中枢加上多个集成内存占用接近1GB是正常的但若持续交换swap就需要优化。数据库优化如果使用SQLite且运行时间很长数据库文件可能膨胀并碎片化。可以定期如每月在维护时段执行VACUUM命令需先停止服务。对于历史数据利用nest_hub的“记录器”Recorder组件将不常查询的实体如高频更新的传感器记录间隔调大或将其从长期记录中排除。日志级别将生产环境的日志级别设置为warning或error避免大量的info级别日志拖慢I/O。审视集成禁用或移除不常用的集成。某些集成如某些天气服务可能因网络问题频繁重试消耗资源。硬件升级如果设备数量众多50自动化复杂考虑升级硬件。从树莓派4B升级到更强大的x86迷你主机如英特尔NUC性能会有质的提升特别是处理摄像头流和复杂数据库查询时。6.3 自动化规则不触发或误触发现象设定的自动化该动的时候不动不该动的时候乱动。排查检查触发器状态使用“开发者工具” - “事件”监听器监听你自动化所关注的触发器事件如state_changed确认事件是否按预期发生。检查条件在自动化配置中临时注释掉所有条件看自动化是否能触发。如果能说明问题出在条件判断上。仔细检查条件中的实体ID和状态值是否正确时间条件是否符合预期。理解“for”参数for参数表示状态持续一段时间后才满足触发条件。确保你理解它的行为。例如一个to: on且for: 00:05:00的触发器需要在状态变为on后并保持5分钟才会触发一次。避免循环触发这是常见陷阱。例如自动化A打开了灯而触发器是“灯状态变为on”这会导致自动化A自己触发自己形成死循环。解决方案是在动作中避免改变触发实体或使用更精确的触发条件如from: offto: on。6.4 备份与恢复策略系统配置和自动化是你的心血必须定期备份。备份内容整个config目录包含configuration.yaml,automations.yaml,secrets.yaml等。数据库文件如果独立于config目录。Docker Compose 文件或服务配置文件。备份方法手动定期使用rsync或scp将上述目录拷贝到另一台机器或NAS。自动化编写一个简单的Shell脚本用tar打包相关目录然后通过rclone同步到云存储如加密后上传到Google Drive或Backblaze B2。# 示例备份脚本 backup_nest_hub.sh #!/bin/bash BACKUP_DIR/path/to/backups CONFIG_DIR/opt/nest_hub/config STAMP$(date %Y%m%d_%H%M%S) tar -czf $BACKUP_DIR/nest_hub_backup_$STAMP.tar.gz $CONFIG_DIR # 可选使用rclone上传到云 # rclone copy $BACKUP_DIR/nest_hub_backup_$STAMP.tar.gz remote:backup_folder/恢复测试定期在测试环境如虚拟机中演练恢复流程确保备份是有效的。恢复时只需将备份的config目录覆盖到新安装的nest_hub对应目录然后重启服务即可。大部分配置和自动化都能无缝迁移。搭建和维护像contextzero/nest_hub这样的开源智能家居中枢是一个持续学习和调优的过程。它给予了你无与伦比的控制权和灵活性但也将系统稳定性的责任完全交给了你自己。从设备选型、网络规划到自动化逻辑设计、故障排查每一个环节都需要投入精力。但当你晚上回家门廊灯自动亮起空调已调到舒适的温度这一切的繁琐都会变得值得。这套系统的真正魅力在于它完全按照你的生活习惯来塑造并且随着你的需求成长和变化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2613359.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…