ถอดรหัสสถานะไบนารีของตัวควบคุมอัตโนมัติบ้าน – รหัสแหล่งที่มาฟรี

บ้านอัตโนมัติ , การจัดการอาคาร eHouse – ถอดรหัสสถานะของตัวควบคุมไมโครโปรเซสเซอร์
บ้านอัตโนมัติ ที่ได้รับจากแผงควบคุมเชื่อมต่อกับ LAN หรือ WiFi , ผ่านทาง UDP (User Datagram Protocol) .
กรอบมาตรฐานการรับสถานะในรูปแบบไบนารี , ด้วย ควบคุม ถูกกล่าวถึงในบทความ ” อาคารอัจฉริยะ eHouse แพคเกจสถานะของตัวควบคุม ” .
ถอดรหัสกรอบต้องวิเคราะห์บิตของข้อมูลจากแพ็คทุก .
นอกจากนี้ , ประเภทของการควบคุมแต่ละ

  • RoomManager
  • ExternalManager
  • HeatManager
  • InputExtender
  • CommManager
  • LevelManager
  • EthernetRoomManager

มีความแตกต่างในปริมาณของปัจจัยการผลิตดิจิตอล , ปัจจัยการผลิตการวัด , ผลดิจิตอล , dimmers , ฟังก์ชั่นการตรวจสอบและขั้นตอนวิธีการที่มีผล , ว่าข้อมูลในกรอบกลายพันธุ์มาตรฐานขึ้นอยู่กับชนิดของตัวควบคุม .
ซึ่งจะส่งผลในความต้องการสำหรับการถอดรหัสบิตโดยบิตส​​ำหรับแต่ละประเภทของการควบคุมอิสระ .
ในกรณีของการดำเนินงานของทุกชนิดของตัวควบคุมไมโครโปรเซสเซอร์การสร้างและทดสอบอัลกอริทึมการถอดรหัสเฟรมอาจใช้เวลาถึง 1 เดือน .
เพื่อลดเวลาให้น้อยที่สุด , เพื่ออำนวยความสะดวกพร้อมที่จะนำเสนอขั้นตอนวิธีการที่ยืมมาจาก eHouse . โปรแกรม exe , โดยอัตโนมัติถอดรหัสข้อมูลทั้งหมดจากตัวควบคุมและโหลดข้อมูลลงในแม่แบบบันทึกของแผงสัมผัส (เม็ด) Windows XP , ทิวทัศน์ , 7 , 8 .
หลังจากการโหลดข้อมูลโดยอัตโนมัติลงในห้องสมุดซอฟต์แวร์ eHouse , มีไม่กี่บรรทัดของรหัส , คุณสามารถสร้างอัลกอริทึมของระบบการควบคุมของคุณเอง eHouse ในไม่กี่นาที .
ไบนารีกรอบซอฟต์แวร์ถอดรหัสของมาตรฐานสถานะ eHouse จะดำเนินการในแม่แบบห้องสมุดสำหรับแผง . มันต้องทำแบบไบนารี , สำหรับสถานะการถอดรหัสโดยตรงจากตัวควบคุมโดยไม่ต้อง Ethernet eHouse . การกำกับดูแลโปรแกรม exe .
ถอดรหัสกรอบทั้งหมด (สำหรับตัวควบคุมไมโครโปรเซสเซอร์ eHouse1 RM , EM , HM) จะดำเนินการโดยฟังก์ชั่นขั้นตอน set_rm (STR: array_of_char ; TCP_INDEX_INC: จำนวนเต็ม) ;
พารามิเตอร์เป็นหน้าที่ของสถ​​านะบัฟเฟอร์และการเปลี่ยนแปลง (offset) . บัฟเฟอร์มีทั้งหมดข้อมูลที่ได้รับจากสถานะ . offset ขึ้นอยู่กับชนิดของการส่ง (ที่อยู่ extended , ปกติ , และใช้งานในอนาคตอื่น ๆ ขึ้นอยู่กับขั้นตอนวิธีการสื่อสาร) .
มันโดยอัตโนมัติเติมสถานะอาร์เรย์สำหรับตัวควบคุมแต่ละบุคคลและสามารถจัดการกับข้อมูลโดยตรงหรือปรับปรุงข้อมูลโดยอัตโนมัติบนแผงหน้าจอสัมผัส .
ฟังก์ชันนี้จะเปิดใช้งานในกระบวนงานเหตุการณ์ของข้อมูลที่ได้รับจากส่วน UDP ซ็อกเก็ต (TNMUDP – เรียกว่าไบนารี) ในกรณี onDataReceived .
รับจะเป็นดังนี้:
TForm1 ขั้นตอน . binaryDataReceived (Sender: TComponent ;
NumberBytes: จำนวนเต็ม ; FromIP: String ; พอร์ต: จำนวนเต็ม) ;
var C: array [0 . . 1024] ของ char ;
MyStream: TMemoryStream ;
เริ่ม
ถ้า filesystem_status แล้วออกจาก ; / / ถ้าไม่มีระบบแฟ้ม filesystem_status
MyStream = TMemoryStream . สร้าง ; / / สร้างกระแสของข้อมูล
ไบนารี . ReadStream (MyStream) ; / / อ่านกระแสข้อมูล
MyStream . อ่าน (C [0] , NumberBytes) ; / โหลด / C บัฟเฟอร์
set_rm (C , 1) ; / / แปลงข้อมูลไบนารีและโหลดลงทะเบียน [ดัชนี rm] สำหรับตัวควบคุม eHouse 1
Test_save ; / Test / บันทึกผลลัพธ์ไปยังแฟ้มข้อความสำหรับการดำเนินงานที่ง่าย
update_panel ; ข้อมูล / / โหลดสำหรับแผงควบคุม
ปลาย ;
จะช่วยให้คุณโดยอัตโนมัติและไม่ใช่ – คอลเลกชันของข้อมูลที่แพร่กระจายผ่าน LAN หรือ Wi – Fi กับแพคเกจการออกอากาศผ่านทาง UDP (User Datagram Protocol) .
สิ่งที่เพิ่มเติมไม่จำเป็นต้องเชื่อมต่อไปยังเซิร์ฟเวอร์เปิดเท่านั้นฟังออกอากาศพอร์ต ‘ 6789 ‘ เริ่มต้นหรืออื่น ๆ .
การเชื่อมโยงข้อผิดพลาด , เครือข่าย , เราเตอร์ไม่ได้ผลในการระงับหรือข้อผิดพลาดที่ไม่ได้ระบุซอฟต์แวร์ (เช่นในกรณีของการสื่อสารด้วย TCP เซิร์ฟเวอร์) , แต่หาย​​ไปเพียงแค่การปรับปรุงข้อมูลโดยไม่ได้มีผลกระทบต่อข้อมูลหรือเซิร์ฟเวอร์ UDP โปรแกรมไคลเอนต์ที่เหมาะสม .

คำเตือน! . ถ้าคุณสร้างซอฟแวร์การควบคุมบน Windows สำหรับการทำงานอัตโนมัติหน้าแรก eHouse , มันเป็นสิ่งจำเป็นที่จะใช้อัลกอริทึมทั้งในโปรแกรมประยุกต์หนึ่ง , ซึ่งการวิเคราะห์ข้อมูลและดำเนินการขั้นตอนวิธีการทั้งหมดและเห็นภาพพวกเขา . เราสังเกตว่าบางครั้ง 2 ซ็อกเก็ต UDP ฟังไม่สามารถอยู่ในเครื่องเดียวกัน .
ตัวแปรที่สำคัญที่สุดใน binary ห้องสมุด:
boiler_alarm: Boolean = false ; / หม้อน้ำเตือน / สัญญาณเตือนอุณหภูมิโปรแกรมข้างต้น
/ / กว่า – สัญญาณเตือนอุณหภูมิหม้อน้ำ
bonfire_stat: จำนวนเต็ม ; / / ระดับความร้อนกอง 0 – 7 สำหรับโหมดไบนารี – ไฟสถานะการจ้างงาน
/ / 0 – ปิดไฟ – ไม่ร้อน
/ / 1 – ไฟบน / ดับเพลิง => ; ; ระดับสีเขียว < ; ; อุณหภูมิเสื้อสีเขียว (LED กะพริบ) – หมดอายุกะพริบสีเขียว
/ / 2 – ไฟบน => ; ; ระดับสีเขียว> ; ; แจ็คเก็ตชั่วคราว => ; ; ระดับสีเหลือง – histeressis สีเขียว (LED) – สีเขียว
/ / 3 – ไฟบน => ; ; ระดับสีเหลือง – histeressis> ; ; แจ็คเก็ตชั่วคราว> ; ; ระดับ histeressis + สีเหลือง) (สีเขียวสีเหลือง + ไฟ LED) – สีเขียว – สีเหลือง
/ / 4 – ไฟบน => ; ; ระดับเหลือง + histeressis> ; ; แจ็คเก็ตชั่วคราว> ; ; ระดับสีแดง – histeressis (สีเหลือง) – สีเหลือง
/ / 5 – ไม่มีเงื่อนไข => ; ; ระดับสีแดง – histeressis < ; ; แจ็คเก็ต temp < ; ; histeressis ระดับ + สีแดง (แดง + สีเหลืองไฟ LED) สีเหลือง – สีแดง
/ / 6 – ไม่มีเงื่อนไข => ; ; แจ็คเก็ตชั่วคราว> ; ; ระดับ histeressis + แดง (ไฟ LED สีแดงคงที่) – สีแดง
/ / 7 – ไม่มีเงื่อนไข => ; ; แจ็คเก็ตชั่วคราว> ; ; กองปลุก (LED สีแดงกระพริบ) – กะพริบสีแดง
bonfire_sensor_error: Boolean = false ; / / ข้อผิดพลาดกองเซ็นเซอร์น้ำมากเกินไปเสื้อเซ็นเซอร์อุณหภูมิที่แตกต่างกันระหว่างสอง
/ ข้อผิดพลาดเตาผิง / เซ็นเซอร์อุณหภูมิแตกต่างเสื้อคลุมขนาดใหญ่เกินไป
recuperator_status: สตริง ; / / สถานะของการพักฟื้น , การระบายอากาศ , ความร้อนของอากาศ – recuperator และสถานะการระบายอากาศ
recu_winter: Boolean = false ; / / recuperator ฤดูหนาวฤดูร้อน / โหมดการแลกเปลี่ยนความร้อนใช้ / เลิกใช้ – กู้ฤดูหนาวฤดูร้อน /
recu_manual_amalva: บูลีน = true ; / / โหมด recuperator รถยนต์ / คู่มือสำหรับ amalva recuperator (อัตโนมัติจัดการโดยภายใน controler amalva , ด้วยตนเองเพื่อ eHouse HeatManager) / /
กู้ amalva คู่มือ / อัตโนมัติ
went_cooler: บูลีน = true ; / น้ำ / เย็น / ปิดสำหรับการระบายอากาศหรือเย็นในการพักฟื้นพักฟื้นระบบหรือ GWC ON / OFF
went_gwc: Boolean = false ; servomotor / / Ghe (แลกเปลี่ยนความร้อนพื้นดิน) เปิด / ปิด – พื้นมอเตอร์แลกเปลี่ยนความร้อน / ปิด
went_aux_gwc_fan: Boolean = false ; / / ช่วย GWC เครื่องช่วยหายใจ / พัดลม / ปิดสวิตช์สำหรับการแลกเปลี่ยนความร้อนพื้นดิน – แฟน GWC ช่วย
bonfire_dgp: Boolean = false ; / กองอากาศ / ระบบน้ำร้อนกระจายใช้ / เลิกใช้ – การกระจายแฟนของอากาศร้อนจาก DGP เตาผิง
ventilation_on: Boolean = false ; / / การระบายอากาศกำลังทำงานเปิด / ปิด – รวมการระบายอากาศและการกู้คืนความร้อน
heater_pump: บูลีน = true ; / / ปั๊มน้ำของเครื่องทำความร้อนสำหรับการระบายอากาศที่เปิด / ปิด – ความร้อนปั๊มและวงจรระบายอากาศสำหรับหม้อน้ำ
three_ways_cutoff: จำนวนเต็ม = 0 ; วิธี / / สามทิศทางตัดออก 0 , เพิ่มขึ้น 1 ระดับ , – ลดลง 1 ระดับ) ทิศทางของการหมุนไฟฟ้า – วาล์วทาง
solar_pump: Boolean = false ; / / สูบน้ำพลังงานแสงอาทิตย์เปิด / ปิด – สูบน้ำพลังงานแสงอาทิตย์
boiler_on: Boolean = false ; / / หม้อน้ำใช้ / เลิกใช้ – หม้อไอน้ำ / ปิด
boiler_pump: Boolean = false ; / / สถานะของปั๊มหม้อไอน้ำ / ปิด – ปั๊มหม้อไอน้ำ / ปิด
boiler_fuel_out: Boolean = false ; / หม้อน้ำ / ออกจากน้ำมันเชื้อเพลิง aproximate (นับชั่วโมงจากความร้อน) – คาดการขาดแคลนน้ำมันเชื้อเพลิงสำหรับหม้อไอน้ำเชื้อเพลิงแข็ง (คำนวณบนพื้นฐานของชั่วโมงการทำงานของหม้อไอน้ำ)
boiler_power_on: Boolean = false ; อำนาจ supplay / หม้อน้ำ / / ปิด ; – หม้อไอน้ำไฟฟ้าเปิด / ปิด
boiler_fuel_supply_override: Boolean = false ; / / หม้อไอน้ำเชื้อเพลิงแทนที่ supplyier (ควบคุมโดย eHouse / ควบคุมหม้อไอน้ำภายใน) – น้ำมันเชื้อเพลิงส่งแม่ควบคุม eHouse ระบบเปิด / ปิด
bonfire_pump: Boolean = false ; สถานะปั๊ม / กอง / / ปิด – สูบน้ำดับเพลิงเปิด / ปิด
recu_speed: จำนวนเต็ม = 0 ; / / recuperator Speeed 0 . . 3 – ความเร็ว recuperator
recu_temperature: จำนวนเต็ม ; / ระดับอุณหภูมิ / ของ RECU 0 . . 30C อุณหภูมิกู้สำหรับ amalwa
_recu_mode: สตริง = ‘ ‘ ; / ฟื้นฟู / โหมดในข้อความที่มัน HEatManager แผงควบคุม (eHouse . exe) – โหมดกู้เป็นแผงควบคุมโปรแกรม eHouse HeatMAnagerem . exe
ไป: สตริง ; สถานะการระบายอากาศ / ข้อความ / เป็นแผงควบคุม HeatManager (eHouse . exe) – สถานะการระบายอากาศเช่นเดียวกับในแผง HeatManager จาก eHouse . exe
หม้อน้ำ , พลังงานแสงอาทิตย์: สตริง ; / หม้อน้ำ / , ข้อความสถานะพลังงานแสงอาทิตย์ HeatManager ที่ Control Panel (eHouse . exe) – สถานะของหม้อไอน้ำและแผงควบคุมพลังงานแสงอาทิตย์ (HeatManager) eHouse . exe
Komi: สตริง ; สถานะกอง / ข้อความ / เป็นแผงควบคุม HeatManager (eHouse . exe) – สถานะเป็นควบคุมไฟแผงโปรแกรม eHouse heatmanager . exe
ไฟควบคุม