बिल्डिंग स्वचालन eHouse – एक विंडोज सॉफ्टवेयर overlays और कस्टम एल्गोरिदम बनाना

गृह स्वचालन पीसी सॉफ्टवेयर के साथ eHouse आप निर्माण स्वचालन प्रणाली के लिए overlays बनाने के लिए अनुमति देता है .
यह आप अपने खुद के बनाने के लिए अनुमति देता है , व्यक्तिगत एल्गोरिदम , फर्मवेयर या ड्राइवर सॉफ्टवेयर है कि सीरियल को नियंत्रित करता है, में लागू नहीं कर रहे हैं गृह स्वचालन eHouse .
यह अंत करने के लिए , हम सॉफ्टवेयर स्रोत कोड के साथ उपयोगकर्ताओं को प्रदान करते हैं (5 डेल्फी में) . वे डेल्फी के नए संस्करणों के साथ संकलित किया जा सकता है या अन्य प्रोग्रामिंग भाषाओं के लिए इस्तेमाल किया .
हम बूझकर इस पुराने संस्करण को चुना है के रूप में वे पहले से ही शौकिया कार्यक्रम के लिए मुक्त करने के लिए उपलब्ध हैं .
वे Windows XP पर बस के रूप में मज़बूती से काम , विस्टा , विंडोज 7 दोनों 32 और 64 बिट .
इस सॉफ्टवेयर eHouseLogAnalizer और लॉग इन टेम्पलेट अनुप्रयोगों है कि पाठ फ़ाइलों की तारीख को पढ़ने के लिए कहा जाता है .
यह और प्रबंधित किया जा सकता है और अनुप्रयोगों KillWdt द्वारा निगरानी . exe .
आवेदन की मुख्य विशेषताएं:

  • सभी ड्राइवरों की स्थिति नाम पढ़ना
  • स्थिति पढ़ें और सभी ड्राइवरों के नाम दर्ज करें
  • और माप सभी आदानों मापने ड्राइवरों की नाम पढें
  • आंतरिक कार्यक्रम स्मृति सभी डेटा लोड , जो आगे एक आवेदन से संसाधित किया जा सकता है

आवेदन एक निर्देशिका में पाठ फ़ाइलों के लिए बनाई गई फ़ाइलों की स्थिति का उपयोग करता है ‘ लॉग / स्थिति / ‘ विस्तार ‘ . हैसियत ‘ .
फ़ाइल आवेदन eHouse में परिवर्तन की स्थिति में ही पढ़ा जाता है . exe .

डेटा नियंत्रकों निम्नलिखित उदाहरणों रिकॉर्ड्स में लोड कर रहे हैं ” ehouse_rm_em_hm ” सरणी RM में सूचीबद्ध .

इसके अलावा , डेटा निम्न चर HeatManager रखा जाता है:
bonfire_status: स्ट्रिंग ; / / HeatManager के लिए अलाव की स्थिति – स्थिति चिमनी हीटिंग पैनल eHouse . exe
boiler_status: स्ट्रिंग ; एचएम के लिए / / बॉयलर की स्थिति – बायलर हीटिंग पैनल eHouse की स्थिति . exe
Solar_status: स्ट्रिंग ; / / सौर प्रणाली की स्थिति – सौर ताप पैनल eHouse की स्थिति . exe
recuperator_status: स्ट्रिंग ; / / आरोग्यलाभ की स्थिति , वेंटिलेशन , हवा हीटिंग – हीटिंग, वेंटिलेशन और गर्मी वसूली की स्थिति
HADC: सरणी [0 . . डबल 15] ; / / हीट प्रबंधक तापमान – तापमान मापन HeatManager
/ / हीट HADC सरणी की सीधी पहुंच के लिए प्रबंधक अनुक्रमित – तापमान HeatManager के प्रत्यक्ष पढ़ने के लिए लगातार तापमान इंडेक्स
Const HM_GWC = 3 ; / / GWC – ग्राउंड हीट एक्सचेंजर
HM_KOM1 = 4 ; / / चिमनी 1 कोट – होलिका पानी जैकेट 1
= 5 HM_KOMKONV ; / 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 ; / / स्वच्छ हवा हो जानेवाला इनपुट – आरोग्यलाभ साफ हवा इनपुट
= 13 HM_REQOUT ; / / आउटपुट अच्छा हो जानेवाला घर – heaten आरोग्यलाभ ताजा झटका कमरे में हवा – तापमान
= 14 HM_NAG ; / / तापमान तीन नियंत्रित – हीटिंग के लिए और radiators के लिए जिस तरह से वाल्व – वॉटर हीटर या अन्य हीटिंग सिस्टम के लिए तीन तरीके cutoff के बाद तापमान
HM_REQWYC = 15 ; / / होम अच्छा हो जानेवाला निकालने गंदा – घर गंदा निकास अस्थायी से आरोग्यलाभ
= 2 HM_BANGORA ; ताप / / / गर्म पानी के टैंक गोरा – गर्म पानी बफर शीर्ष
HM_BANSRO = 0 ; / / / ताप गर्म पानी के भंडारण टैंक के एक साधन के – मध्य गर्म पानी बफर
var HADCNames: सरणी [0 . . स्ट्रिंग] 15 ; / / सेंसरों के नाम HeatManagera (इनपुट मापने)
बुनियादी कार्यों EhouseLogAnalizer:
प्रक्रिया init_heat_temperature_names ; / / इनिशियलाइज़ और / या तापमान सेंसरों एचएम के नाम पढ़ें
प्रक्रिया loadnames_rm ; / / लोड RoomManagerĂłw नाम (1 eHouse)
प्रक्रिया readethernetdevs ; / / ईथरनेट चालक के नाम (2 eHouse) पुस्तकें
get_index_rm (: स्ट्रिंग str): समारोह पूर्णांक ; / / फ़ाइल नाम स्थिति roomManagerami खोज के साथ तालिका के सूचकांक रिटर्न
समारोह (chr: चार): जीबी बूलियन ; / / पढ़ा स्थिति के लिए एक बूलियन मान देता है
adc_hm प्रक्रिया (str: स्ट्रिंग ; सूचकांक: पूर्णांक) ; / / पढ़ने स्थिति HeatManagera के दर्ज तापमान के साथ स्ट्रिंग धर्मान्तरित
adc_rm प्रक्रिया (str: स्ट्रिंग ; सूचकांक: पूर्णांक) ; / / अनुरूप माप की स्ट्रिंग में कनवर्ट जब स्थिति RoomManagerĂłw पढ़ने
जीबीएस (: बूलीय ख): समारोह स्ट्रिंग ; / / पाठ के रूप में (0 बूलियन लिखें , 1)
RMDeviceIndexByName (: स्ट्रिंग str): समारोह पूर्णांक ; / / नाम चालक द्वारा 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 के लिए बुलाया इनपुट की वापसी / /
(InputNr: पूर्णांक) HMGetTempNr: समारोह डबल ; HeatManagera InputNr मापने के लिए इनपुट संख्या (1 / वापसी / तापमान . . +१६)
chk_int (स्ट्रिंग सेंट): समारोह पूर्णांक ; / सुरक्षित / एक पूर्णांक के लिए एक स्ट्रिंग परिवर्तित
प्रक्रिया update_status ; / / तालिका में सभी ड्राइवरों की स्थिति अद्यतन (समय – समय पर चलाया जाना आवश्यक है)
प्रक्रिया Test_save ; / / टेस्ट प्रक्रिया का परिणाम आसान करने के लिए एक पाठ फ़ाइल के लिए लिखने के लिए
ड्राइवर इनिशियलाइज़ और सभी के नाम एक बार आवेदन शुरू कर दिया है बना रहे हैं (FormCreate)
TForm1 प्रक्रिया . FormCreate (Sender: TObject) ;
शुरू करना
पथ: = (getcurrentdir) ; / / कार्यक्रम के वर्तमान पथ निर्देशिका में होना चाहिए % eHouse_DIR % \ बिन \
पथ: stringreplace = (पथ , ‘ \ Bin ‘ , ‘ \ ‘ , [Rfignorecase]) ; / / आवेदन eHouse के पथ – आवेदन पथ eHouse सेट
loadnames_rm ; / / लोड नियंत्रक नामों ehouse1 – भार ड्राइवरों नाम eHouse 1
init_heat_temperature_names ; / / लोड सेंसर heatManagera नाम
readethernetdevs ; / / लोड ईथरनेट eHouse नाम नियंत्रकों – युक्ति नाम 2 eHouse पढ़ने
timer1 . अंतराल: 3000 = ; / / मिलीसेकेंड में सेट की चक्रीय कार्य अंतराल – चक्रीय डेटा की जाँच शुरू करने के लिए समय समूह
timer1 . सक्रिय: = सच ; / / स्वत: कार्य शुरू (स्थिति अद्यतन – डेटा की नियमित रूप से जाँच में शामिल
update_status ; / / 1 स्थिति पुस्तकें
अंत ;
चक्रीय डेटा की जाँच Timer1 समारोह के द्वारा किया जाता है (Timer1Timer) Timer1 पैरामीटर में निर्धारित समय के अंतराल में चलाता है . अंतराल (मिलीसेकेंड में) .
TForm1 प्रक्रिया . Timer1Timer (Sender: TObject) ;
var tf: textfile ;
शुरू करना
update_status ; / / चालक की स्थिति में कनवर्ट
Test_save ; / / परीक्षण के लिए एक पाठ फ़ाइल के लिए सभी परिणाम लिखता है
कोशिश / / आवेदन के लिए एक मार्कर फ़ाइल बनाने KillExec . exe कर सकते हैं कि ” घड़ी ” दुर्घटना से पहले आवेदन
AssignFile (TF , पथ + ‘ Logs \ लॉग – analizer . एसटीपी ‘ ) ;
/ / WDT कि आवेदन सही ढंग से stampfile का उपयोग कर काम को सूचित करें ” \ लॉग लॉग इन – analizer . एसटीपी ”
फिर से लिखना (tf) ;
writeln (TF , ‘ 1 ‘ ) ;
अंत में ;
closefile (tf) ;
अंत ;
अंत ;