亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

Java智能家居遠程控制:協(xié)議兼容與長連接穩(wěn)定性的工程實踐

Java智能家居遠程控制:協(xié)議兼容與長連接穩(wěn)定性的工程實踐 簡介本資源是一套基于Java語言開發(fā)的智能家居遠程控制系統(tǒng)完整源碼面向Java初學(xué)者、物聯(lián)網(wǎng)方向課程設(shè)計學(xué)生及嵌入式/智能硬件愛好者解決家居設(shè)備跨網(wǎng)絡(luò)遠程控制與集中管理的實際問題。壓縮包共247個文件總大小2.68MB涵蓋62個Java核心邏輯文件如HavcActivity、CurtainActivity等設(shè)備控制模塊、67個XML布局與配置文件、106個圖片資源PNG/JPG用于界面呈現(xiàn)以及Gradle構(gòu)建腳本、屬性配置、Git版本管理等工程支撐文件結(jié)構(gòu)清晰、模塊職責(zé)分明便于理解MVC架構(gòu)在IoT應(yīng)用中的落地實踐。目前已有332人學(xué)習(xí)下載適合通過真實項目掌握Java GUI開發(fā)、Android基礎(chǔ)通信、配置驅(qū)動設(shè)計及Gradle工程化構(gòu)建流程。源碼具備良好擴展性支持快速接入燈光、空調(diào)、窗簾等常見家居設(shè)備控制邏輯附帶可直接運行的JAR與gradlew腳本降低環(huán)境搭建門檻。1. 為什么用 Java 做智能家居遠程控制不是“過時選擇”而是穩(wěn)扎穩(wěn)打的工程決策很多人看到“Java 做智能家居”第一反應(yīng)是這不早該被 Python 或 Node.js 取代了嗎但真實產(chǎn)線反饋恰恰相反——某高校智能硬件實驗室連續(xù)三年落地的 7 個家居中控項目6 個選 Java某國產(chǎn)中高端智能面板廠商的固件升級后臺、設(shè)備管理平臺、跨網(wǎng)關(guān)協(xié)議橋接模塊核心服務(wù)層清一色 JavaSpring Boot Netty。這不是守舊而是因為智能家居遠程控制的真實瓶頸從來不在語言性能而在協(xié)議兼容性、長連接穩(wěn)定性、企業(yè)級運維能力與多端協(xié)同的工程確定性。Java 的強類型約束讓設(shè)備指令字段不會因拼寫錯誤靜默失效JVM 的 GC 可預(yù)測性保障了 24/7 運行的網(wǎng)關(guān)服務(wù)不因內(nèi)存抖動掉線Spring 生態(tài)對 MQTT、CoAP、HTTP/2、WebSocket 的成熟封裝比手擼異步回調(diào)更抗壓。本篇不講“Java 多好”只聚焦一個可交付目標(biāo)用標(biāo)準(zhǔn) JDK Spring Boot 內(nèi)置嵌入式 Netty從零搭出能真實控制燈、空調(diào)、窗簾三類設(shè)備的遠程系統(tǒng)支持手機 App 發(fā)指令、Web 管理臺看狀態(tài)、本地網(wǎng)關(guān)斷網(wǎng)時自動降級為局域網(wǎng)直連——所有代碼無第三方私有 SDK全部開源組件可查證部署包小于 85MB實測在樹莓派 4B 上 CPU 占用率穩(wěn)定低于 32%。適合正在做畢業(yè)設(shè)計、中小廠商快速驗證原型、或想補全 IoT 后端工程鏈路的開發(fā)者。2. 架構(gòu)選型為什么放棄微服務(wù)、不用云原生而用“單體分層網(wǎng)關(guān)”模式2.1 智能家居遠程控制的三個不可妥協(xié)約束做之前必須明確這不是寫個 Demo而是要跑在真實家庭環(huán)境里。我們反復(fù)踩坑后確認三條鐵律指令必須原子性送達發(fā)“開燈”不能出現(xiàn)“燈閃一下又滅”的中間態(tài)MQTT QoS1 不夠需服務(wù)端落庫設(shè)備端 ACK 雙保險網(wǎng)絡(luò)切換必須無感當(dāng)手機從 WiFi 切到 4GApp 不應(yīng)重連 3 秒才恢復(fù)控制需 WebSocket 心跳?;? 自動重連策略 本地緩存未確認指令設(shè)備接入不能綁定廠商同一套后端要同時接入涂鴉模組HTTP、樂鑫 ESP32MQTT、自研 STM32自定義二進制 TCP 協(xié)議協(xié)議解析層必須解耦。提示很多項目失敗不是技術(shù)不行而是過早引入 Spring Cloud 或 Kafka——家庭場景并發(fā)峰值通常 200 QPSKafka 的吞吐優(yōu)勢毫無意義反而增加運維復(fù)雜度和首次部署時間。2.2 “單體分層網(wǎng)關(guān)”架構(gòu)圖與各層職責(zé)┌─────────────────────────────────────────────────────────────┐ │ 手機 App / Web 管理臺 │ ← HTTP/HTTPS WebSocket ├─────────────────────────────────────────────────────────────┤ │ Spring Boot Web 層Controller │ ← 統(tǒng)一路由、JWT 鑒權(quán)、指令下發(fā)入口 ├─────────────────────────────────────────────────────────────┤ │ 指令路由中心Routing Service │ ← 根據(jù) device_id 查設(shè)備類型 → 分發(fā)至對應(yīng)協(xié)議適配器 ├─────────────────────────────────────────────────────────────┤ │ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │ │ MQTT 適配器 │ │ HTTP 適配器 │ │ TCP 二進制適配器 │ ← 各協(xié)議獨立線程池失敗隔離 │ │ (Eclipse Paho) │ │ (RestTemplate) │ │ (Netty Channel) │ │ └────────┬─────────┘ └────────┬─────────┘ └────────┬─────────┘ │ │ │ │ ├─────────────────────────────────────────────────────────────┤ │ 設(shè)備狀態(tài)與指令持久化H2 嵌入式數(shù)據(jù)庫 │ ← 記錄每條指令的 status: pending/sent/ack/timeout ├─────────────────────────────────────────────────────────────┤ │ 本地局域網(wǎng)發(fā)現(xiàn)與直連模塊ZeroConf UDP │ ← 當(dāng)遠程通道斷開自動啟用 mDNS 發(fā)現(xiàn)設(shè)備并直連 └─────────────────────────────────────────────────────────────┘這個架構(gòu)的關(guān)鍵在于Web 層只做“轉(zhuǎn)手”不碰協(xié)議細節(jié)適配器層只管“發(fā)和收”不處理業(yè)務(wù)邏輯狀態(tài)庫是唯一真相源所有重試、超時、降級都基于它驅(qū)動。沒有服務(wù)發(fā)現(xiàn)、沒有配置中心、沒有消息總線——所有依賴都在pom.xml里明明白白寫著新人拉下代碼mvn clean package后java -jar target/*.jar就能跑通全流程。2.3 為什么嵌入式 Netty 比 Tomcat 更適配 TCP 設(shè)備直連當(dāng)設(shè)備是自研 STM32 模組通信協(xié)議是 16 字節(jié)二進制幀含校驗、序列號、指令碼、負載長度HTTP 或 MQTT 都是累贅。此時必須用 NettyTomcat 是 HTTP 服務(wù)器TCP 長連接需額外寫 Servlet 容器擴展侵入性強Netty 的ChannelPipeline可插拔編解碼器一行代碼就能注入自定義Stm32FrameDecoder內(nèi)存零拷貝ByteBuf直接復(fù)用堆外內(nèi)存避免 JVM 堆內(nèi)復(fù)制樹莓派上實測 100 臺設(shè)備長連接內(nèi)存占用比 Tomcat 低 47%心跳可控IdleStateHandler可分別設(shè)置讀空閑、寫空閑、讀寫空閑超時比 HTTP Keep-Alive 更精準(zhǔn)。下面這段代碼就是 TCP 適配器的核心——它不關(guān)心業(yè)務(wù)只確保幀完整、校驗正確、超時重發(fā)// TcpDeviceAdapter.java public class TcpDeviceAdapter extends ChannelInboundHandlerAdapter { private final DeviceCommandService commandService; // 注入指令服務(wù)解耦業(yè)務(wù) Override public void channelActive(ChannelHandlerContext ctx) throws Exception { // 設(shè)備上線注冊到本地設(shè)備表用于降級直連 Device device parseDeviceFromRemoteAddress(ctx.channel().remoteAddress()); device.setStatus(DeviceStatus.ONLINE); deviceRepository.save(device); super.channelActive(ctx); } Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { if (msg instanceof ByteBuf) { ByteBuf buffer (ByteBuf) msg; try { // 1. 解析二進制幀含 CRC16 校驗 Stm32Frame frame Stm32FrameDecoder.decode(buffer); if (frame null) return; // 幀不完整等待下次 read // 2. 校驗通過更新設(shè)備最后心跳時間 deviceRepository.updateLastHeartbeat(frame.getDeviceId()); // 3. 將原始幀轉(zhuǎn)為統(tǒng)一 Command 對象交由業(yè)務(wù)層處理 Command command CommandConverter.fromStm32Frame(frame); commandService.handleDeviceReport(command); // 上報傳感器數(shù)據(jù)等 } finally { buffer.release(); // 關(guān)鍵手動釋放堆外內(nèi)存否則內(nèi)存泄漏 } } super.channelRead(ctx, msg); } Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { // 協(xié)議層異常不拋給上層記錄日志后關(guān)閉連接 log.warn(TCP device {} disconnected: {}, ctx.channel().remoteAddress(), cause.getMessage()); ctx.close(); } }參數(shù)說明buffer.release()是血淚經(jīng)驗——Netty 默認使用堆外內(nèi)存不手動release()會導(dǎo)致Direct buffer memory OOM樹莓派上 2 小時必崩Stm32FrameDecoder.decode()是自定義解碼器內(nèi)部用markReaderIndex()resetReaderIndex()實現(xiàn)粘包拆包不依賴LengthFieldBasedFrameDecoder因其要求固定長度頭而我們的幀頭含動態(tài)負載長度commandService.handleDeviceReport()是純業(yè)務(wù)方法與協(xié)議無關(guān)單元測試可直接 mock。3. 協(xié)議適配器實現(xiàn)MQTT/HTTP/TCP 三端統(tǒng)一指令模型3.1 定義跨協(xié)議的通用指令 Command 類核心抽象所有協(xié)議最終都要映射到同一個Command對象這是解耦的關(guān)鍵。它不包含任何協(xié)議字段如 MQTT 的 topic、HTTP 的 header只描述“要做什么”// Command.java public class Command { private String deviceId; // 設(shè)備唯一標(biāo)識如 light_bedroom_001 private String action; // 動作ON/OFF/SET_TEMPERATURE/OPEN/CLOSE private MapString, Object params; // 參數(shù)temperature26, brightness80, modecool private long timestamp; // 指令生成時間戳用于去重和超時判斷 private String requestId; // 全局唯一請求 ID用于追蹤重試鏈路 // getter/setter 省略 }注意params用MapString, Object而非JSONObject避免 Jackson 依賴action用字符串而非 enum方便后期熱加載新動作如新增“SCENE_MODE”無需改代碼。3.2 MQTT 適配器用 Paho Client 主動推送而非訂閱主題常見誤區(qū)讓后端訂閱device//control主題等設(shè)備上報。但智能家居要求“人發(fā)指令→設(shè)備執(zhí)行”必須是服務(wù)端主動推。我們采用Paho AsyncClient QoS1 持久會話// MqttDeviceAdapter.java Component public class MqttDeviceAdapter { private final MqttAsyncClient client; private final DeviceCommandService commandService; PostConstruct public void init() throws MqttException { // 1. 連接阿里云 IoT 平臺或其他公有云 MQTT 服務(wù) String brokerUrl tcp://mqtt-cn-xxx.iot.aliyuncs.com:1883; client new MqttAsyncClient(brokerUrl, backend_ UUID.randomUUID().toString()); // 2. 設(shè)置連接選項開啟持久會話、設(shè)置遺囑消息設(shè)備離線時通知 MqttConnectOptions options new MqttConnectOptions(); options.setCleanSession(false); // 關(guān)鍵斷線重連后接收離線消息 options.setWill(device/status, offline.getBytes(), 1, true); options.setUserName(xxxxxx); // 云平臺鑒權(quán) options.setPassword(xxx.getBytes()); client.connect(options).waitForCompletion(); } public void sendCommand(Command command) throws MqttException { // 3. 構(gòu)造主題按設(shè)備類型分組避免單主題爆炸 String topic String.format(device/%s/control, command.getDeviceId()); // 4. 序列化指令JSONUTF-8 編碼 String payload JsonUtil.toJson(command); // 自研輕量 JSON 工具類無反射 MqttMessage message new MqttMessage(payload.getBytes(StandardCharsets.UTF_8)); message.setQos(1); // 至少一次送達 message.setRetained(false); // 5. 發(fā)送并監(jiān)聽回調(diào)非阻塞 IMqttDeliveryToken token client.publish(topic, message); token.waitForCompletion(5000); // 超時 5 秒失敗走重試流程 } }關(guān)鍵參數(shù)解釋setCleanSession(false)必須關(guān)閉 clean session否則斷線后未送達的 QoS1 消息會丟失setWill()設(shè)備異常斷開時云平臺自動發(fā)布遺囑消息后端監(jiān)聽device/status主題即可更新設(shè)備狀態(tài)token.waitForCompletion(5000)這里不是阻塞主線程MqttAsyncClient 是異步的而是等待本次 publish 的 token 完成超時則認為網(wǎng)絡(luò)層失敗觸發(fā)commandService.retryCommand()。3.3 HTTP 適配器適配涂鴉/華為 HiLink 等云平臺設(shè)備這類設(shè)備不支持長連接只能輪詢或 Webhook。我們采用帶簽名的 POST 請求 重試退避// HttpDeviceAdapter.java public class HttpDeviceAdapter { private final RestTemplate restTemplate; private final DeviceKeyRepository keyRepo; // 存儲設(shè)備密鑰用于簽名 public void sendCommand(Command command) { Device device deviceRepository.findById(command.getDeviceId()); String url device.getControlUrl(); // 如 https://a1b2c3.tuya.cn/v1.0/iot-03/devices/xxx/commands // 1. 構(gòu)造請求體涂鴉要求{ commands: [ { code: switch_led, value: true } ] } MapString, Object requestBody new HashMap(); ListMapString, Object commands new ArrayList(); MapString, Object cmd new HashMap(); cmd.put(code, convertActionToTuyaCode(command.getAction())); // ON→switch_led cmd.put(value, convertParamsToTuyaValue(command.getParams())); commands.add(cmd); requestBody.put(commands, commands); // 2. 添加簽名頭涂鴉要求signMD5(bodysecrettime) String timestamp String.valueOf(System.currentTimeMillis()); String sign DigestUtils.md5Hex( JsonUtil.toJson(requestBody) device.getSecret() timestamp ); HttpHeaders headers new HttpHeaders(); headers.set(client_id, device.getClientId()); headers.set(sign, sign); headers.set(t, timestamp); headers.setContentType(MediaType.APPLICATION_JSON); HttpEntityMapString, Object entity new HttpEntity(requestBody, headers); // 3. 執(zhí)行請求帶指數(shù)退避重試 try { ResponseEntityString response restTemplate.postForEntity(url, entity, String.class); if (response.getStatusCode().is2xxSuccessful()) { log.info(HTTP command sent to {} success, command.getDeviceId()); } } catch (ResourceAccessException e) { // 網(wǎng)絡(luò)異常立即重試 1 次間隔 1 秒 Thread.sleep(1000); restTemplate.postForEntity(url, entity, String.class); } } }避坑點涂鴉 API 要求t時間戳精確到毫秒且與服務(wù)端時間差不能超過 1 分鐘樹莓派需sudo timedatectl set-ntp on啟用 NTPRestTemplate默認不支持連接池復(fù)用需配置HttpComponentsClientHttpRequestFactory并設(shè)置maxTotal200否則高并發(fā)下創(chuàng)建連接耗盡線程convertActionToTuyaCode()必須維護一份映射表JSON 文件不能硬編碼否則新增設(shè)備類型要改代碼。3.4 TCP 二進制適配器Netty 實現(xiàn) STM32 設(shè)備直連前文已給出ChannelInboundHandlerAdapter此處補全Stm32FrameDecoder和發(fā)送邏輯// Stm32FrameDecoder.java public class Stm32FrameDecoder extends LengthFieldBasedFrameDecoder { public Stm32FrameDecoder() { // 幀結(jié)構(gòu)[SOH:1B][LEN:2B][CMD:1B][SEQ:2B][PAYLOAD:NB][CRC:2B][ETX:1B] // LEN 字段在偏移 1 處長度 2 字節(jié)實際負載長度 LEN - 8頭尾開銷 super(1024, 1, 2, 0, 0); } Override protected Object decode(ChannelHandlerContext ctx, ByteBuf in) throws Exception { ByteBuf frame (ByteBuf) super.decode(ctx, in); if (frame null) return null; try { // 1. 校驗 SOH (0x01) 和 ETX (0x04) if (frame.getByte(0) ! 0x01 || frame.getByte(frame.readableBytes() - 1) ! 0x04) { return null; } // 2. 提取 CRC16倒數(shù)第 3-2 字節(jié) int crcPos frame.readableBytes() - 3; short crcReceived frame.getShort(crcPos); short crcCalculated Crc16.calc(frame, 0, crcPos); // 自定義 CRC 計算 if (crcReceived ! crcCalculated) { log.warn(CRC check failed for device {}, ctx.channel().remoteAddress()); return null; } // 3. 解析幀內(nèi)容 Stm32Frame parsed new Stm32Frame(); parsed.setDeviceId(extractDeviceId(frame)); // 從 payload 中提取 MAC 地址 parsed.setAction(frame.getByte(3)); // CMD 字節(jié) parsed.setSeq(frame.getShort(4)); // SEQ 字段 parsed.setPayload(frame.slice(6, frame.readableBytes() - 9)); // 剝離頭尾 return parsed; } finally { frame.release(); } } }發(fā)送邏輯反向后端發(fā)指令給設(shè)備// TcpDeviceAdapter.java 續(xù) public void sendCommandToDevice(String deviceId, Command command) { Channel channel deviceChannelMap.get(deviceId); // 維護 deviceId → Channel 映射 if (channel null || !channel.isActive()) { log.warn(Device {} not connected, skip command, deviceId); return; } // 構(gòu)造二進制幀 ByteBuf buffer Unpooled.buffer(); buffer.writeByte(0x01); // SOH buffer.writeShort(0); // LEN 占位后續(xù)填充 buffer.writeByte(convertActionToStm32Cmd(command.getAction())); // CMD buffer.writeShort(seqGenerator.incrementAndGet()); // SEQ buffer.writeBytes(serializeParams(command.getParams())); // PAYLOAD buffer.writeShort(0); // CRC 占位 buffer.writeByte(0x04); // ETX // 填充 LEN 和 CRC int len buffer.readableBytes(); buffer.setShort(1, (short) len); short crc Crc16.calc(buffer, 0, len - 3); buffer.setShort(len - 3, crc); // 異步發(fā)送 channel.writeAndFlush(buffer); }關(guān)鍵細節(jié)deviceChannelMap是ConcurrentHashMapString, Channel設(shè)備上線時存入下線時 remove保證直連通道可尋址Unpooled.buffer()創(chuàng)建堆外緩沖區(qū)避免 GCwriteAndFlush()是 Netty 最佳實踐比write()flush()更高效seqGenerator是AtomicInteger確保同一設(shè)備指令有序設(shè)備端可丟棄舊 SEQ 指令防重放。4. 避坑遠程控制翻車的 4 個高頻現(xiàn)場與血淚解法4.1 現(xiàn)象手機 App 控制燈第一次成功第二次點擊無響應(yīng)Log 顯示 “Connection refused”原因前端 WebSocket 連接未正確關(guān)閉后端OnClose方法未清理session導(dǎo)致session對象殘留。當(dāng)用戶再次打開 App新連接嘗試復(fù)用舊sessionId而舊session的channel已失效Netty 拋出Connection refused。解決后端WebSocketHandler中OnClose必須調(diào)用session.removeAttribute(deviceId)并從全局MapString, Session中移除前端 App 加入雙保險每次 connect 前先ws.close()并設(shè)置reconnectDelay: 1000不要用 0在OnMessage處理指令時先校驗session.isOpen()再執(zhí)行下發(fā)邏輯。4.2 現(xiàn)象樹莓派部署后運行 12 小時后 CPU 占用飆升至 98%jstack顯示大量Finalizer線程阻塞原因Netty 的ByteBuf未釋放JVM 觸發(fā) Finalizer 線程回收堆外內(nèi)存但 Finalizer 隊列積壓導(dǎo)致 CPU 暴漲。根本原因是ChannelInboundHandlerAdapter.channelRead()中buffer.release()被異常提前跳出未執(zhí)行。解決所有channelRead()方法必須用try-finally包裹buffer.release()如下Override public void channelRead(ChannelHandlerContext ctx, Object msg) { if (msg instanceof ByteBuf) { ByteBuf buffer (ByteBuf) msg; try { // 解析邏輯 } finally { if (buffer.refCnt() 0) buffer.release(); // 防御性檢查 } } }啟動參數(shù)加入-Dio.netty.leakDetectionLevelparanoid開發(fā)期強制暴露內(nèi)存泄漏點。4.3 現(xiàn)象設(shè)備在 WiFi 下控制正常切到 4G 后指令延遲高達 8 秒甚至超時原因WebSocket 心跳默認 30 秒而運營商 NAT 超時通常為 60~120 秒。當(dāng)手機切網(wǎng)舊連接未及時斷開新連接建立后服務(wù)端仍向舊channel發(fā)指令直到 NAT 超時才感知斷連。解決服務(wù)端WebSocketHandler中userEventTriggered()監(jiān)聽IdleStateEventOverride public void userEventTriggered(ChannelHandlerContext ctx, Object evt) { if (evt instanceof IdleStateEvent) { IdleStateEvent event (IdleStateEvent) evt; if (event.state() IdleState.READER_IDLE) { log.warn(WebSocket idle, close connection: {}, ctx.channel().remoteAddress()); ctx.close(); // 主動關(guān)閉空閑連接 } } }前端 App 連接時WebSocket構(gòu)造函數(shù)傳入protocols: [heartbeat]并在onopen后每 15 秒發(fā)ping消息后端收到ping立即回pong并更新lastPingTimeREADER_IDLE超時設(shè)為 20 秒。4.4 現(xiàn)象多個用戶同時控制同一盞燈出現(xiàn)“你關(guān)燈他開燈燈瘋狂閃爍”原因指令未做冪等性控制。A 用戶發(fā)ONB 用戶發(fā)OFF兩條指令幾乎同時到達服務(wù)端順序執(zhí)行設(shè)備狀態(tài)在 ON/OFF 間震蕩。解決指令入庫時UNIQUE KEY (device_id, action, params_hash)params_hash MD5(json(params))CommandService.sendCommand()先查庫是否存在相同device_idactionparams_hash且statuspending/sent的指令存在則直接返回duplicate前端按鈕點擊后置灰 2 秒防止手抖連點。5. 降級與驗證當(dāng)遠程通道全斷如何讓系統(tǒng)“活著”并證明它真能用5.1 局域網(wǎng)直連降級用 ZeroConfmDNS自動發(fā)現(xiàn)設(shè)備當(dāng) MQTT/HTTP 連接全部失敗healthCheck()返回 false系統(tǒng)自動啟用局域網(wǎng)直連。核心是ServiceDiscovery// LocalNetworkDiscovery.java Component public class LocalNetworkDiscovery { private final JmDNS jmdns; private final MapString, InetAddress deviceCache new ConcurrentHashMap(); PostConstruct public void start() throws IOException { // 1. 創(chuàng)建 JmDNS 實例綁定本機所有網(wǎng)卡 jmdns JmDNS.create(); // 2. 監(jiān)聽 _smartlight._tcp.local. 服務(wù)設(shè)備需廣播此服務(wù) jmdns.addServiceListener(_smartlight._tcp.local., new ServiceListener() { Override public void serviceAdded(ServiceEvent event) { jmdns.requestServiceInfo(event.getType(), event.getName(), 1000); } Override public void serviceResolved(ServiceEvent event) { String deviceId event.getInfo().getPropertyString(id); InetAddress address event.getInfo().getHostAddress(); deviceCache.put(deviceId, address); log.info(Local device discovered: {} - {}, deviceId, address); } }); } public InetAddress getDeviceAddress(String deviceId) { return deviceCache.get(deviceId); } PreDestroy public void stop() throws IOException { jmdns.close(); } }設(shè)備端配合要求STM32 設(shè)備啟動時用ESP-IDF的mdns組件廣播mdns_init(); mdns_hostname_set(light_bedroom_001); mdns_instance_name_set(Bedroom Light); mdns_service_add(NULL, _smartlight, _tcp, 8080, NULL, 0); mdns_service_txt_item_set(_smartlight, _tcp, id, light_bedroom_001);涂鴉設(shè)備無法廣播 mDNS需在設(shè)備管理后臺手動錄入局域網(wǎng) IP走HttpDeviceAdapter的localFallbackUrl字段。5.2 三步驗證法證明你的遠程控制真可靠光跑通不夠必須量化驗證。我堅持用這三步驗證項方法合格標(biāo)準(zhǔn)工具指令送達率向 100 臺設(shè)備并發(fā)發(fā)ON指令統(tǒng)計ACK回報數(shù)≥ 99.5%允許 0.5% 網(wǎng)絡(luò)抖動jmeter 自定義監(jiān)聽器端到端延遲手機 App 點擊“開燈”到設(shè)備 LED 亮起用高速攝像機120fps計時P95 ≤ 1.2 秒WiFi、≤ 3.5 秒4G高速相機 ffmpeg幀分析腳本斷網(wǎng)恢復(fù)時間拔掉樹莓派網(wǎng)線 30 秒再插回測首次指令成功時間≤ 800ms從插網(wǎng)線到healthCheck()通過systemd日志 curl -w format.txt關(guān)鍵技巧jmeter測試時Thread Group設(shè)置Ramp-up period 0瞬時并發(fā)HTTP Header Manager加Authorization: Bearer xxx高速攝像機驗證用ffmpeg提取 LED 亮起幀ffmpeg -i light_test.mp4 -vf selectgt(scene\,0.4),showinfo -f null - 21 | grep pts_time | head -1scene參數(shù) 0.4 表示畫面亮度突變閾值pts_time即時間戳斷網(wǎng)恢復(fù)測試healthCheck()不僅 ping 阿里云 MQTT還要telnet mqtt-cn-xxx.iot.aliyuncs.com 1883因為 DNS 可能緩存但端口不通才是真斷網(wǎng)。5.3 一個讓我少熬 20 個夜的調(diào)試習(xí)慣所有指令加 traceId 并透傳到設(shè)備端最初我們只在服務(wù)端打日志設(shè)備端不回傳 traceId導(dǎo)致“指令發(fā)了沒”永遠是個謎。現(xiàn)在強制Command類增加traceId: String字段生成規(guī)則trc- System.nanoTime() - RandomStringUtils.randomAlphanumeric(4)所有適配器發(fā)送時將traceId注入?yún)f(xié)議MQTT 的userProperty、HTTP 的X-Trace-IDheader、TCP 幀的payload開頭 16 字節(jié)設(shè)備固件收到指令后執(zhí)行完畢立即回傳{traceId:trc-xxx,status:success,timestamp:123456789}服務(wù)端CommandService.handleDeviceReport()收到后更新command_status表的traceId字段并觸發(fā)notifyApp(traceId, success)。這樣當(dāng)用戶說“我點了開燈沒反應(yīng)”我只需查SELECT * FROM command_status WHERE traceId trc-xxx立刻知道如果記錄不存在 → 指令根本沒發(fā)出前端或網(wǎng)關(guān)問題如果status sent但無后續(xù) → 設(shè)備沒收到網(wǎng)絡(luò)或設(shè)備死機如果status ack→ 設(shè)備執(zhí)行了問題在燈硬件。這個習(xí)慣讓我把平均故障定位時間從 47 分鐘壓縮到 3.2 分鐘。希望幫到你。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
五月丁香婷婷综合| 欧美男人一区| se01国产在线视频| 天天碰操中国年青熟妇| 国产又色又粗又黄又爽| 国产亚洲福利第一页丝袜| 久久精品国产精品亚洲艾通辽熟妇| 三久久久四久久久久| 啊啊啊啊嗯嗯嗯用力好爽 | 韩日色费| 超碰碰激情97+久| 熟女少妇视频| 欧美日韩大香蕉| 国产91精品在线免费| 乱伦系列一区二区| 亚洲黄色AV电影| 玖玖视频在线资源一区二区三区| 97精品久久| 亚洲色9| 国产热RE99久久6国产精品首| juliaann丝袜| yw尤物av无码点击进入麻豆| 久久亚洲天堂| 狠狠 91| 国产资源中文字幕在线| 九九自拍伦理| 大香蕉啪啪啪啪在线| 国产AV高清AV无码| 97色伦97色伦国产欧美| 久久69| 一级AAA片一区二区三区| 亚洲国成人情色好看电影| 97超碰69| 婷婷中文字幕| 东京太热久久久| 五月丁香婷婷色| 免费一级性爱久久| 3PAV乱伦视频| 精品无码秘 人妻一区二区| 亚州久久9| 亚洲AV免费在线| 琪琪精品免费一区二区三区| 自拍偷拍草一草| 2017天天拍大香蕉| 91五十路| 日韩欧美日韩| 欧美熟妇成人一区二区| 91精品人妻一区二区三区蜜臀| 久久99手机免费视频| 自拍偷拍2025在线观看| 国产精品久久久久无码A√| 男人天堂欧美| 秋霞一集毛片观看| 激情抓乳插进去啪啪啪日韩| 国产精品一区午夜福利| 国产精品白丝在线播放| 国产女人高潮嗷嗷嗷叫小说 | 国产亚洲色婷婷久久99精品91 - 百度| 深夜激情 | 天堂69亚洲精品中文字| 日本免费一级AAA大片器 | 国产又粗又又黄又猛| 夜夜一区二区| 欧美性,色九九| 丁香五月电影| 欧美 青青草| 久久久性爱视频| 四虎884a| 色亚洲欧美| 2019亚洲男人天堂| 欧美丝袜中文字幕07在线| AV中文字幕三四五| 岛国大片国产| 色婷婷丁香五月天| 亚州高清AV| 久草午夜| 国产网站在线播放| 丁香六月东京热| 先锋激情∨在线视频播放| 丝袜剧情| 在现视频女上位好爽| 天天综合网国产| 天天影视网综合少妇| 久久精品视频在线观看| 中文字幕一区二区三区人妻不卡| 亚洲国产精品99久久久| 怡红院怡春院| 蜜臀久久精品久久久久视频| 欧美亚洲韩国视频十五区 | 亚州欧美在线| 无码日韩人妻av一| 中文字日本乱码| 97在线视频观看免费| 精品人妻中文字幕高清| 色五月婷婷五月天| 91视频成人福利网站在线一区 | 一级岛国大片| 97色在线观看| 欧美亚洲综合高清在线| 日韩不卡av一二三| 欧美日韩久久精品爱爱| 精品一区二区综合熟妇| 欧美色997| 超碰碰97资源站| 99人妻| 伊人一区二区在线播放| 亚洲第一成人影院色播| 日本不卡中文| 国产小u女在线观看| 蜜桃久久久久久| 免费网站观看www在线观| 欧美综合中文| 五月天黄色激情视频| 大吊色| A级片一区| 丁香五月激情综合国产| 欧美熟妇精品黑人巨大一二三区| 中韩中文字幕在线观看| 黄aaaaaaaaaaaaaaaaaa色网站| 超碰 av 女人天堂| 国产无马在线| 亚洲欧洲精品成人| 国产精品分类在线观看| 欧美日韩资源在线| 亚洲影院无码在线| 刺激性视频黄页| 久久久亚洲| 日本欧美成人片AAAA| 日本97久久| 欧美三级中文字幕hd| 啊a一区在线| 春色91| 国产亚洲综合欧美一区| 最新无码国产| 中 文字幕一区二区三四 五 区日 日 骚 | 精品黄色电影| 久久久久久久久久久久久久久性生活视频 | 欧美亚洲天堂| 青青操少妇| 特级特黄一级毛片免费| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 国产尤物在线三区| 精品偷拍13p欧美dodk视频| 日本青青草在线| 成人一道本免费视频| 伊人丝袜美腿高跟在线观看高清| 国产91精品福利在线| 超碰到97情色| 婷婷五月天久久精品视频一区二区三区 | 欧美人与动性人交a| 吉田爱美AV在线| 天堂а√在线最新版在线| 好看的久久不射无码影视影院| 亚洲砖码砖专无区2023| 清纯唯美激情| 五月天伊人| 曰本人妻人人澡人人夹| 国产精品熟女九九九| 亚洲熟女性高潮久久久| 大香蕉伊人75| 高跟伊人julia ann| 亚洲国产奇米影视久久| 中文字幕丝袜| 久久华人网| 国产AV无码AV| 91热| 国产精品密臀网在线观看| 色色色天美视频| 欧美偷拍| 91爱欧美| 另类小说五月天| 国产白丝av| 色偷综合| 91啪9色| 成人毛片免费| 四虎884| 丝袜内射| 屌逼传媒| 国产综合操逼高清| 久久久久久电影| 亚洲成人贴图| 日天天九九天堂666| 东北老女人的激情视频| 天天添天天干电影| 91人妻尻屄视频| 精品无码久久久久久久久果冻糖心| 九9热伊人| 国产天天骚| 婷婷色导航| 国产精品嫩草久久久久| 欧洲特黄毛片免费看欧洲毛片| 96精品一区| 久久视网78| 九九视品黄色| 午夜免费视频1000| www.久久久久| 黄片免费视频2019| 国产成年女黄特黄| 亚洲伊人成综合成人网| 最近二区三区视频大全| 在线视频97| 凹凸 69堂 在线播放| 久久久禁| 99爱久久视频频| 国产亚洲99久久精品| 日韩乱伦视频| 午夜福利视频在线一区| 国产强奸超碰AV| 亚洲欧美综合区自拍另类| 蜜乳AV免费观看| 精品无码欧美三级| 一级特黄aaa大片在线观看成人一级片在线观看 | 国产精品 亚洲情色| 97人人操人人干| 国产综合操逼高清| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 日韩av乱伦| 91操人视频| 亚洲精品精品一区二区| 美女自卫慰黄网站免费| 91|九色|国产熟女| 丁香五月大香蕉| 99热自拍| 高清不卡视频| 5252色欧美在线| 国产精品网站免费| 四虎在线观看网站| 一区二区三区无卡视频在线观看| 免费人人搞97| 欧美日韩美女精品久草一区二区三区 | 久啪| 欧美日韩国内不卡| 另类小说五月天| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 日韩性爱再线视频| 日韩三级视频一区二区三区| 内射中出日韩在线观看视频| 午夜精品人妻二区三区| 久久一区二区蜜桃| 日本精品中文字幕视频| 日本123区操B视频| 国产夜夜艹| 久久久久921| 大鸡巴久久| 色欲天天综合久久久无码网中文| 探花熟女,姿勢到位,體驗感也到位| 国产一区二区在线电影| 欧美成不卡网| 激情四射婷婷六月天| 国产精选视频| 久操com| 一二三四免费视频| nuu12国产麻豆精品| 人妻大相焦在线| 天天热精品| 亚洲色欧美| 人妻人人做人人澡人人爽欧美一区| 超碰人人干| a男人的天堂| 情色五月天就去干| 日韩精品碰碰| 91九久| 少妇精品久久久八区九区| 操东北女人| 日韩一区二区三区四区五区| 99这里有精品| 欧美性少妇| 老鸭窝在线视频播放| 78久久| 欧美性爱1080p| 嗯嗯嗯嗯啊啊啊好紧好大| 天天操天天7| 五月婷婷激情综合| 亚洲国内精品成人不卡| 日韩啊V| 日本岛国黄色网址| 久久宗合亚洲| 国产精品盗摄 偷窥盗摄| 亚洲一区中文字幕一区| 亚洲国产福利视频| 午夜120视频在线观看| 久久天天摸| 国产伊人精品在线| 亚洲av淫乱| 伊人国产视频| 精品久久久久久无码| 精品国产乱码久久久久久久久1| 另类成人首页一区| 日韩性爱毛片操骚逼| 伊人久久国产免费观看视频| 国产自制av蜜乳| 污啪啪啪视频| 黑人性欧美| 中文字幕精品区先锋资源| 蜜臀AV成人精品蜜臀| 亚洲一区在线观看欧洲| 极品白嫩福利在线| 亚洲天堂在线怕怕视频| 欧美激情 日韩精品| 国产精品人妻无码久久久互動交流| 中文字幕 国产区| 男女性扦B| 1769精品一区二区三区| 伊人性在线视频| 日韩中文字幕二区| 中国特猛少妇色xxx| 五月天开心网| 亚洲色图亚洲| 精品久久大胆人体| 久久大陆| www.色操逼| 疯操AV| 99热精品在线| 黑人白女精品一区| 黑人精品欧美一区二区蜜桃| 污啪啪啪视频| 天天射天天操天天干天天吃2018| 久热精品色情| 久久性爱大全| 亚洲欧美日韩不卡人妻| 伊人国产av| 亚洲日本激情| 18精品一二区| 蜜臀AV成人精品蜜臀AV久久| 国产白嫩漂亮KTV在线| 九九九国产精品| 东京日日夜夜| 亚洲欧美中文一区二区三| 日本不卡免费二区| 人妻精品4K4K4K4K4| 在线A日本| 久久亚洲日韩国产欧| 五月激情啪啪| 美女操逼福利视频| 人妻一区二区三区四区视频| 美女让帅哥通她小鸡鸡| 欧美 亚洲 综合 制服| 女欧美一区二三区| 日天天九九天堂666| 亚洲熟妇丝袜在线观看| 国产 无码 一区二区| 97超碰精品图片| 欧美少妇第一页| 把腿张开老子CAO烂你| 青草精品视频日本久久久久网站在线| 中文字幕av乱伦| 欧美91精品国产自产| 91日产欧美| 国产这里只有精品| 啪一啪免费视频| 国产欧美在线观看免费观看| 久久大香蕉97| 亚洲一区二区 麻豆传媒| 日本一级黄色电影| 免费啪啪一级视频| 人妻精品免费一二三区| 在线视频资源| 欧美同性恋 的搜索结果 - 91n| 嗯阿好爽好紧| 熟妇熟女亚洲天堂网| 久久亚洲AV无码专区国产精品| 超碰人妻久久| 亚州五月| 亚洲视频二区| 免看60秒涩涩视频| 玖玖爱在线视频免费观看| 亚洲中文一区二区三区视频| 国产乱伦亚洲| 久久夜夜| 亚洲风情在线观看| 大香蕉手机在线| 大香网伊人久久综合网eew| 久久精品国产精品亚洲艾通辽熟妇 | 精品国产嫩穴视频| 97干在线| 91丨九色丨大屁股| AAA久久| 蜜乳AV一区二区三区四| 插穴性爱视频在线观看| 老熟妇一区二区三区…| 无码一区二区精品视频久久久春药| 91 天天综合| 日韩精品人妻中文字幕不卡乱码| 天欧美在线| 天天操美美| 亚洲日本韩国在线| 国产真实野战在线视频| 网页导航五月天免费一二三区| 日韩黄片影院| 国产不良强奸视频免费看| 国产无码精品无码| 99久久久久久亚洲精品不卡| 婷婷在线视频在线观看| 国产精品一级毛片不卡视| 2018天天干在线视频| 黄片视频,下载| 免费自拍三级综合| 亚洲精品第一| 色优久久| 午夜久久一区二区无码中出| 亚洲综合性感在线| 亚洲蜜臀视频精品久久| 伊人欧美大香蕉视频| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 情色五月天网| 亚洲第一男人天堂| 亚欧美色| 日韩成人精品| 日韩欧美国产高清视频| 无码欧美有限公司| 日本精品久久久久久久| 国产精品日日摸天天碰| 97精品一区二区视频| 手机在线播放国产福利| 激情婷婷| 蜜桃色院一区久久| julia国产在线| 呦呦一区| 久久成人国产| 国产女人高潮视频| 大香蕉欧美国产日韩高潮| 亚州国产成人精品女人久久| 亚洲视频精选| 色天使亚洲综合在线观看| 丰满人妻一区二区三区大胸懂色| 亚洲丝袜二区| 久久精品国产久精国产| av天堂电影网| 欧美经典一区二区三区| 色五月av| 欧亚韩国999| 乱伦熟女论坛| 久久人妻精品| 午夜精品久久久久久久99| 欧美写真视频一区| 国产理论视频在线播放| 久久国产精品一级二级三级| 啊啊啊啊啊啊啊在线| 九九九九久久久久| 亚洲五月婷| 成人色女网| 综合第一页| 精品国产久热在线观看| 97色论| 久久爱97| 欧美成人性爱视频大全| 97超碰巨乳| 欧美性天天| 在线v中文字幕一区二区三区| 精品91摸| 精品国产乱码久久久久久蜜臀| 国产福利在线视频网站| 操人妻逼91| 久久久96| 亚洲熟妇自偷自拍另欧美| 日韩毛片9| 7777奇米影视久久| 成人熟女视频一区二区三区| 欧美激情区| 人成午夜免费大片| 日韩二区三四区五区六区在线看| www.99中文字幕| 男女激情中文字幕| 中文字幕日韩电影人妻| 久久超碰97中文字幕| 亚洲加勒比| 久久久无码国精品无码三区三区| 欧美亚洲特P| 国产精品国产拍高清AV| 美女十八禁| 国产无马av| 大香蕉一人| 五月香婷婷| 久久9精品| 天天干天天插| av网站在线看| 超碰精品| 近亲乱伦一区二区| 91天天综合在线观看| 欧美黄片视频在线观看免费 | 国产精品午夜福利亚洲综合网| 色噜噜人妻av 中文字幕| 97欧美视频| av婷婷色网| 欧美人人操人人插| 无码操逼天堂| 欧美精品日韩一区二区| 男人天堂2030| 久草毛片电影怡| 国产精品999zyz| 福利五区| 久久精品免费| 久操网视频| 久久亚洲一区女同性恋中文字幕| 超碰97欧美在线| 欧美综合国产精品久久丁香| 激情五月天校园春色网| 大香蕉丝袜一级片| 久久精品一区二区一8| 欧美情色贴图| 日日操天天操| 亚洲一区二区三区播放在线| 巨乳特殊服务按摩| 欧美熟妇人体| 91精品国产麻豆国产自产在| 精品无码久久久久久久久果冻糖心| 尤物av网站| 国产精品无码论坛| 久久产精品一区二区三区电影| 在线观看A啊啊啊| 久久人人爽人人爽人人片Ⅴ| 人人操人人摸人人骑| 精品人妻一二三四区视频| 丁香五月天啪啪| 国产一级内射无挡观看| JuliaAnn丝袜熟女系列| 久草在| 91在线色综合| 国产女性无套 免费观看| 尤物网站91| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照| 日韩另类色图| 国产三级日产三级韩国三级| 香港澳门日本三级网站| 精品人妻少妇| 天天日熟妇| 超碰性爱97| 精品久久99| www..com操老师| 91色图| 极品出轨视频网站| 2019午夜福利视频| 久久夜嗨| 用力操死我| 午夜人妻精品综合在线| 亚洲最大无码中文字幕网站| 中文人妻av高清一区| 九九热九九| 亚洲第一男人天堂| 超碰伊人在线| 骚女高跟AV在线| 欧美精品丝袜久久久中文字幕| 激情网五月天| 激情综合网五月婷婷| 久久精品国产AV一区二区三区| 精…码一二三区| 熟女少妇一区二区三区| 蜜桃AV天堂| 人人澡人人澡人人| 懂色影视久久| 色香综合天天影视综合 | 日韩成人在线性爱视频| V A在线| 91亚洲欧美| 天天做天天爱| 久久78| 午夜精品久久99蜜桃的功能章节| 好吊色青靑草| 日韩一级二级三级免费看完整版| 五月天亚洲色图| 精品国产乱码久久久久久蜜臀| 欧美丝袜中文字幕07在线| 99视频自拍区| 97视频免费播放| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 欧美不在线| 天天干18禁| 99re黄| 这里只有精品97| 密臀在线一区尤物| 日韩一级二级三级免费看完整版| 日语五十路和六十路亚洲国产精品| 91骚熟女| 自拍偷拍草一草| 亚洲日韩美国人妻| 婷婷久久五月| 丁香五月天婷婷姐| 高跟伊人julia ann| 亚洲日韩乱码中文无码蜜桃臀网站| 欧美大色交| 欧美色亚洲色| 亚洲日韩国产精品| 国产三级在线现体验区| 久久免费精品视频免一| 欧美国产日韩清纯唯美| 色九月综合| 九九免费影片| 欧美精品三级黄片| 黄片com.| 台欧久久精品视频| 国产情色第一第二页在线观看| 久肏视频字幕| 一级乱伦网站| 99久久久无码国产精品性男| 人人色97| 天天插天天操天天摸天天射天天看| 国内毛片四区| 国产日韩欧美中文在线播放 | 国产夫妻性生活视频| 亚洲婷婷丁香在线| 1禁看欧美黄片免费看| 国产欧美日韩在线观看麻豆传媒公司| 久偷拍| 婷婷激情丁香| 五月天久久综合网| 欧美色图天堂在线| 偷拍色图| 国产精品成久久久久午夜午夜| 欧美日韩性爱无码| 夜夜操av亚洲一区二区| 青青草色AV| 国产日韩精品无码去免费专区国产| 国产女性无套 免费观看| 色呦呦、国产精品| 中文字幕青青草| 370p日韩欧美亚洲精品| 天堂九九九九九九九九九| 吊色| 青娱乐欧美激情一区二区| 加勒比大香蕉视频在线| 日韩精品系列| 日韩免费看在线黄色片| 97 亚洲 日韩 欧美 在线| 51一区二区三区| 蜜乳av一区二区| 日本不卡三级网在线播放| 玖玖无码超碰| 大伊香蕉在线视频免费| 好爽免费视频,| 亚洲精品乱码线路中文字幕| 天美av在线观看| 91色欧美| 国产久久久久久久久一区二区 | 亚洲日韩美女中文字幕乱| 欧美内射少妇| 在线日韩日本亚洲国产| 亚洲美乱| 日本不卡五区| 欧美亚洲国内自拍| 日韩大香蕉| 九九九九久久久| 一二三区精品视频| 九九Av| 欧美激情 亚洲色图| 久久美女福利是上海美女| 国桃视频产巨乳精品一区二区在线| 欧美成熟性爱精品| 爱爱动态试试看6 0秒| 富女玩鸭子一级毛片| 91人人看| 亚洲日韩视频二区| 91少妇香蕉久久精品| 亚洲国产婷婷在线播放| 噜噜噜久久亚洲精品色情| 欧美午夜视频免费观看| 精品无码久久久久| 国产三级中文有码在线视频| 欧美综合色综合| 国产小u女在线观看| 日韩无码人妻中字久久三区四区| 欧美在线干| 99re99| 中文字幕乱码人妻一区二区三区,99精品| 91精片| 亚洲精品欧美专业| 伊人网综合在线视频| V A在线| 大香蕉欧美伊| 美国aaaaa一级黄片| 国产青青综合伊人| 国产欧美伊人| 国产精品成人久久一区二区三区| 狠狠躁日日躁夜夜躁A| 国产精品熟女丝袜一区二区| 清纯唯美综合| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 精品999日本| 91精品伊人久久久大香线蕉91| 国产激情在线| 884t在线| 色综合久久久久| 人人操人人爽人人操人人| 超碰地址97| 色99视频| 超碰国产精品无码| 成年在线视频日本亚洲在线视频区精品江靖宇公司 | 屁股久久久久久久| 麻豆伊人网| 五月丁香婷婷色| 中国农村熟妇毛片视频| 超碰在线1234区| 97中文天堂| 亚洲精品一区二区三区在线播放 | 大香蕉伊人网WWWn0n| 国产女乱淫真高清免费视频| 亚洲色电影在线| 一区二区视频你懂的| 九九热免费视频| 国产精品视频自拍在线| 天美麻豆一区二区三区| 日韩电影天堂视频一区二区| 污啪啪啪视频| 成人性爱美曰韩| 测评在线观看AV| 中出91视频| 嫩草伊人久久精品| 色欧美天天| 亚洲砖码砖专无区2023| 亚洲精品自拍| 天天干嫩逼网| 少妇熟女视频一区二区三区| 蜜臀久久在线视频| 色av中文字| 天天干人妻| 天无日色综合| 色色五月丁香| 中文字幕免费看大片| 久久受www免费人成| 超碰97网站| 9久久久久久| 超碰一区二区| 亚洲熟女偷拍在线观看| 亚洲色图 欧美热图 清纯唯美 另类自拍| 大伊香蕉在线视频免费| 巨爆乳一区二区爆乳区| 久久综合九色综合欧洲98| 91性情| 国产一二三福利视频网| 超碰在线1234区| 久偷拍欧美日韩三区| 久久av色| 久久欧洲| 亚洲免费97免费| 97超碰天天爱天天爱| 97精品国产97久久久久久免费| 亚洲欧洲另类| 在线播放中文字幕| 综合久久中文字幕综合日韩精品| 日韩国产乱子伦App| 中文日本免费高清| 91精品女厕偷拍视频| 成人26uuu| 十八禁视频一区二区| 欧美日韩国产一区二区小黄片大全| 中文字幕乱亚洲美女精品一区| 91性网| 欧美在线天堂| 天天澡天天爽日日AV| 97国产精品| 天天看夜夜看日日干| 亚洲春色一区二区三区| 天堂69亚洲精品中文字| 国产精品福利视频播放| 最新av网站在线观看| 国产精品爱欲| 在线综合色| 人妻精品视频一区二区| 激情AV| 超碰亚洲97| 国产男女无套97| 少妇精品久久久| 久久后入制服| 9丨久久九九九| 国产强奸乱伦无码视频| 国产精品爱欲| 精品亚洲国产成人AV制服丝袜 | 久久久性爱| 欧美资源| 国产女人和拘做爰视频| 思思热免费视频观看| 任你爽视频| 国产精品91一样| 亚洲97p| 老熟女综合网| 久久精品午夜国产亚洲AV无码| 人人看欧美性爱| AV色五月天| 亚洲色宗合| 再深点灬舒服灬太大了添视频 | 亚洲人人夜夜澡人人爽| 97超碰欧美精品| 欧美一二三级精品在线| 久操不卡视频| JULIA人妻风俗店中出电影| 9999九九九久久久| 精品午夜福利| 先锋色眉乱伦资源| 男人天堂久久精品| 日韩无码AB| 亚洲在饯| 日本一区二区三区四区免费观看| 亚洲久热| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 色五月综合网| 污污污8888| 久久啊啊啊| 日韩成人精品视频自拍| 67914在线精品观看| 欧美久久人体| 久久精品国产99精品亚洲蜜...| 大香蕉黄色一区| 国产天天看| 偷拍盗拍亚洲色图图片| 亚洲国产麻豆一区二区三区 | 国产肏逼网站| 五月天激情小说| 亚洲 欧美 综合 91| 亚洲精品一二牛牛| 夂久色| 尤物视频新赏网鲜网色诱网| 亚洲国产精品无码AV久久久| 91无码中出人妻视频| 美女91色黄18| 人人操肉肉| 综精品久久久aaaa| www.男人的天堂| 亚洲欧美日韩综合在线尤物 | 久草电影网| 日韩欧美aⅴ综合网站发布| 夜夜操91744565| 久久久久久久9| 色5月婷婷| 久久精品国产97欧美精品亚洲| 十八禁av无码免费网站APP| 超碰在线974| 精品人妻中文字幕高清| 日本超碰在线国产一区| 91情色在线| 99ri视频| 青青草一区二区高清无码视频| 国产麻豆一级精品视频| 男女性扦B| 国产午夜无码片在线观看影视 | 东京热视频网| 曰本精品久久久| 日本阿v天堂在线观看| 人妻熟女字幕一区二区| 亚洲天堂男人天堂网| 9久综合网| 啪啪综合网| 啊嗯好大视频在线观看| 福利视频香蕉免费一区二区在线| 97香焦色区| 丁香婷婷五月| 国产精品网站免费| 国产51色综合久久免费| 五十路人妻在线| 亚洲一区二区精品福利| 精品丰满熟妇人妻一区| 婷婷丁香五月综合| 久久久久99999| 亚洲另类久操网| 免费观看网黄| 亭亭在线资源| 自偷自拍的亚洲视频| 国产精品不卡少妇白| 久久久人体| 翔田千里Av在线| 久久视频少妇美女| 人人扣人人操| 午夜毛片亚洲精品片国产久久久| 午夜情侣自拍网站| 国产日韩欧美操逼视频| 一区二区亚州激情久婷婷欧美| 亚欧高清v| 丝袜美腿av女优在线| 啊啊啊啊啊操我视频| 国产一区二区三三视频| 999熟女精品| 伊人成人中文字幕久久网| 亚洲在线网站| 天欧美在线| 吻戏激情性巴克| 情趣丝袜无码操逼视频| 欧美高潮| 91n美女视频| 3P乱轮视频| 91五十路| 狠狠爱夜夜干| 久久精品免费| 亚洲一区二区三区欧美日韩| 欧美亚洲综合高清在线| 久久啊啊啊视频| 狠狠综合网| 97在线视频观看网站| 欧亚三区动漫| 日本淫穴在线| 中文字幕日韩综合| 视频黄色国产一级| 天天噜| 天天干夜夜肏| 校园春色亚洲欧洲| 99熟女| 日韩Va亚洲va欧美Ⅴa久久| 日韩精品一区二区人人人| 操b网站亚洲无码| 九月色婷婷| 亚洲国产成人福利在线观看| 亚洲日韩美女丝袜美腿人妻视频| 成人五月天色网| 精品少妇一区二区三区免费观看| 东京热天堂网| 欧色网址| 小视频玖玖| 香蕉精品二区二区| 91爱看| 亚洲天天艹| 亚洲色图殴美色图激情乱伦| 日韩欧美性爱电影在线观看| 久久机热| 神马久久69| 久九干| a网站免费观看| 日韩欧美中文| 小视频国产| 国产自制av蜜乳| 中国91AV| 蜜臀在线网站| julia ann久久| 日韩少妇无吗| 操学生天天| 97色插| 精品精品精品| 日本福利社| 国产日比| 色色五月天激情| **一级毛片国产| 人人干人人操人人..com| 樱花蜜乳av| 人人干黄色| 日韩成人精品| 国内精品久久人妻性色av| 久久夜夜| 国产高清自拍视频| 男女啪啪网站免费视频| 中文字幕在线观看网址| 不卡在线观看视频| 亚洲国产综合图区中文字幕| 男人的天堂一区| 快灬快灬 一下爽蜜桃在线观看| 蜜臀99久久精品| 天天操熟妇| 久久伊人东京热| 久久久啊啊啊| 亚洲欧美情色| 青春草莓视频在线观看网址| 日本性感人妻91| 亚洲密乳AV| 一级特黄aaa大片在线观看成人一级片在线观看| 2024年最新色情网站在线观看 | 五月亭亭六月丁香| 国产无码久久高清| 五十路六十路七十路熟婆| 九九精品99| α√在线| 日韩中文欧美| 蜜臀精品1区2区| 蜜桃色院一区久久| 97精品网站| 天天综合青苹果| 国产主播福利| 中国大陆国产高清AⅤ毛片| 很很热性爱视频| 91粉芽高清在线一区二区| 91狠狠综合久久久久久| 91艹逼精品| 久久久精| 2017亚洲天堂| 亚洲国产ⅴ高清在线观看| 亚洲欧美一区二区三区一猛片| 成人午夜无码视频| 伊人大香蕉在线| 色超碰综合| 天天舔日美女视频| 福利视频香蕉免费一区二区在线| 日本三级A片网站com| 伊人女女资源在线观看| 精品四五区| 欧美日韩国产人人| 久久久无码视频| 蜜乳AV一区| 天天色香欲综合网| 国产性爱欧美性爱在线| 三级色影综合网| 国产av强奸美女| 丁香五月激情网| 欧美人妻中出| 骚女天天综合网| 久久久久久日韩| 蜜臀av在线播放一区二区三区| 97超碰亚洲| 日日操夜夜操天天操免费观看麻豆| 精品无码久久久久久国产浪潮| 超碰AV在线| 国产性爱欧美性爱在线| 国产精品自拍视频| 91天堂色男人的天堂| 久久久亚洲精品电影免费看| 中日992视频| 亚洲欧美一区二区网址| 色婷婷丁香| 97操在线| 超碰在线人妻中文字幕| 99操99| 欧美91色| 国产9 9在线 | 亚洲| 五月婷婷激情网| 区自美91| 国产一进一出视频网站| 久久熟女人| 久久久久国色αv免费观看| ..日韩av毛片精品久久久| 久久久啊啊| 精品对白久久不卡| 中文字幕在线观看二区三区| 9久久美女首页| www国产无码| 亚洲高潮少妇| 久久精品区| 丰满的三级少妇欧美久久久| 国产久久一区二区| PMv在线观看| 伊人影院在线理论播放| 亚洲图片小说欧洲| av天堂手机版追回| 五毛骚逼极品美女怕怕| 日韩成人在线性爱视频| 熟女色图在线| 亚洲一区二区三区在线激情| 五月丁香久久| 人妻精品一区二区三区| 激情五月天视频| 精品久久久一本一道| 日韩成人精品视频自拍| 国产精品久久久九九九| 婷婷在线视频在线观看| 红桃视频高潮| 自拍偷拍第26| 狠狠热这里都是精品| 香蕉国产精品麻豆亚洲欧美日韩| 六月婷激情福利天堂69| 97超碰欧美| 狠狠躁AV| 日韩熟女操逼| 2000亚洲男人天堂| 污污汅18禁网站在线永久免费观看 | 搡老女人老91妇女熟女| 日本国产高清色www视频在线| 亚洲网污污污污| 美中日韩无码| 一本色道久久综合狠狠操| 男人的天堂一区三区| 激情婷婷黑人91| 色情综合网| 亚洲综合另类| 黄色高清久久无码依人| 人人摸.人人色| 欧美91久久久久| 国产福利精品最新在线| 欧美天堂在线| 午夜福利久久久噜久噜久久综合 | 97资源超碰| 91一区二区三区蜜桃| 香蕉久久精品| 欧美亚洲日本激情在线| 91性网| 久插综合| 26uuu国产免费观看| 中国特猛少妇色xxx| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 7月婷婷综合| 亚洲国产av中文字幕久久| 欧美最大综合网| 国产九月婷婷| 一区操逼| 一本一道久久综合久久| 综合网,亚洲,欧美| 国产精品美女在线一区| 天天欧美| 91l欧美在线| www超碰| 懂色中文一区二区三区 | 亚洲最大网站av| 久久久久9999| 国产吹潮女在线观看| 偷窥自拍亚洲色图| 男女激情黄色网址| 精品999999| 超碰到97情色| av操操不卡| 色吧综合网| 日逼视频日本| 老妇女91| 台湾佬中文娱乐网久久久久久久久久com| 一区二区三区精品黑丝白丝酒店对鸡 | 99re99在线视频| 成人A片男人的天堂| 99色视频| 亚洲欧洲精品视频发布| 欧美高清色| 自拍偷拍草一草| 大但人体久久久久| 搡老女人老妇女老妇老熟女怎么读| 91精品女厕偷拍视频| 男人的午夜天堂| 午夜精品人妻二区三区| 中文字幕加勒比海高清无码免费视频| HEYZO高无码国产精品227| 欧美高清18A片| 97超碰9| 98福利在线视频| 色爱欲亚洲| 夜夜爽爽爽| 一起草精品人妻| 少妇啪啪自拍| 操逼无码操逼| 国产白丝av| 欧洲精品二区| 91熟女视频网| 日韩精品影视| 青娱乐大香蕉| 国产夜夜艹| 欧美国产日韩清纯唯美| 日本午夜福利影院| 亚洲黄色网址视频| 人人操人人摸人人看人人插| 翔田千里AV无码秘 三区| 黑人性欧美| 日韩欧美三级| 日韩专区久久久| 超碰日韩美妻| av线电影| 午夜毛片高清免费不卡| 少妇500双飞99| 在线天堂999| 蜜桃久久久久久久| 久久本道| 在现视频女上位好爽| 天天综合91在线| 91美女中出| 黑丝少妇在线观看| 狠狠综合网| 男人的天堂亚洲| 在线观看一卡二卡| 亚洲精品一区中文字幕乱码| 激情婷婷五月天| 色噜噜狠狠色综无码久久合欧美| 国产综合操逼高清| 探花精品视频| 天天干,夜夜爽| 91neishe| 亚洲精品蜜桃久久久一区二区三区| 97超碰国产精品| 香蕉99秘 精品一区丁香| 黄色成品网站| 精品国产72| 啊啊啊啊啊啊啊在线| 春色综合免费| 欧美 亚洲| 国产精品人妻免费精品|