บ้านอัตโนมัติเช่นการสร้างอัลกอริทึมการควบคุมของคุณเองสำหรับระบบ eHouse

การจัดการอาคาร eHouse ช่วยให้คุณสามารถสร้างภาพซ้อนทับของคุณเอง (โปรแกรมประยุกต์ที่ทำงานบนเครื่องพีซีที่เซิร์ฟเวอร์ระบบ eHouse) , ซึ่งทำให้ง่ายต่อการสร้างตัวเองของแต่ละบุคคลในการเขียนโปรแกรมขั้นตอนวิธีการของคุณโดยใช้แม่แบบ EhouseLogAnalizer ซอฟต์แวร์ของเราสำหรับ Delphi . ซอฟต์แวร์นี้ได้รับการกล่าวถึงใน ” บันทึกวิเคราะห์ eHouse สมาร์ทบ้าน ” ส่วนขยายของการทำงานของระบบ eHouse บ้านอัตโนมัติ .
ที่มีความมั่นคงของวันนี้ ; พีซี s , และ Windows สามารถจะดำเนินการได้อย่างราบรื่นและต่อเนื่องของการจัดการบ้านอัจฉริยะ eHouse ซอฟต์แวร์ตรวจสอบโดยโปรแกรม KillExec . exe .
ในกรณีของการระงับการผิดพลาดโปรแกรมจะถูกปิดและเริ่มต้นอีกครั้งโดยไม่ต้องใช้การแทรกแซงระบบ .
ด้วยการตั้งค่าที่เหมาะสมของ Windows และความต่อเนื่องของระบบ eHouse สามารถทำงานซอฟแวร์สมาร์ทบนเครื่องพีซีมานานหลายเดือน .
เขียนซอฟต์แวร์ที่เหมาะสมของระบบการควบคุมสมาร์ทบ้านต้องมีการทดสอบการวัดการเปลี่ยนแปลง eHouse ลำดับ (และส่งกิจกรรมการควบคุมที่เหมาะสมถ้าจำเป็น – เวลา) .
เมื่อเขียนขั้นตอนวิธีการควบคุมของคุณเองเพื่อสร้างซอฟต์แวร์ – ธง attesting ที่จะเสร็จสิ้นจากการแข่งขันไปอย่างหมดความรู้สึกไม่ซ้ำส่งเหตุการณ์เดียวกัน: ยกตัวอย่างเช่น , ทุก 2 วินาทีเพื่อปิดผ้าม่านที่ปิดอยู่แล้ว .
การประยุกต์ใช้งานสามารถกำหนดให้จับเวลาหลาย:
แรก – ชั้นนำเช่นการปรับปรุงโปรแกรมควบคุมข้อมูล 10 วินาที .
อื่น – ด้วยค่า†<†<ขึ้นอยู่กับความแปรปรวนของปรากฏการณ์:
เช่น . สำหรับการควบคุมของผ้าม่าน , กันสาดสำหรับอุณหภูมิกลางแจ้งและระดับแสงอาจจะไม่กี่นาที .
ในกรณีของผ้าม่านควบคุมไดรฟ์ , ประตู , ขุนนางมาร์ควิซ , หน้าต่าง , ฯลฯ . สามารถนำมาใช้เชื่อมต่อกับกกอินพุตดิจิตอล eHouse ควบคุมสมาร์ท , หลักฐานของใกล้พวกเขาและทำให้การดำเนินการควบคุมของรัฐในการป้อนข้อมูล RoomManager , ซึ่งเป็นที่ดีมากและจริงยิ่งกว่าธงซึ่งมีเนื้อหาเกี่ยว , ซึ่งมีค่าที่สามารถตั้งค่าไม่ถูกต้องเป็นผลมาจากการจุดบกพร่องซอฟต์แวร์หรือข้อผิดพลาดเนื่องจากไดรฟ์ (ไม่ปิด , เชิงกล , ปิดกั้น , ฯลฯ . ) .

ตัวอย่างการใช้ข้อมูลจากตัวควบคุมใน eHouseLogAnalizer โปรแกรม (ใน loops ซ้ำการดำเนินงานในช่วงเวลาที่ทุกๆสองสามวินาที) .

/ / เริ่มต้นข้อมูลจากตัวควบคุมหม้อไอน้ำ HeatManagera
TzewnetrznaPN = HADC [HM_ZEWNPN] ; / / นอร์ทภายนอกอุณหภูมิ
TemperaturaGWC = HADC [HM_GWC] ; / / อุณหภูมิสำหรับ GWC – แลกเปลี่ยนความร้อนพื้นดินเพื่อกู้
TemperaturaKominekPlaszcz = HADC [HM_KOM1] ; / / อุณหภูมิของน้ำในปล่องไฟ 1 เซ็นเซอร์
TemperaturaKominekKonvekcja = HADC [HM_KOMKONV] ; เตาผิงหมุนเวียน / อุณหภูมิ / – เซ็นเซอร์ที่ปล่องไฟของการทำงานจริงของเตาผิง
TemperaturaKominekPlaszcz = HADC [HM_KOM2] ; / ดับน้ำ / เสื้อเซ็นเซอร์อุณหภูมิ 2 – (Backup)
TemperaturaWewnÄ™ trzna = HADC [HM_TWEWN] ; / อุณหภูมิห้อง / ภายใน – สำหรับโคโลราโด
TemperaturaSolar = HADC [HM_SOLAR] ; / อุณหภูมิ / สะสมพลังงานแสงอาทิตย์สูงสุดท่อ (ร้อน)
TzewnetrznaPD = HADC [HM_ZEWNPD] ; เที่ยงอุณหภูมิ / / นอก
Tkociol = HADC [HM_KOC] ; / หลอดสูงสุด Boiler / อุณหภูมิ (ร้อน)
TemperaturaBuforaCODol = HADC [HM_BANDOL] ; / อุณหภูมิ / CO / ถังน้ำร้อนลง
TemperaturaRecuIn = HADC [HM_REQIN] ; Input / / recuperator อุณหภูมิอากาศที่สะอาด
TemperaturaRecuOut = HADC [HM_REQOUT] ; / Output / อากาศอุณหภูมิกู้บ้าน
TemperaturaZaworTrojDrozny = HADC [HM_NAG] ; / / อุณหภูมิควบคุมสาม – วาล์ววิธีเช่นเครื่องทำความร้อนหรือหม้อน้ำ
TemperaturaRecuWyciog = HADC [HM_REQWYC] ; / / อุณหภูมิสารสกัดกู้ของบ้านสกปรกอากาศ
TemperaturaBuforaCOGora = HADC [HM_BANGORA] ; / อุณหภูมิ / ถังน้ำร้อน / น้ำร้อนขึ้น
TemperaturaBuforaCOSrodek = HADC [HM_BANSRO] ; / อุณหภูมิ / ร้อน / น้ำร้อนถังศูนย์
/ / วัดจากเซ็นเซอร์ไป RoomManager
TzewWschod = RMGetTempNr (get_index_rm ( ‘ 55 – 2 ‘ ) , 8) ; / / อุณหภูมิตะวันออกกลางแจ้งเซนเซอร์ RM ไม่มี . 8 สำหรับ 55 ที่อยู่ – 2
TzewZachod = RMGetTempNr (get_index_rm ( ‘ 55 – 3 ‘ ) , 8) ; / เซ็นเซอร์อุณหภูมิ / นอกทางทิศตะวันตกกับไม่มี . 8 สำหรับ RM ด้วย 55 ที่อยู่ – 3
TzewPolnoc = RMGetTempNr (get_index_rm ( ‘ 55 – 4 ‘ ) , 8) ; / เซ็นเซอร์อุณหภูมิ / นอกทวีปไม่มี . 8 สำหรับ RM ด้วย 55 ที่อยู่ – 4
TzewPoludnie = RMGetTempNr (get_index_rm ( ‘ 55 – 5 ‘ ) , 8) ; / เซ็นเซอร์อุณหภูมิ / นอกใต้ไม่มี . 8 สำหรับ RM ด้วย 55 ที่อยู่ – 5
LNaslonecznienieWschod = RMGetInvPercentNr (get_index_rm ( ‘ 55 – 2 ‘ ) , 1) ; / / ระดับจาก Ambient Light ตะวันออกของเซ็นเซอร์ไม่มี . 1 สำหรับ RM ด้วย 55 ที่อยู่ – 2
LNaslonecznienieZachod = RMGetInvPercentNr (get_index_rm ( ‘ 55 – 3 ‘ ) , 1) ; / / ระดับแสงเซ็นเซอร์เวสต์ไม่มี . 1 สำหรับ RM ด้วย 55 ที่อยู่ – 3
LNaslonecznieniePolnoc = RMGetInvPercentNr (get_index_rm ( ‘ 55 – 4 ‘ ) , 1) ; / / ระดับแสงเซ็นเซอร์เหนือไม่มี . 1 สำหรับ RM ด้วย 55 ที่อยู่ – 4
LNaslonecznieniePoludnie = RMGetInvPercentNr (get_index_rm ( ‘ 55 – 5 ‘ ) , 1) ; / / ระดับแสงเซ็นเซอร์ใต้ไม่มี . 1 สำหรับ RM ด้วย 55 ที่อยู่ – 5
SilaWiatru: =: = RMGetPercentNr (get_index_rm ( ‘ 55 – 5 ‘ ) , 7) ; / / ระดับแสงเซ็นเซอร์ใต้ไม่มี . 1 สำหรับ RM ด้วย 55 ที่อยู่ – 5
วิธีการควบคุมสามารถ arbitrary และอาจรวมถึงใด ๆ ของพารามิเตอร์และการวัดเพื่อให้ห่างไกลได้ใช้และการติดตั้งเซ็นเซอร์ปริมาณทางกายภาพบางอย่าง .
/ ขั้นตอนวิธี / ที่มีอยู่ในเวลาซ้ำเช่นนี้ช้า . ทุก 10 นาที
/ ตัวอย่าง / ของพลังงาน – การควบคุมที่มีประสิทธิภาพของบานม้วนและกันสาด (ผลในการประหยัดต้นทุนอย่างมีนัยสำคัญเนื่องจากดวงอาทิตย์ ' ; รังสีความร้อนบ้านในฤดูหนาว) และการสะสมของพลังงานแสงอาทิตย์ฟรี
/ / ความร้อนฟรีและนิเวศวิทยาของห้องพักบนฝั่งตะวันออกของอาคารกับแสงแดด
ถ้า (ไม่ RoletyWschod) แล้ว / / ถ้าพวกเขาจะไม่เปิด
ถ้า (LNaslonecznienieWschod> ; 80) แล้ว / / ถ้าดวงอาทิตย์ – ตรวจสอบค่าของสังเกตุ
ถ้า (เดือน < ; ; 5) เดือนและ> ; 8) แล้ว / / ถ้าเดือนจากเดือนกันยายนถึงเดือนเมษายน
ถ้า (TzewWschod> ; 0) เซ็นเซอร์อุณหภูมิแล้ว / / ในดวงอาทิตย์อุ่นสูงกว่า 0C
ถ้า (เวลา> ; 8) และ (เวลา < ; ; 11) แล้ว / / ในตอนเช้าเมื่อดวงอาทิตย์ส่องโดยตรงจากทางทิศตะวันออก
เริ่ม
RoletyWschod: = true ; / / ปักธงเพื่อเปิดบานประตูหน้าต่างทางทิศตะวันออก
OtworzRoletyWschod ; / / Function ของการส่งเหตุการณ์ไปยังระบบ eHouse ไดรเวอร์
ZamknijMarkizyWschod ; / / อย่าให้อะไรเพราะดว​​งอาทิตย์อยู่ต่ำเกินไป
ปลาย ;
/ / ความร้อนฟรีและนิเวศวิทยาของห้องด้านทิศใต้ของอาคาร , ดวงอาทิตย์ ; รังสี s
ถ้า (ไม่ RoletyPoludnie) แล้ว / / ถ้าพวกเขาจะไม่เปิด
ถ้า (LNaslonecznieniePolodnie> ; 80) แล้ว / / ถ้าดวงอาทิตย์ – ตรวจสอบค่าของสังเกตุ
ถ้า (เดือน < ; ; 5) เดือนและ> ; 8) แล้ว / / ถ้าเดือนจากเดือนกันยายนถึงเดือนเมษายน
ถ้า (TzewPoludnie> ; 0) เซ็นเซอร์อุณหภูมิแล้ว / / ในดวงอาทิตย์อุ่นสูงกว่า 0C
ถ้า (ชั่วโมง> ; 10) และ (เวลา < ; ; 14) แล้ว / / ในตอนเช้าเมื่อดวงอาทิตย์ส่องโดยตรงจากทางทิศใต้
เริ่ม
RoletyPoludnie: = true ; / / เปิดบานประตูหน้าต่างธงภาคใต้
OtworzRoletyPolodnie ; / / Function ของการส่งเหตุการณ์ไปยังระบบ eHouse ไดรเวอร์
ZamknijMarkizyPolodnie ; / / อย่าให้อะไรเพราะดว​​งอาทิตย์อยู่ต่ำเกินไป
ปลาย ;
/ / ความร้อนฟรีและนิเวศวิทยาของห้องพักบนฝั่งตะวันตกของอาคาร , ดวงอาทิตย์ ; รังสี s
ถ้า (ไม่ RoletyZachod) แล้ว / / ถ้าพวกเขาจะไม่เปิด
ถ้า (LNaslonecznienieZachod> ; 80) แล้ว / / ถ้าดวงอาทิตย์ – ตรวจสอบค่าของสังเกตุ
ถ้า (เดือน < ; ; 5) เดือนและ> ; 8) แล้ว / / ถ้าเดือนจากเดือนกันยายนถึงเดือนเมษายน
ถ้า (TzewZachod> ; 0) เซ็นเซอร์อุณหภูมิแล้ว / / ในดวงอาทิตย์อุ่นสูงกว่า 0C
ถ้า (ชั่วโมง> ; 14) และ (เวลา < ; ; 18) แล้ว / / ในตอนเช้าเมื่อดวงอาทิตย์ส่องโดยตรงจากทางตะวันตก
เริ่ม
RoletyZachod: = true ; / / ปักธงเพื่อเปิดบานประตูหน้าต่างเวสเทิร์
OtworzRoletyZachod ; / / Function ของการส่งเหตุการณ์ไปยังระบบ eHouse ไดรเวอร์
ZamknijMarkizyZachod ; / / อย่าให้อะไรเพราะดว​​งอาทิตย์อยู่ต่ำเกินไป
ปลาย ;
/ / นิเวศวิทยาและเศรษฐกิจ จำกัด ผลกระทบของความร้อนพื้นที่ว่างจากแสงแดดในช่วงฤดู​​ร้อน – กันสาดควบคุม
/ ควบคุม / กันสาด – เปิดกันสาดเพื่อลดการแผ่รังสีของดวงอาทิตย์และความร้อนบ้านในฤดูร้อน – ตะวันออก
ถ้า (ไม่ MarkizaWschodA) แล้ว / / ถ้าพวกเขาจะไม่เปิด
ถ้า (SilaWiatru < ; ; 5) แล้ว / / ถ้าไม่มีลม
ถ้า ((เดือน> ; 4) และ (เดือน < ; ; 9)) ฤดูร้อนแล้ว / / เดือน
ถ้า (LNaslonecznienieWschod> ; 50) แล้ว / / ถ้าดวงอาทิตย์ส่อง
ถ้า (เวลา> ; 6) และ (เวลา < ; ; 12) แล้ว / / หากชั่วโมงของเช้า
ถ้า (TwewnWschodA> ; 25) แล้ว / / ถ้าห้องอบอุ่นเกินไป
เริ่ม
MarkizaWschodA: = true ; / ปักธง / กันสาดห้องพักเปิด
OtworzMarkizeWchodA ; / / ส่งเหตุการณ์ไปยังระบบ eHouse ไดรเวอร์
ปลาย ;
/ / ทำนองเดียวกัน , คุณสามารถทำซ้ำรหัสสำหรับการควบคุมความเป็นอิสระจากกันสาดในพื้นที่อื่น ๆ ของอาคารด้านทิศตะวันออกของการเปลี่ยนแปลงให้เป็นค่าที่แตกต่างกัน
/ ควบคุม / กันสาด – เปิดกันสาดเพื่อลดการแผ่รังสีของดวงอาทิตย์และความร้อนในบ้านเที่ยงฤดูร้อน
ถ้า (ไม่ MarkizaPoludnieA) แล้ว / / ถ้าพวกเขาจะไม่เปิด
ถ้า (SilaWiatru < ; ; 5) แล้ว / / ถ้าไม่มีลม
ถ้า ((เดือน> ; 4) และ (เดือน < ; ; 9)) ฤดูร้อนแล้ว / / เดือน
ถ้า (LNaslonecznieniePoludnie> ; 50) แล้ว / / ถ้าดวงอาทิตย์ส่อง
ถ้า (เวลา> ; 8) และ (เวลา < ; ; 18) แล้ว / / ถ้าชั่วโมงในที่ดวงอาทิตย์ที่ยากที่สุดในการดำเนินงานจากทางทิศใต้
ถ้า (TwewnPoludnieA> ; 25) แล้ว / / ถ้าห้องอบอุ่นเกินไป
เริ่ม
MarkizaPoludnieA: = true ; / ปักธง / กันสาดห้องพักเปิด
OtworzMarkizePoludnieA ; / / ส่งเหตุการณ์ไปยังระบบ eHouse ไดรเวอร์
ปลาย ;
/ / ทำนองเดียวกัน , คุณสามารถทำซ้ำรหัสสำหรับการควบคุมความเป็นอิสระจากกันสาดในพื้นที่อื่น ๆ ของการยกระดับใต้การเปลี่ยนให้เป็นค่าที่แตกต่างกัน
/ ควบคุม / กันสาด – กันสาดเปิดเพื่อลดการแผ่รังสีของดวงอาทิตย์และความร้อนบ้านในฤดูร้อนของฝั่งตะวันตก
ถ้า (ไม่ MarkizaZachodA) แล้ว / / ถ้าพวกเขาจะไม่เปิด
ถ้า (SilaWiatru < ; ; 5) แล้ว / / ถ้าไม่มีลม
ถ้า ((เดือน> ; 4) และ (เดือน < ; ; 9)) ฤดูร้อนแล้ว / / เดือน
ถ้า (LNaslonecznieniePoludnie> ; 50) แล้ว / / ถ้าดวงอาทิตย์ส่อง
ถ้า (เวลา> ; 8) และ (เวลา < ; ; 18) แล้ว / / ถ้าชั่วโมงในที่ดวงอาทิตย์ที่ยากที่สุดในการดำเนินงานจากทางทิศใต้
ถ้า (TwewnZachodA> ; 25) แล้ว / / ถ้าห้องอบอุ่นเกินไป
เริ่ม
MarkizaZachodA: = true ; / ปักธง / กันสาดห้องพักเปิด
OtworzMarkizeZachodA ; / / ส่งเหตุการณ์ไปยังระบบ eHouse ไดรเวอร์
ปลาย ;
/ / ทำนองเดียวกัน , คุณสามารถทำซ้ำรหัสสำหรับการควบคุมความเป็นอิสระจากกันสาดในพื้นที่อื่น ๆ ของอาคารตะวันตกของการเปลี่ยนแปลงให้เป็นค่าที่แตกต่างกัน
/ / ปิดมาร์ควิสลมมากเกินไป
ถ้า (LNaslonecznieniePoludnie < ; ; 20) แล้ว / / ถ้าดวงอาทิตย์ไม่ได้ส่องแสง (เลือกสังเกตุมีฝนและปริมาณน้ำฝน)
ถ้า (MarkizaPoludnieA) แล้ว / / ถ้ากันสาดเปิด
เริ่ม
MarkizaPoludnieA: = false ; / / การเปลี่ยนแปลงธง
ZamknijMarkizePoludnieA ; / / ส่งกิจกรรมเพื่อควบคุมไมโครโปรเซสเซอร์ eHouse
ปลาย ;
ถ้า (LNaslonecznienieZachod < ; ; 20) แล้ว / / ถ้าดวงอาทิตย์ไม่ได้ส่องแสง (เลือกสังเกตุ)
ถ้า (MarkizaZachodA) แล้ว / / ถ้ากันสาดเปิด
เริ่ม
MarkizaZachodA: = false ; / / การเปลี่ยนแปลงธง
ZamknijMarkizeZachodA ; / / ส่งกิจกรรมเพื่อควบคุมไมโครโปรเซสเซอร์ eHouse
ปลาย ;
ถ้า (LNaslonecznienieWschod < ; ; 20) แล้ว / / ถ้าดวงอาทิตย์ไม่ได้ส่องแสง (เลือกสังเกตุ)
ถ้า (MarkizaWschodA) แล้ว / / ถ้ากันสาดเปิด
เริ่ม
MarkizaWschodA: = false ; / / การเปลี่ยนแปลงธง
ZamknijMarkizeWschodA ; / / ส่งกิจกรรมเพื่อควบคุมไมโครโปรเซสเซอร์ eHouse
ปลาย ;
ถ้า (SilaWiatru> ; 5) ลมแล้ว / / ปิดผ้าม่าน
ถ้า (MarkizaZachodA หรือ MarkizaWschodA หรือ MarkizaPoludnieA) แล้ว / / หากเปิด
เริ่ม
ZamknijWszystkieMarkizy ; / / ส่งเหตุการณ์ไปยังระบบ eHouse ไดรเวอร์
MarkizaZachodA: = false ;
MarkizaWschodA: = false ;
MarkizaPoludnieA: = false ;
ปลาย ;
/ / บานประตูปิดควบคุมอุณหภูมิอัตโนมัติจะต่ำเกินไปสำหรับความร้อนที่จะหลบหนีออกไปข้างนอกผ่านช่องเข้มงวดนอกหน้าต่าง
/ / South – ปิดบานประตูหน้าต่างที่เย็นและการขาดของดวงอาทิตย์สำหรับความสูงใต้
ถ้า (RoletyPoludnie) แล้ว / / ถ้ามันจะเปิด
ถ้า (TzewPoludnie < – 10) then // temperature sensor smaller than the southern – 10C indicating the large cold and lack of sun heating the sensor on the south side

เริ่ม
RoletyPoludnie: = false ; / / เปิดบานประตูหน้าต่างธงภาคใต้
ZamknijRoletyPolodnie ; / / Function ของการส่งเหตุการณ์ไปยังระบบ eHouse ไดรเวอร์
/ / ZamknijMarkizyPolodnie ; / / อย่าให้อะไรเพราะดว​​งอาทิตย์อยู่ต่ำเกินไป
ปลาย ;
/ / หน้าแรกภาคผ้าม่านปิดที่หนาวเย็นและการขาดของดวงอาทิตย์สำหรับอาคารภาคตะวันออก
ถ้า (RoletyWschod) แล้ว / / ถ้ามันจะเปิด
ถ้า (TzewWschod < – 10) then // temperature sensor lower than the Eastern – 10C indicating the large cold and lack of sun heating the sensor on the east side

เริ่ม
RoletyWschod: = false ; / / ปักธงเพื่อเปิดบานประตูหน้าต่างทางทิศตะวันออก
ZamknijRoletyWschod ; / / Function ของการส่งเหตุการณ์ไปยังระบบ eHouse ไดรเวอร์
/ / ZamknijMarkizyWschod ; / / อย่าให้อะไรเพราะดว​​งอาทิตย์อยู่ต่ำเกินไป
ปลาย ;
/ / ปิดผ้าม่านด้านตะวันตกเย็นและการขาดของดวงอาทิตย์เพื่อยกระดับตะวันตก
ถ้า (RoletyZachod) แล้ว / / ถ้ามันจะเปิด
ถ้า (TzewZachod < – 10) then // temperature sensor below the western – 10C indicating the large cold and lack of sun heating the sensor on the west side

เริ่ม
RoletyZachod: = false ; / / ปักธงเพื่อเปิดบานประตูหน้าต่างเวสเทิร์
ZamknijRoletyZachod ; / / Function ของการส่งเหตุการณ์ไปยังระบบ eHouse ไดรเวอร์
/ / ZamknijMarkizyZachod ; / / อย่าให้อะไรเพราะดว​​งอาทิตย์อยู่ต่ำเกินไป
ปลาย ;