欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

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

基于.NET8的物聯(lián)網(wǎng)網(wǎng)關(guān):可視化配置、平臺(tái)對(duì)接與避坑指南

基于.NET8的物聯(lián)網(wǎng)網(wǎng)關(guān):可視化配置、平臺(tái)對(duì)接與避坑指南 簡(jiǎn)介基于.NET8的跨平臺(tái)物聯(lián)網(wǎng)網(wǎng)關(guān)源碼包面向工業(yè)物聯(lián)網(wǎng)平臺(tái)開(kāi)發(fā)、邊緣計(jì)算及數(shù)據(jù)采集場(chǎng)景解決PLC、CNC、掃碼槍、OPC UA/Server、MQTT等多種設(shè)備與Thingsboard、IoTSharp或私有MES/SCADA之間的雙向數(shù)據(jù)互通問(wèn)題。資源以可視化配置為主同時(shí)提供驅(qū)動(dòng)開(kāi)發(fā)接口便于快速接入異種協(xié)議包含1233個(gè)文件、約30MB以C#源碼cs為核心輔以cshtml/js/css界面文件、gif演示動(dòng)畫(huà)及png圖片并涵蓋OPC UA客戶端幫助類、WTM框架封裝、通用CRUD模板等實(shí)用代碼可直接開(kāi)啟項(xiàng)目開(kāi)發(fā)或作為技術(shù)選型參考。已有46人瀏覽學(xué)習(xí)適合需要搭建跨平臺(tái)網(wǎng)關(guān)模塊、梳理邊緣計(jì)算處理流程或評(píng)估.NET物聯(lián)網(wǎng)中間件的開(kāi)發(fā)者。1. 基于.NET8的物聯(lián)網(wǎng)網(wǎng)關(guān)為什么值得再花一次精力選型做工廠數(shù)據(jù)采集和SCADA對(duì)接的老手大多有這種體會(huì)設(shè)備的通訊協(xié)議五花八門(mén)Modbus、OPC UA、S7、DL/T645各說(shuō)各話上層的IoT平臺(tái)也在換前幾年忙著接Thingsboard這陣子又有人把Thingsboard老用戶往JetLinks上遷還有用IoTSharp做私有化交付的。每一次平臺(tái)調(diào)整最大的工作量往往不在平臺(tái)本身而是在網(wǎng)關(guān)——現(xiàn)場(chǎng)那些既要下沉到設(shè)備層采集數(shù)據(jù)、又要上行到平臺(tái)做雙向控制的邊緣盒子。選錯(cuò)一次網(wǎng)關(guān)后面每換一個(gè)平臺(tái)就要重新寫(xiě)一遍設(shè)備接入邏輯非常傷。.NET8物聯(lián)網(wǎng)網(wǎng)關(guān)這類項(xiàng)目解決的就是這個(gè)環(huán)節(jié)的痛點(diǎn)把設(shè)備接入、協(xié)議解析、平臺(tái)轉(zhuǎn)發(fā)、下行控制這些通用能力做成一款可視化配置的跨平臺(tái)網(wǎng)關(guān)部署后靠配置不靠改代碼設(shè)備接入和平臺(tái)對(duì)接都能在頁(yè)面上完成。它的適用人群很明確——正在做MES、SCADA數(shù)據(jù)采集的集成商接了多個(gè)Thingsboard/IoTSharp項(xiàng)目、想減少重復(fù)開(kāi)發(fā)的團(tuán)隊(duì)以及用.NET技術(shù)棧做工業(yè)互聯(lián)網(wǎng)、設(shè)備智能運(yùn)維的研發(fā)人員。對(duì)這些人來(lái)說(shuō)值得把時(shí)間花在“網(wǎng)關(guān)怎么選、配置怎么設(shè)計(jì)、坑在哪里”上。下文按落地路徑展開(kāi)。先從技術(shù)選型說(shuō)起看 .NET8 為什么適合做網(wǎng)關(guān)的底座再講可視化配置怎么設(shè)計(jì)才不會(huì)變成黑匣子然后把 Thingsboard、IoTSharp、自研平臺(tái)的對(duì)接方式拆開(kāi)最后專門(mén)列一個(gè)避坑清單把做網(wǎng)關(guān)容易翻車(chē)的幾個(gè)地方一次說(shuō)透。2. 技術(shù)底座選型為什么是.NET8跨平臺(tái)發(fā)布帶來(lái)的變化2.1 .NET8在工業(yè)網(wǎng)關(guān)上的三個(gè)關(guān)鍵優(yōu)勢(shì)做工業(yè)物聯(lián)網(wǎng)網(wǎng)關(guān)以前的主流路線是C跑在Linux工控板上或者Java跑在軟網(wǎng)關(guān)容器里。.NET 框架在過(guò)去很長(zhǎng)一段時(shí)間里給工業(yè)用戶留下的印象是“Windows專用、內(nèi)存占用大、部署麻煩”直到 .NET Core 之后才慢慢改觀。.NET8 把跨平臺(tái)能力、內(nèi)存占用和發(fā)布方式都推向了一個(gè)新的成熟度選它做網(wǎng)關(guān)的底座有三個(gè)點(diǎn)值得展開(kāi)說(shuō)。第一個(gè)是內(nèi)存占用。用 .NET 8 做邊緣程序配合 GC 配置和 Native AOT 發(fā)布空閑內(nèi)存可以壓到幾十MB量級(jí)。相比傳統(tǒng) .NET Framework 動(dòng)輒幾百M(fèi)B起步這個(gè)量級(jí)放在工業(yè)網(wǎng)關(guān)的嵌入式環(huán)境里就有了可行性。第二個(gè)是跨平臺(tái)發(fā)布。一套代碼可以同時(shí)發(fā)布出Linux ARM64跑在RK3568、樹(shù)莓派這類邊緣盒子上、Linux x64跑在軟網(wǎng)關(guān)或工控機(jī)上和Windows x64跑在SCADA服務(wù)器上這在工廠現(xiàn)場(chǎng)很有用——有些車(chē)間是Windows工控機(jī)有些又是ARM盒子同一個(gè)網(wǎng)關(guān)程序要能同時(shí)覆蓋兩種環(huán)境。第三個(gè)是庫(kù)生態(tài)。.NET 生態(tài)里有成熟的 MQTT 客戶端庫(kù)MQTTnet、OPC UA 客戶端庫(kù)OPCFoundation 官方庫(kù)、Modbus 庫(kù)NModbus 等、數(shù)據(jù)庫(kù)驅(qū)動(dòng)和 Web 框架網(wǎng)關(guān)需要的通信、存儲(chǔ)、配置界面這些基礎(chǔ)設(shè)施不用全部自己寫(xiě)。2.2 跨平臺(tái)發(fā)布與AOT裁剪邊界.NET8 發(fā)布跨平臺(tái)程序常見(jiàn)做法是用dotnet publish自帶 runtime并通過(guò).csproj里的RuntimeIdentifiers指定目標(biāo)平臺(tái)。這樣發(fā)布出來(lái)的是自包含程序目標(biāo)機(jī)器上不需要安裝 .NET 運(yùn)行時(shí)對(duì)工業(yè)現(xiàn)場(chǎng)很友好——很多工控機(jī)不讓裝額外運(yùn)行時(shí)。PropertyGroup OutputTypeExe/OutputType TargetFrameworknet8.0/TargetFramework RuntimeIdentifierslinux-arm64;linux-x64;win-x64/RuntimeIdentifiers SelfContainedtrue/SelfContained PublishSingleFiletrue/PublishSingleFile PublishTrimmedtrue/PublishTrimmed InvariantGlobalizationtrue/InvariantGlobalization /PropertyGroup這段配置里主要看三處。RuntimeIdentifiers決定了可以發(fā)布的目標(biāo)平臺(tái)列表發(fā)布命令里用-r linux-arm64指定具體平臺(tái)。PublishSingleFile把程序打成單文件部署時(shí)只拷貝一個(gè)文件加配置文件。PublishTrimmed開(kāi)啟裁剪以減小體積但這個(gè)選項(xiàng)要謹(jǐn)慎——網(wǎng)關(guān)程序通常大量使用反射來(lái)做協(xié)議插件加載和配置反序列化裁剪會(huì)把反射需要的元數(shù)據(jù)剪掉導(dǎo)致運(yùn)行時(shí)“找不到類型”。如果確實(shí)需要裁剪做法是給有反射調(diào)用的程序集加上DynamicDependency特性或者直接在 csproj 里設(shè)置TrimmerRootAssembly把相關(guān)程序集排除在裁剪之外。實(shí)際項(xiàng)目里我一般不會(huì)對(duì)所有平臺(tái)開(kāi)啟裁剪而是把 ARM64 單文件作為首選部署形態(tài)。裁剪后的 ARM64 網(wǎng)關(guān)程序連帶運(yùn)行時(shí)體積在 30-50MB 量級(jí)對(duì)于存儲(chǔ)不大的盒子來(lái)說(shuō)很舒服。Win-x64 部署在服務(wù)器上空間不緊張裁剪帶來(lái)的收益不大風(fēng)險(xiǎn)卻不少不裁剪反而省心。2.3 網(wǎng)關(guān)程序的最小骨架配置加載、設(shè)備接入、數(shù)據(jù)上行三件事網(wǎng)關(guān)程序本質(zhì)上是個(gè)常駐服務(wù)喚醒后啟動(dòng)三部分邏輯讀配置、啟設(shè)備的接入通道、建上行的平臺(tái)通道。配置放JSON文件比放數(shù)據(jù)庫(kù)更直觀格式大致是這樣{ gatewayId: GW-0001, deviceChannels: [ { name: modbus-rtu-1, type: modbus-rtu, portName: /dev/ttyS4, baudRate: 9600, dataBits: 8, parity: None, stopBits: 1, pollIntervalMs: 1000, devices: [...] }, { name: opcua-channel-1, type: opcua-client, endpoint: opc.tcp://192.168.1.10:4840, security: None, pollIntervalMs: 500, devices: [...] } ], upstream: { type: mqtt, brokerHost: 192.168.1.100, brokerPort: 1883, topicPrefix: gw/GW-0001 } }加載配置的代碼非常簡(jiǎn)單用System.Text.Json反序列化成強(qiáng)類型配置類即可。但有幾個(gè)參數(shù)要在代碼里處理成約定而不是留給用戶隨意配。比如pollIntervalMs最低限到200毫秒——低于這個(gè)值會(huì)對(duì)設(shè)備和網(wǎng)關(guān)CPU造成無(wú)意義的壓力噴在文檔里不如直接寫(xiě)在代碼里。upstream.type當(dāng)前支持 mqtt、thingsboard、iotsharp 三種每種對(duì)應(yīng)不同的上行協(xié)議封裝。這樣的配置結(jié)構(gòu)把設(shè)備接入與平臺(tái)上行解耦了換平臺(tái)時(shí)只改 upstream 塊不動(dòng)設(shè)備通道配。3. 可視化配置從設(shè)備模型到規(guī)則鏈的落地設(shè)計(jì)3.1 可視化配置的兩個(gè)層次和生產(chǎn)者的選擇可視化配置有兩種做法。第一種是淺層的把設(shè)備接入?yún)?shù)做成界面表單比如選串口、填波特率、加寄存器表。第二種是深層的還要把數(shù)據(jù)處理和轉(zhuǎn)發(fā)規(guī)則做成圖形化編排比如“溫度超過(guò)閾值就報(bào)警并寫(xiě)入另一個(gè)Topic”。網(wǎng)關(guān)要能服務(wù)MES和SCADA的復(fù)雜場(chǎng)景只做到第一種不夠——SCADA場(chǎng)景通常需要對(duì)原始報(bào)文做規(guī)約解析、點(diǎn)位映射甚至要做簡(jiǎn)單的計(jì)算累計(jì)流量、溫差、效率這些靠死板的表單配置表達(dá)不了所以可視化配置的含義應(yīng)該包含規(guī)則鏈編排。在實(shí)現(xiàn)方案上開(kāi)源社區(qū)有Node-RED這種成熟的可視化編程工具可以直接嵌很多網(wǎng)關(guān)項(xiàng)目用Node-RED做規(guī)則流開(kāi)發(fā)者從零開(kāi)發(fā)一套拖拽配置的成本太高。但網(wǎng)關(guān)交付時(shí)要考慮現(xiàn)場(chǎng)實(shí)施人員的使用水平Node-RED的節(jié)點(diǎn)類型對(duì)非IT背景的調(diào)試人員來(lái)說(shuō)上手門(mén)檻不低。如果目標(biāo)用戶是系統(tǒng)集成商工程師我一般建議自己做一個(gè)輕量級(jí)的“設(shè)備-點(diǎn)位-轉(zhuǎn)發(fā)”三層配置界面把配置項(xiàng)控制在二三十個(gè)左右再輔以簡(jiǎn)單的Web API做批量導(dǎo)入導(dǎo)出實(shí)用程度比上全套Node-RED高得多。3.2 用Web API方式做點(diǎn)位映射配置數(shù)據(jù)結(jié)構(gòu)的核心點(diǎn)位映射是整個(gè)可視化配置最核心的部分它解決“設(shè)備寄存器/節(jié)點(diǎn)的哪個(gè)值對(duì)應(yīng)平臺(tái)的哪個(gè)遙測(cè)字段”的問(wèn)題。配置界面本質(zhì)上是操作一套點(diǎn)位映射數(shù)據(jù)。舉個(gè)例子一個(gè)Modbus設(shè)備讀到的保持寄存器地址40001對(duì)應(yīng)平臺(tái)上的temperature字段地址40002對(duì)應(yīng)humidity。這個(gè)對(duì)應(yīng)關(guān)系如果只存在現(xiàn)場(chǎng)工程師的腦子里后面交接一定出問(wèn)題。{ deviceName: plc-1, points: [ { name: temperature, address: 40001, dataType: float, byteOrder: ABCD, multiplier: 0.1, storeRule: always, reportToUpstream: true, upstreamKey: temp }, { name: runningState, address: 40009, dataType: bool, bitIndex: 2, storeRule: onChange, reportToUpstream: true } ] }這樣一個(gè)點(diǎn)位配置要解決三個(gè)問(wèn)題。address和dataType解決“從設(shè)備哪里讀、讀出來(lái)是什么類型”的問(wèn)題。byteOrder解決浮點(diǎn)數(shù)字節(jié)序的問(wèn)題——這是Modbus采集里最容易出錯(cuò)的點(diǎn)很多設(shè)備用“CDAB”而不是“ABCD”配置項(xiàng)里必須暴露出來(lái)而且建議做成下拉選擇而不是自由填。multiplier是系數(shù)有的設(shè)備原始值是0-1000實(shí)際工程量是0-100.0乘0.1就是顯示值。storeRule是存儲(chǔ)與上報(bào)策略——always表示每個(gè)采集周期都上報(bào)適合需要密集采樣的模擬量onChange表示只在值變化時(shí)上報(bào)適合開(kāi)關(guān)量和狀態(tài)量能大幅減少上行流量。4. 對(duì)接Thingsboard、IoTSharp和自研平臺(tái)三個(gè)平臺(tái)三種接法4.1 Thingsboard接入MQTT協(xié)議與雙向RPCThingsboard對(duì)網(wǎng)關(guān)的支持在物聯(lián)網(wǎng)平臺(tái)里算做得規(guī)范的。它提供了 Gateway MQTT API專門(mén)的網(wǎng)關(guān)Topic用于上報(bào)設(shè)備列表、遙測(cè)數(shù)據(jù)和設(shè)備屬性。網(wǎng)關(guān)接入Thingsboard大致分兩步先以網(wǎng)關(guān)身份連接MQTT然后通過(guò)v1/gateway/telemetry上報(bào)設(shè)備數(shù)據(jù)通過(guò)v1/gateway/rpc接收下行命令。訂閱RPC后Thingsboard 服務(wù)端發(fā)來(lái)的設(shè)備控制指令會(huì)到達(dá)網(wǎng)關(guān)網(wǎng)關(guān)再把指令解析成實(shí)際的設(shè)備寫(xiě)操作。// 使用 MQTTnet 作為客戶端庫(kù) var factory new MqttFactory(); var mqttClient factory.CreateMqttClient(); var options new MqttClientOptionsBuilder() .WithTcpServer(brokerHost, brokerPort) .WithCredentials(GW-0001, access-token) .WithClientId($gw-{Guid.NewGuid():N}) .Build(); await mqttClient.ConnectAsync(options, CancellationToken.None); // 上報(bào)遙測(cè) var telemetry new { ts DateTime.UtcNow.Ticks, values new Dictionarystring, object { { temp, 25.3 }, { humidity, 60 } } }; var payload JsonSerializer.Serialize(new { // Thingsboard 網(wǎng)關(guān)遙測(cè)上報(bào)格式{ 設(shè)備名: [ { ts:..., values: {...} } ] } devices new Dictionarystring, object { { plc-1, new[] { telemetry } } } }); await mqttClient.PublishAsync(new MqttApplicationMessageBuilder() .WithTopic(v1/gateway/telemetry) .WithPayload(payload) .Build());把這段代碼放在定時(shí)器里每秒鐘觸發(fā)一次網(wǎng)關(guān)就以設(shè)備名義持續(xù)向Thingsboard上報(bào)這條遙測(cè)鏈路的數(shù)據(jù)。注意一個(gè)細(xì)節(jié)上報(bào)周期要設(shè)置成略大于設(shè)備采集周期否則同一批數(shù)據(jù)會(huì)被重復(fù)上報(bào)兩次。Thingsboard的遙測(cè)存儲(chǔ)對(duì)同一時(shí)間戳的數(shù)據(jù)做了去重但重復(fù)上報(bào)還是會(huì)造成不必要的帶寬浪費(fèi)。如果設(shè)備上報(bào)頻率不高推薦storeRule為 onChange 的點(diǎn)位用事件驅(qū)動(dòng)上報(bào)而 always 點(diǎn)位才用定時(shí)上報(bào)。4.2 IoTSharp和自研平臺(tái)的接法先看API再談配置IoTSharp 的設(shè)備和遙測(cè)模型與Thingsboard相似都用“設(shè)備-遙測(cè)-屬性-命令”這套結(jié)構(gòu)所以接入邏輯大體可以復(fù)用。區(qū)別在于API路徑和認(rèn)證方式以及命令下行的Topic格式不一樣。接入這類平臺(tái)最可靠的方式是去翻它的HTTP API文檔或者用Swagger頁(yè)面實(shí)測(cè)接口不要照抄Thingsboard的做法。常見(jiàn)做法是網(wǎng)關(guān)的 upstream 模塊支持一種“generic-http”類型每秒或按點(diǎn)位變化批量POST JSON到平臺(tái)的/api/telemetry端點(diǎn)下行控制則通過(guò)輪詢平臺(tái)的命令接口實(shí)現(xiàn)。所謂輪詢而不是長(zhǎng)連接是因?yàn)镠TTP輪詢的兼容性最好幾乎任何自研平臺(tái)都有HTTP接口改造成本最低。遇到對(duì)標(biāo)MQTT的自研平臺(tái)時(shí)我一般會(huì)先問(wèn)三個(gè)問(wèn)題。平臺(tái)對(duì)設(shè)備接入有沒(méi)有官方SDK走M(jìn)QTT的話Topic命名規(guī)范是什么下行命令是同步請(qǐng)求還是發(fā)消息讓客戶端自己拉這三個(gè)問(wèn)題的答案直接決定了接入方案的選型。只要平臺(tái)支持MQTT就優(yōu)先讓自研平臺(tái)復(fù)用Thingsboard的Topic風(fēng)格——網(wǎng)關(guān)代碼里可以抽象一個(gè)IPlatformAdapter接口每個(gè)平臺(tái)一個(gè)實(shí)現(xiàn)類配置文件里指定upstream.type即可。這樣后期接入新平臺(tái)時(shí)不需要改設(shè)備采集部分的代碼只增加新的Adapter類設(shè)備側(cè)配置和點(diǎn)位映射表保持原樣。4.3 雙向數(shù)據(jù)通訊的方向定義上行遙測(cè)、下行控制、雙向心跳雙向數(shù)據(jù)通訊在SCADA和MES場(chǎng)景里不是一句空話要明確分成三個(gè)方向來(lái)實(shí)現(xiàn)。上行遙測(cè)采集周期內(nèi)的傳感器值、設(shè)備狀態(tài)、報(bào)警事件從設(shè)備經(jīng)網(wǎng)關(guān)到平臺(tái)。這個(gè)方向占據(jù)絕大多數(shù)流量由網(wǎng)關(guān)主動(dòng)推送。下行控制平臺(tái)的遠(yuǎn)程操作從平臺(tái)到網(wǎng)關(guān)再到設(shè)備寄存器或OPC UA節(jié)點(diǎn)。這要求網(wǎng)關(guān)具備“寫(xiě)”操作的能力。Modbus場(chǎng)景下寫(xiě)保持寄存器、寫(xiě)線圈是常見(jiàn)操作OPC UA場(chǎng)景下寫(xiě)Node的Value屬性。關(guān)鍵點(diǎn)在于權(quán)限和審計(jì)——網(wǎng)關(guān)應(yīng)該記錄每次下行控制的操作來(lái)源和結(jié)果否則現(xiàn)場(chǎng)“誰(shuí)改的參數(shù)”根本說(shuō)不清。雙向心跳網(wǎng)關(guān)和平臺(tái)之間的連接檢測(cè)。用MQTT的KeepAlive機(jī)制而非應(yīng)用層自定義心跳這樣省流量且標(biāo)準(zhǔn)。但要注意一件事MQTT斷開(kāi)重連后需要重新上報(bào)所有設(shè)備的狀態(tài)屬性表示網(wǎng)關(guān)重啟過(guò)否則平臺(tái)側(cè)看到的是舊狀態(tài)會(huì)誤判設(shè)備長(zhǎng)時(shí)間未上報(bào)。網(wǎng)關(guān)設(shè)備列表異常。每臺(tái)設(shè)備的設(shè)備狀態(tài)屬性通常包含lastSeen時(shí)間戳。在網(wǎng)關(guān)重連成功后發(fā)一次“設(shè)備在上線”屬性更新這個(gè)細(xì)節(jié)在可靠通訊評(píng)估里很重要。5. 常見(jiàn)問(wèn)題與避坑清單網(wǎng)關(guān)落地最容易翻車(chē)的5個(gè)地方5.1 串口被多個(gè)通道搶占導(dǎo)致采集線程崩潰現(xiàn)象現(xiàn)場(chǎng)一臺(tái)網(wǎng)關(guān)盒子里配置了兩個(gè)Modbus RTU通道物理上共用同一個(gè)串口。調(diào)試時(shí)發(fā)現(xiàn)一會(huì)兒這個(gè)通道正常一會(huì)兒那個(gè)通道超時(shí)采集數(shù)據(jù)亂跳。原因Modbus RTU是半雙工總線同一時(shí)刻只能由一個(gè)主站發(fā)起請(qǐng)求。多個(gè)通道同時(shí)輪詢同一個(gè)串口報(bào)文在物理層就沖突了設(shè)備端根本沒(méi)辦法正確應(yīng)答。解決要么用不同串口承載不同總線要么在網(wǎng)關(guān)內(nèi)部給每個(gè)串口加一把全局鎖同一串口上的所有通道串行輪詢。后者是更常見(jiàn)的處理注意輪詢的總周期會(huì)變長(zhǎng)比如兩個(gè)通道各50個(gè)點(diǎn)位每個(gè)點(diǎn)位20毫秒超時(shí)總周期可能超過(guò)2秒SCADA實(shí)時(shí)性要求高時(shí)要合理設(shè)計(jì)輪詢分組。5.2 OPC UA連接被“假在線”迷惑現(xiàn)象OPC UA客戶端連接成功后訂閱的數(shù)據(jù)項(xiàng)長(zhǎng)時(shí)間不更新但網(wǎng)關(guān)日志顯示連接正常平臺(tái)界面上數(shù)據(jù)卻是舊值。原因這是OPC UA訂閱的采集中斷導(dǎo)致的“假在線”。OPC UA服務(wù)端的訂閱publishing interval較長(zhǎng)或者服務(wù)端連接數(shù)達(dá)到上限后不再推送數(shù)據(jù)但TCP連接仍維持客戶端誤以為一切正常。解決在網(wǎng)關(guān)側(cè)增加應(yīng)用層數(shù)據(jù)新鮮度檢查——如果某個(gè)訂閱的數(shù)據(jù)項(xiàng)超過(guò)N個(gè)周期未更新N通常取5-10個(gè)publishing interval判定為數(shù)據(jù)陳舊主動(dòng)重建訂閱。這個(gè)邏輯不能省因?yàn)橹苯訑嚅_(kāi)TCP會(huì)讓服務(wù)端產(chǎn)生很多日志重建訂閱才是優(yōu)雅的做法。5.3 Thingsboard遙測(cè)字段類型不匹配導(dǎo)致數(shù)據(jù)寫(xiě)不進(jìn)現(xiàn)象網(wǎng)關(guān)上報(bào)溫度數(shù)據(jù)正常但平臺(tái)側(cè)遙測(cè)列表里始終查不到temp字段另一些字段又正常。原因Thingsboard對(duì)遙測(cè)字段做了類型推斷如果設(shè)備歷史最早上報(bào)的temp是字符串比如網(wǎng)關(guān)側(cè)做成了25.3后面再上報(bào)數(shù)值型double平臺(tái)的Cassandra時(shí)序存儲(chǔ)會(huì)拒絕類型不一致的寫(xiě)入。解決點(diǎn)位配置里的dataType要和上游原始數(shù)據(jù)結(jié)構(gòu)保持嚴(yán)格一致這個(gè)類型不能被“可視化配置”自動(dòng)轉(zhuǎn)換。網(wǎng)關(guān)里做類型轉(zhuǎn)換時(shí)也要小心寧可統(tǒng)一用浮點(diǎn)數(shù)不要一會(huì)兒字符串一會(huì)兒數(shù)值。已經(jīng)壞掉的歷史數(shù)據(jù)類型在Thingsboard里很難改最徹底的辦法是把遙測(cè)字段名換掉讓平臺(tái)重新推斷。5.4 網(wǎng)關(guān)重啟后設(shè)備狀態(tài)“假離線”現(xiàn)象網(wǎng)關(guān)斷電重啟平臺(tái)側(cè)所有通過(guò)該網(wǎng)關(guān)接入的設(shè)備全部顯示離線即使網(wǎng)關(guān)本身顯示在線遙測(cè)數(shù)據(jù)也仍在上報(bào)。原因設(shè)備在線狀態(tài)不是平臺(tái)實(shí)時(shí)探測(cè)的而是依賴設(shè)備上報(bào)的“在線心跳”或“離線消息”。網(wǎng)關(guān)重啟后它和設(shè)備間的TCP/串口鏈路消失但平臺(tái)側(cè)的連接狀態(tài)還是舊的。解決網(wǎng)關(guān)啟動(dòng)流程里加一步“初始狀態(tài)上報(bào)”連接上行通訊成功后立即上報(bào)所有子設(shè)備的在線狀態(tài)和基礎(chǔ)屬性。這個(gè)動(dòng)作放在程序入口的IHostedService.StartAsync()中不要放在后臺(tái)定時(shí)任務(wù)里——定時(shí)任務(wù)依賴的通道可能在StartAsync時(shí)還沒(méi)就緒順序要保證。5.5 高并發(fā)下點(diǎn)位上報(bào)表導(dǎo)致內(nèi)存暴漲現(xiàn)象一個(gè)網(wǎng)關(guān)上接了500個(gè)點(diǎn)位每個(gè)點(diǎn)位都設(shè)成 always 上報(bào)運(yùn)行一小時(shí)后網(wǎng)關(guān)內(nèi)存漲到幾百M(fèi)B最后被系統(tǒng)殺掉。原因點(diǎn)位上報(bào)產(chǎn)生大量小對(duì)象放入內(nèi)存隊(duì)列后消費(fèi)速度跟不上生產(chǎn)速度。尤其當(dāng)上游平臺(tái)暫時(shí)不可用、MQTT重連失敗時(shí)內(nèi)存隊(duì)列會(huì)無(wú)限膨脹內(nèi)存爆炸是遲早的問(wèn)題。解決內(nèi)存隊(duì)列要有界設(shè)置最大積壓條數(shù)常見(jiàn)做法是10萬(wàn)條超過(guò)后丟棄最老的遙測(cè)數(shù)據(jù)并記錄一條告警。代碼上用ChannelT做生產(chǎn)者消費(fèi)者模型更穩(wěn)消費(fèi)端批量打包發(fā)送減少M(fèi)QTT發(fā)布次數(shù)。如果現(xiàn)場(chǎng)對(duì)數(shù)據(jù)完整性要求極高那就把遙測(cè)寫(xiě)入本地SQLite做持久化緩沖等平臺(tái)上連后按序補(bǔ)發(fā)代價(jià)是網(wǎng)關(guān)代碼復(fù)雜度上升一個(gè)等級(jí)。6. 進(jìn)階數(shù)據(jù)新鮮度自診斷和看門(mén)狗自恢復(fù)網(wǎng)關(guān)部署到現(xiàn)場(chǎng)后遠(yuǎn)程維護(hù)的痛點(diǎn)不是功能不夠而是不知道它什么時(shí)候“卡住”了。設(shè)備采集死鎖、上行斷連后重連不成功、磁盤(pán)寫(xiě)滿這些問(wèn)題在無(wú)人值守的盒子上潛伏很久直到業(yè)務(wù)方發(fā)現(xiàn)數(shù)據(jù)異常才被暴露。所以在網(wǎng)關(guān)里加兩個(gè)機(jī)制都屬于投入小收益大的事。數(shù)據(jù)新鮮度自診斷在網(wǎng)關(guān)注冊(cè)一個(gè)“診斷設(shè)備”每5秒一次自檢檢查每個(gè)通道最近一次成功采集的時(shí)間。如果某個(gè)通道超過(guò)10個(gè)采集周期沒(méi)有成功采集就把診斷設(shè)備的遙測(cè)數(shù)據(jù)中增加一個(gè)channel_healthyfalse的字段上報(bào)給平臺(tái)。這樣不用登錄網(wǎng)關(guān)在Thingsboard或自研平臺(tái)的大屏上就能看到網(wǎng)關(guān)健康狀況。public class HealthChecker : BackgroundService { private readonly IChannelHealthRegistry _registry; private readonly IUpstream _upstream; private static readonly TimeSpan CheckInterval TimeSpan.FromSeconds(5); protected override async Task ExecuteAsync(CancellationToken ct) { while (!ct.IsCancellationRequested) { var unhealthyChannels _registry.GetUnhealthyChannels(TimeSpan.FromSeconds(10)); if (unhealthyChannels.Any()) { await _upstream.ReportTelemetry(diagnostic, new { unhealthyChannels string.Join(,, unhealthyChannels) }, ct); } await Task.Delay(CheckInterval, ct); } } }這段代碼把每個(gè)通道的“最近成功時(shí)間”集中在注冊(cè)表里維護(hù)。設(shè)備采集線程每次成功讀取一幀數(shù)據(jù)后調(diào)用_registry.MarkHealthy(channelName)HealthChecker獨(dú)立巡檢這些時(shí)間戳。這個(gè)模式的好處是診斷邏輯與采集邏輯完全解耦采集代碼不關(guān)心有沒(méi)有人看它診斷代碼不關(guān)心具體協(xié)議。看門(mén)狗則是另一個(gè)層面的保障。最簡(jiǎn)單的做法是在部署配置里放一個(gè)守護(hù)腳本每30秒檢查主進(jìn)程是否還在不在就拉起。用systemd部署時(shí)直接配置Restartalways加RestartSec10s比自己寫(xiě)守護(hù)腳本可靠得多。[Unit] DescriptionIoT Gateway Service Afternetwork.target [Service] WorkingDirectory/opt/iot-gateway ExecStart/opt/iot-gateway/gateway Restartalways RestartSec10s EnvironmentASPNETCORE_ENVIRONMENTProduction [Install] WantedBymulti-user.target加上WatchdogSec也是可選的它能利用systemd的軟看門(mén)狗機(jī)制程序內(nèi)每N秒調(diào)用一次sd_notify(WATCHDOG1)超時(shí)后systemd強(qiáng)殺主進(jìn)程并重啟。這種方式比外部進(jìn)程輪詢更準(zhǔn)確適合對(duì)通訊可靠性要求高的SCADA場(chǎng)景。我自己做網(wǎng)關(guān)的經(jīng)驗(yàn)里被反復(fù)驗(yàn)證的規(guī)律是可視化配置解決“接入慢”的問(wèn)題而健康檢查解決“壞了不知道”的問(wèn)題這兩個(gè)能力比某個(gè)具體協(xié)議實(shí)現(xiàn)得多么完美更重要。網(wǎng)關(guān)類項(xiàng)目真正的成本不在開(kāi)發(fā)而在現(xiàn)場(chǎng)維護(hù)和診斷——把這些工具做進(jìn)產(chǎn)品里后面的日子會(huì)好過(guò)得多。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久久er热| 婷婷六月丁香激情| 中文字幕无码人妻少妇免费视频| 激情五月天婷婷丁香| 日韩九区| 午夜爱爱网站| 99热在线爱| 九九av| 人妻肉射免费观看| 五月天成人在线视频丁香| 91日在线视频| 97精品人人A片免费看| 久久婷婷五月| 五月天婷婷久久视频| 亚洲欧洲中文日韩久久AV乱码| 婷婷无码视频| 亚洲免费99| 丁香五月天堂| 狠狠干婷婷| 91在线精品一区二区| AV中文在线| 五月人妻婷婷视频| 色综合天天| 精品人妻久久久| 丁香无月在线观看| 久久婷五月| 91丨九色丨老农村| www.99热精品| 亚洲色人妻| 在线亚洲综合| 国产小网站| Blackedraw视频一区二区| 九九热九九| 国产偷人妻精品一区| 五月天久久婷婷婷| 99热伊人综合| 久久人人添人人爽添人人片αV| 激情五月综合网| 丰满人妻一区二区三区| 人妻激情综合| 婷婷五月成人| 91性交在线播放| 五月大香蕉| 久久久这里有精品| 国产古装妇女野外A片| 九九在线精点品| 成人av在线网站| 久久综合首页| 狠狠狠狠狠| 婷婷色影院| 久久精品婷婷| 中文字幕 中文字幕明步| 五月综合激情网| 五月色婷| 射婷婷中文字幕| 日韩欧美不卡| 精品牛仔裤超碰| 97热久久| 亚洲夜五月| 综合色天天| 五月天自拍视频| 第九色区AV在线| 五月婷A V在线| 亚洲黄网AV| 五月天天丁香婷婷| 超碰不卡在线| 五月丁香综合久久| 国内外色色色色色成人视频| 日本五月婷婷| 色婷婷精| 色婷婷五月综合| 国产在线6| 婷婷天天舔| 偷拍视频五月天| 婷婷色成人| 九九在线视频| 超碰国产在线播放| 久月婷婷| 99视频只有这里精品| 丁香婷婷九月| 天天日日| 色综合色综合婷婷热| 亚州日本欧州韩美高青高潮一| 色 五月婷婷基地| 亚洲综合欧美色丁香婷婷888月图片| 激情综合丁香六| 4399欧美另类视频| 丁香五月婷婷激情123| 无码人妻一区| 国产精品久久久久久久久久| 欧美啪啪9| 99er日韩| 久热99热| 人碰91| 97干在线| 久久性刺激| 最近韩国日本免费高清观看| 亚洲色碰| 色女人久久| 青柠影视免费高清电视剧| 五月色丁香婷婷综合| 色碰干| www.91有码.com| 五月丁香六月婷婷网| 色五月综合激情| 国产精产国品一二三在观看| 这里有精品99| 97碰免费视频在线| 激情五月婷婷开心网| 99久久久99久久91熟女| 婷婷五月天久久综合88| 激情婷婷五月基地| 伊人久久丁香狠狠婷婷综合香蕉 | AV操逼网| 五月婷婷av| 婷婷色中文字幕| cao视频,现在观看| 亚洲狠狠狠| 天天爽天天操| 色婷婷丁香五月| 日韩色色视频| 97干在线看| 婷婷瑟五月天久久综合| 国产看真人毛片爱做A片| 久久久久激情网| 操逼123网| 亚洲热热视频| 婷婷色激情网| 五月婷婷激情久久| 五月天色影院| www.99久| 天天艹夜夜艹| 天天干,天天舔| 99色视频在线| 97电影99热| 99成人免费热视频| se婷97| 久久精彩视频99| 国产精品人成A片一区二区| 99资源在线视频| 婷婷五月天在线综合| A片试看120分钟做受视频红杏 | 亚洲成人网无码| 丁香五月中文字幕色播| 五月婷在线影院| 99热在线观看| 五月丁香精品| 五月天婷婷成人网| 人妻在线中文字幕久久| 亚洲一二三网| 99re热在线视频观看| 碰人人操| 久久99久久99精品免视看婷婷| 日本97在线| 久久九九热视频| 韩国不卡AC视频| 五月丁香黄色| 欧美日韩成人在线观看| 综合五月天| 久久婷婷五月天| 激情五月天婷婷| 五月丁香美女视频| 色99久草在线| 人妻激情综合| 深爱激情九九五月天 | 99热首页在线30| www免费在线视频| 五月丁香婷婷激情在线| 玖玖热99| 97色干| 激情五月天在线观看色婷婷| 婷婷操无码| 色性五月天| 久草婷妨| 91精品久久久久久| 九九婷婷五月天影视| 日本久久色| 这里只有精品在线视频在线观看| 婷婷五月av| 中文字幕成人| 精品久久艹| 肏屄色播伊人97婷婷| 亚洲激情视频在线观看| 天天狠狠色综合| 秋霞网在线免费基地五月婷婷丁香| 五月天婷婷综合免费| 爱久综合| 亚洲视频码| www.99热在线观看| 色综合综合色| 99在线精品视频观看免费下载| 婷婷五月天av| 超碰免费人妻| 日韩在线aaa| 91操片| 精品一二三区久久AAA片| 婷婷丁香五月高清| 丁香 婷婷五月| 丁香五月婷婷国产在线| 成人在线日韩| 97碰碰人人| 天天色,天天操,天天射| 91精品综合久久久久久五月丁香| 1024你懂的欧美曰韩| 亚洲第一黄网| 色色亚洲视频| 久久九九在线视频| 五月天激日本色情在线| 色色色婷| 五月婷婷丁香网| 91久热| 日本色婷婷| 人妻系列久久久久久久久久久| 亚洲韩国日产综合AV| 99热偷拍| 九九这里是免费的视频5| 99热这里只有精品69| 狠狠色五月| 大香蕉220| www婷婷| 亚洲天码视频www蛋播视频| 香蕉久久国产AV一区二区| 伊人在线另类| 91女人18毛片水多国产| 婷婷五月丁香亚洲| 最新高清无码专区| 色婷网| 色色综合激情| 91干在线| 91日视频| 一区二区免费看| 色色色.COM| 色播丁香五月婷婷操:屄| 色噜噜97视频在线观看| 婷婷99狠狠躁天天躁中文| www久久99com| 五月久久网| 97操操网| 操日本人妻视频| 丁香五月777| 九九在线精品| 99色婷婷| 国产在线黄色| 色播五月婷婷| 五月婷导航| 九九综合九九| 91人碰| Blackedraw视频一区二区| 九热免费视频| 激情小说在线视频| SESE无码AV| 久久五月丁香婷婷| 一区二区成人电影| 日韩精品一区二区亚洲AV观看| 中文字幕1区2区。| 国产又黄又爽又色的免费| 五月丁香六月成人| 五月狠狠| 噜一噜在线| 激情五月亚洲| 俺去也在线视频| 一起草av| 丁香婷婷六月激情文学 | 狠狠大香婷婷爱| 久久免费丁香| www91精品| 九九九九热99超碰| 九月色婷婷婷| 日韩人人操| 琪琪色五月婷婷老师| 五月丁香香蕉| 99这里有精品视频| 欧美人与性动交CCOO| 亚洲人妻AV| 97干婷婷| 成人片在线播放| 丁香五月成人| www.色综合.com| 99综合| 久久激情五月婷婷| 另类 在线| 欧美色图天堂网色| 久久99精品久久久久久三级| 久久久久98| 色综合女人99| 国产在线自| 丁香综合久久| 五月天婷婷伊人| 99久久高清视频| 九月色婷婷综合亚洲| 丁香五月天AV在线| 变态另类色图| 99热综合色图| 天天五月丁香五月| 天干干夜夜操| 久久精品66| 丁香五月亚洲天堂| 久久五月天综合| 在线成人视频免费| 色综合99| 亚洲国产精品二二三三区| 日本不卡一区二区三区| 久综合九综合99| 超碰人人妻| 日韩AV中文字幕在线| 99热官网精品在线| 9久久久久久久久久久| 91九色国产| 97人人干| 中文aV网| 五月婷婷色五月| 婷婷五月天小说| 青青草原亚洲天堂| 另类少妇人与禽zOZZ0性伦| 51精品国自产在线| 激情五月综合第一页| 91色噜噜狠狠狠狠色综合| 大香蕉啪啪| 五月天色色激情综合| 亚洲avjiujiur91| 六月婷婷亚洲| 激情六月婷婷| AV片一区在线观看| 在线观看996精品| 九九色逼| 久狠日av| 九九热在线99| 嫩草视频| WWW.天天日| 色综合久久88色综合中文字幕| 婷婷视频在线| 亚洲激情婷婷| 91丨九色丨国产打屁股网站| 欧美熟女99| 色婷婷最爱五月| 五月天俺去也| 婷婷五月av| 久久久久九九九九视屏小说88| 日本WWW九九九| 香蕉婷婷色五月| 国产精品A片| 26uuu丁香婷婷五月| 大香蕉伊人久久| 99爱在线| 综合久久婷婷五月丁香| 亭亭五月丁香五月天激情| 天天日天天爽夜夜爽| 极骚大香蕉伊人| 色五月婷婷91| 激情综合亚洲色婷婷五月| 91大神操美女| 色吧网综合| 色五月在线播放| 久久精品凹凸分类| 婷五月丁香俺| 激情网婷婷五月天| 99久久精品免费精品国产_国产精品久久久久久_国产在线|日韩_久久国产精品电影 | 性做久久久久久久免费看| 99热色综合| www.日本久久videos| 情趣视频66| 色色色999| 九色地址91视频| caobi四区| 中文字幕av在线播放| 熟妇人妻中文字幕无码老熟妇| 国产亚洲99久久| 五月丁香六月婷婷免费| 伊人久久婷婷| 97欧美在线| 97好吊操| 99热的无码| 色5月婷婷| 熟女国产在线一区二区三区四区| 天堂五月婷婷| 激情五月丁香五月| 五月丁香色色网| 婷婷夜夜操| 高清一区二区三区日本久| 五月婷婷久久大香蕉| 狠狠撸激情综合丁香五月天俺来啦| 九九AV| 日韩aⅴ视频| 五月丁香WWW| 色综合久| 99久久综合网| 久久久中文| 国产激情在线| enecarbon-materials.com污K127封锁请涟系@wip1688 | 综合亚洲六月婷婷在线| 五月丁香婷婷久久| 大香蕉久久草| 色久女| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 丁香婷婷视频在线| 五月婷丁香久久综合| 五月丁香WWW| 婷婷综合五月天| 无码激情| 五月天色丁香| 丁香五月天色综合| 无码少妇高潮喷水A片免费| 97干在线视频| 日本欧美成人片AAAA| 五月婷色色| 欧美日韩成人一区二区| 熟女网站久久| 亚洲综合婷婷| 婷婷八月激情| 狠狠精品干练久久久无码中文字幕| 99欧美| www.婷婷五月天.com| 婷婷五月综合社区| 欧美25p| 丁香六月开心| 五月天激情视频| 婷婷爱综合| 嫩草AV久久伊人妇女超级A| 情五月亚洲婷婷| 亚洲妇女熟BBW| 色丁香综合影院| 人与禽A片啪啪| 99成人精品| 99丁香婷婷综合网| 人人摸人人摸| 色呦呦美女| 超碰女人天堂| 婷婷AV丁香| 日日躁夜夜躁狠狠久久AV| 一级无码作爱片| 79精品视频| 超碰色女| AAA久久| 婷婷五月AA五月在线| 91男人操女人视频| 思思热99热| 97色片| 天天拍天天操| 激情五月天网页| 国成人网| 日本三级日本三级99| 九九人妻福利| 五月丁香色欲| 色综合中文| 亚洲日韩国产黑丝黑丝AVAV一区二区三区| 亚洲精品一区中文字幕乱码| 99精品色| 只有精品在线观看| 欧美,日韩成人在线| 欧美性爱中文字幕| 五月婷婷伊人网| 五月婷九月| 亚洲精品在线视频| 五月天婷婷丁香蜜桃91| 人人草碰| 99re在线观看| 激情五月天小说|五月天开心激情网|亚洲精品国产自在现线|黄色五月天 | 777.色色| 丁香六月综合激| 香蕉久久国产AV一区二区| 天天爽成人综合网站| 色插人人| 婷婷综合五月| 亚洲热久久| 4399在线日本A片| 99热国品| 97色在线视频| www.色色色色| 五月色丁香综合| 天天视频精品9| 99热这里是精品| 五月丁香青草综合啪啪| 91超碰人人操| 9一精品视频观看| 欧美婷婷综合| 五月丁香婷婷视频| 襙逼网| 999热在线视频| 色五月丁香A欧美com| AV在线观看网站| www.热99热| 九九热九九| 嫩草视频| 人妻熟女一区二区AV| 日本色色网站| 色五月丁香伊人五月| 亚洲激情亚洲激情 | 五月天精品视频| 国产免费一区二区在线A片视频| 国产AV成人精品| 婷婷五月色天| 99精品久久久| 九九在线精点品| 天天添天天摸天天天天做| 成人婷99最新| 久婷婷色| 激情五月天福利| 丰满少妇猛烈A片免费看观看| 九九99精品视频| 五月深爱激情网| 免费的日逼视频| enecarbon-materials.comWu染请涟系Bao护@wip1688 | 桃色五月天| 婷婷丁香97| 成人丁香五月天| 婷婷一本和五月丁香| 五月天激情国产综合婷婷婷就去爱| www.色色com| 久色精品| 久久激情中文| 青青久在线视频免费观看| 夜夜爱网站| 超碰日日操| 久久久久久久久人妻| 婷婷五月开心中文字幕在线| 欧美久久五月婷婷| 亚洲日韩人妻操逼| 五月婷婷丁香伦理网| 激情五月天在线观看婷婷| 色五月天丁香婷婷| 2017人人操| av免费在线网站| 色综合色综合色综合| 亚洲狠狠爱婷婷| 99热这里有精品| 九九热在线视频| 涩五月婷婷| 激情婷婷六月天| 天天色综网| 91久热| 九九色逼| 色色综合网站| 亚洲欧洲中文日韩久久AV乱码| 婷婷九月色| 三级三久久线久久99久目本WW| 老司机日日夜夜青草| 综合激情站| 色五月欧美| 丁香五月婷婷色| 五月丁香啪| 亚洲日本韩国| 九色综合五月天婷五月| 六月婷婷青青青视频| 亚洲色综合色网| 91chinese 在线| 激情图片婷婷| 开心婷婷五| 亚洲婷婷开心五月| 欧美性爱5月天天天看| 亚洲 五月 婷婷 成人| 婷婷五月天黄色小说| 天天天天天天操| 超碰在线免费9| 激情五月天色色| 久久这里有精品| 乱精品一区字幕二区| 欧美槡BBBB槡BBB少妇| 99A片| 久久婷婷六月综合综合| 婷婷九月亚洲| 性爱在线播放av| 国产精品色一哟哟| 婷婷五月天综合AV| 激情综合网五月婷婷| 国产亚洲成AV人片在线观黄桃| 久久艹 五月天| 人人草碰| 九九伊人网| 欧美色六月婷婷| 六月丁香婷婷色狠狠久久| 婷婷99中文字幕| 综合激情开心五月| 99re热视频这里只精品5| 九九热99熟女| 亚洲精品V天堂中文字幕| 99爱在线| 67194成I人在线观看线路1| 亚洲AV激情五月综合网| 五月第四色| 大香蕉五月天| 91久久国产自产拍夜夜91久久精品文字>91麻豆精品国产 | 五月天婷婷伊人| 这里只有精品久久| 七七色综合| 99久久婷婷国产综合| 白天AV月月| 深爱综合网| 日韩无码专区| 伊人玖玖综合| 欧洲亚洲免费视频区| 99热6这里只有精品| 激情五月天电影| www.亚洲激情.com| 国产亚洲精品人人| 天天爱天天操| 婷婷99视频在线| 99热e| 嫩BBB槡BBBB搡BBBB视频| 五月婷婷|欧美| 国产精品第一国产精品| 久久久18| 中文av网站| 色婷婷丁香五月| 4399高清无码视频| 五月之婷婷| 丁香六月综合| 日本一级一片免费视频| 思思热在线免费视频| www.婷婷.com| 狠狠99| www.六月丁香看AV| www超碰| 婷婷六月视频| 五月婷在线播放| 开心五月深爱五月| 我爱大香蕉| 99综合| www.色色色com| 都市激情久久| 中文字幕在线日亚州9| 在线日韩av| 久久 这里只有精品1| 狠狠综合| 91尤物九色在线| 丁香五月在线| www.99精品日操伊人乱碰在线| 人人干人人干骚美女| 一月婷婷色色| 亚洲一区二区无遮挡A片| 色婷婷五月综合网| 色狠狠色噜噜AV天堂五区| 五月天激情四射| 9l视频自拍九色9l视频在线观看| 亚洲视频1区| www夜夜操wwwcon| 免费无码毛片一区二区A片| 色综合色综合网| 九月激情综合| 亚洲成人中心| 狠狠干,狠狠操| 中文字幕久久婷九女同| 亚洲小视频| 丁香五月综合网| 亚洲综合色丁香婷婷六月| 日本人妻A片成人免费看片| 久久免费9| 日韩操逼大片| 激情久久久久久| 生活片五区| www.色色五月天.com| 激情五月婷黄版| 九月色婷婷综合| 亚洲丁香婷婷丁香五月天激情| 亚洲精品另类| 丁香婷婷五月天在线视频| 婷婷五月丁香人妻无码高清| 玖玖精品视频| 五月天婷婷亚洲| 99热这里有精品| 九九久久高清| 婷婷综合色图| 婷婷五月大| 五月天婷婷色| 内射激情在线| 婷婷色色欧美综合网| 久久这里只有国产视频| 激情性爱婷婷| 97热精品| 性韩日色婷婷五月天激情啪啪XXX| 五月天婷婷在线播放| 婷香五月网在线| 午夜少妇在线观看视频| 开心五月深爱激情| 激情视频综合| 99热这里是精品| 五月激激网w'w'w| 国av网| 99视频精品全部观看10| 五月丁香激情四射综合| 五月丁香网站| 思思99re这里只有| 丁香六月av| 久久久激情视频| 天天搽天天射| 久久综合55| 婷婷内射视频在线| 五月丁香六月婷婷,婷| 99免费超碰在线| 99精品小视频| 色噜噜狠狠色综合日日| 免费黄网不卡AV| 激情六月色| 99久热| 97人碰人操| 色玖玖导航| 亚洲婷婷五月草久| 久久婷婷草| 欧美婷婷综合| 99久久大片| 超碰免费人妻| 色婷婷激情五月天丁香| 久久久性爱视频| 丁香五月激情综合在线观看| 婷五月天六| 99视频在线| 99re视频精品| 人人草成人视频| 97超喷视频在线观看| 婷婷色丁香五月| 天天爱天天做天天爽| 色一情一乱一乱91Av| 成人精品在线观看| 色婷婷精品视频| 2023天天日夜夜爽| 五月天丁香网站| 爱超碰性| 亚洲成人网站在线观看| 99精品免费欧美小视频 | 日韩无码亚欧无码| 亭亭玉月丁香| 婷婷成人视频| 激情五月丁香在线观看直播| 伊人激情综合网| 99热亚洲只有色| 99热在线观看免费精品| 99精品网| 激情综合丁| 天天玩夜夜操天天爽| 99色视| 亚洲电影在线观看| 五月天激情小说| 婷婷婷婷婷开心无码播放| 中文人妻主播久久| A片一曲| 成人 九九九九| 免费看欧美成人A片无码| 色五月天激情| 婷婷五月天影视首页| 婷婷色色网| 激情五月黄色小说| 色婷婷大香蕉| 99碰视频| 色吊丝av中文字幕| 久草丁香婷婷1024| 99热这里有精品| 亚洲色婷婷| 亚洲精品在线视频| 色色色图| 天天摸天天日天天舔| 天天成人综合| 99久热这里只有精品视频删减版| 91要啪| 大香蕉七区| 99久久久精品| 色九四色| 久久视9精| 免费亚洲婷婷五月| 日本五月婷| 五月激情丁香| 欧美日本一区二区三区| 色五月丁香激情视频| 天天操夜夜爽天天操| 97久久人人操| 爆乳熟妇一区二区三区爆乳照片| 婷婷va| 五月伊人婷婷999| 久久密臀婷婷| 色色综合网。| 天天操天天国产三级片处女学生妹| 爱爱网址9| 9国产在线视频| 亚洲12p| 黄色热99| 伊人婷婷99热精品| 日韩国产AV播放| 20253AV| 一区=区操屄高清大全av| 亚洲AV成人无码精品| 成人久碰| 操b视频在线观看一区二区| 色综合色综合色综合| 天天综合网色欲香| 最新久久99视频网站| 97操在线资源| 九月激情综合婷婷| 日本久久视频| 婷色五月| 激情精品久久| 狠狠久综合| 久久人妻人人槡| 五月天涩涩| 免费精品99| 操操天堂| 思思久久99| 亚洲国产精品SUV| 天天激情站| 97偷拍在线视频| 夜夜躁婷婷AV| 婷婷久草| 秋霞电影理论| 99热这里只有精品22| 天天综合精品| 婷婷金品综合视频| 成人综合网站| 奇米影视777在线_在线观看午夜_h小视频在线观看_岛国大片 | 看片视频在线免费日产在线看| 97色在线观看视频| 五月天婷婷激情在线色图| 欧美色婷婷| 熟女色色一区二区| 六月婷婷最新网址| 激情五月天视频| 五月色 亚洲| 九九热这里只有精品在线观看| 99免费视频| 99热这里只有精品99| 亚洲成人无码专区| 伊人玖玖网| 五月婷婷在线短视频| 亚洲婷婷丁香五月视频| 狠狠摸狠狠摸| 久久婷婷亚洲| 另类亚洲电影| 久久激情五月| 影音先锋人妻出差| 超碰97干| 国产69精品久久久久999小说| 真实熟女-91九色| 九九99免费理论| 色婷五月丁香久亚洲| 狠狠色成人影片| 色婷婷亚洲婷婷| 欧美一级毛卡片无码| 日本美女上人| 国产精品久久久久久五月天加勒比| 伊人网啪啪| 国产成人精品一区二三区熟女在线| 99视频日韩| 国产精品大香蕉| 激情网五月婷婷| 欧美日朝成人| 久9热插入| 日本va欧美va欧美va精品| 3www激情| 五月婷婷丁香| 99丁香五月婷婷在线| 玖玖99福利| 欧美影院| 综合色在线| 五月天色图| 日本VA视频| 丁香五月天啪啪| 九九亚洲无码| 五月婷婷视频ab| 性爱视频99| 婷婷五月丁香人妻无码高清| 国产色色网站网址| 综合99视频| 99久久婷婷国产综合精品电影| 丁香五月天堂网| 人人干av| 色五月婷婷成人| 噜噜噜噜噜久| 九九精品热播| 九九久久玖玖爱| 都市激情五月婷婷综合| 九九综合伊人| 九九九九成人| 五月婷婷丁香av| av大香蕉| 大香蕉九九| 日韩黄色电影| 亚洲国产黄色电影| 天天添天天摸天天天天做| 欧美婷婷综合| 99九九综合久久九九| 久久黄色片| 精品久久久中文字幕大豆网推荐理由| 亚洲综合在线伊人婷| 色九月婷婷丁香| 色99超碰| av操一操| 亚洲九九99精品视频在线播放| 99热这是里只有精品| 欧美日韩999| 婷婷六月综合| 天天日夜夜爽| 超级碰碰视频无码| 这里只精品热在线18| 五月丁香婷婷成人网| 色五月涩涩婷婷蜜桃| 99热这里只有精品22| 激情六月婷婷| 日本久久性| 九九精品热播| 色色色网站| 亚洲色婷婷久久99精品91| 九九色视频| 97日本操| 日本五月视频| 婷婷五月精品| 久久99性爱| 久草五月丁香婷婷综合| 婷婷射图五月天| 五月丁香婷婷欧美色图视频五月丁香777电影 | 丁香欧美| 五月天开心激情综合网| 激情五月,深深爱五月| 男女久久婷婷五月天| 第五色婷婷| 精品视频这里只有精品| 五月花免费视频| 99热 这里只有精品 国产 日韩| 99久久6| 天天做天天爱天天摸| 激情五月天婷婷| 色色综合日韩| 韩国中文字幕91| site:feetmall.com| 97日本操| 五月婷婷之婷婷| 久久婷婷五月综合成人d啪| 991国产精选视频在线播放下载| 激情丁香九九五月综合网| 五月丁香久| 91久久婷婷| 久久激情网| 99视频精品全部免费 在线| www.色色色com| 天天插天天插天天插天天插| www.9797国产| 精品久久99码| 久久这里只有精品07| 国产肥白大熟妇BBBB视频| 丁香五月网在线观看| 日本色超碰| 免费AV在线| 丁香六月激| 国产亚洲成AV人片在线观黄桃| 五月丁香 啪啪啪| 色五月激情问网站| 婷婷五月精品中文字幕| 五月婷婷六月丁香| 99国产精品白浆在线观看免费| site:feetmall.com| caopeng97人人| 色色激情五月天| 激情六月五月婷婷综合网| 成人精品免费在线观看| 欧洲色色| 99 热| 狠狠婷婷色综合| 我去色色网五雨天| 凹凸7777操操操| 婷婷五月天久草在线| 成人短视频在线免费观看| 婷婷五月天成人| 婷婷无五月无码视频| 久久金品黃色| 天天草人人摸| 久久五月热| 91黄操| 欧美丁香六月激情视频| 日韩av网站在线观看| 色五月欧美| 欧美激情-区二区三区| 五月天丁香成人社| 免费无码毛片一区二区A片| AV人人操| 久久亚洲色导航| 综合精品啪啪| 久久久网站| 婷婷丁香人妻天天爽| 精品视频这里只有精品| 色色色五月| 精品色色| 久久五月丁香| 六月综和久久| 日本久草福利| 色色欧美。| 婷婷天堂综合| 婷婷丁香五月综合网上 | 五月激情开心婷婷| 超碰人人91| 丁香五月婷婷图片综合| www99热| 99操逼| 乱女乱妇熟女熟妇综合网站| 色玖玖玖| 国产99久| 热久精品| 五月天狠狠色| 婷婷五月深深爱| 99操| 97热久久| 黄色片avv| 九九这里有精品| 婷婷综合五月| 另类综合国产| 丁香五月婷婷久久综合激情网| 日韩欧美婷婷丁| 丁香六月综合激情| 草一草avb| 五月丁香六月婷婷开心网| 免费日韩99| 99re免费精品视频| 久久综合综合综合| 日日影院 | 精品久久久人妻| 五月丁香亭亭| 婷婷十月激情综合网| 开心婷婷五月天电影院| 大香蕉啪啪网| 99综合自拍| 日本一区二区三区精品视频| 色五月情| 色婷婷五月天在线观看| 啪啪婷婷五月天激情| 日日操夜夜骑| 亚洲噜色| 天天舔天天| 天天日,天天射,天天插| 级情九色| 亚洲综合婷婷五月| 国产精品国产| 五月花激情网| 97超碰色| 丁香亭亭激情四射| 欧美日韩二区在线| 亚洲日韩一页精品发布| 婷婷色网| 99久久9| 久久久免费精彩视频| 欧洲毛片基地c区| 99riAV国产精品视频| 亚洲人人操| 色99在线| 丁香激情五月天| 色婷婷久久| 日本五月天网站| 亚洲综合激情五月久久| 五月丁香六月婷婷无码| 日屌日日操日日色| 九九在线这里只有精品视频| 国产一二三四五六七八视频| 欧美综合五月丁香六月婷| 影音先锋 91工厂| 久婷婷久草| 色丁香综合影院| 开心五月激情站| 呦呦v线| 影音先锋 婷婷| 久久AV电影| 久久99美女精彩视频| 亚洲bt丁香五月天婷婷激情小说| 婷婷五月天在婷| 五月丁香六月婷婷网站| av操一操| 婷婷五月天狠狠色| 久久久久久久久99精品| 色一情一乱一乱一区91| AA丁香综合激情| 色五月 五月婷婷| 成人做爰A片免费看网站找不到了 噼里啪啦在线观看免费完整版视频 | 五月天婷婷7米| 综合色色婷婷| 午夜成人天堂久久无码日韩久久| 玖玖综合色| 色五月人妻| 中文字幕日产A片在线看| AV大片在线播放| 久久久亚洲成人无码A片| 日本欧美啪啪| 在线天堂9| 婷婷激情肏屄网| 婷婷五月永远18免费久久久| 开心五月综合激情综合五月| 99小视频网站| 激情婷婷丁香| 开心激情综合| 99热在线观看| 色五月激情综合网站| www.97干视频| 日韩色色网| 丁香五月天av| 日本色狠狠| 丁香六月啪| 欧美性色A片免费免费观看的| 一本色道久久综合狠狠躁一二三| 激情国产综合| 激情婷婷五月久久| www.五月激情红色| 色色色色网| 丁香六月五月天| 桃色五月婷婷| 91婷婷伊人牛牛| 这里只有精品热| 夜夜撸天天操| 九九激情网| 丁香五月婷婷综合啪啪| 9热在线观看| 天堂婷婷五月在线| 97色色色色色| 丁香五月成人社区| 丁香色婷婷色手机免费在线| 成人色图情色成人网 www.5b5b5bcom 五月天| 啊v视频在线观看| 日韩丁香涩| 欧美综合五月丁香六月婷| 五月激情精品视频| 婷婷社区五月天| 色婷婷久久| 欧美激情久| 亚洲综合新99视频| www.99热视频| 五月丁香六月激情| 操逼国产91| caobi四区| www久久艹| 熟妇人妻中文字幕无码老熟妇| 操人精品| 日本在线免费中文com.| 欧美影院| 嫩草极品| 五月婷啪| 色天天综合| 日韩色色视频| 婷香狠狠爱五月| 蜜桃婷婷丁香五月天狠狠久久综合| 色色色色综合| .精品久久久麻豆国产精品| 精品99在线| 天天干天天色天天干| 狠狠综合| 色九九丁香九月色九九色| 五月丁香六月日逼| 99热久草| 国产91在线视频| 五月丁香色色综合| 亚洲色图五月丁香| 黄色av高清| 99热这是里只有精品| caopeng97日韩| 欧美人人超级碰| 五月婷婷成人网首页| 91要啪| 97日本在线播放| Av狠狠色丁香婷| 五月丁香六月婷婷久久肏| 2050人人操免费工开爱 | 九九亚洲| 人碰人人人玩91| 色婷婷视频| 日本人妻A片成人免费看片| 九 九九九AV| 婷婷精品在线| 日本婷婷五月天| 五月婷啪| 蜜臀99精品| 婷婷五月天大香蕉在线视频观看| 美臀自射自家人妻| 亚洲激情婷婷| 色色色综合色| 99热只有这里有精品| 在线超碰免费| 99精品视频在线| 五月丁香综合| 另类小说五月天| 金品在线视频99| 五月婷婷AV| 99天堂在线观看免费视频| 激情五月综亚网| 欧美99热| 五月天婷婷色在线视频免费观看 | 婷婷精品| 噜综合| 婷婷丁香六月| 免费AAAAA网| 97干在线视频| 黄色三级日本| 中文字幕av在线| 婷婷激情四射网| 亚洲秘 无码一区二区三区妃光/1| 91传媒无码人妻精| 日日夜夜爽| 国产91在线视频| 婷婷五月天黄色小说| 日本nghangse中文字幕| 一级二级香港秋霞欧美欧美秋霞| 国产XXXX搡XXXXX搡麻豆| 五月婷成人网| 欧美成人精品三区综合A片| 久热这里这里有精品| 99热精品在线在线| 天天拍天天做视频| 人妻体体内射精一区二区| 色播播之激情五月婷婷| 99精品偷自拍| 婷婷五月天va| 91无码色色| 成人丁香婷婷五月天| 国产亚洲99久久精品熟| 五月丁香六月激情综合欧美| 久久婷婷五月综合色天| 狠狠高潮精品亚洲1| 久久狠婷婷| 日本在线99| 亚洲免费99| 婷婷综合网| 亚洲人成网亚洲欧洲无码久久| 色5月婷婷| ss99热| 在线一起草av| 免费视频无码| 97香蕉碰碰人妻国产欧美| 欧美激情综合色综合啪啪五月| 国产伊人五月天| 97超碰免费超级在线观看| 深爱激情网五月天| 九九超日本| 婷婷九月综合| 人人爽人人射-美女久久久久久久久久-成人AV| 五月婷色| 这里只有免费的精品| 最新久久99视频网站| 91丨九色丨熟女丰满| 色色吧综合| 极品人妻VIDEOSSS人妻| www.开心激情| 久久看婷婷| 超碰在线人妻| 99热色在线精品| 婷婷成人AV| 96丁香六月婷婷蜜桃综合久久| 国产精品-91JQ就要激情网91JQ6.91JQ27.CASA:16888 | yirenjiqingshiping| 日韩综合久| 99思思在线视频| 9九九久久精品无码专区| 婷婷五月激情中文字幕| 狠狠综合| 艹B高清无码| 成人免费在线电影| 婷婷五月激情六月丁香| 久久44| 97久久久久| 新激情五月开心五月婷婷五月丁香五月| 婷婷五月激情视频网| 激情av| 国产色五月婷婷| 色九月婷婷综合| 爱99干99| 久99久热| 五月丁香久久综合精品| 婷婷久久在线| 婷婷六月天| 逼里香不卡| 五月天色色激情综合| 五月天啪啪网| 色综合色色| 亚洲成人va| 九九99在线免费在线观看视频| 好吊兆人妻| 开心激情婷婷| 婷婷激情小说| 五月婷婷丁香五月亚洲色|