99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜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
返回資訊列表
69久久99精品久久久久| 六月丁香成人网| 风流少妇A片一区二区蜜桃| 5月丁香婷婷激情网| 九九AV| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 99在线国| 国产精品噜噜在线视频| 激情五月深爱五月观看| 五月天久久婷婷| YW无码| 激情小说五月天| www.天天干| 青青草六月丁香| 99ri在线观看视频| 26uuu精品一区二区| 啪啪日本欧美| 影音 五月 婷婷 久久| 97色干| 色婷婷狠狠| 热无码A∨| 综合色影院| 99在线视频观看| 久久女婷| 五月天激情网站| 狠狠爱综合| 九九99视频| 五月天激情小说电影| 婷婷99中文字幕| 婷婷五月丁香成人网| 五月丁香六月婷| 色综合久久综合中文综合网| 成人短视频在线| 丁香成人五月天| 秋霞三及片| 色播五月丁香综合| 五月婷婷插一插| 久久亚洲色导航| 色综合色综合网| 色婷久九| 久久久久久久五月婷婷六月丁香综合,开心激情综合网 | 成人国产综合| 亚州欧美国产久精国产99综合视频| 97色色色| 播五月婷婷开心| 99久久久久| 亚洲成人AV在线播放| 丁香花婷婷五月天| 亚洲色图45p| 婷婷自拍| 久久婷婷视频| 色婷婷激情小说网| 中文字幕久久一区二区三区 | www.99在线| 99免费在线视频| 久久激情五月| 九九色色| 国内精品免费一区二区2009| 停停五月色宗合| 男人天堂AV在线一区二区| 99网址在线观看| 九九精品大香蕉| 97碰碰叉| WWW,五月| WWW.五月天9999| 蜘蛛女免费观看完整版高清电影 | 丁香五月婷婷色| 久久99精品九九久久久婷婷| 五月丁香六月婷| 亚洲精品V天堂中文字幕| AA片在线观看视频在线播放| 中文字幕欧美精品久久| 99日本在线| 久久激情视频99| 性五月激情| 婷婷婷色五月| 超碰猛烈的性猛交| 99在线精品免费视频| 亚洲色无码A片一区二区麻豆| 操操操97| 操操天堂| 婷婷五月色丁香在线看| 啪啪婷婷五月天激情| 色播丁香| 人人操91色| 停停五月色宗合| 色综合色五月| www.五月瑟| 丁香五月天激情综合| 婷婷五月丁香综合激情| 亚洲激情四射色| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 99热久久这里只有精品| 日本色综合| 91美女被操| www色色com| 国产操B| 99热99精品| 婷婷五月天伊人在线| 免费播放99性爱视频| 亚洲啪啪网| 色婷婷九月| 草草色情综合网| 日韩在线观看亚洲| 激情九九综合网| 久久精品系列| 超级碰 久久9| 婷婷五月俺要去| 爱婷婷都市激情| 天天日夜夜爽| 色七七九九| 久久99热免费| 久久99网站| 婷婷五月综合性爱| 国产色色网址网站| 99久在线精品99re8热| 婷婷丁香熟女| 天天日夜夜高潮| 五月丁香婷婷AV| 9久久精品| www99xxxx五月丁| 色婷婷19| 五月天另类图片区99| 婷婷六月网| 婷婷综合五月天| 精国产品一区二区三区A片| 成人网页在线观看| 五月情婷婷| 久久这里只精品| 国产44页| 狠狠狠狠狠狠狠狠| 欧美三级视频| 视色综合| 色色欧美色色色| 91九色国产| 亚洲综合丁香五月天| 香蕉婷婷| 久热这里这里有精品| 操日视频| 成人网在线视频| 成人五月天视频播放| 91九色精品熟女内射| 97热九九| 亚洲成人超碰| 六月婷婷色色色| 天天五月情| 亚洲妇女熟BBW| 91狠狠色丁香婷婷综合久久精品| AV在线观看网站| 99人人干人人操| 天天综合天天玩夜夜玩天天玩夜夜玩 | 国产精品视频免费看| 人妻丰满精品一区二区A片| 99久在线精品| 三级三久久线久久99久目本WW| 墨西哥毛片内射精| 国产精品VA在线| 淫五月停停| 丁香五月六月婷婷自拍| 九九综合影音先锋| 五月婷色激情五月| 丁香五月成人丝袜| 五月婷啪| 欧美va亚洲va| 99在线精品免费视频| 五月激情婷婷图片基地| 性一交一乱一交A片久| 五月婷婷干干干| 久久综合爱| www.sebowuyue| 99九九在线视频| 99热99| 丁香五月电影| 九热免费视频| 五月天.com| 五月大香蕉| 人妻九九九九| 深爱五月婷婷开心中文字幕| 国外亚洲成AV人片在线观看| 丁香六月激情网C0W| ..真实国产乱子伦毛片| 99视频精品在线| 色婷婷最新域名| 婷婷六月视频| 国产成人网| 五月婷婷六月丁香综合| 丁香五月激情五月| 天天看夜夜看| 97色欧美| 亚州美女| 99热首页| 婷色五月| 色五月丁香91| 九九大香视频| www色婷婷久久综合久色 | 日韩一级一片内射视频4K| 99人人操人人摸| 亚洲六月色| 欧美色色网| 色播播婷婷| 啪啪综合网| 久久五月天激情婷婷| 国产精品激情AV久久久青桔| 思思热在线视频精品| 亚洲婷婷丁香| 男人操女人高潮91视频| 激情五月综合| 伦乱美欧| 97干婷婷| 超碰国产在线播放| 久久久久久综合88| 久热这里只有精品66| 日韩成人电影Av| 色欲久久综合| 五月中旬婷婷丁香六| 91综合在线观看| 婷婷五月综激情| 婷婷色女| 日韩伊人大香蕉| 婷婷五月无码| 午夜五月天| 九九精品自拍| 欧美六月婷婷| 日韩成人无码| 91热在线| 婷婷色爱| 一區四區歐美日韓| 久久婷婷网| av高清无码| a久久| 思思99精品视频在线观看| 九九99九九精品视频| 久久久WWW| 婷婷色日本| 欧美天天搞| 99久久国产宗和精品1上映| 亚洲操b| 五月天无码| 色9999综合久久| 婷婷导航| 免费精品99| 日本婷婷丁香五月| 色色色色综合网| 西西4r午夜剧场| 丁香五月大香蕉| 久久小片| 精品九九视频| 激情网战码亚洲A| 婷婷久久在线| 97人人干视频| 666555。COm毛片| 亚洲精品视频在线播放| 97性视频| www.99热在线| 激情综合五月婷婷六月丁香| www.伊人天堂偷偷婷婷| 99久久99视频只有精品| 亚韩在线视频| 久草狼人| 9l视频自拍九色9l视频在线观看| 日本在线观看aaa 99| 丁香五月电影| 丁香五月偷拍| 亚洲成人免费在线| 天天噜日日噜综合无码| 欧美色色色色色色| 激情网五月| 欧美精品熟女一区二区| 99热成人在线观看| 99综合激情久久精品久久| 九九成人高清视频| 六月色日韩| 五月激情婷婷综合| 九色91美女| 野外99热| 成人网站av免费网站推荐| 五月婷婷亚洲天堂97色婷婷| 激情综合网激情五月俺也去| 色九九中文字幕| 欧美日韩中文国产一区发布| 一本道在线电影| 婷婷五月天小说网| 99这里有精品视频| 欧美成人精品三区综合A片| 亚洲超碰在线| 色婷婷色99国产综合精品| 啪啪啪大香蕉| 99性爱| 亚洲永久免费| 久久婷色| AV片一区在线观看| 超碰妻人人| 99热草草| 欧美色色色色色色色色| 91日韩美女被插视频| www. 五月. com| 葵花AV在线| 亚洲国产色婷婷| 第四色色色色色丁香五月天| 狠狠久久婷婷| 久久伊人大香蕉| 91日本在线| 色婷| 久久婷婷丁香五月一二三| 99婷婷五月天| www.久久66| 精品怡红九九九| 色婷婷六月天在线| 99久久五月婷婷| 激情综合五月开心狠狠| 久久激情网| 久久国产色| 思思热在线观看| 激情六月婷婷| 99视频极品在线香蕉| 操久久精| 色黑鬼导航| 怡红院院久久| 99成人| 久久xxxx| 色欲五月丁香| 亚洲网站999| 婷婷久久五月天| 婷婷日| 美英法精品无码免费视频| 日日.c| 99热在线观看精品| 丰满少妇猛烈A片免费看观看| 5月丁香美女影院| 九月av在线| 婷婷欧美综合| 草婷婷在线| 一级黄色尤物综合视频手机在线观看| 久久五月综合| 亚洲av另类在线观看| 停停六月 综合| 亚洲色综合| 四色 爱 婷婷 精品 亚洲 五月天| 丁香五月在线看| 操逼巨乳91| 五月天丁香网| 丁香五月网| Av狠狠色丁香婷| 99热精品免费在线观看| 久久久com| 国产性av| 国产精品电影| 天天爽天天日| 在线视频区| 久久五月天网| 天天综合亚洲综合| 丁香六月五月天| 婷婷大香焦| 婷婷丁香九月| 情婷婷五月天| 久久在线视频免费观看| av在线观看网站| 精品色色网| 色偷偷色婷婷| 99久久偷拍视频| 九九香蕉网| 天天爽夜夜爽天天爽夜夜爽| 久久综合九九| 51XX午夜影福利| www.夜夜.com| 亚洲妇女熟BBW| 天天肏高清在线| 综合激情五月丁香| 色五月人妻| 91九色成人原创视频| 香蕉婷婷色五月| 日本美女五月天| AV成人在线网站| 五月丁香综合啪啪| 99爱视频| 亚洲啪啪精品| 女人天堂 AV| 色色五月婷婷| 538午夜激情| 五月婷婷六月情| 人妻第九页| 久久er这里只有精品| 欧美精品18| 五月综合激情啪啪啪啪啪| 深爱五月月天| 超碰免费在线| 五月丁香成人网| 色婷婷日本| 草榴视频黄色网| 九九免费视频在线| 香蕉婷婷| 久久这里都是精品免费| 久久性爱视频| 嫩模aV在线| AA片在线观看视频在线播放| 久久嘟嘟丁香| 五月激情网五月综合网| 九九色精品| 99视频在线| 久久99精品视频| 综合久久影院| 亚洲色色色色色| 97色婷婷| 婷婷六月色丁香视频在线观看| 丁香五月AV在线| 六月丁香基地| 精品色色网| 五月丁香婷中文| 丁香丝袜五月| 97色色视频| 久99久精品视频| 黄色片区子| www.色综合| 婷婷99狠狠躁天天躁| 日韩九九| 国产精品日本一区二区在线播放| 日B日潘金莲BB| 夜色.cnm| 丁香狠狠色婷婷| 婷婷激情九月| aaaaaa片| 久久九九蜜| 五月花免费视频| 日亚二欧美| Av大香蕉| 亚洲免费综合一区| 丁香 亚洲 久久| 激情综合网五月丁香| 日韩无码成人电影| 在线色五月婷婷| 五月婷婷网五月在线| 色色AV色色色东莞| 九九色热| av中文字幕免费观看| 狠狠色噜噜狠狠狠狠狠色综合久久| 96色婷婷| 激情五月天久久丁香| 开心婷婷五月天电影院| 中文字幕乱轮| 狠狠综合久久| 日逼影音先锋男人AV资源站| 色五月大香蕉婷婷| 高清无码.com| 免费观看欧美成人AA片爱我多深| 中美日韩成人在线| 欧美色男人网站| 操婷婷基地| 天天肏夜夜肏| 人人噜天天上| 丁香婷婷基地| 97超碰色| 丁香色五月婷婷17C| 亚洲VA在线| 婷婷五月天基地| 婷婷五月天小说| 国产精品男人AV不卡| 亚洲无线视频| 好激情在线综合网| 欧美婷婷五月丁香| 超碰99热在线观看| 99在线观看这里都是精品| 欧美日韩AAA| 操久久网| 亚洲情欲久久| 青青草搞屄视频网站| 色五月婷婷色五月| 五月丁香婷婷综合网| 日本天堂网站99| 综合激情婷婷| 能直接看的av网站| 中文幕无线码中文字蜜桃| 97人妻碰碰碰久久久久-最近国语高清| 久青青久| 182TV大香蕉| 成人无码精品1区2区3区免费看| 亚洲Av成人在线观看| 欧洲亚洲免费视频区| 五月天六月色| 波多野结衣不卡AV| 免费国产VA国产免费| 99无吗| 另类小说五月天| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 五月婷婷开心深| 五月丁香六月玩女人| 国产成人精品一区二三区熟女在线| 综合激情在线观看| 亚洲一区二区无码蜜乳av| 欧美一级色| 99热一本| 天天狠狠色综合| 久久久精品人妻| 欧美成人日韩| 天天爽天天日天天舔| 99热9| 4399在线日本A片| 婷婷开心激情五月激情网| 九九碰九九爱97超碰| 欧美三日本三级少妇三99| 五月婷婷我| 无码免费人妻A片AAA毛片西瓜| 大香蕉婷婷久久| 色婷婷六月丁香综合欲精品| 丁香五月大香蕉在线99| 97色五月天| 久久只有18视频| 九九视屏| 五月天综合在线观看视频| 狠狠色色色| 色五月婷婷丁香国产在线| 婷婷亚洲天堂| 99福利导航| 婷婷五月天综合在线| 九月丁香网婷婷| 五月天婷婷色播综合在线| 97香蕉碰碰人妻国产欧美| 色色丁香五月| 伊人在线视频| 91视频久久久| 五月丁香成人网| 精品操逼一区二区| 久久色这里只有精品| 色综合久久之分久久| 怡红院院在线导航网| 激情综合五月丁香| 五月色情婷婷开心五月天| 中文字幕在线日亚洲9| 六月丁香婷婷色狠狠久久| 无码人妻一区| 色五月婷婷伊人| 狠狠做深爱婷婷久久综合一区| 婷婷五月天A V| 久99久热只有精品国产99| 国产成人精品一区二三区熟女在线| 国产亚洲99| 特级西西4444www无码| 婷婷在线精品| 五月天丁香网| 婷婷五月天日逼| 亚洲无AV在线中文字幕| www.热99热| 欧美十二区| 丁香五月综合在线观看| 牛牛色av| 991精品在线视频| 五月天激情四射网站| 成人免费在线电影| 97中文在线| 色婷婷狠狠| 天天插天天插天天日| 色九月婷婷| 久久ER视频com| 中文字幕网伦射乱中文| 色五月婷婷婷婷| 久久久噜噜噜操操操| 婷婷丁香小说| 九月丁香婷婷综合| 激情五月天网站| 五月丁香亚洲五月| 色色色1网址| 五月天精品| 伊人久久大香线蕉av最新| 丁香九月婷婷| 91啪级电影| 中文字幕不卡网站| 2017人人操| 色色婷婷五月| 这里只有精品96| 激情综合五月开心狠狠| 婷婷五月天黄色| 超碰人人在线| 精品色色色| 91无码高清| 日本99视频| 国产丁香五月天婷婷| 丁香亚洲色综合| 精品99在线| 久热这里只有国产| 欧美五月婷婷综合| 99热人人| 亚洲婷婷丁香五月视频| 踪合专区啪啪| 国自产拍偷拍精品啪啪一区二区| 婷婷噜噜| 婷婷丁香五月综合| 雪千夏麻豆| 另类视在线| XXXX岛国| avv在线| 99爱在线免费视频| 久热这里只有精品视频免费观看| 中文字幕在线不卡| 久久综合66| 九九99九九99九九99视频网| 91视屏在线观看com.wwwvv| 久久日韩婷婷五月| 亚洲综合色网| 婷婷五月天成人网| 天天干天天日日| 五月丁香婷婷婷激情爱爱| 五月丁香综合网| 色色综合色| 久久婷婷五月综合97色一本| 91久女| 丁香五月电影| 夜夜干 夜夜操| 五月丁香久久网| 97操在线资源| 久久精品99国产精品日本| 丁香婷婷激情六月五月开心| www.狠狠色.com| 色吧婷婷| 国产精品黑丝| 五月丁香综合| 99久久婷婷五月综合| 婷婷综合网伊人| 国产精典视频在线观看| 丁香婷婷浪潮AV久久综合| 色爱亚洲| 婷婷中文字幕网| 99热这里只有精品2016| 91久操| 丁香九月综合在线| 日韩一级一片内射视频4K| 色五月天激情| 妻久久人久久| 久久婷婷一级片| 五月丁婷香| 五月天婷婷色情| 丁香五月婷婷激情97| 狠狠草狠狠草| 久久婷婷五月综合激情国产| 激情五月天激情综合网| 五月丁香直播| 色色综合无码| 丁香色六月婷婷| 无码一级片| 婷婷丁香综合网| AAA久久| 91碰碰视频| 99热这里只有精品免费观看| 五月天自拍视频| WWW、日本色丁香co m| 欧美 日韩 成人 在线| 91热久| 狠狠色丁香乆乆| 日本99热| 26uuu国产| 久久婷综合| 成人在线视频一区| 九九婷婷网五月天| 久热网在线视频| 五月丁香婷婷中文网| 99er免费在线观看| 国产99美少妇| 久热这里只有精品3| AV在线观看网站| 99人人干人人| 六月丁香婷婷色狠狠久久| 亚洲色频| 色综合网页| 91色性感五月婷婷丁香| 91 影音先锋| 欧美成人AAA片一区国产精品| 久久综合五月天| 日韩九九| 久色| 成人无码精品1区2区3区免费看| 五月叮香啪| 五月天婷婷在线AN| 久久综合五月天| 五月天成人在线视频网站| 欧美色五月| 99热官网精品在线| 久久久精品人妻| www激情| 婷婷五月天AV| 天天综合精品| 国产精产国品一二三在观看| 色一色综合| 91夫妻网站九色| 九九色网| 久久图色4| www.五月天色色色| 亲子乱AV一区二区三区下载| 超碰碰碰碰| 久久五月天激情美女| 99在线观看视频免费| 深爱 五月天| 丁香六月视频| 99久久免费精品| 天天干 夜夜爽| 天天日 天天草| 五月玖玖| 久久久18| 丁香五月大香蕉在线99| 日韩av高清| 欧美WW在线网| 狠狠香蕉| 欧洲激情五月天婷婷| 五月丁香亚洲五月| 99九九精品| 天天综合 99久久婷婷| 久久曰曰| 成人无码精品1区2区3区免费看| 日韩黄色影院| 色婷婷五月成人网| 9999久久久久| 婷婷丁香五月天小说| 成人五月天视频播放| 婷婷九月在线| 色人久久| 色婷婷四虎| 97婷婷丁香| 99久久国产成人精品| 久久这里只有精品22| 久久丁香综合| 五月激情综合网| 五月丁小婷婷激情四射| 日韩黄色电影| 亚洲性爱干干| 99热精品中文字幕| 色色色成人网| 亚洲欧洲美女在线观| 香蕉久久国产av一区二区| 五月花婷婷在线精品视频| 激情色情五月天| 成人精品人妻| 日本视频久久| 亚洲性爱电影| 天天cha成人综合网| 涩婷婷五月天在线精品视频| 99热伊人| 黄色成人AV在线| 91chinese在线| 无月播播激情在线观看视频| 日本色道视频网站| 五月婷性爱| 大香蕉伊人久久| 久草xx性爱视频| 亚洲色碰| 99久久天堂婷婷| 久久丁香| 99国产在线| 丁香五月婷婷色| 天堂亚洲 在线| 五月香蕉综合| 五月婷婷影院| 国产资源91在线| 综合婷婷久久| 99热免费18| 五月丁香日本在线视频观看| 思思热视频在线| 做爰丰满少妇1313| 久99久在线观看| 99精品网站| 婷婷99狠狠| 婷婷综合另类| 99色热视频| 婷婷久久网| 激情婷婷黄色五月| 丁香五月天婷婷久久| 久久婷婷五月综合色奶水99啪| 九月婷婷在线视频| 综合丁香婷婷五月天| 天天爱天天秀天天做| 碰97 久| 九九色精品| www婷婷| 五月美女婷婷风骚| 久久久er热| 久久久97| 高清国产AV| 色婷婷色人人射| 久久99综合| 99在线播放视频| 激情综合网五月天| 五月婷婷很很色| 色噜噜伊人| 五月丁香狠狠爱| 大香蕉狼人久久| www,99热| 国内自拍97在线| 综合色天天| 亚洲色频| 黄网在线播放| 五月天丁香成人| 伊人久久大香线蕉综合网站| 丁香五月婷婷成人网| 中文字幕按摩做爰| 天天做综合| 日韩成人电影AV| 五月天婷婷色色网| 五月天开心婷婷激情网站 | 激情五月天电影| 伊人婷婷99热精品| 中国AV性爱观看| 99精品网| 第四色五月激情网| 99热这里只有精品8| 99re久久| 久久性爱视频| 亚洲综合五月天| 五夜婷婷| 亚洲天堂久久| 91在线日| 婷婷色导航| 日本精品99| 日韩亚洲视频| 97碰在线视频| 五月天综合视频| 亚洲成人综合在线| 综合色情网| 久草A片| 色婷婷色99国产综合精品| 色婷婷成人网| 婷婷激情综合| 99视频在线| 婷婷99狠狠| 色五月天.con| 激情九月婷婷| a69在线视频| 性色做爰片在线观看WW| 色婷綜合网| 婷婷综合中文| 99亚洲无码| 大香蕉啪啪啪啪啪啪| 婷婷五月激情小说| 婷婷色操| 超碰在线国产| 五月天国产成人| 欧美成人精品A片免费一区99| 77799热| 激情内射人妻1区2区3区| 六月婷婷七月丁香| 日韩啪啪视品| 五月婷婷在线免费| 九九婷婷综合| 成年人丁香五月| 一根材五月婷成人| 九色在线五月婷婷网址| 丁香激情五月少妇| 九九大香蕉黄色影院| 九九激情综合| 激情五月激情综合网一级丸片| 超pen个人视频97| 99综合一区| 色综合香蕉| 色色五月婷婷| 678五月丁香亚洲综合| 久久人人添人人爽添人人片αV| 婷婷色色欧美| 91人人操人人爱| 激情五月天婷婷五月天| 青娱乐美女福利视频美臀| 在线五月婷| 99热资源在线| 精品婷婷五| 五月成人丁香av91| 综合婷婷五月天| 色色色色色热| www.色色色com| 大婷婷色呦呦噜噜色呦呦噜噜| 激情综合区| 少妇大叫太大太粗太爽了A片| http://www.sd-xiangsu.com/| 91porn一起草| www五月| 人草人人| 色5月婷婷| 国产91资源在线| 五月天淫乱视频| 丁香亭亭久久| 色综合色综合色综合| 午夜免费试看| 人妻 性久久久久久| 婷婷趴趴| 五月丁香综合激情| 婷婷婷婷婷开心无码播放| 国产67194| 色色色九九九五月婷婷| 日本久久婷婷| 色高清无码视频| 9 99免费视频| 欧美在线| 五月亭亭网成人在线视频| 丁香五月天色综合| 久久码久久无清| 99热伊人| www.五月天婷婷| 99小精品| 色欲婷婷五月天丁香| 女人高潮内射99精品| 狠狠综合网| 五月色情婷婷开心五月色情| www91精品| 亚洲V国产V欧美V久久久久久| 综合XX网| 精品色色网| 91综合国免费久入| 五月色情精品| 色婷五月天| 免费亚洲婷婷五月| 思思热精品免费视频| 亚洲一级色电影| 五月婷九月| 五月丁香综合啪啪| 五月婷婷导航| 欧美激情五月| 久久综合这里只有精品1| 久久人视频| 香蕉人妻AV久久久久天天| 精品婷婷五| 91pornav在线| 欧美日韩二区在线| 中文AV网| 99热热这里只精品996小说| 91人妻视频| 五月丁香六月婷婷精品| WWW·色色色·COM| 伊人丁香在线| 337p大胆噜噜噜噜噜91Av| 色综合九九| 玖玖国产视频一区| 五月天婷婷色情| 婷婷色影音天| 噼里啪啦在线观看免费完整版视频| 国产精品色婷婷99久久精品| 日日夜夜爽| 五月婷婷熟女| site:pzdcoin.com| 久久久精品AV| 五月天婷婷久草丁香| 8050一级网| 夜精品无码A片一区二区蜜桃| 少妇高潮一区二区三区99欧美| 五月婷婷69| 六月色国内综合| 丁香 婷婷五月| 色情五月天视频网| 色激情综合| www.9797国产| 1024你懂的欧美曰韩| 五月婷婷 激情按摩| 色综合五月天| 九九色婷婷| 九九免费视频| 97碰碰人人| 色色色在线观看| 五月天精品视频| 色爱终和网| 五月综合六月丁| 新99思思视频| 婷色人人狠| 久久色情| 婷婷五月天激情网| 超碰操网| 久久婷婷激情| 综合色五月天| 亚洲在线操| 色哟哟精品| 久久婷婷五月综合精品蜜芽| 五月丁香久久色| www.五月婷| 久久色午夜在线导航| 涩涩激情五月婷婷| 东北熟女高潮99综合99| 香蕉99网| 99ri视频在线观看| 婷婷性爱综合| 婷婷丁香91| 五月婷婷草| 色婷婷瘦婷婷日韩| 九月色婷婷综合| 激情五月色综合网| 91精品婷婷国产综合| 91日日日| 丁香五月中文字幕| 中文字幕在线日亚州9| 99色婷婷| 婷婷激情五月天天天开心| 免费的日逼视频| 狠狠狠激情网| www.狠狠干com| 激情五月天www| 五月丁香人妻| 婷婷色综合av| 激情性爱五月天| 天天操人人干| 99爱视频| 97啪在线观看视频| 51精品国内探花| 亚洲无码黄色| 五月丁香av中文| 这里只有精品日韩| 天天插夜夜爽| 99热99热不卡| 天天做天天爱天天爽| 99福利导航| 99热色精品| 人妻内射一区二区在线视频| 91大操| 99爱爱网| 五月天激情黄色小说在线观看| 亚洲视99| 五月婷六月丁| 99re6久热只有精品6在线直播| 91色操| 五月丁香综合啪啪| 婷婷五月色播天| 日韩精品电影| 超碰免费人人| 三级成人网站| 精品成人a v无码内射| WWW,五月| 在线播放中文字幕| 婷婷色网址| 色欲影香| 日本本土色网第一区| 人人操人av| 久热99热| 99热精品在线| 五月色婷婷夜色| 91久久| 天天插轮理| 色五月婷婷五月| 色爱亚洲| 久久看九九90| 99在线视频播放| 亚洲综合网激情五月天| 99久久极情精品一区| 超碰人人在线| 久久se 综合网 | 狠狠操狠狠| 五月婷婷欧洲| 超碰chaompinm| 大伊久久| 色色五月天丁香| 强辱丰满人妻HD中文字幕| 在线成人av播放| 婷婷国产综合| 亚州操人在线视频| 天天日天天干天天操| 99爱在线| 色玖玖| 婷婷瑟瑟五月天| 丁香五月天之婷婷影院| 狠狠色综合无线观看| 一区色色色色网| 日韩欧美一级大黄网站| 亚洲综合色色| 亚洲成人av在线观看| 思思99热这里只有精品| 天天做天天摸| 天天爽天天| 五月花激情网| 婷婷丁香六月影视| 亚洲色夜| 热热色色五月天婷婷| 丁香五月欧美成人| dingxiangtingtingliuyue| 婷婷金品综合视频| 亚洲视频码| 在线区区区| 婷婷色五月开心五月| 青青草伊人婷婷| 九九性视频| 五月天综合视频| 成人精品视频99在线观看免费| 亚洲天99| 天天综合影院| 五月天婷婷成人网| 另类伊人婷婷| 99精品大片| 99热在线观看| 91碰在线| 激情五月天小说|五月天开心激情网|亚洲精品国产自在现线|黄色五月天 | WWW99视频| 色天天综合成人网| 亚洲操逼网| 激情四射婷婷| 婷婷五月六月| seav天堂| 六月婷婷无码| 97碰久久| 婷婷久久图片| 一级A片天天操夜夜操| 综合久久婷婷| 国产精品久久..4399| 色五月播五月| 99精品久久久久久| 天天日狠狠| 婷婷伊人五月天| 婷婷丁香五月天影院| 婷婷久久亚洲| 丁香五月婷婷色综合| 五月六月丁香婷婷在线观看| 色综合激情| 干一干xxxx| 色激情五月| 8050一级网| 亚洲熟妇AV综合网五月丁香伊人| 99热最新| 色综合久久44| 亚洲色夜| Www.狠狠| www.狠狠艹| 丁香五月停停av| 天天狠狠色噜噜| 成人精品视频99在线观看免费| 综合激情伊人影视在线| 丁香五月婷婷激情网| 大香蕉人在线65| 99re6久热只有精品6在线直播| 99草在线免费观看视频| 伊人婷婷五月天av| 五月日韩中文字幕| 日 日干 日日做| 欧美美女视频| 五月婷高清视频| 色情五月婷婷| peg 2区三区四区的| 深爱五月天| 五月激情婷婷图片基地| 青青草激情网| 五月丁香| 99A片| 色色自拍视频网站| 日韩AAAAA| 97人人干| 九九無妻| 色狠狠激情五月| 五月天婷婷激情| 五月丁色AV| 嫩草AV久久伊人妇女超级A| 色激情综合狠狠婷婷| 色婷五月| 婷婷激情五月天在线视频| 韩国真做片在线观看| 五月婷庭丁香在线| 中文字幕 中文字幕明步 | 日本九九九九九九| 5五月综合网亚洲| 91凹凸在线| 97操操操| 亚洲午夜精品久久久久久人妖| 六月丁丁香| 色色影院aaaav| 免费无码毛片一区二区A片| wwccc久久久| 人妻有码乱操| 激情綜合W W W,激情五月天| 五月婷婷六月丁香首页| 猫咪伊人久久| www.zbzhongsen.com| 色综合色综合网| 婷婷久久六月天| 色色综合网。| 五月婷婷色五月| 亚洲AV日韩无码| 色五月婷婷老师| 日日鲁鲁夜夜爽爽| 99九九99九九九视频精品| 人人摸人人| 狠狠久久婷五月| 色噜噜综合网| 九九热视频免费观看| 另类国产欧美视频| 欧美日韩成人在线网站| www.yw尤物| 国产AV一区二区三区最新精品| 亚洲狠狠狠| 九九综合网色全集 | 69精品人人人人| 午夜电影网VA内射| 在线99精品| 精品色| 久久草婷婷丁香网站| 大香蕉人人网| 色婷婷久久| 婷婷成人丁香色情基地30 | 色色综合视频| 色欧美影院| www.婷婷| 久久久久久久久久人妻| 操逼三区| 五月丁香激情综合| 99思思| 五月激情啪啪啪| www.超碰97| 狠狠操天天干| 天天爽天天爽天天爽天天爽天天爽天天爽天天| 激情综合婷婷| 丁香5月婷婷| 成人中文字幕在线| 激情深爱五月天| 亚洲久热无码| 日韩性视频| 日木WWW视频| 人人九色| 五月激情久久综合| 91人人操| 欧美性猛交 XXXX 乱大交| 99久久综合| 五月总合激情网| 五月婷婷先锋| 99色在线观看| 亚洲无码九九| 97色碰| 波多野结衣不卡AV| 激情婷婷色色| 婷婷五月天a| 五月激情综合网| 久久五月婷综合| 深夜男女福利刺激影院一区完整| 婷婷 亚洲图片 丁香| 久久九九中文字幕| 伊人在线视频| 在线观看免费狠狠色丁香香综合| 中文字幕丰满乱孑伦无码专区 | 九九热这里只有国产精品| 九九热10| 久9综合| 五月在线| 日日噜狠狠色综合久| 在线VA视频| 激情久久久久久久久久久| 牛牛热这里只有jingpin| 超碰人人操人人干| 婷婷在线免费| 久久这里只有国产| 天久久久久| 成人做爰黄A片免费看直播室男男| 超碰com| 79色色色色| wuyuedingxiang99| 丁香五月777| 一本色道久久综合狠狠躁一二三| 青青草激情网| 五月天婷婷成人网| 五月天婷婷色播在线网| 色狠狠色| 91人人操| 久久婷婷原创视频| 二色av| 色综合久久天天综合网| 五月婷婷说| 五月综合婷婷网| 99热伊人| 激情图片99| 天天色凹凸| 99人人干人人| 久久婷婷五月天激情新地址| av五月丁香| 亚洲成人在线观看av| 99在线免费视频| 婷婷无码视频| 爽天天天天天天天| 69色色视频| RenRenSe在线视频网站| 久久婷五月| 五月丁香亭亭操逼| 免费超碰在线| 久久丁香婷| 狠狠爱青青草| 久久在线视频免费观看|