房物聯(lián)網(wǎng)環(huán)境監(jiān)控實(shí)戰(zhàn):傳感器組網(wǎng)與恒溫恒濕設(shè)備對(duì)接復(fù)盤)
1. 檔案館智慧庫(kù)房項(xiàng)目為什么值得復(fù)盤檔案館的庫(kù)房和普通倉(cāng)庫(kù)完全是兩碼事。普通倉(cāng)庫(kù)關(guān)注的是出入庫(kù)效率、空間利用率而檔案館庫(kù)房的核心訴求只有一個(gè)讓紙質(zhì)檔案在幾十年甚至上百年的時(shí)間尺度上保持可讀、可查、可追溯。溫度高兩度、濕度大百分之十短期內(nèi)看不出問(wèn)題但紙張的酸化、霉變、蟲(chóng)蛀都是慢性過(guò)程等到發(fā)現(xiàn)問(wèn)題的時(shí)候往往已經(jīng)損失了一批不可逆的資料。我參與的這個(gè)智慧庫(kù)房項(xiàng)目核心目標(biāo)就是兩件事一是把庫(kù)房里的溫濕度、漏水、門禁、煙感這些環(huán)境參數(shù)實(shí)時(shí)采集上來(lái)二是把恒溫恒濕設(shè)備的運(yùn)行狀態(tài)接入統(tǒng)一平臺(tái)實(shí)現(xiàn)聯(lián)動(dòng)控制。聽(tīng)起來(lái)不復(fù)雜但真正落地的時(shí)候傳感器組網(wǎng)和設(shè)備對(duì)接這兩塊踩的坑最多。這篇文章就把整個(gè)項(xiàng)目的復(fù)盤寫清楚包括方案選型的邏輯、實(shí)操過(guò)程中的關(guān)鍵細(xì)節(jié)、以及那些文檔里不會(huì)寫的經(jīng)驗(yàn)教訓(xùn)。如果你正在做檔案館、博物館、圖書館這類特殊庫(kù)房的環(huán)境監(jiān)控項(xiàng)目或者你在做物聯(lián)網(wǎng)相關(guān)的工程實(shí)踐這篇內(nèi)容應(yīng)該能幫你少走不少?gòu)澛?。我?huì)盡量把每個(gè)技術(shù)決策背后的“為什么”講透而不是只丟一堆配置參數(shù)給你。2. 整體方案設(shè)計(jì)與選型思路拆解2.1 為什么最終選了有線為主、無(wú)線為輔的混合組網(wǎng)項(xiàng)目初期討論組網(wǎng)方案的時(shí)候團(tuán)隊(duì)里有過(guò)比較激烈的爭(zhēng)論。一派主張全部用無(wú)線傳感器部署快、布線少、后期調(diào)整靈活另一派堅(jiān)持有線方案理由是穩(wěn)定可靠、不受干擾。最終我們走的是混合路線主干區(qū)域用RS485有線組網(wǎng)邊角和臨時(shí)監(jiān)測(cè)點(diǎn)用無(wú)線補(bǔ)充。這個(gè)決策背后的邏輯其實(shí)不復(fù)雜。檔案館庫(kù)房的墻體通常比較厚而且為了防火防潮很多庫(kù)房用的是密集架金屬架體對(duì)無(wú)線信號(hào)的遮擋非常嚴(yán)重。我們做過(guò)現(xiàn)場(chǎng)測(cè)試在密集架閉合的狀態(tài)下2.4GHz信號(hào)的衰減能達(dá)到20dB以上有些角落直接丟包。如果全部依賴無(wú)線要么加大量中繼節(jié)點(diǎn)要么接受數(shù)據(jù)不完整的風(fēng)險(xiǎn)。而檔案館的環(huán)境監(jiān)控?cái)?shù)據(jù)是要長(zhǎng)期存檔的數(shù)據(jù)缺失意味著無(wú)法追溯這個(gè)責(zé)任誰(shuí)都擔(dān)不起。有線方案選RS485而不是以太網(wǎng)主要是考慮成本和布線難度。RS485總線可以手拉手串聯(lián)一根雙絞線能掛幾十個(gè)節(jié)點(diǎn)布線量比每個(gè)傳感器拉一根網(wǎng)線小得多。而且RS485的抗干擾能力在低速長(zhǎng)距離場(chǎng)景下表現(xiàn)很好9600bps的速率跑幾百米沒(méi)問(wèn)題完全夠溫濕度傳感器用。無(wú)線部分我們用的是LoRa不是WiFi也不是ZigBee。LoRa的穿墻能力和傳輸距離在Sub-1GHz頻段下有明顯優(yōu)勢(shì)而且功耗極低一顆電池能撐一兩年。邊角區(qū)域布幾個(gè)LoRa節(jié)點(diǎn)通過(guò)一個(gè)網(wǎng)關(guān)匯聚后轉(zhuǎn)成RS485或者直接走網(wǎng)口上傳整體架構(gòu)就很清晰了。2.2 傳感器選型精度、長(zhǎng)期漂移與校準(zhǔn)周期溫濕度傳感器是整個(gè)系統(tǒng)的基礎(chǔ)選型的時(shí)候不能只看標(biāo)稱精度。市面上很多傳感器標(biāo)稱±0.3°C、±2%RH但那是出廠狀態(tài)下的指標(biāo)。實(shí)際用起來(lái)長(zhǎng)期漂移才是最大的敵人。我們最終選的是工業(yè)級(jí)SHT系列的數(shù)字溫濕度傳感器I2C接口直接輸出數(shù)字量。為什么不用模擬輸出的因?yàn)槟M信號(hào)在長(zhǎng)距離傳輸中容易受干擾而且需要額外的ADC轉(zhuǎn)換精度損失不說(shuō)校準(zhǔn)也麻煩。數(shù)字傳感器出廠時(shí)已經(jīng)校準(zhǔn)過(guò)通過(guò)I2C讀取的就是經(jīng)過(guò)內(nèi)部處理的數(shù)值省心很多。但即便是數(shù)字傳感器長(zhǎng)期漂移依然存在。廠家建議的校準(zhǔn)周期是一年但根據(jù)我們的實(shí)際經(jīng)驗(yàn)在檔案館這種相對(duì)穩(wěn)定的環(huán)境里一年半到兩年校準(zhǔn)一次是可以接受的。不過(guò)前提是你要有參照標(biāo)準(zhǔn)。我們的做法是在每個(gè)庫(kù)房放一個(gè)高精度的溫濕度記錄儀作為基準(zhǔn)定期和傳感器讀數(shù)比對(duì)偏差超過(guò)閾值就安排校準(zhǔn)或更換。這里有個(gè)細(xì)節(jié)值得說(shuō)傳感器的安裝位置比傳感器本身的精度更重要。我們一開(kāi)始把傳感器裝在靠近門口的位置結(jié)果發(fā)現(xiàn)門口開(kāi)關(guān)門的時(shí)候溫濕度波動(dòng)很大數(shù)據(jù)曲線全是毛刺。后來(lái)調(diào)整到庫(kù)房中心區(qū)域、離地面1.5米、遠(yuǎn)離空調(diào)出風(fēng)口和窗戶的位置數(shù)據(jù)才穩(wěn)定下來(lái)。這個(gè)經(jīng)驗(yàn)后來(lái)寫進(jìn)了我們的施工規(guī)范里。2.3 恒溫恒濕設(shè)備對(duì)接協(xié)議適配是最大的坑恒溫恒濕設(shè)備這塊品牌多、協(xié)議雜是設(shè)備對(duì)接中最頭疼的部分。我們項(xiàng)目里涉及三個(gè)品牌的設(shè)備一個(gè)國(guó)產(chǎn)主流品牌、一個(gè)歐洲品牌、一個(gè)老式設(shè)備。三種設(shè)備的通信方式完全不同。國(guó)產(chǎn)主流品牌通常支持Modbus RTU或者M(jìn)odbus TCP文檔也比較全對(duì)接相對(duì)順利。歐洲品牌的設(shè)備往往有自己的私有協(xié)議需要廠家提供協(xié)議文檔或者網(wǎng)關(guān)。最麻煩的是那臺(tái)老式設(shè)備只有RS232串口協(xié)議還是自定義的廠家早就停止技術(shù)支持了。針對(duì)這種情況我們的策略是分層對(duì)接能直接走M(jìn)odbus的走M(jìn)odbus有私有協(xié)議的通過(guò)廠家網(wǎng)關(guān)轉(zhuǎn)換老設(shè)備單獨(dú)寫協(xié)議解析程序。所有設(shè)備最終統(tǒng)一轉(zhuǎn)換成Modbus TCP或者M(jìn)QTT上報(bào)到平臺(tái)這樣上層平臺(tái)只需要處理一種數(shù)據(jù)格式。這里要特別提醒在項(xiàng)目前期就要把所有設(shè)備的通信協(xié)議摸清楚不要等到施工階段才發(fā)現(xiàn)某臺(tái)設(shè)備對(duì)接不了。我們當(dāng)時(shí)就是有一臺(tái)設(shè)備在聯(lián)調(diào)階段才發(fā)現(xiàn)協(xié)議不開(kāi)放臨時(shí)找廠家協(xié)調(diào)花了將近兩周時(shí)間。如果提前做調(diào)研這個(gè)時(shí)間完全可以省下來(lái)。3. 傳感器組網(wǎng)實(shí)操要點(diǎn)與避坑指南3.1 RS485總線布線拓?fù)?、終端電阻與接地RS485總線雖然簡(jiǎn)單但布線不規(guī)范導(dǎo)致通信失敗的情況太常見(jiàn)了。我見(jiàn)過(guò)最離譜的一個(gè)案例是有人把RS485接成了星型拓?fù)浣Y(jié)果整個(gè)總線時(shí)通時(shí)斷排查了一整天。正確的做法是手拉手串聯(lián)也就是從主控設(shè)備出來(lái)依次經(jīng)過(guò)每個(gè)節(jié)點(diǎn)最后到末端節(jié)點(diǎn)。分支線越短越好最好不要超過(guò)1米。如果實(shí)在需要分支可以用RS485集線器或者中繼器。終端電阻的問(wèn)題也經(jīng)常被忽略。RS485總線在兩端需要各接一個(gè)120Ω的終端電阻作用是消除信號(hào)反射??偩€長(zhǎng)度超過(guò)50米或者速率較高的時(shí)候不接終端電阻很容易出現(xiàn)通信錯(cuò)誤。但也不是所有情況都必須接短距離低速場(chǎng)景下不接也能湊合。我的建議是預(yù)留終端電阻的焊盤或者跳線調(diào)試的時(shí)候根據(jù)實(shí)際情況決定是否接入。接地是另一個(gè)容易出問(wèn)題的地方。RS485用的是差分信號(hào)理論上不需要參考地但實(shí)際上如果各節(jié)點(diǎn)的地電位差太大共模電壓超出收發(fā)器的承受范圍通信就會(huì)異常。我們的做法是所有RS485節(jié)點(diǎn)共地用一根額外的線把所有節(jié)點(diǎn)的GND連起來(lái)。如果現(xiàn)場(chǎng)地電位差確實(shí)很大可以考慮用隔離型RS485收發(fā)器。3.2 無(wú)線節(jié)點(diǎn)部署信號(hào)強(qiáng)度實(shí)測(cè)與信道規(guī)劃LoRa節(jié)點(diǎn)部署之前一定要做現(xiàn)場(chǎng)信號(hào)測(cè)試。我們的做法是拿一個(gè)便攜式LoRa網(wǎng)關(guān)和幾個(gè)測(cè)試節(jié)點(diǎn)在庫(kù)房里走一圈記錄每個(gè)位置的RSSI和丟包率。測(cè)試的時(shí)候要注意密集架的開(kāi)合狀態(tài)因?yàn)檫@是影響信號(hào)最大的變量。信道規(guī)劃也很重要。LoRa雖然抗干擾能力不錯(cuò)但如果多個(gè)網(wǎng)關(guān)用同一個(gè)信道還是會(huì)有沖突。我們用的是8信道網(wǎng)關(guān)把相鄰區(qū)域的節(jié)點(diǎn)分配到不同信道減少相互干擾。另外要注意的是LoRa的占空比限制。在某些地區(qū)Sub-1GHz頻段有占空比要求不能連續(xù)發(fā)射。如果數(shù)據(jù)上報(bào)頻率很高可能會(huì)觸發(fā)射頻法規(guī)的限制。我們的做法是把上報(bào)間隔控制在5分鐘以上既滿足監(jiān)控需求又不會(huì)違規(guī)。電池壽命是無(wú)線節(jié)點(diǎn)的另一個(gè)關(guān)鍵指標(biāo)。廠家標(biāo)稱的電池壽命通常是在理想條件下的理論值實(shí)際使用中發(fā)射功率、上報(bào)頻率、環(huán)境溫度都會(huì)影響。我們的經(jīng)驗(yàn)是如果上報(bào)間隔5分鐘、發(fā)射功率14dBm一顆19000mAh的鋰亞電池大概能用18到24個(gè)月。但如果環(huán)境溫度長(zhǎng)期低于-10°C電池壽命會(huì)大幅縮短這時(shí)候可能需要考慮外接電源或者太陽(yáng)能供電。3.3 網(wǎng)關(guān)選型與邊緣計(jì)算STM32方案的實(shí)際表現(xiàn)網(wǎng)關(guān)這塊我們用的是基于STM32的方案跑FreeRTOS負(fù)責(zé)輪詢RS485總線上的傳感器數(shù)據(jù)、接收LoRa節(jié)點(diǎn)的數(shù)據(jù)、然后通過(guò)以太網(wǎng)或者4G上報(bào)到平臺(tái)。選STM32而不是樹(shù)莓派或者工控機(jī)主要是考慮功耗、成本和穩(wěn)定性。STM32方案的優(yōu)勢(shì)是功耗低、啟動(dòng)快、沒(méi)有操作系統(tǒng)崩潰的風(fēng)險(xiǎn)。FreeRTOS的任務(wù)調(diào)度也很成熟我們分了幾個(gè)任務(wù)RS485輪詢?nèi)蝿?wù)、LoRa接收任務(wù)、數(shù)據(jù)處理任務(wù)、上報(bào)任務(wù)。任務(wù)之間通過(guò)消息隊(duì)列通信整體運(yùn)行很穩(wěn)定。但STM32方案也有局限。它的內(nèi)存和算力有限不適合做復(fù)雜的數(shù)據(jù)處理或者本地存儲(chǔ)。我們的做法是邊緣端只做數(shù)據(jù)采集和簡(jiǎn)單過(guò)濾比如去掉明顯異常的跳變值真正的數(shù)據(jù)分析和存儲(chǔ)放在平臺(tái)側(cè)。這樣既發(fā)揮了STM32的低功耗優(yōu)勢(shì)又避免了它的短板。這里有個(gè)實(shí)操細(xì)節(jié)STM32的RS485方向控制。RS485是半雙工的發(fā)送和接收需要切換。如果切換時(shí)機(jī)不對(duì)要么發(fā)不出去要么收不到。我們的做法是用一個(gè)GPIO控制收發(fā)器的DE/RE引腳在發(fā)送前拉高發(fā)送完成后立即拉低。但要注意發(fā)送完成判斷不能只看發(fā)送寄存器空因?yàn)閿?shù)據(jù)可能還在移位寄存器里。穩(wěn)妥的做法是等TCTransmission Complete標(biāo)志置位后再切換方向。4. 恒溫恒濕設(shè)備對(duì)接的完整實(shí)操流程4.1 協(xié)議調(diào)研與設(shè)備清單整理設(shè)備對(duì)接的第一步不是寫代碼而是把所有設(shè)備的通信協(xié)議整理成一張表。這張表要包含設(shè)備品牌型號(hào)、通信接口RS485/RS232/以太網(wǎng)、通信協(xié)議Modbus RTU/Modbus TCP/私有協(xié)議、寄存器地址表、數(shù)據(jù)類型、讀寫權(quán)限、通信參數(shù)波特率、數(shù)據(jù)位、停止位、校驗(yàn)位。我們當(dāng)時(shí)整理這張表花了大概三天時(shí)間但后面省下的調(diào)試時(shí)間遠(yuǎn)遠(yuǎn)超過(guò)這個(gè)投入。特別是寄存器地址表一定要找廠家要最新的文檔不要用網(wǎng)上搜到的舊版本。我們有一臺(tái)設(shè)備就是用了舊版文檔寄存器地址對(duì)不上讀出來(lái)的數(shù)據(jù)全是亂的。對(duì)于私有協(xié)議的設(shè)備要提前和廠家溝通看是否能提供協(xié)議文檔或者轉(zhuǎn)換網(wǎng)關(guān)。如果廠家不配合可以考慮用協(xié)議分析儀抓取設(shè)備和其他控制面板之間的通信數(shù)據(jù)逆向分析協(xié)議。但這個(gè)方法費(fèi)時(shí)費(fèi)力而且有法律風(fēng)險(xiǎn)建議只在萬(wàn)不得已的情況下使用。4.2 Modbus寄存器映射與數(shù)據(jù)解析Modbus是最常見(jiàn)的工業(yè)協(xié)議但不同廠家的寄存器映射方式千差萬(wàn)別。有的用保持寄存器Holding Register有的用輸入寄存器Input Register有的數(shù)據(jù)是16位整數(shù)有的是32位浮點(diǎn)數(shù)有的高字節(jié)在前有的低字節(jié)在前。我們遇到過(guò)一個(gè)典型問(wèn)題某品牌溫濕度設(shè)備的溫度值是32位浮點(diǎn)數(shù)存在兩個(gè)連續(xù)的保持寄存器里。但文檔里沒(méi)有說(shuō)明字節(jié)序我們按大端解析出來(lái)是亂碼換成小端才正確。這種問(wèn)題只能靠試或者直接問(wèn)廠家技術(shù)支持。另一個(gè)常見(jiàn)問(wèn)題是寄存器的讀寫權(quán)限。有些寄存器是只讀的有些是可讀寫的有些是保留的。如果對(duì)只讀寄存器執(zhí)行寫操作設(shè)備可能會(huì)返回異常碼甚至進(jìn)入保護(hù)狀態(tài)。我們的做法是在代碼里維護(hù)一個(gè)寄存器權(quán)限表寫操作之前先檢查權(quán)限。數(shù)據(jù)解析這塊建議用結(jié)構(gòu)體或者類來(lái)封裝每個(gè)設(shè)備的數(shù)據(jù)模型把原始寄存器值轉(zhuǎn)換成有物理意義的數(shù)值。比如溫度寄存器讀出來(lái)是235實(shí)際含義是23.5°C這個(gè)轉(zhuǎn)換邏輯要寫在設(shè)備驅(qū)動(dòng)層不要暴露給上層應(yīng)用。4.3 聯(lián)動(dòng)控制邏輯閾值設(shè)定與防震蕩策略恒溫恒濕設(shè)備對(duì)接的最終目的是實(shí)現(xiàn)聯(lián)動(dòng)控制。比如溫度超過(guò)28°C自動(dòng)開(kāi)啟制冷濕度低于40%RH自動(dòng)開(kāi)啟加濕。但聯(lián)動(dòng)邏輯不是簡(jiǎn)單的if-else要考慮防震蕩。什么是震蕩就是設(shè)備頻繁啟停。比如溫度到了28°C開(kāi)制冷降到27.9°C就關(guān)過(guò)一會(huì)兒又升到28°C又開(kāi)這樣設(shè)備壽命會(huì)大幅縮短。我們的做法是設(shè)置回差開(kāi)啟閾值28°C關(guān)閉閾值26°C中間有2°C的緩沖區(qū)間。濕度也是類似開(kāi)啟閾值40%RH關(guān)閉閾值45%RH。另外還要考慮延時(shí)啟動(dòng)。設(shè)備停機(jī)后不要立即重啟至少等3到5分鐘讓壓縮機(jī)內(nèi)部的壓力平衡。這個(gè)延時(shí)邏輯要寫在控制程序里不能依賴設(shè)備自身的保護(hù)。還有一個(gè)容易被忽略的點(diǎn)手動(dòng)優(yōu)先。聯(lián)動(dòng)控制再智能也要保留手動(dòng)操作的能力。我們?cè)诳刂泼姘迳霞恿耸謩?dòng)/自動(dòng)切換開(kāi)關(guān)手動(dòng)模式下平臺(tái)只監(jiān)測(cè)不控制避免和現(xiàn)場(chǎng)操作沖突。5. 常見(jiàn)問(wèn)題排查與實(shí)戰(zhàn)經(jīng)驗(yàn)速查5.1 傳感器數(shù)據(jù)異常排查流程傳感器數(shù)據(jù)異常是最常見(jiàn)的問(wèn)題表現(xiàn)可能是數(shù)值跳變、恒定不變、或者明顯偏離實(shí)際。排查的時(shí)候建議按以下順序來(lái)排查步驟檢查內(nèi)容可能原因處理方法1供電電壓電壓不足或過(guò)高用萬(wàn)用表測(cè)量調(diào)整到額定范圍2通信線路接線松動(dòng)、短路、斷路檢查接線端子測(cè)量通斷3通信參數(shù)波特率、地址沖突確認(rèn)參數(shù)一致排查地址重復(fù)4傳感器本身探頭老化、污染清潔探頭或更換傳感器5安裝位置靠近熱源、風(fēng)口調(diào)整安裝位置6干擾源變頻器、大功率設(shè)備增加屏蔽或隔離我們遇到過(guò)一次數(shù)據(jù)跳變的問(wèn)題排查了半天發(fā)現(xiàn)是傳感器和變頻器共用了一個(gè)開(kāi)關(guān)電源變頻器工作時(shí)產(chǎn)生的諧波干擾了傳感器供電。后來(lái)給傳感器單獨(dú)加了一個(gè)線性電源問(wèn)題就解決了。這個(gè)經(jīng)驗(yàn)告訴我們環(huán)境監(jiān)控系統(tǒng)的供電一定要干凈不要和動(dòng)力設(shè)備混用。5.2 恒溫恒濕設(shè)備通信超時(shí)的處理通信超時(shí)是設(shè)備對(duì)接中的高頻問(wèn)題??赡艿脑蛴芯€路問(wèn)題、設(shè)備忙、協(xié)議不匹配、地址錯(cuò)誤。我們的排查方法是先用調(diào)試工具手動(dòng)發(fā)指令確認(rèn)設(shè)備和線路本身沒(méi)問(wèn)題再排查程序邏輯。如果手動(dòng)發(fā)指令能通但程序輪詢超時(shí)大概率是輪詢頻率太高。有些老設(shè)備的響應(yīng)速度慢如果輪詢間隔太短設(shè)備還沒(méi)處理完上一條指令下一條就來(lái)了就會(huì)超時(shí)。我們的做法是根據(jù)設(shè)備響應(yīng)時(shí)間動(dòng)態(tài)調(diào)整輪詢間隔響應(yīng)慢的設(shè)備單獨(dú)放慢。還有一種情況是多主站沖突。如果RS485總線上有多個(gè)主站同時(shí)輪詢就會(huì)沖突。我們的系統(tǒng)里只有一個(gè)主站網(wǎng)關(guān)但如果現(xiàn)場(chǎng)有廠家自己的控制面板也在輪詢就會(huì)出問(wèn)題。解決方法是協(xié)調(diào)各方確保同一時(shí)間只有一個(gè)主站。5.3 無(wú)線節(jié)點(diǎn)丟包的優(yōu)化思路無(wú)線節(jié)點(diǎn)丟包的原因比較多常見(jiàn)的有信號(hào)弱、信道干擾、電池電量低、節(jié)點(diǎn)故障。優(yōu)化的時(shí)候要先定位原因再對(duì)癥下藥。信號(hào)弱的話可以調(diào)整節(jié)點(diǎn)位置、增加網(wǎng)關(guān)、或者提高發(fā)射功率。信道干擾的話可以用頻譜儀掃描一下看看哪些信道比較干凈。電池電量低的話要檢查上報(bào)頻率是否過(guò)高、發(fā)射功率是否過(guò)大。節(jié)點(diǎn)故障的話就只能更換了。我們有個(gè)小技巧在網(wǎng)關(guān)上記錄每個(gè)節(jié)點(diǎn)的RSSI和丟包率定期分析。如果某個(gè)節(jié)點(diǎn)的RSSI持續(xù)下降可能是電池快沒(méi)電了或者天線接觸不良提前處理可以避免數(shù)據(jù)中斷。5.4 平臺(tái)側(cè)數(shù)據(jù)存儲(chǔ)與告警配置數(shù)據(jù)到了平臺(tái)之后存儲(chǔ)和告警是兩大核心功能。存儲(chǔ)方面建議按時(shí)序數(shù)據(jù)庫(kù)來(lái)設(shè)計(jì)因?yàn)榄h(huán)境數(shù)據(jù)是典型的時(shí)間序列數(shù)據(jù)用關(guān)系數(shù)據(jù)庫(kù)存會(huì)有性能問(wèn)題。我們用的是InfluxDB寫入和查詢效率都不錯(cuò)。告警配置要分級(jí)。比如溫度超過(guò)30°C是警告超過(guò)35°C是嚴(yán)重告警濕度超過(guò)65%RH是警告超過(guò)70%RH是嚴(yán)重告警。不同級(jí)別對(duì)應(yīng)不同的通知方式警告可以只發(fā)站內(nèi)消息嚴(yán)重告警要發(fā)短信或者打電話。告警的防抖也很重要。如果傳感器數(shù)據(jù)抖動(dòng)導(dǎo)致頻繁告警運(yùn)維人員會(huì)麻木。我們的做法是連續(xù)三次超過(guò)閾值才觸發(fā)告警而且告警后要等一段時(shí)間才能再次觸發(fā)同一告警。6. 項(xiàng)目復(fù)盤后的幾點(diǎn)個(gè)人體會(huì)這個(gè)項(xiàng)目做完之后我最大的感受是物聯(lián)網(wǎng)項(xiàng)目的難點(diǎn)不在技術(shù)本身而在現(xiàn)場(chǎng)。實(shí)驗(yàn)室里跑得通的方案到了現(xiàn)場(chǎng)可能完全不是那么回事。傳感器的安裝位置、設(shè)備的通信協(xié)議、現(xiàn)場(chǎng)的電磁環(huán)境這些因素在方案設(shè)計(jì)階段很難完全考慮到必須在施工和調(diào)試階段靈活應(yīng)對(duì)。另一個(gè)體會(huì)是文檔和溝通比寫代碼更重要。設(shè)備清單、協(xié)議文檔、寄存器地址表、布線圖這些東西整理清楚了后面的工作會(huì)順暢很多。我們項(xiàng)目前期花了大概一周時(shí)間做調(diào)研和文檔整理當(dāng)時(shí)覺(jué)得有點(diǎn)慢但后面調(diào)試的時(shí)候幾乎沒(méi)有因?yàn)樾畔⒉蝗ㄗ?。最后說(shuō)一個(gè)具體的技巧在網(wǎng)關(guān)里加一個(gè)數(shù)據(jù)緩存功能。網(wǎng)絡(luò)中斷的時(shí)候數(shù)據(jù)先存本地網(wǎng)絡(luò)恢復(fù)后補(bǔ)傳。這個(gè)功能在檔案館這種對(duì)數(shù)據(jù)完整性要求高的場(chǎng)景里特別重要。我們用的是環(huán)形緩沖區(qū)能存大概一周的數(shù)據(jù)實(shí)際用下來(lái)很穩(wěn)。如果你也在做類似的項(xiàng)目建議在方案設(shè)計(jì)階段就多花時(shí)間做現(xiàn)場(chǎng)調(diào)研把各種可能性都考慮到。物聯(lián)網(wǎng)項(xiàng)目的坑大多不是技術(shù)坑而是現(xiàn)場(chǎng)坑。