Building Automation eHouse – Creazione di un overlay software di Windows e gli algoritmi personalizzati

Home Automation eHouse con software per PC consente di creare sovrapposizioni per il sistema di automazione di edifici .
Questo ti permette di creare il proprio , i singoli algoritmi , non sono implementati nel software del firmware o del driver che controlla il numero di serie Home Automation eHouse .
A tal fine , mettiamo a disposizione degli utenti con i codici sorgente del software (in Delphi 5) . Si può essere compilato con le nuove versioni di Delphi o utilizzati per altri linguaggi di programmazione .
Abbiamo scelto consapevolmente questa versioni arcaiche in quanto sono già disponibili gratuitamente per il programma amatoriale .
Lavorano in modo affidabile su Windows XP , Vista , Windows 7 a 32 e 64 bit .
Questo software si chiama eHouseLogAnalizer e queste applicazioni registri modelli che leggono i file di testo aggiornati .
Può essere gestito e monitorato da KillWdt applicazioni . exe .
Le caratteristiche principali dell'applicazione:

  • Lettura dello stato ei nomi di tutti i driver
  • Leggere lo stato e immettere i nomi di tutti i driver
  • Leggi le misure ei nomi di tutti i driver di misura ingressi
  • Caricare tutti i dati nella memoria di programma interna , che può essere ulteriormente elaborato da un'applicazione

L'applicazione utilizza lo stato dei file creati per i file di testo in una directory ‘ logs / stato / ‘ estensione ‘ . stato ‘ .
Il file viene letto solo in caso di cambiamenti nella domanda eHouse . exe .

I responsabili del trattamento sono caricati nei record seguenti istanze ” ehouse_rm_em_hm ” presente nella matrice RM .

Inoltre , dati sono conservati HeatManager le seguenti variabili:
bonfire_status: string ; / / Stato di falò per HeatManager – Stato termocamino eHouse pannello . exe
boiler_status: string ; / / Stato di caldaia per HM – stato del eHouse pannello caldaia . exe
Solar_status: string ; / / Stato del sistema solare – stato di eHouse pannello solare riscaldamento . exe
recuperator_status: string ; / / Stato di recupero , ventilazione , riscaldamento aria – riscaldamento aria
HADC: array [0 . . 15] di doppio ; / / Heat Temperature gestore – Temperatura misure HeatManager
Indici / manager / calore per l'accesso diretto di array HADC – Indici di temperatura costante per lettura diretta della temperatura HeatManager
CONST HM_GWC = 3 ; / / GWC – Scambiatore di calore a terra
HM_KOM1 = 4 ; / / Camino Coat 1 – Bonfire giacca acqua 1
HM_KOMKONV = 5 ; / / Camino konvekcyjne – convezione falò
HM_KOM2 = 6 ; / / Fire piano 2 – falò camicia d'acqua 2 (backup)
HM_TWEWN = 7 ; / / Temperatura interna – temperatura ambiente interna
HM_SOLAR = 9 ; / / Collettore Dom – sistema solare
HM_ZEWNPN = 8 ; / / Temperatura esterna a nord – temperatura esterna nord
HM_ZEWNPD = 1 ; Temperatura / / esterna del sud – temperatura esterna a sud
HM_KOC = 10 ; / / Temperatura caldaia – temperatura caldaia
HM_BANDOL = 11 ; / / CO / serbatoio di acqua calda verso il basso – caldo watter tampone di fondo
HM_REQIN = 12 ; / / L'aria pulita recuperatore di ingresso – recupero di ingresso aria pulita
HM_REQOUT = 13 ; / / Output recuperatore casa – heaten soffio d'aria fresca nella stanza di recupero – temperatura
HM_NAG = 14 ; / / Temperatura regolato a tre – vie per il riscaldamento e per radiatori – temperatura dopo tre modi di taglio per il riscaldatore di acqua o altro sistema di riscaldamento
HM_REQWYC = 15 ; / / Home recuperatore estratto sporco – recupero da casa sporco di scarico temperatura
HM_BANGORA = 2 ; / / Riscaldamento / acqua calda gora – acqua calda TOP tampone
HM_BANSRO = 0 ; / / Riscaldamento / accumulatore di acqua calda a mezzo di – MEDIO buffer di acqua calda
HADCNames var: array [0 . . 15] della stringa ; / / I nomi dei sensori (ingressi di misura) HeatManagera
Funzioni di base EhouseLogAnalizer:
Procedura init_heat_temperature_names ; / / Inizializza e / o sensori di temperatura leggere i nomi di HM
procedura loadnames_rm ; / Nomi RoomManagerĂłw / carico (eHouse 1)
Procedura readethernetdevs ; / / Legge i nomi dei driver Ethernet (eHouse 2)
get_index_rm funzione (str: String): integer ; / / Restituisce l'indice della tabella con la ricerca per stato roomManagerami nome del file
funzione gb (chr: char): boolean ; / / Restituisce un valore booleano per lo stato di lettura
adc_hm procedura (str: stringa ; Indice: integer) ; / / Converte la stringa con temperature registrate dello status HeatManagera lettura
adc_rm procedura (str: stringa ; Indice: integer) ; / / Converte stringa di misure analogiche durante la lettura del RoomManagerĂłw stato
gbs funzione (b: boolean): String ; / / Scrivi boolean in forma di testo (0 , 1)
RMDeviceIndexByName funzione (str: String): integer ; / / Restituisce l'indice della tabella con la ricerca per nome del driver RoomManagerami
RMGetOutputStateNr funzione (indice: numero intero ; OutputNr: integer): boolean ; / / Restituisce il RM stato dell'uscita [indice] e l'uscita OutputNR numero
RMGetOutputState funzione (indice: numero intero ; OutputName: string): boolean ; / / Restituisce il RM stato dell'uscita [index] e gridò outputName
RMGetInputStateNr funzione (indice: numero intero ; InputNr: integer): boolean ; / / Restituisce lo stato della RM ingresso [indice] e il numero di iscrizione InputNr
RMGetInputState funzione (indice: numero intero ; InputName: string): boolean ; / / Restituisce lo stato della RM ingresso [indice] e il nome della voce InputName
RMGetTempNr funzione (indice: numero intero ; InputNr: integer): doppia ; / / Restituisce la temperatura RM [indice] e il numero di iscrizione InputNr
RMGetTemp funzione (indice: numero intero ; InputName: string): doppia ; / / Restituisce la temperatura RM [indice] e il nome della voce InputName
Funzione RMGetInvPercent (indice: integer ; InputName: string): doppia ; / / Restituisce una misura percentuale di inversione 100 % – x RM [index] e il nome del InputName entrata (in relazione al regolatore di tensione di alimentazione)
RMGetInvPercentNr funzione (indice: numero intero ; InputNr: integer): doppia ; / / Restituisce una misura percentuale di inversione 100 % – x RM [index] e il numero di InputNr entrata (in relazione al regolatore di tensione di alimentazione)
Funzione RMGetPercent (indice: integer ; InputName: string): doppia ; / / Restituisce una misura percentuale di RM [indice] e il nome del InputName entrata (in relazione al regolatore di tensione di alimentazione)
RMGetPercentNr funzione (indice: numero intero ; InputNr: integer): doppia ; / / Restituisce una misura percentuale di inversione 100 % – x RM [index] e il nome del InputNr entrata (in relazione al regolatore di tensione di alimentazione)
RMGetDeviceOutputState funzione (devname: string ; OutputName: string): boolean ; / / Restituisce lo stato del driver di uscita chiamato devname e gridò outputName
RMGetDeviceInputState funzione (devname: string ; InputName: string): boolean ; / / Restituisce lo stato dell'ingresso conducente il nome e il nome della InputName devname voce
HMGetTemp funzione (InputName: string): doppia ; / / Temperatura di ritorno dell'ingresso di misura richiesto HeatManagera InputName
HMGetTempNr funzione (InputNr: integer): doppia ; / / Temperatura di ritorno del numero di ingresso di misura per HeatManagera InputNr (1 . . 16)
chk_int funzione (st: string): integer ; / / Safe per convertire una stringa in un intero
procedura update_status ; / / Aggiorna lo stato di tutti i piloti della tabella (deve essere eseguito periodicamente)
procedura Test_save ; / / Procedura di prova per scrivere i risultati in un file di testo per una facile
Inizializzare il conducente e tutti i nomi vengono effettuati una volta l'applicazione viene avviata (FormCreate)
procedura TForm1 . FormCreate (Sender: TObject) ;
iniziare
Percorso: getcurrentdir = () ; / / Recupera il percorso attuale del programma deve essere nella directory % eHouse_DIR % \ BIN \
percorso: = StringReplace (percorso , ‘ \ Bin ‘ , ‘ \ ‘ , [Rfignorecase]) ; / / Ottiene il percorso di applicazione eHouse – imposta il percorso di applicazione eHouse
loadnames_rm ; Nomi di controller / / Carico ehouse1 – carica il nome del driver eHouse 1
init_heat_temperature_names ; / / Carico heatManagera sensori nome
readethernetdevs ; / / Carica il controller ethernet nomi eHouse – dispositivo di lettura eHouse due nomi
Timer1 . Intervallo: = 3000 ; / / Imposta l'intervallo ciclico compito in millisecondi – Imposta il tempo di iniziare il controllo dei dati ciclici
Timer1 . Enabled: = true ; / / Start operazioni automatiche (aggiornamento di stato – comprende il controllo regolare dei dati
update_status ; / / Legge lo stato prima
fine ;
Ciclico controllo dati viene effettuato dalla funzione Timer1 (Timer1Timer) viene eseguito in un intervallo di tempo impostato nel parametro Timer1 . Intervallo (in millisecondi) .
procedura TForm1 . Timer1Timer (Sender: TObject) ;
var tf: file di testo ;
iniziare
update_status ; / / Converte lo stato del conducente
Test_save ; / / Per i test scrive tutti i risultati in un file di testo
try / / creare un file marcatore per l'applicazione KillExec . exe che può ” guardare ” applicazione prima di schianto
AssignFile (tf , percorso + ‘ log \ log – Analizer . stp ‘ ) ;
/ / Comunica WDT Tale domanda funziona correttamente utilizzando stampfile ” log log \ – Analizer . stp ”
riscrivere (tf) ;
writeln (tf , ‘ 1 ‘ ) ;
infine ;
CloseFile (tf) ;
fine ;
fine ;