eHouse ระบบควบคุมอาคาร – Android ซอฟต์แวร์จะได้รับสถานะของตัวควบคุมผ่านทาง UDP

อีเธอร์เน็ต บ้านอัตโนมัติ eHouse ช่วยให้คุณโดยอัตโนมัติส่งสถานะ broadcastu UDP (User Datagram Protocol) , ที่สามารถรับอุปกรณ์ทั้งหมดที่อยู่ในระบบ LAN หรือ WiFi ของคุณและ IP พอใจสภาพ – ที่พบในท้องถิ่นหน้ากาก 255 . 255 . 255 . 0 , ซึ่งออกอากาศปิดสถานะที่อยู่ IP ของตัวควบคุม 192 . 168 . 0 . x . UDP ออกอากาศช่วยให้คุณสามารถปิดการใช้งานสถานะการดาวน์โหลดของลูกค้า TCP / IP , ซึ่งจะต้องมีการเชื่อมต่อไปยังตัวควบคุม . UDP ออกอากาศเป็นโปรโตคอล connectionless , สำหรับข้อมูลการขยายพันธุ์และไม่คำนึงถึงจำนวนของอุปกรณ์ที่ได้รับไม่ได้โหลดขึ้น CPU หรือเชื่อมโยงเครือข่าย .
UDP ออกอากาศฟังก์ชันการต้อนรับที่เรียบง่ายด้วยมาร์ทโฟน , การติดตั้งและแท็บเล็ต Android จะแสดงอยู่ด้านล่าง .
ดังนั้นจึงเป็นเรื่องห่วงอนันต์บนพื้นฐานของฟังก์ชันนี้ , คุณจำเป็นต้องสร้างด้าย (Thread) ทำงานในพื้นหลัง , ให้มันทำงานมีความสำคัญต่ำสุด .
มิฉะนั้น , การดำเนินการของฟังก์ชันนี้ปิดกั้นการทำงานของกิจกรรมอื่น ๆ ของโปรแกรม .
รหัสแหล่งที่มาสำหรับการรับแพลตฟอร์ม UDP ออกอากาศหุ่นยนต์:
โมฆะสาธารณะ UDP (พอร์ต int) / พอร์ตพารามิเตอร์ / รับค่าเริ่มต้นออกอากาศ 6789 – สถานะในการควบคุมไบนารี
{
byte [] = broadcastadr byte ใหม่ [4] ;
byte [] = localadr byte ใหม่ [4] ;
WifiManager getSystemService WIFI = (WifiManager) (บริบท . WIFI_SERVICE) ; / / ผู้จัดการ Wifi
DhcpInfo DHCP = WIFI . getDhcpInfo () ; / / รับข้อมูลจาก wifi ของ DHCP
ถ้า (DHCP == null) / / รับค่าเริ่มต้นถูกปิดใช้งานถ้า DHCP เครือข่ายของ eHouse
{/ / dhcp ไม่มีข้อผิดพลาดหรือสำหรับอุปกรณ์
broadcastadr [0] = (ไบต์) 192 ;
broadcastadr [1] = (ไบต์) 168 ;
broadcastadr [2] = (ไบต์) 0 ;
broadcastadr [3] = (ไบต์) 255 ;
}
อื่น ๆ / / DHCP
{
ออกอากาศ int = (DHCP . IPAddress & ; ; DHCP . netmask) | ~ DHCP . netmask ; / / สำหรับ UDP ออกอากาศ – ถ้าคุณต้องการข้อมูลการออกอากาศเมื่อฟังก์ชั่น
ควบคุมเฉพาะได้รับสถานะ
สำหรับ (int k = 0 ; <k ; 4 ; K + +) broadcastadr [k] = (ไบต์) ((ออกอากาศ> ; > ; k * 8) ; 0xFF) ;
ท้องถิ่น int = (DHCP . ipaddress) ; / / ที่อยู่ ip ท้องถิ่น DHCP
สำหรับ (int k = 0 ; <k ; 4 ; K + +) localadr [k] = (ไบต์) ((ท้องถิ่น> ; > ; k * 8) ; 0xFF) ; / / สำหรับที่อยู่ ip ท้องถิ่น
}
ดู
{
ds = ใหม่ DatagramSocket (พอร์ต) ; / / / ฟังข้อมูลจากพอร์ต udp ip ใด
ข้างในหน้ากาก – ซ็อกเก็ต UDP การสร้างตัวอย่างของหมายเลขพอร์ตท้องถิ่น
}
จับ (Exception e)
{
/ Ehousecommunication / . ลิตร ( ” Inet ข้อผิดพลาด: ได้รับที่อยู่ ” + E . GetMessage ()) ; สำหรับการทดสอบ
}
ดู
{
ds . setBroadcast (จริง) ; / / Enable ส่งข้อความออกอากาศ – สำหรับการส่ง
ds . setReuseAddress (จริง) ; / / Enable ซ็อกเก็ตหลายคนใช้ที่อยู่ IP เดียวกัน
/ / Ds . setSoTimeout (400) ; / การรับ / หมดเวลา
}
catch (Exception IO)
{/ / ละเว้นข้อผิดพลาด แต่เราป้องกันข้อผิดพลาดของโปรแกรมประยุกต์และระบบ
}
/ / * ทดสอบการออกอากาศ – broadcastu ทดสอบ UDP ออกอากาศจากโทรศัพท์หรือแท็บเล็ตของคุณ – การสื่อสารในอนาคตด้วยการประยุกต์ใช้
/ * ลอง
{
DatagramPacket วัน = DatagramPacket ใหม่ ( ” สวัสดี Word จากการทดสอบ Android UPD ” . getBytes () , 0 , ” สวัสดี Word จากการทดสอบ Android UPD ” . ความยาว () ,
InetAddress . getByAddress (broadcastadr) , ) พอร์ต ;
ds . ส่ง (วัน) ; / / ส่ง DatagramPacket
}
จับ (Exception e)
{
ehousecommunication . ลิตร ( ” ส่งแพ็คเก็ตเดตาแกรมข้อผิดพลาด: ” + E . GetMessage ()) ;
}
* /
MulticastLock มล. = WIFI . createMulticastLock ( ” ล็อคเปิดใช้งาน multicast ” ) ;
/ / สร้างตัวอย่างของบล็อก multicast และ broadcastu
มล. . ได้รับ () ; / / รับล็อค Multicast เปิดใช้งานการออกอากาศ – มันสามารถปิดการใช้งานมาร์ทโฟน Android สำหรับวัตถุประสงค์บางอย่างประหยัด batery –
สนับสนุน broadcastu UDP ป็โทรศัพท์ถ้ามันถูกล็อคและปิดใช้งานเฉพาะ
ในขณะที่ (! ehousecommunication . ยุติ) / วง / ไม่มีที่สิ้นสุดสำหรับการรับ UDP
{ห่วง / / ไม่มีที่สิ้นสุดได้รับสถานะ UDP
DatagramPacket DP = ใหม่ DatagramPacket (ข้อความ , ข่าวสาร . ความยาว) ; / / สร้าง UDP บัฟเฟอร์แพ็กเก็ตโดยใช้ข้อมูลดาต้า – ทำให้การใช้แพ็กเก็ต UDP
buffer ” ข่าวสาร ”
try {
ds . ได้รับ (DP) ; / / รับแพคเก็ต UDP จากระบบ eHouse – ได้รับแพ็คเก็ตของพอร์ต UDP ของ UDP ซ็อกเก็ต
ถ้า (DP . GetLength ()> ; 0) / / ถ้าขนาดของผืนมากกว่าศูนย์ – บางสิ่งบางอย่างที่ได้รับ
{
EhouseTCP . QueryBuff = DP . getData () ; / / กำหนดออกอากาศ UDP recepition querybuffer – โหลดลงใน eHouse สถานะบัฟเฟอร์
/ / DP . setLength (0) ; – ขนาดแพ็คเก็ตจะถูกตั้งค่าเป็นศูนย์เพื่อที่จะไม่ประมวลผลข้อมูลเดียวกันซ้ำ ๆ
EhouseTCP . QueryReceived () ; / / ถอดรหัสข้อมูลแบบสอบถามอาร์เรย์และกรอกอุปกรณ์ – สถานะของตัวควบคุมและโหลดตารางสถานะการสมัครถอดรหัส
}
}
catch (Exception os)
{/ / ละเว้นข้อผิดพลาด
/ Ehousecommunication / . ลิตร ( ” asdfasdfsafsa ” + OS . GetMessage ()) ; / / สำหรับการทดสอบเท่านั้น
}
}
มล. . ปล่อย () ; / / Multicast UDP ล็อคฟรีสำหรับการรับสมัคร eHouse – เผยแพร่ multicast ล็อค
ds . ปิด () ; / / ปิดซ็อกเก็ตดาต้าที่ปลาย – ปิดซ็อกเก็ตในตอนท้ายของ
}
ล็อค multicast อาจจะต้องใช้ในบางอุปกรณ์ Android .
UDP ออกอากาศท้องถิ่นในกรณีของโทรศัพท์มือถือที่สามารถเปิดใช้งานหรือไม่ขึ้นอยู่กับเฟิร์มแวโทรศัพท์มือถือ .
นอกจากนี้ยังสามารถปิดการใช้งานอย่างถาวรเพื่อประหยัดแบตเตอรี่และสำหรับเหตุผลด้านความปลอดภัยหรือเพื่อลดภาระของ CPU บนเครือข่ายที่ทำงาน .
(หมายเหตุการตั้งค่า kernel: CONFIG_IP_MULTICAST ไม่ได้ตั้งค่า) .
นอกจากนี้ , บางรุ่นจะถูกบล็อกโดยไฟร์วอลล์และต้องเปิดใช้งานการส่งต่อพอร์ตที่กำหนด (6789 ค่าเริ่มต้น) .
นอกออกอากาศเมื่อใช้การเชื่อมต่ออินเทอร์เน็ต GPRS , EDGE , 3G , 4G สามารถล็อกหรือปลดล็อกโดยการดำเนินการเครือข่าย . บ่อย , แต่ , ควรจะคาดว่า , ที่ได้รับการแก้ไขเพื่อลดการใช้ประโยชน์จากการเชื่อมโยง .
ในบางรุ่นของโทรศัพท์มือถือ , สถานะการใช้งานซอฟต์แวร์ของตัวควบคุมที่ได้รับ UDP สามารถเป็นเรื่องยากมากหรือเป็นไปไม่ได้ . อาจจำเป็นต้องใช้เฟิร์มแว niebrandowanego พิเศษหรือมาร์ทโฟน .
นอกจากนี้ , การดูแลจะต้องดำเนินการเมื่อ upgradowaniu เฟิร์มและตรวจสอบว่าคุณสมบัติทั้งหมดจะทำงานอย่างถูกต้องออกจากกล่อง , มิฉะนั้นการวินิจฉัยของข้อผิดพลาดจะเป็นเรื่องยากมาก .
จากโทรศัพท์ HTC บางส่วนและผลิตภัณฑ์อื่น ๆ ที่มีรุ่น Android ระบบปฏิบัติการที่ต่ำกว่า 2 . 3 . 3 สังเกตบล็อกรวม UDP รับ broadcastu .
นี้เป็นรุ่นของหุ่นยนต์ (2 . 1 – 2 . 3 จากระยะเวลาของการ 01 . 01 . 2010 – 14 . 06 . 2011)
ถ้าคุณไม่สามารถได้รับ UDP broadcastu ดาวน์โหลดและติดตั้ง , รุ่นใหม่ Android รอมจากอย่างน้อย 2 . 3 . 3 (14 มิถุนายน , 2011) , ซึ่งการทดสอบความถูกต้องของภาระงานการออกอากาศ UDP .
เคอร์เนลรุ่น 2 . 6 . 35 . 10 – htcg3ef43272 – เคอร์เนล @ and18 – 2 # 1 .
ไม่ . 3software . 14 . 405 . 1 .
สำหรับยี่ห้ออื่น ๆ ของโทรศัพท์มีปัญหาคล้ายกัน , โปรดดาวน์โหลดเฟิร์มแว Rom Android จากผู้ผลิต , รุ่นอย่างน้อย 2 . 3 . 3 .
หมายเหตุยังมีลักษณะที่สำคัญของแพ็คเก็ต UDP .
พวกเขาจะไม่ตรงกันและต้องอ่านเกี่ยวกับสิ่งที่อาจก่อให้เกิดข้อผิดพลาดข้อมูลที่อ่าน , การสูญเสียของพวกเขา (การไหล) , โดยเฉพาะอย่างยิ่งกับอุปกรณ์ช้า , การเชื่อมโยง , รวมภาระสูงและมาร์ทโฟนอาชีพ CPU และเม็ด .
udp ข้อมูลสถานะเป็นอุปกรณ์ในการตรวจสอบเพื่อตรวจสอบความถูกต้องของข้อมูล .
ผลิตอัตโนมัติหน้าแรก eHouse บ้านอัตโนมัติ eHouse
ควบคุม eHouse – บ้านอัตโนมัติ eHouse