Notice
Recent Posts
Recent Comments
Link
투케이2K
31. (TWOK/LOGIC) [Android] SmartConfig 스마트콘피그 와이파이 연결 및 TCP/IP 통신 로직 본문
투케이2K 로직정리
31. (TWOK/LOGIC) [Android] SmartConfig 스마트콘피그 와이파이 연결 및 TCP/IP 통신 로직
투케이2K 2023. 3. 9. 22:10[로직 정리]
정리 로직 : Android
상태 : [Android] SmartConfig 스마트콘피그 와이파이 연결 및 TCP/IP 통신 로직
[설 명]
===============================================
[1]. 안드로이드 build gradle 에 EspTouch 라이브러리 추가 실시
- implementation 'com.github.EspressifApp:lib-esptouch-android:1.1.1'
===============================================
[2]. 안드로이드 근처 와이파이 검색 수행
===============================================
[3]. 특정 와이파이 선택 >> SSID , BSSID 추출 실시
===============================================
[4]. 와이파이에 연결할 수 있는 PW 정보 입력 실시
===============================================
[5]. 앱에서 스마트콘피그 브로드캐스팅 알림 활성 실시
- new EsptouchTask(apSsid, apBssid, apPassword, context);
- task.setPackageBroadcast(true);
- esptouchTask.setReciveSendWaitTime(30000, 60000);
- List<IEsptouchResult> results = task.executeForResults(expectResultCount);
===============================================
[6]. 장비에서 정상적으로 브로드캐스팅 알림 확인 후 해당 AP 정보에 연결 완료 시 >> SSID , HostAddress 추출 실시
- IEsptouchResult first = results.get(0);
- touchResult.getBssid()
- touchResult.getInetAddress().getHostAddress()
===============================================
[7]. 앱에서 HostAddress , Port 지정해서 TCP/IP 소켓 생성 실시
ConnectivityManager connectivity = (ConnectivityManager) mMainCtx.getSystemService(Context.CONNECTIVITY_SERVICE);
Socket sock = null;
try{
if (connectivity != null)
{
for (Network network : connectivity.getAllNetworks())
{
NetworkInfo networkInfo = connectivity.getNetworkInfo(network);
if (networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_WIFI)
{
if (networkInfo.isConnected())
{
S_Log.w("//===========//","================================================");
S_Log.i("","\n"+"["+String.valueOf(ACTIVITY_NAME)+" >> createSocket() :: 소켓 생성 실시]");
S_Log.i("","\n"+"[host :: "+String.valueOf(host)+"]");
S_Log.i("","\n"+"[port :: "+String.valueOf(port)+"]");
S_Log.w("//===========//","================================================");
// [소켓 생성 실시]
socket = network.getSocketFactory().createSocket(host, port);
socket.setTcpNoDelay(true);
socket.setSoTimeout(0);
}
}
}
} else {
S_Log.e("//===========//","================================================");
S_Log.i("","\n"+"["+String.valueOf(ACTIVITY_NAME)+" >> createSocket() :: start]");
S_Log.i("","\n"+"[error :: ConnectivityManager is null]");
S_Log.e("//===========//","================================================");
}
} catch (Exception e) {
}
===============================================
[8]. 앱에서 TCP/IP 소켓 연결 확인 실시 (socket.isConnected())
===============================================
[9]. 정상적으로 소켓 연결이 된 경우 >> 데이터 송수신을 위한 InputStream, OutputStream 지정
===============================================
[10]. 앱과 디바이스 간 데이터 송수신 수행 실시
===============================================
[11]. 모든 로직 과정을 마치면 소켓 연결 종료 실시 (socket.close())
===============================================
[12]. 참고 사이트 :
https://www.techtonions.com/esp32-using-smartconfig/
https://libraries.io/maven/com.tencent.iot.thirdparty.android:esptouch
https://github.com/EspressifApp/EsptouchForAndroid/tree/master/esptouch
===============================================
반응형
'투케이2K 로직정리' 카테고리의 다른 글
Comments