Edifici eHouse Automatització – Creació d'una superposició de programari de Windows i algorismes personalitzats

Domòtica eHouse amb programari per a PC li permet crear plantilles per al sistema d'automatització d'edificis .
Això li permet crear el seu propi , algorismes individuals , no s'implementen en programari o firmware del controlador que controla el nombre de sèrie Domòtica eHouse .
Amb aquesta finalitat , proporcionem als usuaris amb els codis de programari de font (en Delphi 5) . Ells poden ser compilats amb versions de Delphi o utilitzats per altres llenguatges de programació .
Ens va triar conscientment aquestes versions arcaiques ja que ja estan disponibles de forma gratuïta per al programa d'aficionat .
Treballen mateixa manera fiable en Windows XP , Vista , Windows 7 de 32 i 64 bits .
Aquest programari es diu eHouseLogAnalizer i aquestes aplicacions de plantilles registres que es llegeixen els arxius de text al dia .
Pot ser gestionat i controlat per KillWdt aplicacions . exe .
Les principals característiques de l'aplicació:

  • La lectura de l'estat i els noms de tots els controladors
  • Lectura de l'estat i escriu el nom de tots els conductors
  • Llegiu els mesuraments i els noms de tots els controladors que mesuren les entrades
  • Carregar totes les dades a la memòria interna del programa , que poden ser processats per una aplicació

L'aplicació utilitza l'estat dels arxius creats en arxius de text en un directori ‘ logs / estat / ‘ extensió ‘ . estat ‘ .
L'arxiu és de només lectura en el cas de canvis en l'aplicació eHouse . exe .

Els responsables del tractament es carreguen en els registres següents casos ” ehouse_rm_em_hm ” apareix en la sèrie RM .

A més , dades es mantenen HeatManager les següents variables:
bonfire_status: cadena ; / / Estat de la foguera per HeatManager – Xemeneia d'estat calefacció del panell eHouse . exe
boiler_status: cadena ; / / Estat de la caldera per HM – estat de la caldera eHouse panell de la calefacció . exe
Solar_status: cadena ; / / Estat del sistema solar – estat del quadre de la calefacció solar eHouse . exe
recuperator_status: cadena ; / / Situació de la recuperació , ventilació , calefacció d'aire – estat de calefacció, ventilació i recuperació de calor
CDAV: array [0 . . 15] de doble ; / / Temperatures calor gestor – mesuraments de temperatura HeatManager
/ / Calor índexs gestor per a l'accés directe de la matriu CDAV – Índexs constants de temperatura per a la lectura directa de temperatura HeatManager
CONST HM_GWC = 3 ; / / GWC – Intercanviador de calor de terra
HM_KOM1 = 4 ; / / Escut Xemeneia 1 – Bonfire camisa d'aigua 1
HM_KOMKONV = 5 ; / / Xemeneia konvekcyjne – convecció foguera
HM_KOM2 = 6 ; / / Foc plànol 2 – foguera camisa d'aigua 2 (còpia de seguretat)
HM_TWEWN = 7 ; / / Temperatura ambient interna – temperatura ambient interna
HM_SOLAR = 9 ; / / Collector dg – sistema solar
HM_ZEWNPN = 8 ; / / Temperatura externa nord – temperatura exterior nord
HM_ZEWNPD = 1 ; Temperatura / / Externa del sud – temperatura exterior sud
HM_KOC = 10 ; / / Temperatura de la caldera – temperatura de la caldera
HM_BANDOL = 11 ; / / CO / dipòsit d'aigua calenta cap avall – Watter calenta límit inferior
HM_REQIN = 12 ; / / Recuperador de neteja de l'aire d'entrada – recuperació d'entrada d'aire net
HM_REQOUT = 13 ; / / Sortida recuperador casa – recuperació heaten bufen aire fresc a l'habitació – temperatura
HM_NAG = 14 ; / / Temperatura controlada 03:00 – vàlvula unidireccional per a la calefacció i per radiadors – temperatura després de les tres formes de tall per l'escalfador d'aigua o d'un altre sistema de calefacció
HM_REQWYC = 15 ; / / Inici recuperador extracte brut – recuperació de la casa bruta escapament temp
HM_BANGORA = 2 ; / / Calefacció / dipòsit d'aigua calenta gora – aigua calenta TOP memòria intermèdia
HM_BANSRO = 0 ; / / Calefacció / tanc d'emmagatzematge d'aigua calenta a través de – Tampó MEDI aigua calenta
var HADCNames: array [0 . . 15] de cadena ; / / Els noms dels sensors (entrades de mesura) HeatManagera
Funcions EhouseLogAnalizer bàsica:
init_heat_temperature_names procediment ; / / Inicialitzar i / o sensors de temperatura llegir els noms de HM
procediment loadnames_rm ; / / Carregar noms RoomManagerĂłw eHouse (1)
readethernetdevs procediment ; / / Llegeix els noms dels controladors Ethernet (eHouse 2)
funció get_index_rm (str: String): integer ; / / Retorna l'índex de la taula amb roomManagerami recerca per nom de fitxer d'estat
funció gb (chr: char): boolean ; / / Retorna un valor booleà per l'estat de lectura
adc_hm procediment (str: String ; índex: integer) ; / / Converteix la cadena amb temperatures registrades l'estat de lectura HeatManagera
procediment adc_rm (str: string ; índex: integer) ; / / Converteix la cadena de mesures analògiques quan es llegeix l'estat RoomManagerĂłw
GBS funció (b: boolean): String ; / / Escriure booleana en forma de text (0 , 1)
Funció RMDeviceIndexByName (str: String): integer ; / / Retorna l'índex de la taula amb recerca per nom del controlador RoomManagerami
Funció RMGetOutputStateNr (índex sencer ; OutputNr: integer): boolean ; / / Retorna l'estat de la sortida RM [índex] i la sortida OutputNR nombre
Funció RMGetOutputState (índex sencer ; OutputName: string): boolean ; / / Retorna l'estat de la sortida RM [index] i va cridar OutputName
Funció RMGetInputStateNr (índex sencer ; InputNr: integer): boolean ; / / Retorna l'estat de la RM d'entrada [index] i el número d'entrada InputNr
Funció RMGetInputState (índex sencer ; InputName: string): boolean ; / / Retorna l'estat de la RM d'entrada [index] i el nom de l'entrada InputName
Funció RMGetTempNr (índex sencer ; InputNr: integer): doble ; / / Torna la temperatura RM [index] i el número d'entrada InputNr
Funció RMGetTemp (índex sencer ; InputName: string): double ; / / Torna la temperatura RM [index] i el nom de l'entrada InputName
Funció RMGetInvPercent (índex sencer ; InputName: string): double ; / / Retorna una mesura de percentatge de inversió 100 % – x RM [índex] i el nom de la InputName entrada (en relació amb el controlador de tensió d'alimentació)
Funció RMGetInvPercentNr (índex sencer ; InputNr: integer): doble ; / / Retorna una mesura de percentatge de inversió 100 % – x RM [índex] i el nombre de InputNr entrada (en relació amb el controlador de tensió d'alimentació)
Funció RMGetPercent (índex sencer ; InputName: string): double ; / / Retorna una mesura de percentatge de [índex] RM i el nom de la InputName entrada (en relació amb el controlador de tensió d'alimentació)
Funció RMGetPercentNr (índex sencer ; InputNr: integer): doble ; / / Retorna una mesura de percentatge de inversió 100 % – x RM [índex] i el nom de la InputNr entrada (en relació amb el controlador de tensió d'alimentació)
Funció RMGetDeviceOutputState (DEVNAME: cadena ; OutputName: string): boolean ; / / Retorna l'estat del controlador de sortida anomenat DEVNAME i va cridar OutputName
Funció RMGetDeviceInputState (DEVNAME: cadena ; InputName: string): boolean ; / / Retorna l'estat de l'entrada del conductor el nom i el nom de l'entrada InputName DEVNAME
Funció HMGetTemp (InputName: string): double ; / / Retorna la temperatura de l'entrada de mesura anomenat per HeatManagera InputName
HMGetTempNr funció (InputNr: integer): doble ; / / Retorna la temperatura del nombre d'entrada de mesura per HeatManagera InputNr (1 . . 16)
funció chk_int (st: string): integer ; / / Assegurança per convertir una cadena a un enter
procediment update_status ; / / Actualitzar l'estat de tots els controladors a la taula (s'ha d'executar periòdicament)
procediment Test_save ; / / Mètode d'assaig per escriure els resultats en un arxiu de text per a fàcil
Inicialitzeu el conductor i tots els noms es fan un cop s'inicia l'aplicació (FormCreate)
procediment TForm1 . FormCreate (Sender: TObject) ;
començar
path: GetCurrentDir = () ; / / Obté la ruta actual del programa ha d'estar al directori % eHouse_DIR % \ BIN \
path: = stringreplace (ruta , ‘ \ Bin ‘ , ‘ \ ‘ , [Rfignorecase]) ; / / Obté la ruta d'eHouse aplicació – estableix la ruta de l'aplicació eHouse
loadnames_rm ; / / Càrrega noms dels controladors ehouse1 – carrega els controladors nom eHouse 1
init_heat_temperature_names ; / / Càrrega sensors nom heatManagera
readethernetdevs ; / / Carregar controladors ethernet noms eHouse – dispositiu de lectura dels noms de eHouse 2
timer1 . Interval: = 3000 ; / Cíclic / Set tasca interval en mil · lisegons – Estableix el temps per començar a comprovar les dades cíclics
timer1 . Habilitat: = true ; / / Start tasques automàtiques (actualització d'estat – inclou la comprovació periòdica de les dades
update_status ; / / Llegeix el primer estat
final ;
Comprovació de les dades cíclics es realitza mitjançant la funció Timer1 (Timer1Timer) s'executa en un interval de temps establert en el paràmetre Timer1 . Interval (en milisegons) .
procediment TForm1 . Timer1Timer (Sender: TObject) ;
var tf: arxiu de text ;
començar
update_status ; / / Converteix l'estat del controlador
Test_save ; / / Per a la prova escriu tots els resultats en un arxiu de text
try / / crear un arxiu de marcador de l'aplicació KillExec . exe que pot ” veure ” aplicació abans de l'accident
AssignFile (tf , ruta d'accés + ‘ logs \ log – analitzador . STP ‘ ) ;
/ / Notificar WDT Aquesta aplicació que funciona correctament amb stampfile ” log log \ – analitzador . STP ”
reescriure (tf) ;
writeln (tf , ‘ 1 ‘ ) ;
finalment ;
funció closefile (tf) ;
final ;
final ;