樓宇自動化eHouse – 創建一個Windows軟件覆蓋和自定義算法

家庭自動化 eHouse與PC軟件,允許你創建覆蓋的樓宇自動化系統 .
這使您可以創建自己的 , 單獨的算法 , 未實現的固件或驅動程序軟件控制串行 家庭自動化 eHouse .
為此 , 我們為用戶提供軟件的源代碼(在Delphi 5) . 它們可以被編譯新版本的Delphi,或用於其他編程語言 .
我們有意識地選擇了這個古老的版本,因為他們是業餘的程序已經可以免費使用 .
他們的工作在Windows XP一樣可靠 , 遠景 , Windows 7的32位和64位 .
該軟件被稱為eHouseLogAnalizer這些日誌模板應用程序讀取文本文件 .
它可以進行管理和監控的應用程序KillWdt . exe文件 .
應用程序的主要特點:

  • 讀出的所有驅動程序的狀態和名稱
  • 讀狀態和進入所有驅動程序的名稱
  • 閱讀的測量和測量輸入的所有驅動程序的名稱
  • 所有的數據加載到內部程序存儲器 , 它可以進一步由一個應用程序處理的

該應用程序使用的狀態創建的文件目錄中的文本文件 ‘ 日誌/狀態/ ‘ 延期 ‘ . 狀態 ‘ .
該文件是只讀的變化的情況下,在應用程序eHouse . exe文件 .

數據加載控制器在下列情況下記錄 ” ehouse_rm_em_hm ” 陣列RM中列出的 .

此外 , 數據保存HeatManager以下變量:
bonfire_status:字符串 ; / /狀態篝火HeatManager – 狀態壁爐加熱板eHouse . exe文件
boiler_status:字符串 ; / /狀態的鍋爐HM – 狀態的鍋爐加熱板eHouse . exe文件
Solar_status:字符串 ; / /狀態的太陽能系統 – 狀態的太陽能加熱板eHouse . exe文件
recuperator_status:字符串 ; / /狀態的休養 , 通風 , 空氣加熱 – 狀態的供暖,通風和熱回收
HADC:數組[0 . . 15]的雙 ; / /熱溫度經理 – 溫度測量HeatManager
/ /熱經理指數HADC陣列直接訪問 – 為直接讀取溫度HeatManager的恆定溫度指數
CONST HM_GWC = 3 ; / / GWC – 地埋管換熱器
HM_KOM1 = 4 ; / /壁爐塗1 – 篝火水套1
HM_KOMKONV = 5 ; / /壁爐konvekcyjne – 對流篝火
HM_KOM2 = 6 ; / /火機2 – 篝火水套2(備份)
HM_TWEWN = 7 ; / /內部室溫 – 內部的房間溫度
HM_SOLAR = 9 ; / /集電極太陽 – 太陽能系統
HM_ZEWNPN = 8 ; / /外部溫度北部 – 外部溫度北
HM_ZEWNPD = 1 ; / /外部溫度的南 – 外部溫度南
HM_KOC = 10 ; / /溫度鍋爐 – 鍋爐溫度
HM_BANDOL = 11 ; / / CO /熱水箱下降 – 熱watter底部的緩衝
HM_REQIN = 12 ; / /清潔空氣換熱器輸入 – 休養清新的空氣輸入
HM_REQOUT = 13 ; / /輸出換熱器首頁 – heaten休養新鮮空氣吹到房間 – 溫度
HM_NAG = 14 ; / /溫度控制的三 – 單向閥用於加熱和散熱器 – 三種方式截止後的水暖爐或其他供暖系統的溫度
HM_REQWYC = 15 ; / /首頁換熱器提取臟 – 休養從家裡臟排氣溫度
HM_BANGORA = 2 ; / /加熱/熱水箱戈拉 – 熱水緩衝TOP的
HM_BANSRO = 0 ; / /暖氣/熱水儲存罐的一種手段 – 中熱水緩衝液
可無功HADCNames:數組[0 . . 15]的字符串 ; / /名稱的傳感器(測量輸入)HeatManagera
基本功能EhouseLogAnalizer:
程序init_heat_temperature_names ; / /初始化和/或溫度傳感器讀取的HM的名稱
程序loadnames_rm ; / /負載RoomManagerĂłw中的名稱(eHouse 1)
程序readethernetdevs ; / /讀取的以太網驅動程序的名稱(eHouse 2)
get_index_rm功能(參數str:String):整數 ; / /返回文件名,狀態roomManagerami搜索索引的表
GB(字符:字符):布爾 ; / /返回一個布爾值的讀取狀態
adc_hm程序(STR:字符串 ; 指數:整數) ; / /將字符串轉換與讀狀態HeatManagera的記錄的溫度為
adc_rm程序(STR:字符串 ; 指數:整數) ; / /將字符串轉換成模擬測量時讀取狀態RoomManagerĂłw
GBS功能(B:布爾):字符串 ; / /寫文本形式的布爾值(0 , 1)
RMDeviceIndexByName功能(參數str:String):整數 ; / /返回索引的表RoomManagerami搜索名稱驅動程序
RMGetOutputStateNr功能(索引:整數 ; OutputNr:整數):布爾 ; / /返回的輸出狀態RM指數和輸出數量OutputNR
RMGetOutputState功能(索引:整數 ; OutputName:字符串):布爾 ; / /返回輸出狀態RM [索引],然後叫了一聲OutputName
RMGetInputStateNr功能(索引:整數 ; InputNr:整數):布爾 ; / /返回狀態的輸入RM [索引]進入InputNr
RMGetInputState功能(索引:整數 ; InputName:字符串):布爾 ; / /返回狀態的輸入RM [指數]的名稱的條目InputName
RMGetTempNr功能(索引:整數 ; InputNr:整數):雙 ; / /返回RM溫度,[指數]的數量進入InputNr
RMGetTemp功能(索引:整數 ; InputName:字符串): ; / /返回RM溫度,[指數]的名稱的條目InputName
RMGetInvPercent功能(索引:整數 ; InputName:字符串): ; / /返回百分比測量反向100 % – 所述RM [指數]和名稱的條目InputName(關係到電源電壓控制器)
RMGetInvPercentNr功能(索引:整數 ; InputNr:整數):雙 ; / /返回百分比測量反向100 % – 所述RM [指數]的的入口InputNr數(有關電源電壓控制器)
RMGetPercent功能(索引:整數 ; InputName:字符串): ; / /返回的百分比測量的RM [索引]進入InputName(有關電源電壓控制器的名稱)
RMGetPercentNr功能(索引:整數 ; InputNr:整數):雙 ; / /返回百分比測量反向100 % – 所述RM [指數]的名稱的條目InputNr(關係到電源電壓控制器)
RMGetDeviceOutputState的功能(DEVNAME:字符串 ; OutputName:字符串):布爾 ; / /返回稱為DEVNAME輸出驅動器的狀態,並呼籲OutputName
RMGetDeviceInputState的功能(DEVNAME:字符串 ; InputName:字符串):布爾 ; / /返回的狀態的驅動器的輸入的名稱和的的條目DEVNAME InputName的名稱
HMGetTemp功能(InputName:字符串):雙 ; / /返回溫度測量輸入要求HeatManagera InputName
HMGetTempNr功能(InputNr:整數):雙 ; / /返回溫度測量輸入數量為HeatManagera InputNr(1 . . 16)
chk_int功能(ST:字符串):整數 ; / /安全字符串轉換為整數
程序update_status ; / /更新表中的所有驅動程序的狀態(必須定期運行)
程序Test_save ; / /測試程序的結果寫入到一個文本文件中,以便
初始化驅動程序是在應用程序啟動後,所有的名字(FormCreate中)
程序TForm1 . FormCreate中(發件人:TObject的) ;
開始
路徑:= getcurrentdir() ; / /獲取當前的程序路徑必須是目錄中的 % eHouse_DIR % \ BIN \
路徑:= stringreplace(路徑 , ‘ \斌 ‘ , ‘ \ ‘ , [Rfignorecase]) ; / /獲取路徑的應用程序eHouse – 設置應用程序的路徑eHouse
loadnames_rm ; / /加載控制器名稱ehouse1 – 加載的驅動程序名稱eHouse 1
init_heat_temperature_names ; / /的負荷傳感器heatManagera名稱
readethernetdevs ; / /加載控制器以太網eHouse名 – 讀取設備名稱eHouse 2
定時器 . 間隔時間:3000 ; / /設置循環任務的時間間隔(以毫秒為單位) – 設置時間開始檢查循環數據
定時器 . 啟用:= TRUE ; / /開始自動工作(狀態更新 – 包括定期檢查的數據
update_status ; / /讀取的第一個狀態
結束 ;
循環數據進行檢查由該函數的Timer1(Timer1Timer)運行在一個設定的時間間隔中的參數的Timer1 . 間隔(以毫秒為單位) .
程序TForm1 . Timer1Timer(發件人:TObject的) ;
VAR TF:文本文件 ;
開始
update_status ; / /將狀態的驅動程序
Test_save ; / /測試的所有結果寫入到一個文本文件
嘗試/ /創建一個標記文件的應用程序KillExec . exe文件,可以 ” 看 ” 應用程序之前崩潰
AssignFile(TF , 路徑+ ‘ 日誌\ LOG – analizer . STP ‘ ) ;
/ /通知WDT應用程序正確使用stampfile的 ” LOG \日誌 – analizer . STP ”
重寫(TF) ;
writeln(TF , ‘ 1 ‘ ) ;
最後 ;
closefile(TF) ;
結束 ;
結束 ;