Otomasi Gedung eHouse – Membuat lapisan perangkat lunak Windows dan algoritma kustom

Home Automation eHouse dengan perangkat lunak PC memungkinkan Anda untuk membuat lapisan untuk membangun sistem otomasi .
Hal ini memungkinkan Anda untuk membuat Anda sendiri , individu algoritma , tidak diimplementasikan dalam perangkat lunak firmware atau driver yang mengontrol serial Home Automation eHouse .
Untuk tujuan ini , kami menyediakan pengguna dengan perangkat lunak kode sumber (dalam Delphi 5) . Mereka dapat dikompilasi dengan versi terbaru dari Delphi atau digunakan untuk bahasa pemrograman lain .
Kami sadar memilih versi kuno karena mereka sudah tersedia secara gratis untuk program amatir .
Mereka bekerja sama dengan andal pada Windows XP , Pemandangan , Windows 7 baik 32 dan 64 bit .
Perangkat lunak ini disebut eHouseLogAnalizer dan aplikasi ini Template log yang membaca file teks sampai dengan tanggal .
Hal ini dapat dikelola dan dipantau oleh KillWdt aplikasi . exe .
Fitur utama dari aplikasi:

  • Membacakan status dan nama dari semua driver
  • Baca status dan memasukkan nama-nama semua driver
  • Baca pengukuran dan nama-nama dari semua driver mengukur masukan
  • Memuat semua data ke memori program internal , yang dapat diproses lebih lanjut oleh aplikasi

Aplikasi ini menggunakan status file yang dibuat ke file teks dalam direktori ‘ log / status / ‘ perpanjangan ‘ . status ‘ .
File tersebut hanya dapat dibaca pada saat terjadi perubahan dalam eHouse aplikasi . exe .

Pengendali data yang dimuat dalam Catatan kasus berikut ” ehouse_rm_em_hm ” tercantum dalam RM berbagai .

Tambahan , Data disimpan HeatManager variabel-variabel berikut:
bonfire_status: string ; / / Status dari api unggun untuk HeatManager – Status perapian pemanasan panel eHouse . exe
boiler_status: string ; / / Status dari boiler untuk HM – status eHouse pemanasan boiler panel . exe
Solar_status: string ; / / Status dari sistem surya – status eHouse panel pemanas surya . exe
recuperator_status: string ; / / Status penyembuhan , ventilasi , udara pemanas – status ventilasi pemanas dan pemulihan panas
HADC: array [0 . . 15] ganda ; / / Panas Suhu manager – pengukuran suhu HeatManager
/ Indeks manager / Panas untuk akses langsung dari array HADC – Suhu konstan indeks untuk membaca langsung HeatManager temperatur
CONST HM_GWC = 3 ; / / GWC – Tanah Heat Exchanger
HM_KOM1 = 4 ; / / Perapian Coat 1 – Bonfire air jaket 1
HM_KOMKONV = 5 ; / / Perapian konvekcyjne – konveksi api unggun
HM_KOM2 = 6 ; / / Fire PLANE 2 – bonfire air jaket 2 (backup)
HM_TWEWN = 7 ; / / Suhu internal kamar – internal yang suhu kamar
HM_SOLAR = 9 ; / / Kolektor matahari – tata surya
HM_ZEWNPN = 8 ; / / Eksternal suhu utara – eksternal suhu utara
HM_ZEWNPD = 1 ; / / Eksternal suhu selatan – eksternal suhu selatan
HM_KOC = 10 ; / / Suhu boiler – boiler temperatur
HM_BANDOL = 11 ; / / CO / tangki air panas bawah – watter panas bawah penyangga
HM_REQIN = 12 ; / / Udara bersih recuperator masukan – penyembuhan masukan yang jelas udara
HM_REQOUT = 13 ; / / Output recuperator rumah – penyembuhan segar heaten pukulan udara ke kamar – suhu
HM_NAG = 14 ; / / Suhu dikontrol tiga – arah katup untuk pemanasan dan untuk radiator – Suhu setelah tiga cutoff cara untuk pemanas air atau sistem pemanas lainnya
HM_REQWYC = 15 ; / / Home recuperator ekstrak kotor – penyembuhan dari rumah kotor knalpot suhu
HM_BANGORA = 2 ; / / Pemanas / air panas tangki gora – air panas penyangga TOP
HM_BANSRO = 0 ; / / Pemanas / air tangki penyimpanan panas sarana – MIDDLE air panas penyangga
var HADCNames: array [0 . . 15] string ; / / Nama-nama sensor (mengukur input) HeatManagera
Fungsi dasar EhouseLogAnalizer:
Prosedur init_heat_temperature_names ; / / Inisialisasi dan / atau sensor suhu membaca nama HM
Prosedur loadnames_rm ; / Nama RoomManagerĂłw / Beban (eHouse 1)
Prosedur readethernetdevs ; / / Membaca nama-nama driver Ethernet (eHouse 2)
get_index_rm fungsi (str: string): integer ; / / Mengembalikan indeks meja dengan pencarian roomManagerami oleh status nama file
Fungsi gb (chr: char): boolean ; / / Mengembalikan nilai boolean untuk status baca
adc_hm Prosedur (str: string ; Indeks: integer) ; / / Mengkonversi string dengan suhu tercatat status HeatManagera baca
adc_rm Prosedur (str: string ; Indeks: integer) ; / / Mengkonversi string pengukuran analog ketika membaca RoomManagerĂłw Status
GBS fungsi (b: boolean): String ; / / Tulis boolean dalam bentuk teks (0 , 1)
RMDeviceIndexByName fungsi (str: string): integer ; / / Mengembalikan indeks meja dengan pencarian RoomManagerami oleh sopir nama
RMGetOutputStateNr fungsi (indeks: integer ; OutputNr: integer): boolean ; / / Kembalikan RM kondisi keluaran [indeks] dan OutputNR keluaran nomor
RMGetOutputState fungsi (indeks: integer ; OutputName: string): boolean ; / / Mengembalikan RM kondisi keluaran [indeks] dan memanggil OutputName
RMGetInputStateNr fungsi (indeks: integer ; InputNr: integer): boolean ; / / Mengembalikan status RM masukan [indeks] dan jumlah entri InputNr
RMGetInputState fungsi (indeks: integer ; InputName: string): boolean ; / / Mengembalikan status RM masukan [indeks] dan nama InputName entri
RMGetTempNr fungsi (indeks: integer ; InputNr: integer): ganda ; / / Mengembalikan suhu RM [indeks] dan jumlah entri InputNr
RMGetTemp fungsi (indeks: integer ; InputName: string): ganda ; / / Mengembalikan suhu RM [indeks] dan nama InputName entri
RMGetInvPercent fungsi (indeks: integer ; InputName: string): ganda ; / / Returns pengukuran persentase terbalik 100 % – x RM [indeks] dan nama InputName entri (dalam kaitannya dengan pengontrol tegangan suplai)
RMGetInvPercentNr fungsi (indeks: integer ; InputNr: integer): ganda ; / / Returns pengukuran persentase terbalik 100 % – x RM [indeks] dan jumlah InputNr entri (dalam kaitannya dengan pengontrol tegangan suplai)
RMGetPercent fungsi (indeks: integer ; InputName: string): ganda ; / / Returns pengukuran persentase [index] RM dan nama InputName entri (dalam kaitannya dengan pengontrol tegangan suplai)
RMGetPercentNr fungsi (indeks: integer ; InputNr: integer): ganda ; / / Returns pengukuran persentase terbalik 100 % – x RM [indeks] dan nama InputNr entri (dalam kaitannya dengan pengontrol tegangan suplai)
RMGetDeviceOutputState fungsi (devname: string ; OutputName: string): boolean ; / / Mengembalikan keadaan driver keluaran disebut devname dan memanggil OutputName
RMGetDeviceInputState fungsi (devname: string ; InputName: string): boolean ; / / Mengembalikan status input pengemudi nama dan nama InputName devname entri
HMGetTemp fungsi (InputName: string): ganda ; / / Kembali suhu masukan ukur yang disebut untuk HeatManagera InputName
HMGetTempNr fungsi (InputNr: integer): ganda ; / / Kembali suhu nomor masukan ukur untuk HeatManagera InputNr (1 . . 16)
chk_int fungsi (st: string): integer ; / / Aman untuk mengkonversi string ke integer
Prosedur update_status ; / / Update status semua driver dalam tabel (harus dijalankan secara periodik)
Prosedur Test_save ; / / Prosedur uji untuk menulis hasil ke file teks untuk memudahkan
Inisialisasi driver dan semua nama-nama yang dibuat sekali aplikasi dijalankan (FormCreate)
Prosedur TForm1 . FormCreate (Sender: TObject) ;
mulai
path: = getcurrentdir () ; / / Dapatkan jalur saat program harus berada di direktori % eHouse_DIR % \ BIN \
path: = stringreplace (path , ‘ \ Bin ‘ , ‘ \ ‘ , [Rfignorecase]) ; / / Dapatkan jalur eHouse aplikasi – menetapkan eHouse aplikasi jalan
loadnames_rm ; / / Load kontroler nama ehouse1 – beban nama driver eHouse 1
init_heat_temperature_names ; / / Load sensor heatManagera nama
readethernetdevs ; / / Load controllers nama eHouse ethernet – membaca perangkat eHouse nama 2
Timer1 . Interval: = 3000 ; / Siklik / Set tugas interval dalam milidetik – Mengatur waktu untuk mulai memeriksa data yang siklik
Timer1 . Diaktifkan: = true ; / / Mulai tugas-tugas otomatis (status update – meliputi pengecekan data secara teratur
update_status ; / / Membaca status pertama
akhir ;
Siklik pengecekan data dilakukan dengan fungsi Timer1 (Timer1Timer) berjalan dalam interval waktu yang ditetapkan dalam parameter Timer1 . Interval (dalam milidetik) .
Prosedur TForm1 . Timer1Timer (Sender: TObject) ;
var tf: textfile ;
mulai
update_status ; / / Mengkonversi status pengemudi
Test_save ; / / Untuk tes menulis semua hasil ke file teks
mencoba / / membuat file penanda untuk aplikasi KillExec . exe yang dapat ” menonton ” aplikasi sebelum kecelakaan
AssignFile (tf , jalan + ‘ log \ log – Analizer . stp ‘ ) ;
/ / Beritahu WDT Bahwa aplikasi bekerja dengan benar menggunakan stampfile ” log log \ – Analizer . stp ”
menulis ulang (tf) ;
writeln (tf , ‘ 1 ‘ ) ;
akhirnya ;
closefile (tf) ;
akhir ;
akhir ;