eHouse 빌딩 자동화 시스템 – 안드로이드 소프트웨어는 UDP를 통해 컨트롤러의 상태를받을 수

이더넷 홈 자동화 eHouse는 자동으로 상태 broadcastu UDP (사용자 데이터 그램 프로토콜)를 보낼 수 , 조건을 만족하는 사용자의 LAN 또는 Wi-Fi 인터넷과 IP의 모든 장치를받을 수있는 – 지역 마스크 255에서 발견 . 255 . 255 . 0 , 상태에게 192 컨트롤러의 IP 주소를 방송하는 . 168 . 0 . 엑스 . UDP 브로드 캐스트는 TCP / IP 클라이언트의 다운로드 상태를 비활성화 할 수 있습니다 , 컨트롤러에 연결해야하는 . UDP 브로드 캐스트는 연결없는 프로토콜입니다 , 전파 데이터와 상관없이 수신 장치의 수보다 CPU 또는 네트워크 링크를로드하지 않습니다 .
스마트 폰으로 간단한 UDP 방송 수신 기능 , 패널과 안드로이드 태블릿은 다음과 같습니다 .
따라서이 기능에 기초하여 무한 루프입니다 , 당신은 스레드 (스레드) 백그라운드에서 작업을 생성해야 , 그것을 가장 낮은 우선 순위 작업을 제공 .
그렇지 않으면 , 이 함수의 실행은 프로그램의 다른 활동의 실행을 차단 .
UDP 브로드 캐스트 안드로이드 플랫폼을 받기위한 소스 코드 :
공공 무효 UDP (INT 포트) / 기본을 수령 할 수 / 매개 변수 포트 6789 방송 – 이진 컨트롤러의 상태
{
바이트 [] broadcastadr = 새로운 바이트 [4] ;
바이트 [] localadr = 새로운 바이트 [4] ;
WifiManager Wi-Fi 인터넷 = (WifiManager) getSystemService (컨텍스트 . WIFI_SERVICE) ; / / 와이파이 관리자
DhcpInfo DHCP = Wi-Fi 인터넷 . getDhcpInfo () ; / / Wi-Fi 인터넷 DHCP에서 정보를 가져 오기
(DHCP == NULL) / / 기본값을 사용하는 경우 경우 eHouse의 DHCP 네트워크
{/ / 아니 DHCP 또는 장치에 대한 오류
broadcastadr [0] = (바이트) 192 ;
broadcastadr [1] = (바이트) 168 ;
broadcastadr [2] = (바이트) 0 ;
broadcastadr [3] = (바이트) 255 ;
}
다른 / / DHCP
{
방송 = INT (DHCP . IPADDRESS & ; ; DHCP . 넷 마스크) | ~ DHCP . 넷 마스크 ; 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 (포트) ; / / / 어떤 IP에서 UDP 포트 데이터를 듣기
마스크 내부 – UDP 소켓은 지역 포트 번호의 인스턴스를 만드는 방법
}
잡기 (예외 전자)
{
/ / Ehousecommunication . L ( ” 오류 Inet : 주소를 ” + E . getMessage ()) ; 테스트를위한
}
시도
{
DS . setBroadcast (TRUE) ; / / 브로드 캐스트 메시지를 보내 사용 – 전송
DS . setReuseAddress (TRUE) ; / / 여러 소켓이 동일한 IP 주소를 사용하도록 설정
/ / DS . setSoTimeout (400) ; / / 접수 시간 초과
}
잡기 (예외 사실은)
{/ / 오류를 무시하지만 우리는 응용 프로그램과 시스템 오류 방지
}
/ / * UDP 브로드 캐스트 TEST – broadcastu 테스트 UDP는 휴대 전화 나 태블릿에서 방송 – 의 응용 프로그램과 미래 통신
/ *보십시오
{
DatagramPacket DD는 = 새로운 DatagramPacket ( ” 안드로이드 UPD의 TEST에서 인사 말씀 ” . getBytes () , 0 , ” 안드로이드 UPD의 TEST에서 인사 말씀 ” . 길이 () ,
InetAddress . getByAddress (broadcastadr) , 포트) ;
DS . 전송 (DD) ; / /이 DatagramPacket를 보냅니다
}
잡기 (예외 전자)
{
ehousecommunication . L ( ” 데이터 그램 패킷 오류 전송 : ” + E . getMessage ()) ;
}
* /
MulticastLock ML은 = Wi-Fi 인터넷 . createMulticastLock ( ” 멀티 캐스트를 사용하는 잠금 ” ) ;
/ / 블록 멀티 캐스트 및 broadcastu의 인스턴스를 만듭니다
ML . () 취득 ; / / 멀티 캐스트 잠금 활성화 UDP 브로드 캐스트 수신 – 그것은 batery 절약을 위해 일부 안드로이드 스마트 폰을 비활성화 할 수 있습니다 –
가 잠겨 만 사용하는 경우 broadcastu UDP 지원은 전화를 활성화
동안 (! ehousecommunication . UDP 리셉션 용) 종료 / / 무한 루프
UDP 상태를 수신 {/ / 무한 루프
DatagramPacket DP = 새로운 DatagramPacket (메시지 , 메시지 . 길이) ; / / UDP 데이터 그램 패킷 버퍼가 데이터를 사용하여 만들기 – UDP 패킷을 사용합니다
버퍼 ” 메시지 ”
시도 {
DS . 수신 (DP) ; eHouse 시스템에서 / / UDP 패킷 리셉션 – UDP의 패킷 UDP 포트 소켓을받습니다
경우 (DP . getLength ()> ; 0) / / 0보다 소포의 크기보다 큰 경우 – 무언가 접수
{
EhouseTCP . QueryBuff = DP . getData () ; / / UDP 브로드 캐스트 recepition querybuffer 지정 – 버퍼 상태 eHouse에로드
/ / DP . setLength (0) ; – 패킷 크기가 수 있도록 반복적으로 동일한 데이터를 처리하지 0으로 설정됩니다
EhouseTCP . QueryReceived () ; / / 쿼리 데이터 배열을 디코딩하고 장치를 기입 – 컨트롤러 및로드 응용 프로그램 상태 테이블의 디코딩 상태
}
}
잡기 (예외 OS)
{/ / 오류 무시
/ / Ehousecommunication . L ( ” asdfasdfsafsa ” + O를 . getMessage ()) ; / / 테스트 전용
}
}
ML . 릴리스 () ; eHouse 응용 프로그램의 리셉션을위한 / / 멀티 캐스트 UDP 잠금 무료 – 잠금 멀티 캐스트을 출시
DS . () 종료 ; / / 끝 부분에 데이터 그램 소켓을 닫습니다 – 의 끝에서 소켓을 닫습니다
}
멀티 캐스트 잠금 일부 안드로이드 장치에서 요구 될 수 있습니다 .
휴대 전화의 경우 지역 방송 UDP를 사용하도록 설정하거나 휴대 전화 펌웨어에 따라 수는 없습니다 .
또한 영구적으로 배터리 절약을 위해 및 안전의 이유로 비활성화 할 수 있습니다 또는 직장에서 네트워크에있는 CPU의 부하를 줄이기 위해 .
(커널 구성을 참고 : CONFIG_IP_MULTICAST가 설정되지 않았습니다) .
게다가 , 일부 모델은 지역의 방화벽에 의해 차단하고 지정된 포트 (기본값 6789)에 전송을 활성화해야 할 수 있습니다 .
GPRS 인터넷 연결을 사용하여 방송 외 , EDGE , 3G , 4G는 네트워크 사업자에 의해 잠겨 또는 잠금 해제 할 수 있습니다 . 더 자주 , 그러나 , 예상되어야한다 , 그것은 링크의 사용을 최소화하기 위해 고정되어있는 .
휴대 전화의 일부 모델에서 , UDP를받는 컨트롤러의 소프트웨어 구현 상태는 매우 어렵거나 심지어 불가능 할 수 있습니다 . 특별한 펌웨어 niebrandowanego 나 스마트 폰의 사용을 요구할 수 있습니다 .
게다가 , upgradowaniu 펌웨어 및 모든 기능이 밖으로 상자 제대로 작동하고 있는지 확인할 때주의가되어야합니다 , 그렇지 않으면 오류 진단이 매우 어려운 것입니다 .
2보다 안드로이드 운영 체제 버전이 낮은 포함 된 일부 HTC 전화 및 기타 제품을 기반으로 . 3 . 3 총 블록 UDP 리셉션 broadcastu을 관찰 .
이 안드로이드의 버전 (2했다 . 1 – 이 . 01의 기간 3 . 01 . 2010 – 14 . 06 . 2011)
당신은 UDP broadcastu 다운로드 및 설치를받을 수없는 경우 , 최소 2의 새로운 안드로이드 ROM 버전 . 3 . 3 (6월 14일 , 2011) , 이는 작업 부하 UDP 방송의 정확성을 테스트 .
커널 버전 2 . 6 . 35 . 10 – htcg3ef43272 – 커널 @ and18 – 2 # 1 .
아니 . 3software . 14 . 405 . 1 .
비슷한 문제가있는 휴대 전화의 다른 브랜드 , 제조업체에서 펌웨어 안드로이드 롬을 다운로드하십시오 , 최소 2 버전 . 3 . 3 .
또한 UDP 패킷의 필수 특성을 참고 .
그들은 비동기하고 데이터 읽기 오류가 발생할 수있는 상황에 대해 읽기해야합니다 , 자신의 손실 (흘림) , 특히 속도가 느린 장비 , 링크 , 높은 부하와 CPU 직업의 스마트 폰 및 태블릿을 결합 .
UDP 상태 데이터는 데이터의 유효성을 확인하는 검사에 equiped 수 있습니다 .
홈 자동화 제작 eHouse 홈 자동화 eHouse
eHouse 컨트롤러 – 홈 자동화 eHouse