具有web服務(wù)功能的嵌入式集中器系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開(kāi)了一種具有web服務(wù)功能的嵌入式集中器系統(tǒng),包括采用SQLite數(shù)據(jù)庫(kù)、并采用Buildroot完成Linux移植的嵌入式操作系統(tǒng)的微處理器;所述微處理器上設(shè)置外部看門狗電路;所述微處理器使用lighttpd作為web服務(wù)器軟件,使用LIBGCC作為CGI開(kāi)發(fā)的函數(shù)庫(kù);所述web服務(wù)器操作流程如下:首先:用戶訪問(wèn)web服務(wù)器,瀏覽基本信息;其次:用戶通過(guò)基本信息內(nèi)的用戶登錄界面登錄,進(jìn)行參數(shù)配置、用電信息管理以及運(yùn)行檢測(cè)三方面的操作;最后:用戶針對(duì)參數(shù)配置、用電信息管理以及運(yùn)行檢測(cè)三方面的操作完成后,安全退出。
【專利說(shuō)明】具有web服務(wù)功能的嵌入式集中器系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及智能電網(wǎng)技術(shù),特別涉及了一種具有web服務(wù)功能的潛入式集中器系統(tǒng)。
【背景技術(shù)】
[0002]在我國(guó)“十二五”期間,智能電網(wǎng)是我國(guó)投資和發(fā)展的重點(diǎn),對(duì)我國(guó)經(jīng)濟(jì)和社會(huì)發(fā)展有著重大意義。智能電網(wǎng)的建設(shè),將推動(dòng)智能小區(qū)、智能城市的快速發(fā)展,不斷提升人民生活品質(zhì)。其中家庭智能用電系統(tǒng)既可以實(shí)現(xiàn)對(duì)空調(diào)、熱水器等智能家電的實(shí)時(shí)控制和遠(yuǎn)程控制,還能夠通過(guò)智能電表實(shí)現(xiàn)自動(dòng)抄表和自動(dòng)轉(zhuǎn)賬交費(fèi)等功能,使生活更加便利;此夕卜,智能電網(wǎng)可以接入小型家庭風(fēng)力發(fā)電和屋頂光伏發(fā)電等裝置,并推動(dòng)電動(dòng)汽車的大規(guī)模應(yīng)用,從而提高清潔能源消費(fèi)比重,減少城市污染;最后,智能電網(wǎng)可以促進(jìn)電力用戶角色轉(zhuǎn)變,使其兼有用電和售電兩重屬性,能夠?yàn)橛脩舸罱ㄒ粋€(gè)家庭用電綜合服務(wù)平臺(tái),幫助用戶合理選擇用電方式,節(jié)約用能,有效降低能源費(fèi)用支出。
[0003]在此背景下,目前以客戶為中心的供電服務(wù)要求不斷提高,對(duì)發(fā)電市場(chǎng)交易和管理以及市場(chǎng)營(yíng)銷將提出更高要求。為了應(yīng)對(duì)這一新的需求和發(fā)展契機(jī),智能電網(wǎng)下電能計(jì)量的架構(gòu)與應(yīng)用技術(shù)已成為下一步研究的重點(diǎn)之一。目前許多相關(guān)企業(yè)與科研機(jī)構(gòu)開(kāi)始對(duì)智能電網(wǎng)下的數(shù)字化電能計(jì)量架構(gòu)與技術(shù)作儲(chǔ)備研究,以實(shí)現(xiàn)計(jì)量自動(dòng)化的靈活性和適應(yīng)性。在具體實(shí)施方面,計(jì)量設(shè)備的可靠性,安全性,故障檢測(cè)與自動(dòng)維護(hù)還需要進(jìn)一步的研究。在設(shè)備的安裝與升級(jí)過(guò)程中,早期產(chǎn)品在系統(tǒng)功能上逐步完善。但是隨著系統(tǒng)的普及,其可靠性、安全性問(wèn)題日益突出,這些問(wèn)題不僅給現(xiàn)場(chǎng)施工及維護(hù)人員帶來(lái)了很大麻煩,也對(duì)整個(gè)智能電網(wǎng)的服務(wù)質(zhì)量以及網(wǎng)絡(luò)建設(shè)產(chǎn)生了不利影響。因此,在深入研究并解決以上問(wèn)題的同時(shí),如何方便進(jìn)行系統(tǒng)故障檢測(cè)與維護(hù)也逐步得到廠泛重視。此外,配網(wǎng)運(yùn)行監(jiān)測(cè),線損自動(dòng)統(tǒng)計(jì),防竊電,計(jì)量自動(dòng)化的自組網(wǎng)等新的需求也對(duì)計(jì)量自動(dòng)化設(shè)備提出了挑戰(zhàn)。
【發(fā)明內(nèi)容】
[0004]本發(fā)明要解決的技術(shù)問(wèn)題是提供一種具有web服務(wù)功能的嵌入式集中器系統(tǒng)。
[0005]為了解決上述技術(shù)問(wèn)題,本發(fā)明提供一種具有web服務(wù)功能的嵌入式集中器系統(tǒng),包括采用SQLite數(shù)據(jù)庫(kù)、并采用Buildroot完成Linux移植的嵌入式操作系統(tǒng)的微處理器;所述微處理器上設(shè)置外部看門狗電路;所述微處理器使用Iighttpd作為web服務(wù)器軟件,使用LIBGCC作為CGI開(kāi)發(fā)的函數(shù)庫(kù);所述web服務(wù)器操作流程如下:首先:用戶訪問(wèn)web服務(wù)器,瀏覽基本信息;其次:用戶通過(guò)基本信息內(nèi)的用戶登錄界面登錄,進(jìn)行參數(shù)配置、用電信息管理以及運(yùn)行檢測(cè)三方面的操作;最后:用戶針對(duì)參數(shù)配置、用電信息管理以及運(yùn)行檢測(cè)三方面的操作完成后,安全退出。
[0006]作為對(duì)本發(fā)明所述的具有web服務(wù)功能的嵌入式集中器系統(tǒng)的改進(jìn):所述用戶訪問(wèn)web服務(wù)器時(shí),用戶認(rèn)證與訪問(wèn)控制步驟如下:第一步:用戶向web服務(wù)器請(qǐng)求登錄的網(wǎng)頁(yè)時(shí),web服務(wù)器端返回一個(gè)隨機(jī)數(shù)、salt值和MD5運(yùn)算JavaScript腳本MD5.js的網(wǎng)頁(yè);第二步:用戶在網(wǎng)頁(yè)的密碼框中輸入密碼,點(diǎn)擊提交時(shí),先由MD5.js將密碼和salt合并后散列,然后將散列值與時(shí)間戳合并后用MD5.js散列,接著將散列值發(fā)送到web服務(wù)器;第三步=Web服務(wù)器端登錄的CGI在收到登錄請(qǐng)求后將本地儲(chǔ)存的密碼與第一步生成的隨機(jī)數(shù)一同進(jìn)行MD5散列,將結(jié)果與收到的散列值對(duì)比,若相同則登錄成功。
[0007]作為對(duì)本發(fā)明所述的具有web服務(wù)功能的嵌入式集中器系統(tǒng)的進(jìn)一步改進(jìn):所述第三步中,本地儲(chǔ)存的密碼由用戶密碼和salt采用MD5散列而成。
[0008]作為對(duì)本發(fā)明所述的具有web服務(wù)功能的嵌入式集中器系統(tǒng)的進(jìn)一步改進(jìn):對(duì)用戶的權(quán)限采用2bit來(lái)標(biāo)記,00表示無(wú)訪問(wèn)權(quán)限,01表示可讀,10表示可寫(xiě),11表示可讀可寫(xiě);通過(guò)將參數(shù)配置、用電信息管理以及運(yùn)行檢測(cè)的三個(gè)2bit合成后表示系統(tǒng)用戶權(quán)限。
[0009]作為對(duì)本發(fā)明所述的具有web服務(wù)功能的嵌入式集中器系統(tǒng)的進(jìn)一步改進(jìn):所述Web服務(wù)器的參數(shù)配置、用電信息管理以及運(yùn)行檢測(cè)通過(guò)對(duì)于的CGI程序完成,步驟如下:所述參數(shù)配置包括接口配置和集中器時(shí)間設(shè)置:所述接口配置由在集中器對(duì)應(yīng)進(jìn)程重啟時(shí)載入修改自定義的通信接口配置文件hwcfg.conf完成;所述集中器時(shí)間設(shè)置由timeset.cgi來(lái)實(shí)現(xiàn);用電信息管理:所述用電信息管理由infomanage.cgi實(shí)現(xiàn),主要步驟如下:1)Cgi程序初始化,打開(kāi)數(shù)據(jù)連接;2) Cgi請(qǐng)求判斷,權(quán)限檢查;2.1)通過(guò)權(quán)限檢查后,根據(jù)相應(yīng)數(shù)據(jù)請(qǐng)求,進(jìn)行查詢、修改以及添加等步驟,如;完成數(shù)據(jù)庫(kù)查詢、數(shù)據(jù)庫(kù)更新或者數(shù)據(jù)庫(kù)插入后,打印返回結(jié)果,生成網(wǎng)頁(yè),并關(guān)閉CG1、數(shù)據(jù)庫(kù)連接等;2.2)權(quán)限檢查的結(jié)果為權(quán)限不足,則打印錯(cuò)誤信息,生成網(wǎng)頁(yè),并關(guān)閉CG1、數(shù)據(jù)庫(kù)連接等;運(yùn)行檢測(cè):所述運(yùn)行檢測(cè)過(guò)程由CGI程序使用shell后臺(tái)調(diào)用運(yùn)行檢測(cè)程序,在檢測(cè)結(jié)果出來(lái)前由瀏覽器每隔IOs自動(dòng)刷新網(wǎng)頁(yè)以避免連接超時(shí),步驟如下:l)Cgi程序初始化,判斷是否有檢測(cè)請(qǐng)求;1.1)判斷結(jié)果為有檢測(cè)請(qǐng)求,檢測(cè)程序是否在后臺(tái)運(yùn)行;1.1.0檢測(cè)到后臺(tái)運(yùn)行程序,打印忙狀態(tài),生成網(wǎng)頁(yè),之后關(guān)閉CGI等;1.1.2)檢測(cè)到?jīng)]有后臺(tái)運(yùn)行程序,運(yùn)行檢測(cè)進(jìn)程,生成檢測(cè)結(jié)果文件;1.2)判斷結(jié)果為無(wú)檢測(cè)請(qǐng)求,檢測(cè)結(jié)果是否生成;1.2.1)檢測(cè)到檢測(cè)結(jié)果文件已經(jīng)生成,打印檢測(cè)結(jié)果,生成網(wǎng)頁(yè),之后關(guān)閉CGI等;1.2.2)檢測(cè)到檢測(cè)結(jié)果文件沒(méi)有生成,生成含自動(dòng)刷新屬性的網(wǎng)頁(yè),之后關(guān)閉CGI等。
[0010]作為對(duì)本發(fā)明所述的具有web服務(wù)功能的嵌入式集中器系統(tǒng)的進(jìn)一步改進(jìn):所述web服務(wù)器具有系統(tǒng)自動(dòng)維護(hù)機(jī)制:所述系統(tǒng)自動(dòng)維護(hù)機(jī)制包括系統(tǒng)守護(hù)進(jìn)程、看門狗進(jìn)程、系統(tǒng)應(yīng)用程序校驗(yàn)和檢測(cè)進(jìn)程以及自動(dòng)遠(yuǎn)程升級(jí)進(jìn)程;所述系統(tǒng)守護(hù)進(jìn)程使用shell腳本編寫(xiě),實(shí)現(xiàn)步驟如下:在Linux的/etc目錄下的inittab中添加該系統(tǒng)守護(hù)進(jìn)程,并配置為respawn屬性,當(dāng)系統(tǒng)守護(hù)進(jìn)程被意外終止,會(huì)被系統(tǒng)自動(dòng)重新啟動(dòng);所述看門狗進(jìn)程實(shí)現(xiàn)步驟如下:當(dāng)系統(tǒng)崩潰時(shí),通過(guò)看門狗進(jìn)程無(wú)法運(yùn)行而觸發(fā)硬件看門狗,從而重啟系統(tǒng);所述系統(tǒng)應(yīng)用程序校驗(yàn)和檢測(cè)進(jìn)程使用步驟如下:首先對(duì)關(guān)鍵的應(yīng)用程序?qū)?yīng)的文件進(jìn)行MD5校驗(yàn),并與預(yù)先存儲(chǔ)的MD5值進(jìn)行比;不斷檢測(cè)系統(tǒng)應(yīng)用進(jìn)程,若系統(tǒng)應(yīng)用進(jìn)程被終止,則延時(shí)10s,然后重新執(zhí)行程序文件的校驗(yàn),再啟動(dòng)該進(jìn)程;所述自動(dòng)遠(yuǎn)程升級(jí)進(jìn)程實(shí)現(xiàn)步驟如下:自動(dòng)遠(yuǎn)程升級(jí)進(jìn)程定期的使用wget下載存放在基于HTTPS協(xié)議的更新服務(wù)器上的更新信息,若該信息中對(duì)應(yīng)指明本硬件系統(tǒng)需要更新,則繼續(xù)下載應(yīng)用程序包;下載完成后先進(jìn)行MD5校驗(yàn),校驗(yàn)通過(guò)后先結(jié)束對(duì)應(yīng)的舊版本的程序進(jìn)程,在監(jiān)測(cè)程序重啟這些程序前替換掉程序文件。[0011 ] 作為對(duì)本發(fā)明所述的具有web服務(wù)功能的嵌入式集中器系統(tǒng)的進(jìn)一步改進(jìn):所述微處理器采用開(kāi)關(guān)電源和線性電源組合供電。
[0012]本發(fā)明的具有web服務(wù)功能的嵌入式集中器系統(tǒng)主要根據(jù)如下的需求和目標(biāo)進(jìn)行設(shè)計(jì):從應(yīng)用功能角度分析,集中器的核心業(yè)務(wù)是接收并存儲(chǔ)由電能表、采集器等終端設(shè)備采集的用戶用電數(shù)據(jù),并與主站或者手持PDA等設(shè)備交換相關(guān)數(shù)據(jù)。集中器需要支持多種通信協(xié)議,能通過(guò)以太網(wǎng)絡(luò)、RS485、GSM/GPRS/CDMA等接口通信方式與外部設(shè)備交互。除了這些基本的功能,集中器還需要提供其他支持現(xiàn)場(chǎng)調(diào)試與維護(hù)的輔助功能。傳統(tǒng)的實(shí)現(xiàn)方法是現(xiàn)場(chǎng)人員采用串口,通過(guò)Linux命令行的方式對(duì)集中器調(diào)試和維護(hù),不僅效率低,對(duì)維護(hù)人員技術(shù)背景要求高,并且此方法安全性不高。所以本發(fā)明采用web服務(wù)器來(lái)實(shí)現(xiàn)以上功能,目的是為了簡(jiǎn)化操作,并降低對(duì)維護(hù)設(shè)備的要求,其最終目標(biāo)是使現(xiàn)場(chǎng)維護(hù)人員能通過(guò)支持網(wǎng)絡(luò)功能的PDA,電腦或者其他智能設(shè)備來(lái)完成主要的調(diào)試與維護(hù)工作。
[0013]從安全性角度來(lái)分析,集中器存儲(chǔ)與傳輸?shù)挠秒姅?shù)據(jù)的安全性和完整性是本發(fā)明最核心的安全問(wèn)題,一旦數(shù)據(jù)被破壞或者篡改將帶來(lái)巨大損失。而集中器是這些數(shù)據(jù)的載體,因此要保證這些數(shù)據(jù)安全,首先必須保證集中器自身的安全性,使其無(wú)法被外部通過(guò)網(wǎng)絡(luò)等方式突破。在此基礎(chǔ)之上,集中器與外部交互以上關(guān)鍵數(shù)據(jù)時(shí)的通信安全性也需要得到保障。所以集中器安全以及集中器通信協(xié)議安全需要得到最高規(guī)格的保護(hù)。而集中器的web服務(wù)器以及其他輔助功能,由于涉及關(guān)鍵數(shù)據(jù)的操作較少,且并非核心功能,通常只需要保證功能不被破壞或者不出現(xiàn)安全漏洞即可。這些可以通過(guò)控制使用權(quán)限,以及使用常用的有限的安全方式來(lái)保證。
[0014]本發(fā)明與已有技術(shù)相比最大的特點(diǎn)是基于web的對(duì)電力采集集中器的遠(yuǎn)程配置和運(yùn)行狀態(tài)檢測(cè),以及對(duì)于集中器用電信息安全性的設(shè)計(jì)。
[0015]本發(fā)明的具有web服務(wù)功能的嵌入式集中器系統(tǒng)的嵌入式web服務(wù)器架構(gòu)設(shè)計(jì)如下:
[0016]Web服務(wù)器在本發(fā)明中主要功能是為集中器管理人員以及現(xiàn)場(chǎng)維護(hù)人員提供簡(jiǎn)單易于操作的用戶接口,來(lái)實(shí)施集中器參數(shù)設(shè)置,小區(qū)電力載波網(wǎng)絡(luò)測(cè)試診斷,用戶數(shù)據(jù)查詢和管理等功能。該功能可以極大地提高電力抄表管理和施工人員的工作效率,也降低了對(duì)工作人員技術(shù)背景的要求。從以上需求特點(diǎn)來(lái)分析,web server (網(wǎng)頁(yè)服務(wù)器)支持的基本功能包括:
[0017]1.提供集中器軟硬件配置查詢與修改的接口 ;
[0018]2.提供數(shù)據(jù)庫(kù)信息的插入,查詢及修改;
[0019]3.提供電力載波網(wǎng)絡(luò)測(cè)試相關(guān)的接口 ;
[0020]4.提供網(wǎng)頁(yè)動(dòng)態(tài)顯示,動(dòng)態(tài)更新的功能;
[0021]此外,由于用戶可通過(guò)Webserver訪問(wèn)數(shù)據(jù)庫(kù)來(lái)查詢和修改用戶個(gè)人信息和用電信息,使用不當(dāng)將造成信息丟失或者泄露。并且,如果集中器參數(shù)配置錯(cuò)誤,將造成集中器數(shù)據(jù)傳輸失敗甚至發(fā)生硬件故障。這些功能若被非法用戶利用將會(huì)對(duì)用電安全以及電費(fèi)計(jì)量帶來(lái)極大危害。因此需要在基本功能上增設(shè)一下安全措施:
[0022]1.提供安全的訪問(wèn)web服務(wù)器的連接方式;
[0023]2.提供對(duì)用戶身份認(rèn)證的接口,并提供對(duì)應(yīng)的訪問(wèn)權(quán)限;
[0024]其中安全的web連接方式可采用https。由以上功能以及http服務(wù)器的基本原理 可以確立本發(fā)明中Webserver的基本架構(gòu)。
【專利附圖】
【附圖說(shuō)明】
[0025]下面結(jié)合附圖對(duì)本發(fā)明的【具體實(shí)施方式】作進(jìn)一步詳細(xì)說(shuō)明。
[0026]圖1集中器Webserver的基本架構(gòu);
[0027]圖2Web用戶操作流程;
[0028]圖3用電信息管理cgi程序流程;
[0029]圖4集中器運(yùn)行監(jiān)測(cè)cgi程序流程。
【具體實(shí)施方式】
[0030]實(shí)施例1、圖1到圖4給出了一種具有web服務(wù)功能的嵌入式集中器系統(tǒng);包括集中器系統(tǒng)平臺(tái);集中器系統(tǒng)平臺(tái)由嵌入式微處理器構(gòu)成;本發(fā)明的嵌入式微處理器選用ATEML公司的AT91SAM9260 (可靠性高、外設(shè)豐富),AT91SAM9260是ATEML公司一款采用ARM926EJ-S內(nèi)核的工業(yè)級(jí)嵌入式處理器采用了 CPLD對(duì)IO進(jìn)行擴(kuò)展(為現(xiàn)有技術(shù));為了保證系統(tǒng)電源效率,同時(shí)保證電源質(zhì)量,本發(fā)明采用開(kāi)關(guān)電源和線性電源組合并且采用了專門的外部看門狗電路。
[0031]本發(fā)明選取Linux作為嵌入式微處理器的嵌入式操作系統(tǒng)平臺(tái),采用Buildroot完成Linux移植的主要工作,具體步驟如下:第一步,搭建Buildroot工具鏈環(huán)境;第二步,完成Linux內(nèi)核配置與修改;第三步,鏡像文件燒錄與配置。
[0032]本發(fā)明采用SQLite數(shù)據(jù)庫(kù);SQLite數(shù)據(jù)庫(kù)主要由接口(Interface) SQL處理器、虛擬機(jī)(Virtual Machine)、B-Tree、頁(yè)緩存(pager)、操作系統(tǒng)接口(OS Interface)等組成。
[0033]通過(guò)嵌入式微處理器,在嵌入式微處理器內(nèi)搭建嵌入式web服務(wù)器,主要如下:
[0034]I)嵌入式web服務(wù)器(Webserver)搭建:
[0035]本發(fā)明選取Iighttpd作為web服務(wù)器軟件;由于Buildroot2011.02中已集成了Iighttpd選項(xiàng),僅需在buildroot菜單中使能相應(yīng)選項(xiàng)即可,無(wú)需從源碼移植。Iighttpd支持openssl來(lái)實(shí)現(xiàn)SSL連接,而buildroot在Iibcrypto庫(kù)選項(xiàng)下也集成了 openssl。因此,https服務(wù)器的搭建主要工作在于制作服務(wù)器SSL證書(shū)以及配置Iighttpd程序。
[0036]2)針對(duì)集中器系統(tǒng)平臺(tái)的web功能總體設(shè)計(jì):
[0037]為了對(duì)集中器配置,用戶用電信息的保護(hù),防止非授權(quán)用戶的篡改,web server在操作流程設(shè)計(jì)時(shí)需要考慮用戶登錄和網(wǎng)頁(yè)訪問(wèn)權(quán)限控制等功能。Web server操作流程如下:
[0038]首先:用戶訪問(wèn)web服務(wù)器,瀏覽基本信息(包括戶用電信息以及用戶登錄界面等);
[0039]其次:用戶通過(guò)用戶登錄界面登錄,正確登錄后,可以進(jìn)行參數(shù)配置、用電信息管理以及運(yùn)行檢測(cè)三方面的操作;
[0040]最后:用戶針對(duì)參數(shù)配置、用電信息管理以及運(yùn)行檢測(cè)三方面的操作完成后,安全退出。
[0041]web在功能設(shè)計(jì)時(shí)充分考慮模塊的分離,以便web功能的維護(hù)和更新。服務(wù)器內(nèi)的網(wǎng)頁(yè)界面框架應(yīng)盡量與網(wǎng)頁(yè)功能實(shí)現(xiàn)分離,并實(shí)現(xiàn)模板化。
[0042]3) web服務(wù)器CGI (通用網(wǎng)關(guān)界面)設(shè)計(jì)方法:
[0043]本發(fā)明中CGI程序除了需要生成基本的html代碼外,還需要與數(shù)據(jù)庫(kù),硬件接口以及其他系統(tǒng)軟件交互,因此,CGI程序應(yīng)采用能與以上相關(guān)程序?qū)崿F(xiàn)無(wú)縫連接的語(yǔ)言編寫(xiě)。為了減少Webserver CGI程序系統(tǒng)資源占用并提高系統(tǒng)開(kāi)發(fā)效率,因此本發(fā)明選用LIBGCC作為CGI開(kāi)發(fā)的函數(shù)庫(kù)。
[0044]4 ) Web用戶認(rèn)證與訪問(wèn)控制:
[0045]本發(fā)明登錄認(rèn)證的具體實(shí)現(xiàn)過(guò)程如下:
[0046]1.用戶向web服務(wù)器請(qǐng)求登錄的網(wǎng)頁(yè)時(shí),web服務(wù)器端返回一個(gè)隨機(jī)數(shù)、salt值和MD5運(yùn)算JavaScript腳本MD5.js的網(wǎng)頁(yè);
[0047]2.用戶在網(wǎng)頁(yè)的密碼框中輸入密碼,點(diǎn)擊提交時(shí),先由MD5.js將密碼和salt合并后散列,然后將散列值與時(shí)間戳合并后用MD5.js散列,接著將散列值發(fā)送到web服務(wù)器;
[0048]3.Web服務(wù)器端登錄的CGI在收到登錄請(qǐng)求后將本地儲(chǔ)存的密碼(由用戶密碼和salt采用MD5散列而成)與第一步生成的隨機(jī)數(shù)一同進(jìn)行MD5散列,將結(jié)果與收到的散列值對(duì)比,若相同則登錄成功。
[0049]為了簡(jiǎn)化用戶訪問(wèn)權(quán)限的管理,本發(fā)明中對(duì)每種功能使用2bit來(lái)標(biāo)記其用戶權(quán)限,00表不無(wú)訪問(wèn)權(quán)限,01表不可讀,10表不可與,11表不可讀可與,本發(fā)明同目如主要有三種功能,則將這3個(gè)2bit和在一起表示系統(tǒng)用戶權(quán)限;如用于集中器硬件參數(shù)修改的賬戶權(quán)限值是110000。每次CGI執(zhí)行用戶的訪問(wèn)請(qǐng)求前必須先檢查該文件中對(duì)應(yīng)的位。
[0050]5) Web服務(wù)器子功能設(shè)計(jì):
[0051]Web服務(wù)器子功能主要包括集中器硬件設(shè)置、用電信息管理以及集中器運(yùn)行檢測(cè)等,每種功能又可細(xì)分為多個(gè)子模塊,由不同的CGI程序完成,故下文僅作總體介紹。
[0052]①集中器硬件設(shè)置:
[0053]集中器硬件設(shè)置主要是完成對(duì)集中器通信接口參數(shù)配置以及時(shí)間設(shè)置。
[0054]其中,由于系統(tǒng)運(yùn)行時(shí)硬件接口通常被其他應(yīng)用進(jìn)程占用,無(wú)法直接修改,因此采用修改自定義的通信接口配置文件hwcfg.conf的方式來(lái)實(shí)現(xiàn)該功能。在集中器對(duì)應(yīng)進(jìn)程重啟時(shí)載入該配置文件(通信接口配置文件hwcfg.conf ),接口配置即可完成。集中器時(shí)間設(shè)置可由timeset.cgi來(lái)實(shí)現(xiàn),可以立即生效。
[0055]②用電信息管理:
[0056]用電信息管理功能主要包括用電信息查詢,用電信息修改以及添加用電信息等部分組成。該功能均由infomanage.cgi實(shí)現(xiàn),其程序流程如圖3所示。
[0057]1、Cgi程序初始化,打開(kāi)數(shù)據(jù)連接;
[0058]2、Cgi請(qǐng)求判斷,權(quán)限檢查;
[0059]2.1、通過(guò)權(quán)限檢查后,根據(jù)相應(yīng)數(shù)據(jù)請(qǐng)求,進(jìn)行查詢、修改以及添加等步驟,如;完成數(shù)據(jù)庫(kù)查詢、數(shù)據(jù)庫(kù)更新或者數(shù)據(jù)庫(kù)插入后,打印返回結(jié)果,生成網(wǎng)頁(yè),并關(guān)閉CG1、數(shù)據(jù)庫(kù)連接等;
[0060]2.2、權(quán)限檢查的結(jié)果為權(quán)限不足,則打印錯(cuò)誤信息,生成網(wǎng)頁(yè),并關(guān)閉CG1、數(shù)據(jù)庫(kù)連接等;
[0061]③集中器運(yùn)行檢測(cè):[0062]集中器運(yùn)行檢測(cè)包括集中器載波通信狀態(tài)檢測(cè),抄表進(jìn)程運(yùn)行檢測(cè)等。
[0063]由于檢測(cè)程序需要長(zhǎng)時(shí)間運(yùn)行才能獲取檢測(cè)結(jié)果,如果直接在CGI中運(yùn)行該程序,則網(wǎng)頁(yè)會(huì)出現(xiàn)超時(shí),因此CGI程序使用shell后臺(tái)調(diào)用運(yùn)行檢測(cè)程序,在檢測(cè)結(jié)果出來(lái)前由瀏覽器每隔IOs自動(dòng)刷新網(wǎng)頁(yè)以避免連接超時(shí)。程序簡(jiǎn)化流程如圖2所示。
[0064]UCgi程序初始化,判斷是否有檢測(cè)請(qǐng)求;
[0065]1.1、判斷結(jié)果為有檢測(cè)請(qǐng)求,檢測(cè)程序是否在后臺(tái)運(yùn)行;
[0066]1.1.1、檢測(cè)到后臺(tái)運(yùn)行程序,打印忙狀態(tài),生成網(wǎng)頁(yè),之后關(guān)閉CGI等;
[0067]1.1.2、檢測(cè)到?jīng)]有后臺(tái)運(yùn)行程序,運(yùn)行檢測(cè)進(jìn)程,生成檢測(cè)結(jié)果文件;
[0068]1.2、判斷結(jié)果為無(wú)檢測(cè)請(qǐng)求,檢測(cè)結(jié)果是否生成;
[0069]1.2.1、檢測(cè)到檢測(cè)結(jié)果文件已經(jīng)生成,打印檢測(cè)結(jié)果,生成網(wǎng)頁(yè),之后關(guān)閉CGI等;
[0070]1.2.2、檢測(cè)到檢測(cè)結(jié)果文件沒(méi)有生成,生成含自動(dòng)刷新屬性的網(wǎng)頁(yè),之后關(guān)閉CGI
坐寸ο
[0071 ] 系統(tǒng)自動(dòng)維護(hù)機(jī)制如下:
[0072]由于集中器長(zhǎng)期掛載在室外運(yùn)行,難以避免其遭遇斷電、雷擊等破壞;此外,系統(tǒng)軟硬件均可能存在潛在缺陷,在長(zhǎng)期運(yùn)行中可能出現(xiàn)運(yùn)行故障,如果這些故障不能及時(shí)發(fā)現(xiàn)和處理,將帶來(lái)更嚴(yán)重的后果;因此系統(tǒng)自動(dòng)維護(hù)機(jī)制的設(shè)計(jì)對(duì)系統(tǒng)可靠性保障有著重要意義。本發(fā)明自動(dòng)維護(hù)機(jī)制由以下幾部分組成:
[0073](I)系統(tǒng)守護(hù)進(jìn)程:
[0074]本發(fā)明中使用shell腳本編寫(xiě)了專門的守護(hù)進(jìn)程,用以保證整個(gè)系統(tǒng)的所有其他自動(dòng)維護(hù)程序如看門狗等不被異常終止。其具體實(shí)現(xiàn)方法是在Linux的/etc目錄下的inittab中添加該進(jìn)程,并配置為respawn屬性。這樣,即使該進(jìn)程被意外終止,仍會(huì)被系統(tǒng)自動(dòng)重新啟動(dòng)。
[0075](2)看門狗進(jìn)程:
[0076]看門狗進(jìn)程是為了配合AT91SAM9260外部的硬件看門狗,來(lái)保障系統(tǒng)嚴(yán)重故障而死機(jī)時(shí)能自動(dòng)重啟。一旦出現(xiàn)系統(tǒng)崩潰等嚴(yán)重問(wèn)題,該進(jìn)程都會(huì)因無(wú)法運(yùn)行而觸發(fā)硬件看門狗,從而重啟系統(tǒng)。
[0077](3)系統(tǒng)應(yīng)用程序校驗(yàn)和檢測(cè)進(jìn)程:
[0078]該進(jìn)程在系統(tǒng)應(yīng)用程序啟動(dòng)前首先對(duì)關(guān)鍵的應(yīng)用程序?qū)?yīng)的文件進(jìn)行MD5校驗(yàn),并與預(yù)先存儲(chǔ)的MD5值進(jìn)行比對(duì),保證系統(tǒng)進(jìn)程不被篡改或者不被意外破外。該進(jìn)程還會(huì)不斷檢測(cè)系統(tǒng)應(yīng)用進(jìn)程,如抄表進(jìn)程等是否被意外終止,若被終止則會(huì)延時(shí)IOs然后重新執(zhí)行程序文件的校驗(yàn),再啟動(dòng)該進(jìn)程。
[0079](4)自動(dòng)遠(yuǎn)程升級(jí)進(jìn)程:
[0080]系統(tǒng)自動(dòng)遠(yuǎn)程升級(jí)進(jìn)程會(huì)定期的使用wget下載存放在基于HTTPS協(xié)議的更新服務(wù)器上的更新信息,若該信息中對(duì)應(yīng)指明本硬件系統(tǒng)需要更新則繼續(xù)下載應(yīng)用程序包。下載完成后先進(jìn)行MD5校驗(yàn),校驗(yàn)通過(guò)后先結(jié)束對(duì)應(yīng)的舊版本的程序進(jìn)程,在監(jiān)測(cè)程序重啟這些程序前替換掉程序文件。
[0081]最后,還需要注意的是,以上列舉的僅是本發(fā)明的一個(gè)具體實(shí)施例。顯然,本發(fā)明不限于以上實(shí)施例,還可以有許多變形。本領(lǐng)域的普通技術(shù)人員能從本發(fā)明公開(kāi)的內(nèi)容直接導(dǎo)出或聯(lián)想到的所有變形,均應(yīng)認(rèn)為是本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.具有web服務(wù)功能的嵌入式集中器系統(tǒng),包括采用SQLite數(shù)據(jù)庫(kù)、并采用BuildiOOt完成Linux移植的嵌入式操作系統(tǒng)的微處理器;其特征是:所述微處理器上設(shè)置外部看門狗電路; 所述微處理器使用Iighttpd作為web服務(wù)器軟件,使用LIBGCC作為CGI開(kāi)發(fā)的函數(shù)庫(kù); 所述web服務(wù)器操作流程如下: 首先:用戶訪問(wèn)web服務(wù)器,瀏覽基本信息; 其次:用戶通過(guò)基本信息內(nèi)的用戶登錄界面登錄,進(jìn)行參數(shù)配置、用電信息管理以及運(yùn)行檢測(cè)三方面的操作; 最后:用戶針對(duì)參數(shù)配置、用電信息管理以及運(yùn)行檢測(cè)三方面的操作完成后,安全退出。
2.根據(jù)權(quán)利要求1所述的具有web服務(wù)功能的嵌入式集中器系統(tǒng),其特征是:所述用戶訪問(wèn)web服務(wù)器時(shí),用戶認(rèn)證與訪問(wèn)控制步驟如下: 第一步:用戶向web服務(wù)器請(qǐng)求登錄的網(wǎng)頁(yè)時(shí),web服務(wù)器端返回一個(gè)隨機(jī)數(shù)、salt值和MD5運(yùn)算JavaScript腳本MD5.js的網(wǎng)頁(yè); 第二步:用戶在網(wǎng)頁(yè)的 密碼框中輸入密碼,點(diǎn)擊提交時(shí),先由MD5.js將密碼和salt合并后散列,然后將散列值與時(shí)間戳合并后用MD5.js散列,接著將散列值發(fā)送到web服務(wù)器; 第三步:Web服務(wù)器端登錄的CGI在收到登錄請(qǐng)求后將本地儲(chǔ)存的密碼與第一步生成的隨機(jī)數(shù)一同進(jìn)行MD5散列,將結(jié)果與收到的散列值對(duì)比,若相同則登錄成功。
3.根據(jù)權(quán)利要求2所述的具有web服務(wù)功能的嵌入式集中器系統(tǒng),其特征是:所述第三步中,本地儲(chǔ)存的密碼由用戶密碼和salt采用MD5散列而成。
4.根據(jù)權(quán)利要求3所述的具有web服務(wù)功能的嵌入式集中器系統(tǒng),其特征是:對(duì)用戶的權(quán)限采用2bit來(lái)標(biāo)記,00表示無(wú)訪問(wèn)權(quán)限,01表示可讀,10表示可寫(xiě),11表示可讀可寫(xiě); 通過(guò)將參數(shù)配置、用電信息管理以及運(yùn)行檢測(cè)的三個(gè)2bit合成后表示系統(tǒng)用戶權(quán)限。
5.根據(jù)權(quán)利要求4所述的具有web服務(wù)功能的嵌入式集中器系統(tǒng),其特征是:所述Web服務(wù)器的參數(shù)配置、用電信息管理以及運(yùn)行檢測(cè)通過(guò)對(duì)于的CGI程序完成,步驟如下: 所述參數(shù)配置包括接口配置和集中器時(shí)間設(shè)置: 所述接口配置由在集中器對(duì)應(yīng)進(jìn)程重啟時(shí)載入修改自定義的通信接口配置文件hwcfg.conf 完成; 所述集中器時(shí)間設(shè)置由timeset.Cgi來(lái)實(shí)現(xiàn); 用電信息管理: 所述用電信息管理由infomanage.cgi實(shí)現(xiàn),主要步驟如下: .1)Cgi程序初始化,打開(kāi)數(shù)據(jù)連接; .2)Cgi請(qǐng)求判斷,權(quán)限檢查; . 2.1)通過(guò)權(quán)限檢查后,根據(jù)相應(yīng)數(shù)據(jù)請(qǐng)求,進(jìn)行查詢、修改以及添加等步驟,如;完成數(shù)據(jù)庫(kù)查詢、數(shù)據(jù)庫(kù)更新或者數(shù)據(jù)庫(kù)插入后,打印返回結(jié)果,生成網(wǎng)頁(yè),并關(guān)閉CG1、數(shù)據(jù)庫(kù)連接等; .2.2)權(quán)限檢查的結(jié)果為權(quán)限不足,則打印錯(cuò)誤信息,生成網(wǎng)頁(yè),并關(guān)閉CG1、數(shù)據(jù)庫(kù)連接等; 運(yùn)行檢測(cè): 所述運(yùn)行檢測(cè)過(guò)程由CGI程序使用shell后臺(tái)調(diào)用運(yùn)行檢測(cè)程序,在檢測(cè)結(jié)果出來(lái)前由瀏覽器每隔IOs自動(dòng)刷新網(wǎng)頁(yè)以避免連接超時(shí),步驟如下: .1) Cgi程序初始化,判斷是否有檢測(cè)請(qǐng)求; .1.1)判斷結(jié)果為有檢測(cè)請(qǐng)求,檢測(cè)程序是否在后臺(tái)運(yùn)行; .1.1.1)檢測(cè)到后臺(tái)運(yùn)行程序,打印忙狀態(tài),生成網(wǎng)頁(yè),之后關(guān)閉CGI等; .1.1.2)檢測(cè)到?jīng)]有后臺(tái)運(yùn)行程序,運(yùn)行檢測(cè)進(jìn)程,生成檢測(cè)結(jié)果文件; .1.2)判斷結(jié)果為無(wú)檢測(cè)請(qǐng)求,檢測(cè)結(jié)果是否生成; .1.2.1)檢測(cè)到檢測(cè)結(jié)果文件已經(jīng)生成,打印檢測(cè)結(jié)果,生成網(wǎng)頁(yè),之后關(guān)閉CGI等; .1.2.2)檢測(cè)到檢測(cè)結(jié)果文件沒(méi)有生成,生成含自動(dòng)刷新屬性的網(wǎng)頁(yè),之后關(guān)閉CGI等。
6.根據(jù)權(quán)利要求5所述的具有web服務(wù)功能的嵌入式集中器系統(tǒng),其特征是:所述web服務(wù)器具有系統(tǒng)自動(dòng)維護(hù)機(jī)制: 所述系統(tǒng)自動(dòng)維護(hù)機(jī)制包括系統(tǒng)守護(hù)進(jìn)程、看門狗進(jìn)程、系統(tǒng)應(yīng)用程序校驗(yàn)和檢測(cè)進(jìn)程以及自動(dòng)遠(yuǎn)程升級(jí)進(jìn)程; 所述系統(tǒng)守護(hù)進(jìn)程使用shell腳本編寫(xiě),實(shí)現(xiàn)步驟如下: 在Linux的/etc目錄下的inittab中添加該系統(tǒng)守護(hù)進(jìn)程,并配置為respawn屬性,當(dāng)系統(tǒng)守護(hù)進(jìn)程被意外終止,會(huì)被系統(tǒng)自動(dòng)重新啟動(dòng); 所述看門狗進(jìn)程實(shí)現(xiàn)步驟如下: 當(dāng)系統(tǒng)崩潰時(shí),通過(guò)看門狗進(jìn)程無(wú)法運(yùn)行而觸發(fā)硬件看門狗,從而重啟系統(tǒng); 所述系統(tǒng)應(yīng)用程序校驗(yàn)和檢測(cè)進(jìn)程使用步驟如下: 首先對(duì)關(guān)鍵的應(yīng)用程序?qū)?yīng)的文件進(jìn)行MD5校驗(yàn),并與預(yù)先存儲(chǔ)的MD5值進(jìn)行比; 不斷檢測(cè)系統(tǒng)應(yīng)用進(jìn)程,若系統(tǒng)應(yīng)用進(jìn)程被終止,則延時(shí)10s,然后重新執(zhí)行程序文件的校驗(yàn),再啟動(dòng)該進(jìn)程; 所述自動(dòng)遠(yuǎn)程升級(jí)進(jìn)程實(shí)現(xiàn)步驟如下: 自動(dòng)遠(yuǎn)程升級(jí)進(jìn)程定期的使用wget下載存放在基于HTTPS協(xié)議的更新服務(wù)器上的更新信息,若該信息中對(duì)應(yīng)指明本硬件系統(tǒng)需要更新,則繼續(xù)下載應(yīng)用程序包; 下載完成后先進(jìn)行MD5校驗(yàn),校驗(yàn)通過(guò)后先結(jié)束對(duì)應(yīng)的舊版本的程序進(jìn)程,在監(jiān)測(cè)程序重啟這些程序前替換掉程序文件。
7.根據(jù)權(quán)利要求6所述的具有web服務(wù)功能的嵌入式集中器系統(tǒng),其特征是:所述微處理器采用開(kāi)關(guān)電源和線性電源組合供電。
【文檔編號(hào)】H04L29/08GK103795786SQ201410024851
【公開(kāi)日】2014年5月14日 申請(qǐng)日期:2014年1月20日 優(yōu)先權(quán)日:2014年1月20日
【發(fā)明者】金心宇, 王佳樂(lè), 鄭創(chuàng)建 申請(qǐng)人:杭州百富電子技術(shù)有限公司