Building Automation eHouse – Paglikha ng isang overlay ng Windows software at pasadyang mga algorithm

Home Automation eHouse may PC software ay nagpapahintulot sa iyo na lumikha ng mga overlay para sa sistema ng automation ng gusali .
Na ito ay nagpapahintulot sa iyo na lumikha ng iyong sariling , indibidwal na algorithm , Hindi ipinatupad sa firmware o software driver na kumokontrol sa serial Home Automation eHouse .
Sa katapusang ito , nagbibigay kami ng mga user gamit ang code ng pinagmulan ng software (sa Delphi 5) . Sila ay pinagsama-sama na may mas bagong bersyon ng Delphi o ginagamit para sa iba pang mga wika ng programming .
Pinili namin sinasadya ito lipas na bersyon habang ang mga ito ay magagamit nang libre para sa mga baguhang programa .
Gumagana ang mga iyon tulad ng mapagkakatiwlaan sa Windows XP , Kaisipan , Windows 7 parehong 32 at 64 bit .
Ang software na ito ay tinatawag na eHouseLogAnalizer at mga template ng mga tala application na basahin ang mga tekstong file hanggang sa petsa .
Maaari itong mga pinamamahalaang at sinusubaybayan sa pamamagitan ng mga application ng KillWdt . exe .
Pangunahing tampok ng application:

  • Binabasa ang katayuan at mga pangalan ng lahat ng mga driver
  • Basahin ang katayuan at ipasok ang mga pangalan ng lahat ng mga driver
  • Basahin ang sukat at ang mga pangalan ng lahat ng mga driver pagsukat ng input
  • Load ng lahat ng data sa internal memory ng programa , na maaaring karagdagang naproseso sa pamamagitan ng isang application

Ang application ay gumagamit ng katayuan ng mga nilikha file sa file ng teksto sa isang direktoryo ‘ mga tala / katayuan / ‘ karugtong ‘ . katayuan ‘ .
Ang file ay read-only na sa kaganapan ng mga pagbabago sa application eHouse . exe .

Controllers ay load ng data sa sumusunod na mga pangyayari Records ” ehouse_rm_em_hm ” nakalista sa RM array .

At saka , data ay pinananatiling HeatManager ang sumusunod na mga variable:
bonfire_status: string ; / / Kalagayan ng siga para sa HeatManager – EHouse ng panel ng tsiminea heating Katayuan . exe
boiler_status: string ; / / Kalagayan ng kuluan para Hm – katayuan ng eHouse heating boiler panel . exe
Solar_status: string ; / / Kalagayan ng solar system – katayuan ng solar panel ng eHouse heating . exe
recuperator_status: string ; / / Kalagayan ng paggaling , bentilasyon , air heating – katayuan ng heating bentilasyon at pagbawi ng init
HADC: array [0 . . 15] ng double ; / / Heat temperatura manager – temperatura sukat HeatManager
/ / Heat manager-index para sa direktang pag-access ng HADC array – Pare-pareho ang mga indeks ng temperatura para sa direktang pagbabasa ng temperatura HeatManager
CONST HM_GWC = 3 ; / / GWC – Lupa Heat Exchanger
HM_KOM1 = 4 ; / / Fireplace amerikana 1 – Siga water dyaket 1
HM_KOMKONV = 5 ; / / Fireplace konvekcyjne – kombeksyon siga
HM_KOM2 = 6 ; / / Fire Plane 2 – siga water dyaket 2 (backup)
HM_TWEWN = 7 ; / / Panloob room temperatura – panloob na room temperatura
HM_SOLAR = 9 ; / / Araw ng kolektor – solar system
HM_ZEWNPN = 8 ; / / Panlabas na temperatura ng hilaga – panlabas na temperatura hilaga
HM_ZEWNPD = 1 ; / / Panlabas na temperatura ng timog – panlabas na temperatura timog
HM_KOC = 10 ; / / Temperatura kuluan – kuluan temperatura
HM_BANDOL = 11 ; / / CO / mainit na tubig tangke pababa – mainit watter ibaba buffer
HM_REQIN = 12 ; / / Clean air rikyuperator input – paggaling malinaw air input
HM_REQOUT = 13 ; / / Output rikyuperator bahay – heaten paggaling sariwang pumutok air sa room – temperatura
HM_NAG = 14 ; / / Temperatura ay kinokontrol ng tatlong – balbula ng paraan para sa heating at para sa radiators – temperatura pagkatapos ng tatlong paraan ng cutoff para pampainit ng tubig o iba pang mga sistema ng heating
HM_REQWYC = 15 ; / / Home rikyuperator Extract marumi – paggaling mula sa bahay marumi maubos Temp
HM_BANGORA = 2 ; / / Pagpapainit / mainit na tubig tangke Gora – mainit na tubig buffer TOP
HM_BANSRO = 0 ; / / Pagpapainit / mainit na tubig tangke ng imbakan ng paraan ng – Gitnang mainit na tubig buffer
var HADCNames: array [0 . . 15] ng string ; / / Ang mga pangalan ng sensor (pagsukat input) HeatManagera
Basic function ng EhouseLogAnalizer:
pamamaraan init_heat_temperature_names ; / / Initialize at / o temperatura sensor basahin ang mga pangalan ng Hm
pamamaraan loadnames_rm ; / /-Load RoomManagerĂłw pangalan (eHouse 1)
pamamaraan readethernetdevs ; / / Binabasa ang Ethernet pangalan ng driver (eHouse 2)
get_index_rm function na (STR: string): integer ; / / Ibinabalik ang index ng talahanayan sa roomManagerami paghahanap sa pamamagitan ng pangalan ng file katayuan
function na gb (chr: magpasinda): boolean ; / / Ibinabalik ng isang boolean na halaga para sa basahin katayuan
pamamaraan ng adc_hm (STR: string ; index: integer) ; / /-Convert ang mga string na may mga naitala na temperatura ng read HeatManagera katayuan
pamamaraan ng adc_rm (STR: string ; index: integer) ; / /-Convert string ng mga analog na sukat kapag nagbabasa ang katayuan RoomManagerĂłw
gbs function na (b: boolean): String ; / / Isulat boolean sa anyo ng teksto (0 , 1)
RMDeviceIndexByName function na (STR: string): integer ; / / Ibinabalik ang index ng talahanayan sa RoomManagerami paghahanap sa pamamagitan ng pangalan driver
RMGetOutputStateNr function na (index: integer ; OutputNr: integer): boolean ; / / Ibalik ang output ng estado ng RM [index] at ang output OutputNR numero
RMGetOutputState function na (index: integer ; OutputName: string): boolean ; / / Ibinabalik ang output ng estado ng RM [index] at tinawag ang OutputName
RMGetInputStateNr function na (index: integer ; InputNr: integer): boolean ; / / Ibinabalik ang katayuan ng input RM [index] at ang bilang ng mga entry InputNr
RMGetInputState function na (index: integer ; InputName: string): boolean ; / / Ibinabalik ang katayuan ng input RM [index] at ang pangalan ng entry InputName
RMGetTempNr function na (index: integer ; InputNr: integer): double ; / / Ibinabalik ang RM temperatura [index] at ang bilang ng mga entry InputNr
RMGetTemp function na (index: integer ; InputName: string): double ; / / Ibinabalik ang RM temperatura [index] at ang pangalan ng entry InputName
RMGetInvPercent function na (index: integer ; InputName: string): double ; / / Ibinabalik isang porsyento ng sukatan ng reverse 100 % – x RM [index] at ang pangalan ng entry InputName (na may kaugnayan sa supply ng boltahe controller)
RMGetInvPercentNr function na (index: integer ; InputNr: integer): double ; / / Ibinabalik isang porsyento ng sukatan ng reverse 100 % – x RM [index] at ang bilang ng entry InputNr (na may kaugnayan sa supply ng boltahe controller)
RMGetPercent function na (index: integer ; InputName: string): double ; / / Ibinabalik ng pagsukat ng porsyento ng RM [index] at ang pangalan ng entry InputName (na may kaugnayan sa supply ng boltahe controller)
RMGetPercentNr function na (index: integer ; InputNr: integer): double ; / / Ibinabalik isang porsyento ng sukatan ng reverse 100 % – x RM [index] at ang pangalan ng entry InputNr (na may kaugnayan sa supply ng boltahe controller)
RMGetDeviceOutputState function na (Devname: string ; OutputName: string): boolean ; / / Ibinabalik ang estado ng output ng driver na tinatawag Devname at tinatawag ang OutputName
RMGetDeviceInputState function na (Devname: string ; InputName: string): boolean ; / / Ibinabalik ang katayuan ng input ng driver ang pangalan at ang pangalan ng entry Devname InputName
HMGetTemp function na (InputName: string): double ; / / Bumalik temperatura ng pagsukat ng input na tinatawag na para sa HeatManagera InputName
HMGetTempNr function na (InputNr: integer): double ; / / Bumalik temperatura ng pagsukat ng numero ng input para sa HeatManagera InputNr (1 . . 16)
chk_int function na (st: string): integer ; / / Ligtas i-convert ng isang string sa isang integer
pamamaraan update_status ; / / I-update ang katayuan ng lahat ng mga driver sa talahanayan (dapat na magpatakbo ng panaka-nakang)
pamamaraan Test_save ; / / Test pamamaraan upang isulat ang mga resulta sa isang text file para sa madaling
Initialize ang driver at ang lahat ng mga pangalan ay ginawa kapag ang application ay nagsimula (FormCreate)
pamamaraan TForm1 . FormCreate (nagpadala: TObject) ;
simulan
landas: = getcurrentdir () ; / / Kunin ang kasalukuyang path ng programa ay dapat na sa direktoryo % eHouse_DIR % \ BIN \
path: = stringreplace (landas , ‘ \ Bin ‘ , ‘ \ ‘ , [Rfignorecase]) ; / / Kunin ang landas ng application eHouse – Nagtatakda ang application eHouse landas
loadnames_rm ; / /-Load ang pangalan ng controller ehouse1 – naglo-load ang mga driver ng pangalan eHouse 1
init_heat_temperature_names ; / /-Load sensor ng pangalan ng heatManagera
readethernetdevs ; / /-Load ethernet controllers eHouse pangalan – basahin ang pangalan ng aparato eHouse 2
timer1 . Agwat: = 3000 ; / / Itakda ang cyclic gawain pagitan sa millisecond – Itinatakda ang oras upang simulan ang check cyclic na data
timer1 . Pinagana: = true ; / / Simulan ang awtomatikong gawain (katayuan update – kabilang ang regular checking ng data
update_status ; / / Binabasa ang unang katayuan
katapusan ;
Cyclic data checking ay ginagawa sa pamamagitan ng function na Timer1 (Timer1Timer) ay tumatakbo sa pagitan ng oras na nakatakda sa parameter Timer1 . Pagitan (sa millisecond) .
pamamaraan TForm1 . Timer1Timer (nagpadala: TObject) ;
var tf: textfile ;
simulan
update_status ; / /-Convert ang mga katayuan ng driver
Test_save ; / / Para sa pagsubok nagsusulat ang lahat ng mga resulta sa isang text file
subukang / / lumikha ng isang marker ng file para sa application KillExec . exe na maaari ” panoorin ” application bago ng pag-crash
AssignFile (tf , landas + ‘ mga tala \ log – analizer . stp ‘ ) ;
/ /-Notify WDT Na application gumagana nang tama gamit stampfile ” log \ log – analizer . stp ”
rewrite ang (tf) ;
writeln (tf , ‘ 1 ‘ ) ;
sa wakas ;
closefile (tf) ;
katapusan ;
katapusan ;