Clădire de automatizare eHouse – Crearea unui suprapuneri de software pentru Windows și algoritmi personalizate

Home Automation eHouse cu software-ul PC-ul vă permite să creați suprapuneri pentru sistemul de automatizare al clădirii .
Acest lucru vă permite să creați propriul dvs. , algoritmi individuale , nu sunt puse în aplicare în software-ul firmware-ul sau driverul care controlează serial Home Automation eHouse .
În acest scop , oferim utilizatorilor cu codurile sursă de software (în Delphi 5) . Ele pot fi compilate cu versiuni mai noi de Delphi sau utilizate pentru alte limbaje de programare .
Am ales in mod constient acest versiuni arhaice în care acestea sunt deja disponibile gratuit pentru programul de amatori .
Ei lucrează la fel de fiabil pe Windows XP , Perspectivă , Windows 7 atât 32 și 64 biți .
Acest software se numeste eHouseLogAnalizer și aceste aplicații de gater șablon care citesc fișiere text până la data de .
Acesta poate fi administrat și monitorizat de KillWdt aplicații . exe .
Principalele caracteristici ale cererii:

  • Citirea statutul și numele tuturor șoferilor
  • Citește statutul și introduceți numele tuturor conducătorilor auto
  • Citiți măsurătorile și numele tuturor șoferilor de măsurare intrări
  • Încărcați toate datele în memoria internă programul , care pot fi prelucrate ulterior de o aplicație

Aplicatia foloseste statutul de fișiere create în fișiere de text într-un director ‘ busteni / starea / ‘ extensie ‘ . Starea ‘ .
Fișierul este citit doar în eventualitatea unor schimbări în cererea eHouse . exe .

Operatorii de date sunt încărcate în următoarele cazuri Records ” ehouse_rm_em_hm ” enumerate în RM matrice .

În plus, , Datele sunt păstrate HeatManager următoarele variabile:
bonfire_status: string ; / / Stare de foc pentru HeatManager – Cămin de încălzire panoul de Statut eHouse . exe
boiler_status: string ; / / Starea cazanului pentru HM – statutul eHouse panoul centralei de încălzire . exe
Solar_status: string ; / / Starea sistemului solar – Starea de eHouse panou solar de incalzire . exe
recuperator_status: string ; / / Stare de recuperare , ventilație , de aer de încălzire – Starea de ventilație de încălzire și recuperare de căldură
HADC: array [0 . . 15] de dublu ; / / Căldură Temperaturile manager de – Temperatura de măsurători HeatManager
/ Indici / căldură Manager pentru accesul direct al matrice HADC – Indicii constante de temperatură pentru citirea directa a temperaturii HeatManager
CONST HM_GWC = 3 ; / / GWC – Schimbător de căldură sol
HM_KOM1 = 4 ; / / Șemineu Coat 1 – Foc de tabara manta de apă 1
HM_KOMKONV = 5 ; / / Șemineu konvekcyjne – convectie foc de tabara
HM_KOM2 = 6 ; / / Foc PLAN 2 – foc de tabara manta de apă 2 (de rezervă)
HM_TWEWN = 7 ; / / Intern temperatura camerei – internă la temperatura camerei
HM_SOLAR = 9 ; / / Colector soare – Sistemul solar
HM_ZEWNPN = 8 ; / / Extern temperatura de nord – temperatură exterioară de nord
HM_ZEWNPD = 1 ; Temperatura / / extern din sud – temperatură exterioară de sud
HM_KOC = 10 ; / / Temperatura cazan – cazan de temperatură
HM_BANDOL = 11 ; / / CO / rezervorul de apă caldă în jos – caldă apă plată de jos tampon
HM_REQIN = 12 ; / / Aer curat Recuperatoare de intrare – intrare recuperare clară de aer
HM_REQOUT = 13 ; / / Ieșire Recuperatoare de acasă – heaten recuperare lovitură de aer proaspăt în cameră – temperatură
HM_NAG = 14 ; / / Temperatura controlat trei – căi pentru încălzire și pentru radiatoare – Temperatura după trei moduri de tăiere pentru sisteme de încălzire cu apă sau alt sistem de încălzire
HM_REQWYC = 15 ; / / Acasă Recuperatoare de extract de murdar – recuperarea la domiciliu murdar de evacuare temp
HM_BANGORA = 2 ; / / Încălzire / apă caldă rezervor gora – apă caldă tampon de TOP
HM_BANSRO = 0 ; / / Încălzire / rezervorul de apă caldă un mijloc de – Tampon MIJLOC apă caldă
HADCNames var: array [0 . . 15] de string ; / / Numele senzorilor (de măsurare intrări) HeatManagera
De bază funcții EhouseLogAnalizer:
Procedura de init_heat_temperature_names ; / / Initializeaza și / sau senzori de temperatură citi numele HM
Procedura de loadnames_rm ; / Nume / încărcare RoomManagerĂłw (eHouse 1)
Procedura de readethernetdevs ; / / Citeste numele Ethernet driver (eHouse 2)
get_index_rm funcție (str: string): integer ; / / Returnează indicele de masă cu căutare roomManagerami de statutul numele de fișier
Funcția gb (Chr: char): boolean ; / / Returnează o valoare boolean pentru statutul de citit
Procedura de adc_hm (str.: string ; index: integer) ; / / Convertește șirul de caractere, cu temperaturi înregistrate ale statutului de citire HeatManagera
Procedura de adc_rm (str.: string ; index: integer) ; / / Convertește un șir de măsurători analogice la citirea RoomManagerĂłw statutul
GBS funcție (b: boolean): String ; / / Scrie Boolean în formă de text (0 , 1)
Funcția RMDeviceIndexByName (str.: string): integer ; / / Returnează indicele de masă cu căutare de driver-ul de RoomManagerami
RMGetOutputStateNr funcție (index: integer ; OutputNr: integer): boolean ; / / Return RM starea de ieșire [index] și de ieșire numărul OutputNR
RMGetOutputState funcție (index: integer ; OutputName: string): boolean ; / / Returnează RM statului de ieșire [index] și a strigat OutputName
RMGetInputStateNr funcție (index: integer ; InputNr: integer): boolean ; / / Returnează starea de RM de intrare [index] și numărul de intrare InputNr
RMGetInputState funcție (index: integer ; InputName: string): boolean ; / / Returnează starea de RM de intrare [index] și numele InputName intrare
RMGetTempNr funcție (index: integer ; InputNr: integer): dublă ; / / Returnează temperatura RM [index] și numărul de intrare InputNr
RMGetTemp funcție (index: integer ; InputName: string): dublă ; / / Returnează temperatura RM [index] și numele InputName intrare
Funcția RMGetInvPercent (index: integer ; InputName: string): dublă ; / / Returnează un procent de măsurare a inversa 100 % – x RM [index] și numele InputName intrare (în raport cu controler tensiunea de alimentare)
RMGetInvPercentNr funcție (index: integer ; InputNr: integer): dublă ; / / Returnează un procent de măsurare a inversa 100 % – x RM [index] și numărul de InputNr intrare (în raport cu controler tensiunea de alimentare)
Funcția RMGetPercent (index: integer ; InputName: string): dublă ; / / Returnează un procent de măsurare a [index] RM și numele InputName intrare (în raport cu controler tensiunea de alimentare)
RMGetPercentNr funcție (index: integer ; InputNr: integer): dublă ; / / Returnează un procent de măsurare a inversa 100 % – x RM [index] și numele InputNr intrare (în raport cu controler tensiunea de alimentare)
RMGetDeviceOutputState funcție (Devname: string ; OutputName: string): boolean ; / / Returnează starea conducătorului auto de ieșire numit Devname și a strigat OutputName
RMGetDeviceInputState funcție (Devname: string ; InputName: string): boolean ; / / Returnează starea de intrare șoferului numele și numele InputName Devname de intrare
HMGetTemp funcție (InputName: string): dublă ; / / Return temperatura de intrare de măsurare a solicitat HeatManagera InputName
HMGetTempNr funcție (InputNr: integer): dublă ; / / Return temperatura din numărul de intrare de măsurare pentru HeatManagera InputNr (1 . . 16)
chk_int funcția (-a: string): integer ; / / Safe pentru a converti un șir de la un întreg
Procedura de update_status ; / / Actualizați starea tuturor conducătorilor auto din tabelul (trebuie să fi rulat periodic)
Procedura de Test_save ; / / Procedura de încercare pentru a scrie rezultatele într-un fișier text foarte usor de
Initializeaza șoferului și toate numele sunt făcute odată ce aplicația este pornită (FormCreate)
Procedura de TForm1 . FormCreate (Expeditor: TObject) ;
începe
Calea: = getcurrentdir () ; / / Ia calea curentă a programului trebuie să fie în directorul % eHouse_DIR % \ BIN \
Calea: = stringreplace (calea , ‘ \ Bin ‘ , ‘ \ ‘ , [Rfignorecase]) ; / / Ia calea de eHouse aplicare – Seturile de eHouse calea aplicării
loadnames_rm ; Nume / / încărcare controler ehouse1 – incarcatura numele conducătorilor auto eHouse 1
init_heat_temperature_names ; / / De încărcare senzori heatManagera nume
readethernetdevs ; / / De încărcare controlere ethernet nume eHouse – citirea dispozitivului eHouse nume 2
timer1 . Intervalul: = 3000 ; / / Set de activitate ciclică în interval de milisecunde – Setează timpul pentru a începe verificarea datelor ciclice
timer1 . Activat: = true ; / / Start sarcini automate (actualizare a stării – include verificarea periodică a datelor
update_status ; / / Citește statutul de prima
capăt ;
Ciclic de date se face prin verificarea funcției Timer1 (Timer1Timer) se execută într-un interval de timp setat în parametrul Timer1 . Interval (în milisecunde) .
Procedura de TForm1 . Timer1Timer (Expeditor: TObject) ;
var TF: textfile ;
începe
update_status ; / / Convertește statutul de conducător auto
Test_save ; / / Pentru testul scrie toate rezultatele într-un fișier text
încercați să / / crea un fișier marcator pentru aplicarea KillExec . exe care poate ” ceas ” aplicație înainte de accident
AssignFile (tf , calea de + ‘ busteni \ jurnal – analizer . STP ‘ ) ;
/ / Anunta-WDT Această cerere de lucru utilizând în mod corect stampfile ” log \ log – analizer . STP ”
rescrie (tf) ;
writeln (tf , ‘ 1 ‘ ) ;
în cele din urmă ;
closefile (tf) ;
capăt ;
capăt ;