Building Automation eHouse – Skapa en Windows-programvara överlägg och anpassade algoritmer

Home Automation eHouse med PC-programvara kan du skapa överlägg för att bygga automationssystem .
Detta gör att du kan skapa din egen , enskilda algoritmer , inte genomförs i firmware eller drivrutin som styr den seriella Home Automation eHouse .
För detta ändamål , Vi ger användarna koderna källkod (i Delphi 5) . De kan kompileras med nyare versioner av Delphi eller användas för andra programmeringsspråk .
Vi valde medvetet denna arkaiska versioner eftersom de redan finns tillgängliga gratis för amatör programmet .
De fungerar lika tillförlitligt i Windows XP , Vista , Windows 7 både 32 och 64 bitar .
Denna programvara kallas eHouseLogAnalizer och dessa loggar applikationer mall som läser textfiler aktuell .
Det kan hanteras och övervakas av program KillWdt . exe .
Viktiga funktioner i programmet:

  • Läsa ut status och namnen på alla förare
  • Läs status och ange namnen på alla förare
  • Läs mätningarna och namnen på alla drivrutiner mätingångar
  • Ladda alla data till det interna programminnet , som kan bearbetas vidare av en applikation

Programmet använder status skapade filer till textfiler i en katalog ‘ loggar / status / ‘ förlängning ‘ . status ‘ .
Filen är skrivskyddad vid förändringar i tillämpningen eHouse . exe .

Registeransvariga laddas i följande fall Records ” ehouse_rm_em_hm ” listade i arrayen RM .

Dessutom , uppgifter hålls HeatManager följande variabler:
bonfire_status: sträng ; / / Status bål för HeatManager – Status spis värmepanel eHouse . exe
boiler_status: sträng ; / / Status panna för HM – status pannans värmepanelen eHouse . exe
Solar_status: sträng ; / / Status för solsystemet – status solfångarpanel eHouse . exe
recuperator_status: sträng ; / / Status återhämtning , ventilation , luftvärme – ställning av värme ventilation och värmeåtervinning
HADC: Array [0 . . 15] av dubbel ; / / En temperatur chef – temperaturmätningar HeatManager
/ / Värme manager index för direkt tillträde HADC array – Konstant temperatur index för direkt avläsning av temperatur HeatManager
KONST HM_GWC = 3 ; / / GWC – Mark Värmeväxlare
HM_KOM1 = 4 ; / / Öppen spis Coat 1 – Bonfire vattenmantel 1
HM_KOMKONV = 5 ; / / Öppen spis konvekcyjne – konvektion brasa
HM_KOM2 = 6 ; / / Brand plan 2 – brasa vattenmantel 2 (backup)
HM_TWEWN = 7 ; / / Intern rumstemperatur – interna rumstemperatur
HM_SOLAR = 9 ; / / Collector sön – solsystem
HM_ZEWNPN = 8 ; / / Extern temperatur norr – extern temperatur norr
HM_ZEWNPD = 1 ; / / Extern temperatur i söder – extern temperatur söder
HM_KOC = 10 ; / / Temperatur panna – panntemperatur
HM_BANDOL = 11 ; / / CO / varmvattenberedare ner – het watter botten buffert
HM_REQIN = 12 ; / / Ren luft rekuperator ingång – återhämtning klar luft ingång
HM_REQOUT = 13 ; / / Output rekuperator hem – heaten återhämtning frisk blåsluft till rummet – temperatur
HM_NAG = 14 ; / / Temperaturstyrd tre – vägsventil för uppvärmning och för radiatorer – temperatur efter tre sätt cutoff för varmvattenberedare eller annan värmesystem
HM_REQWYC = 15 ; / / Hem rekuperator extrakt smutsiga – återhämtning från hemmet smutsiga avgastemp
HM_BANGORA = 2 ; / / Värme / varmvattenberedare gora – varmvatten buffert TOP
HM_BANSRO = 0 ; / / Värme / varmvatten ackumulatortank ett sätt – MITT varmvatten buffert
Var HADCNames: Array [0 . . 15] av sträng ; / / Namnen på sensorerna (mätingångar) HeatManagera
Grundläggande funktioner EhouseLogAnalizer:
förfarande init_heat_temperature_names ; / / Initiera och / eller temperaturgivare läser namnen på HM
förfarande loadnames_rm ; / / Load RoomManagerĂłw namn (eHouse 1)
förfarande readethernetdevs ; / / Läser Ethernet föraren namn (eHouse 2)
get_index_rm funktion (str: String): heltal ; / / Returnerar index i tabellen med roomManagerami sökning efter filnamn status
Funktionen gb (CHR: char): boolean ; / / Returnerar ett booleskt värde för läs status
adc_hm förfarande (str: String ; Index: heltal) ; / / Konverterar strängen med inspelade temperaturer läs status HeatManagera
adc_rm förfarande (str: String ; Index: heltal) ; / / Konverterar sträng av analoga mätningar när man läser status RoomManagerĂłw
GBS-funktion (b: Boolean): String ; / / Skriv boolean i textform (0 , 1)
RMDeviceIndexByName funktion (str: String): heltal ; / / Returnerar index i tabellen med RoomManagerami sökning efter namn föraren
RMGetOutputStateNr funktion (index: heltal ; OutputNr: heltal): boolean ; / / Retur RM utgångstillståndet [index] och utgångsnummer OutputNR
RMGetOutputState funktion (index: heltal ; OutputName: String): Boolean ; / / Returnerar den utgående statliga RM [index] och ropade OutputName
RMGetInputStateNr funktion (index: heltal ; InputNr: heltal): boolean ; / / Returnerar status på ingången RM [index] och antalet in InputNr
RMGetInputState funktion (index: heltal ; InputName: String): Boolean ; / / Returnerar status på ingången RM [index] och namnet på posten inputName
RMGetTempNr funktion (index: heltal ; InputNr: heltal): dubbel ; / / Returnerar RM temperatur [index] och antalet in InputNr
RMGetTemp funktion (index: heltal ; InputName: String): dubbel ; / / Returnerar RM temperatur [index] och namnet på posten inputName
RMGetInvPercent funktion (index: heltal ; InputName: String): dubbel ; / / Returnerar en procentuell mätning av omvänd 100 % – X RM [index] och namnet på posten inputName (i förhållande till matningsspänningen regulatorn)
RMGetInvPercentNr funktion (index: heltal ; InputNr: heltal): dubbel ; / / Returnerar en procentuell mätning av omvänd 100 % – X RM [index] och antalet posten InputNr (i förhållande till matningsspänningen regulatorn)
RMGetPercent funktion (index: heltal ; InputName: String): dubbel ; / / Returnerar en procentuell mätning av RM [index] och namnet på posten inputName (i förhållande till matningsspänningen regulatorn)
RMGetPercentNr funktion (index: heltal ; InputNr: heltal): dubbel ; / / Returnerar en procentuell mätning av omvänd 100 % – X RM [index] och namnet på posten InputNr (i förhållande till matningsspänningen regulatorn)
RMGetDeviceOutputState funktion (Devname: sträng ; OutputName: String): Boolean ; / / Returnerar tillstånd av produktionen förare som kallas Devname och ropade OutputName
RMGetDeviceInputState funktion (Devname: sträng ; InputName: String): Boolean ; / / Returnerar status för förarens in namn och namnet på posten Devname inputName
HMGetTemp funktion (inputName: String): dubbel ; / / Retur temperatur mätingången krävde HeatManagera inputName
HMGetTempNr funktion (InputNr: heltal): dubbel ; / / Retur temperatur mätingången nummer för HeatManagera InputNr (1 . . 16)
chk_int funktion (st: String): heltal ; / / Säker att konvertera en sträng till ett heltal
Förfarandet update_status ; / / Uppdatera statusen för alla förare i tabellen (måste köras regelbundet)
förfarande Test_save ; / / Provningsförfarande för att skriva resultatet till en textfil för enkel
Initiera drivrutinen och alla namn görs när programmet startas (FormCreate)
förfarande TForm1 . FormCreate (Avsändare: TObject) ;
börja
sökväg: = getcurrentdir () ; / / Hämta strömbanan för programmet måste vara i katalogen % eHouse_DIR % \ BIN \
sökväg: = stringreplace (väg , ‘ \ Bin ‘ , ‘ \ ‘ , [Rfignorecase]) ; / / Hämta väg ansökan eHouse – sätter eHouse ansökan banan
loadnames_rm ; / / Load controller namn ehouse1 – laddar drivrutiner namnet eHouse 1
init_heat_temperature_names ; / / Belastning sensorer heatManagera namn
readethernetdevs ; / / Ladda styrenheter ethernet eHouse namn – avläsningsanordningen namn eHouse 2
Timer1 . Intervall: = 3000 ; / / Ställ cyklisk uppgift intervall i millisekunder – Ställer det dags att börja kolla cykliska uppgifter
Timer1 . Aktiverad: = true ; / / Start automatiska uppgifter (statusuppdatering – inkluderar regelbunden kontroll av uppgifter
update_status ; / / Läser första status
slut ;
Cyklisk uppgifter kontroll görs av funktionen Timer1 (Timer1Timer) löper i ett tidsintervall som anges i parameter Timer1 . Intervall (i millisekunder) .
förfarande TForm1 . Timer1Timer (Avsändare: TObject) ;
var tf: textfil ;
börja
update_status ; / / Konverterar status föraren
Test_save ; / / För test skriver alla resultat till en textfil
prova / / skapa en markör fil för ansökan KillExec . exe som kan ” titta ” ansökan före krasch
AssignFile (tf , väg + ‘ logs \ log – analizer . STP ‘ ) ;
/ / Meddela WDT Ansökan korrekt arbetssätt med stampfile ” log \ log – analizer . STP ”
skriva (TF) ;
writeln (tf , ‘ 1 ‘ ) ;
Slutligen ;
closefile (TF) ;
slut ;
slut ;