ビルオートメーションのeHouse – Windowsソフトウェアのオーバーレイとカスタム·アルゴリズムを作成する

ホームオートメーション PCソフトウェアeHouseは、ビルディング·オートメーション·システム用のオーバーレイを作成することができます .
これはあなたがあなた自身を作成することができます , 個々のアルゴリズム , シリアルを制御するファームウェアやドライバソフトウェアに実装されていません ホームオートメーション eHouse .
この目的を達成するために , 我々は(デルファイ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 ; / /温度制御3 – 加熱用とラジエータ用三方弁 – 給湯器や他の暖房システムのための3つの方法のカット後の温度
HM_REQWYC = 15 ; / /ホームレキュペレータエキス汚い – 家汚い排気温度から療養
HM_BANGORA = 2 ; / /暖房/給湯タンク強羅 – お湯バッファTOPへ
HM_BANSRO = 0 ; / /暖房/貯湯タンクの手段 – MIDDLE温水バッファ
VAR HADCNames:配列[0 . . 15]文字列の ; / /センサーの名前(入力を測定)HeatManagera
基本的な機能のEhouseLogAnalizer:
プロシージャinit_heat_temperature_names ; / /初期化および/または温度センサはHMの名前を読み取る
手順loadnames_rm ; / /ロードRoomManagerĂłw名(eHouse 1)
プロシージャreadethernetdevs ; / /読み込みイーサネットドライバ名(eHouse 2)
get_index_rm関数(文字列:文字列):整数 ; / /戻り値のファイル名のステータス別roomManagerami検索とテーブルのインデックス
機能ギガバイト(CHRます:char):boolean型 ; / /戻り値の読み取りステータスのブール値
adc_hm手順(文字列:文字列 ; インデックス:整数) ; / /リードステータスHeatManageraの記録された温度で文字列に変換する
adc_rm手順(文字列:文字列 ; インデックス:整数) ; ステータスRoomManagerĂłwを読み込むとき/ /アナログ測定の文字列に変換する
GBS機能(B:ブール値):文字列 ; テキスト形式(0に/ /書き込みブール , 1)
RMDeviceIndexByName関数(文字列:文字列):整数 ; / /戻り値名前ドライバによって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の割合を測定 % – X、RM [インデックス]とエントリInputNameの名前(電源電圧コントローラに関連して)
RMGetInvPercentNr機能(インデックス:整数 ; InputNr:整数):ダブル ; / /戻り値逆100の割合を測定 % – X、RM [インデックス]とエントリInputNr数(電源電圧コントローラに関連して)
RMGetPercent機能(インデックス:整数 ; InputName:文字列):ダブル ; / /戻り値のRM [インデックス]の割合の測定およびエントリInputNameの名前(電源電圧制御に関連して)
RMGetPercentNr機能(インデックス:整数 ; InputNr:整数):ダブル ; / /戻り値逆100の割合を測定 % – X、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(パス , ‘ \ BIN ‘ , ‘ \ ‘ , [Rfignorecase]) ; / /アプリケーションのeHouseのパスを取得 – アプリケーションパスのeHouseを設定
loadnames_rm ; / /ロードコントローラ名ehouse1 – 負荷ドライバ名のeHouse 1
init_heat_temperature_names ; / /ロードセンサーheatManagera名
readethernetdevs ; / /ロードコントローライーサネットのeHouse名 – デバイス名のeHouse 2を読み取る
Timer1の . 間隔:= 3000 ; / /設定をミリ秒単位で周期的タスクの間隔 – サイクリックデータのチェックを開始する時間を設定します
Timer1の . 有効:=真 ; / /(ステータスアップデートの自動タスクを起動 – データの定期的なチェックが含まれています
update_status ; / /最初の状態を読み出し
終わり ;
サイクリックデータのチェックが機能タイマによって行われます(Timer1Timer)パラメータタイマで設定した時間間隔で実行され . 間隔(ミリ秒) .
手順TForm1に . Timer1Timer(送信者:TObjectを) ;
varのTF:テキストフ​​ァイル ;
始まる
update_status ; / /はドライバーの状態を変換
Test_save ; /テスト用/テキストフ​​ァイルにすべての結果を書き込みます
KillExec /は/アプリケーションに適したマーカーファイルを作成しよう . 缶EXE ” 見守る ” クラッシュする前にアプリケーション
AssignFile(TF , パス+ ‘ ログ\ログ – analizer . STP ‘ ) ;
/ /アプリケーションが正しくstampfileを使用して稼動していることをWDTを通知 ” \ログを記録 – analizer . STP ”
リライト(TF) ;
のwriteln(TF , ‘ 1 ‘ ) ;
ついに ;
closefile(TF) ;
終わり ;
終わり ;