Hệ thống tự động hóa Xây dựng eHouse – Android phần mềm để nhận được tình trạng của bộ điều khiển thông qua UDP

Ethernet Home Automation eHouse cho phép bạn tự động gửi một tình trạng broadcastu UDP (User Datagram Protocol) , mà có thể nhận được tất cả các thiết bị trong mạng LAN hoặc WiFi và IP đáp ứng các điều kiện – Được tìm thấy trong mặt nạ địa phương 255 . 255 . 255 . 0 , được phát sóng trạng thái địa chỉ IP của các bộ điều khiển 192 . 168 . 0 . x . UDP Broadcast cho phép bạn vô hiệu hóa tình trạng tải của các khách hàng TCP / IP , mà đòi hỏi một kết nối với bộ điều khiển . UDP Broadcast là một giao thức kết nối , cho dữ liệu tuyên truyền và bất kể số lượng các thiết bị tiếp nhận không tải CPU hoặc liên kết mạng .
UDP đơn giản tiếp nhận chức năng phát sóng với điện thoại thông minh , bảng và máy tính bảng Android được hiển thị dưới đây .
Do đó, một vòng lặp vô hạn trên cơ sở của chức năng này , bạn cần phải tạo ra một chủ đề (thread) làm việc ở chế độ nền , cho các công việc ưu tiên thấp nhất .
Nếu không , thực hiện chức năng này ngăn chặn việc thực hiện các hoạt động khác của chương trình .
Mã nguồn tiếp nhận nền tảng Android UDP Broadcast:
public void udp (int port) / cổng / tham số để chọn mặc định phát sóng 6789 – tình trạng trong bộ điều khiển nhị phân
{
byte [] broadcastadr = new byte [4] ;
byte [] localadr = new byte [4] ;
Wifi = (WifiManager) getSystemService WifiManager (Context . WIFI_SERVICE) ; / / Wifi quản lý
DhcpInfo dhcp = wifi . getDhcpInfo () ; / / Lấy thông tin từ wifi dhcp
(dhcp == null) / / lấy giá trị mặc định bị vô hiệu hóa nếu DHCP mạng của eHouse
{/ / Không có dhcp hoặc một lỗi cho thiết bị
broadcastadr [0] = (byte) 192 ;
broadcastadr [1] = (byte) 168 ;
broadcastadr [2] = (byte) 0 ;
broadcastadr [3] = (byte) 255 ;
}
else / / DHCP
{
phát sóng = int (dhcp . IPAddress & ; ; dhcp . mặt nạ mạng) | ~ dhcp . mặt nạ mạng ; / / Đối với udp phát sóng – Nếu bạn muốn phát sóng các dữ liệu về chức năng
điều khiển chỉ nhận được tình trạng
for (int k = 0 ; k < ; 4 ; k + +) broadcastadr [k] = (byte) ((phát sóng> ; > ; k * 8) & ; 0xFF) ;
địa phương int = (dhcp . ipaddress) ; / / Địa phương địa chỉ ip dhcp
for (int k = 0 ; k < ; 4 ; k + +) localadr [k] = (byte) ((địa phương> ; > ; k * 8) & ; 0xFF) ; / / Đối với địa chỉ ip địa phương
}
thử
{
ds = new DatagramSocket (port) ; / / / Lắng nghe trên UDP cổng dữ liệu từ ip bất kỳ
bên trong một mặt nạ – UDP socket để tạo ra một thể hiện của số cảng địa phương
}
catch (Exception e)
{
/ / Ehousecommunication . l ( ” Lỗi Inet: có được địa chỉ ” + E . getMessage ()) ; cho thử nghiệm
}
thử
{
ds . setBroadcast (đúng) ; / / Kích hoạt tính năng gửi tin nhắn quảng bá – để truyền
ds . setReuseAddress (đúng) ; / / Kích hoạt nhiều ổ cắm sử dụng cùng một địa chỉ IP
/ / Ds . setSoTimeout (400) ; / / Reception thời gian chờ
}
catch (Exception io)
{/ / Bỏ qua lỗi nhưng chúng tôi bảo vệ chống lại các lỗi ứng dụng và hệ thống
}
/ / * UDP phát sóng THI – broadcastu test udp phát sóng từ điện thoại hoặc máy tính bảng của bạn – thông tin liên lạc trong tương lai với việc áp dụng
/ * Hãy thử
{
DatagramPacket dd = new DatagramPacket ( ” Xin chào Lời từ Android UPD THI ” . getBytes () , 0 , ” Xin chào Lời từ Android UPD THI ” . chiều dài () ,
InetAddress . getByAddress (broadcastadr) , port) ;
ds . gửi (đ) ; / / Gửi một DatagramPacket
}
catch (Exception e)
{
ehousecommunication . l ( ” Truyền lỗi gói Datagram: ” + E . getMessage ()) ;
}
* /
MulticastLock ml = wifi . createMulticastLock ( ” Multicast cho phép khóa ” ) ;
/ / Tạo một thể hiện của multicast khối và broadcastu
ml . Có được () ; / / Multicast khóa cho phép udp phát sóng tiếp nhận – Nó có thể được vô hiệu hóa một số điện thoại thông minh Android cho mục đích tiết kiệm batery –
broadcastu UDP hỗ trợ kích hoạt điện thoại nếu nó bị khóa và chỉ bị vô hiệu hóa
trong khi (! ehousecommunication . Chấm dứt) / / vòng lặp vô hạn cho udp tiếp nhận
{/ / Infinite loop nhận udp tình trạng
DatagramPacket dp = new DatagramPacket (tin nhắn , tin nhắn . chiều dài) ; / / Tạo bộ đệm gói tin UDP datagram sử dụng dữ liệu – làm cho việc sử dụng của các gói tin UDP
đệm ” tin nhắn ”
try {
ds . nhận được (dp) ; / / UDP gói nhận từ hệ thống eHouse – nhận được các gói tin UDP cổng của UDP một ổ cắm
if (dp . getLength ()> ; 0) / / nếu diện tích của khu lớn hơn không – một cái gì đó nhận được
{
EhouseTCP . QueryBuff = dp . GetData () ; / / Gán một phát sóng udp recepition querybuffer – nạp vào eHouse tình trạng bộ đệm
/ / Dp . setLength (0) ; – kích thước gói tin được thiết lập để không như vậy là không để xử lý cùng một dữ liệu liên tục
EhouseTCP . QueryReceived () ; / / Giải mã truy vấn dữ liệu mảng và điền vào các thiết bị – giải mã các trạng thái của bộ điều khiển và tải tình trạng ứng dụng bảng
}
}
catch (Exception os)
{/ / Bỏ qua các lỗi
/ / Ehousecommunication . l ( ” asdfasdfsafsa ” + O . getMessage ()) ; / / Đối với xét nghiệm duy nhất
}
}
ml . phát hành () ; / / Multicast udp khóa miễn phí để tiếp nhận các ứng dụng eHouse – phát hành các multicast khóa
ds . đóng () ; / / Đóng socket gói tin ở cuối – đóng socket vào cuối
}
Khóa Multicast có thể được yêu cầu trong một số thiết bị Android .
UDP Broadcast địa phương trong trường hợp điện thoại di động có thể được kích hoạt hay không phụ thuộc vào phần mềm điện thoại di động .
Nó cũng có thể được vô hiệu hóa vĩnh viễn để tiết kiệm pin và vì lý do an toàn hoặc để giảm tải CPU trên mạng tại nơi làm việc .
(Lưu ý các cấu hình hạt nhân: CONFIG_IP_MULTICAST không được thiết lập) .
Ngoài ra , một số mô hình có thể bị chặn bởi một bức tường lửa địa phương và cần phải kích hoạt việc truyền tải trên một cổng nhất định (mặc định 6789) .
Bên ngoài Bảng phát hình khi sử dụng kết nối GPRS Internet , EDGE , 3G , 4G có thể bị khóa hoặc mở khóa bởi các nhà điều hành mạng . Thường xuyên hơn , tuy nhiên , nên được dự kiến , nó được cố định để giảm thiểu việc sử dụng của liên kết .
Trong một số mô hình của điện thoại di động , Tình trạng thực hiện phần mềm của bộ điều khiển nhận được UDP có thể rất khó khăn hoặc thậm chí không thể . Có thể yêu cầu sử dụng của niebrandowanego firmware đặc biệt hoặc điện thoại thông minh .
Ngoài ra , chăm sóc phải được thực hiện khi upgradowaniu firmware và kiểm tra xem tất cả các tính năng đang làm việc đúng ra khỏi hộp , nếu không chẩn đoán lỗi sẽ rất khó khăn .
Dựa trên một số điện thoại HTC và các sản phẩm khác có chứa hệ điều hành Android phiên bản thấp hơn 2 . 3 . 3 quan sát thấy một khối tổng UDP tiếp nhận broadcastu .
Đây là phiên bản của Android (2 . 1 – 2 . 3 giai đoạn 01 . 01 . 2010 – 14 . 06 . 2011)
Nếu bạn không thể nhận được UDP broadcastu tải và cài đặt , Phiên bản ROM Android mới của tối thiểu 2 . 3 . 3 (ngày 14 tháng 6 , 2011) , kiểm tra tính chính xác công việc phát sóng UDP tải .
Kernel Version 2 . 6 . 35 . 10 – htcg3ef43272 – kernel @ and18 – 2 # 1 .
Không . 3software . 14 . 405 . 1 .
Đối với các thương hiệu khác của điện thoại với những vấn đề tương tự , xin vui lòng tải Firmware Android Rom từ nhà sản xuất , phiên bản của ít nhất 2 . 3 . 3 .
Cũng lưu ý các đặc điểm thiết yếu của gói tin UDP .
Họ là không đồng bộ và yêu cầu đọc về những gì có thể làm cho dữ liệu lỗi đọc , mất mát của họ (phát tán) , đặc biệt là với các thiết bị chậm , liên kết , kết hợp tải cao và điện thoại thông minh và máy tính bảng chiếm đóng của CPU .
Dữ liệu UDP tình trạng được trang bị trong kiểm tra để kiểm tra tính hợp lệ của dữ liệu .
Trang chủ Tự động hóa sản xuất eHouse Home Automation eHouse
eHouse Controllers – Home Automation eHouse