IoT 스마트 플러그 소켓 SDK 솔루션

스마트 퍼그 MK102
스마트 플러그 MK112
스마트 스위치 WS001-3
README.md--IOS

1. MKSDK For Device 폴더 아래에는 스마트 플러그를 구성하는 SDK가 있습니다

1.1 스마트 플러그에 연결하도록 MQTT 서버 정보 및 wifi 정보를 구성하려는 경우,스마트 플러그를 AP 모드로 만들어야합니다(MokoLife 사용 설명서를 참조하십시오):스마트 플러그를 전원 소켓에 연결,버튼을 누르십시오 10 스마트 플러그 표시등이 황색으로 깜박일 때까지 몇 초 동안 스마트 플러그가 AP 모드로 표시됨(노트:AP 모드의 시간 초과 기간은 3 의사록,스마트 플러그에 정보를 구성하면,AP 모드를 종료합니다).Wlan 페이지로 들어가서 연결할 스마트 플러그 핫스팟을 선택하십시오 ,성공적으로 연결되면,connectDeviceWithHost 호출:포트:connectSucBlock:스마트 플러그 연결을위한 connectFailedBlock 메소드. 다음은 스마트 플러그 프로세스의 전체 구성입니다.:

1 단계

[[MKSocketManager sharedInstance] connectDeviceWithHost:@”192.168.4.1″
포트:8266
connectSucBlock:^(NSString * IP, NSInteger 포트) {
//성공을 연결
connectFailedBlock:^(NSError * 오류) {
//연결 실패
}];

2 단계

[[MKSocketManager sharedInstance] SmartPlugDeviceInformationWithSucBlock 읽기:^(id returnData) {
//장치 정보 성공 읽기
} failedBlock:^(NSError * 오류) {
//장치 정보 읽기 실패
}];

step3

[[MKSocketManager sharedInstance] configMQTTServerHost:@”MQTT 서버 호스트”
포트:포트
connectMode:mqttServerConnectTCPMode
qos:mqttQosLevelExactlyOnce
살아 유지:60
clean 세션:예
clientId:@”장치 맥 주소”
사용자 이름:@”MQTT 서버 사용자 이름”
암호:@”MQTT 서버 비밀번호”
sucBlock:^(id returnData) {
//구성 성공
}
failedBlock:^(NSError * 오류) {
//구성 실패
}];

step4

[[MKSocketManager sharedInstance] configWifiSSID:당신의 와이파이 ssid
암호:와이파이 비밀번호
보안:wifiSecurity_WPA2_PSK
sucBlock:^(id returnData) {
//구성 성공
} failedBlock:^(NSError * 오류) {
//구성 실패
}];

2. MKSDKForMqttServer 폴더는 APP 및 MQTTServer를 구성하는 SDK입니다.

2.1 MKMQTTServerManagerDelegate
@protocol MKMQTTServerManagerDelegate

(빈)mqttServerManagerStateChanged:(MKMQTTSessionManagerState)상태;//상태 위임 메소드 연결

(빈)sessionManager:(MKMQTTServerManager *)sessionManager didReceiveMessage:(NSData *)데이터 onTopic:(NSString *)이야기;//MQTT 서버에서 데이터를 수신합니다.

@종료

2.2 APP은 MQTT 서버에 연결
네트워크가 사용 가능한 경우,요구 [[MKMQTTServerManager sharedInstance] connectMQTTServer:포트:tls:살아 유지:깨끗한:인증:사용자:통과하다:clientId:] MQTT 서버 연결.

2.3 주제 구독
스마트 플러그 주제에 대해서는 MQTT 프로토콜 문서를 참조하십시오. – (빈)구독:(NSArray *)주제 목록 및 – (빈)탈퇴:(NSArray *)주제를 개별적으로 구독 및 구독 취소하기위한 topicList.

2.4 지정된 주제에 APP 공개 데이터
스마트 플러그 주제에 대해서는 MQTT 프로토콜 문서를 참조하십시오.. – (빈)sendData:(NS 사전 *)데이터 주제:(NSString *)주제 sucBlock:(빈 (^)(빈))sucBlock failedBlock:(빈 (^)(NSError * 오류))failedBlock

README.md-- 안드로이드

1.SDK 가져 오기 및 사용

1.1 가져 오기 모듈 프로젝트 mokosupport

1.2 settings.gradle 파일 구성 및 mokosupport 프로젝트 호출:

포함 ':앱',’:mokosupport’

1.3 기본 프로젝트의 build.gradle 파일을 편집하십시오.:

의존성 {
구현 파일(당신에게: ‘라이브러리’, 포함: ['*.항아리'])
구현 프로젝트(통로: ‘: mokosupport ')
}

1.4 프로젝트 초기화 중 SDK 가져 오기:

공공 클래스 BaseApplication은 응용 프로그램을 확장 {
@우세하다
공공 무효 onCreate() {
super.onCreate();
// 초기화
MokoSupport.getInstance().초기화(getApplicationContext());
}
}

2.기능 소개

    • SDK에서 제공하는 방법은 다음과 같습니다.: WIFI 장치와의 소켓 통신, MQTT 연결 서비스, 단절, 구독 주제, 구독 취소, 주제 게시, 로그 기록, 기타.
    • 소켓 통신은 SocketService에 의해 호출됩니다;
    • MQTT 통신은 MokoSupport.getInstance에 의해 호출 될 수 있습니다.();

2.1 SocketService

소켓 연결을 만들기 전에, APP가 장치의 WIFI에 연결되어 있는지 확인해야합니다.. 기본 IP 주소를 연결 192.168.4.1, 기본 포트 번호는 8266, SocketThread에서 수정할 수 있습니다.

2.1.1 초기화

bindService(새로운 의도(이, SocketService.class), mServiceConnection, BIND_AUTO_CREATE);

SocketService 시작, SocketService 객체를 얻습니다., mService.startSocket을 호출하십시오.() 소켓 스레드를 만들려면, 장치를 연결, 스레드는 연결이 성공한 후 메시지가 전송되기를 기다립니다.;

2.1.2 연결 상태 및 응답 받기

1.방송을 등록하여 연결 상태 확인:

방송 액션:MokoConstants.ACTION_AP_CONNECTION

연결 상태:

    • 연결 성공:MokoConstants.CONN_STATUS_SUCCESS
    • 연결:MokoConstants.CONN_STATUS_CONNECTING
    • 연결에 실패:MokoConstants.CONN_STATUS_FAILED
    • 접속 시간 초과:MokoConstants.CONN_STATUS_TIMEOUT

2、방송을 등록하여 소켓 통신 응답 받기 :

방송 액션:MokoConstants.ACTION_AP_SET_DATA_RESPONSE

응답 받기:

DeviceResponse 응답 = (장치 응답) intent.getSerializableExtra(MokoConstants.EXTRA_AP_SET_DATA_RESPONSE);

2.1.3 소켓
데이터 전송은 JSON 형식의 문자열 만 허용합니다.

예 ::

1、장치 정보 얻기:

{
“헤더” : 4001
}

응답:

{
“암호” : 0,
“메시지” : “성공”,
“결과” : {
“헤더” : 4001,
“device_function” : “iot_plug”,
“장치 이름” : “plug_one”,
“device_specifications” : “우리”,
“device_mac” : “11:22:33:44:55:66”,
“기기 종류” : “1”
}
}

2、 MQTT 서버 정보 전송

{
“헤더” : 4002,
“주최자” : “45.32.33.42”,
“포트” : 1883,
“connect_mode” : 0,
“사용자 이름” : “DVES_USER”,
“암호” : “DVES_PASS”,
“살아 유지” : 120,
“qos” : 2,
“clean_session” :1
}
응답:

{
“암호” : 0,
“메시지” : “성공”,
“결과” : {
“헤더” : 4002
}
}

3、특정 SSID로 WIFI 네트워크 보내기

{
“헤더” : 4003,
“wifi_ssid” : “Fitpolo”,
“wifi_pwd” : “fitpolo1234.”,
“wifi_security” : 3
}

응답:

{
“암호” : 0,
“메시지” : “성공”,
“결과” : {
“헤더” : 4003
}
}

2.2 MokoSupport

2.2.1 MQTT 서버에 연결
1、MqttAndroidClient 생성

공공 무효 creatClient(문자열 호스트, 문자열 포트, 문자열 clientId, 부울 tlsConnection)

2、서버에 연결

공공 무효 연결(MqttConnectOptions 옵션)
MqttCallbackHandler에 따라 작성 상태를 가져오고 리턴 데이터 양식 서버를 수신하십시오.

@우세하다
공공 무효 연결(부울 재 연결, 문자열 서버) {

}
@우세하다
공공 무효 연결(던질 수있는 원인) {

}
@우세하다
공개 무효 메시지(문자열 주제, MqttMessage 메시지) 예외를 던진다 {

}

3、방송을 등록하여 연결 상태 확인:

방송 액션:MokoConstants.ACTION_MQTT_CONNECTION

연결 상태:

    • 연결 성공:MokoConstants.MQTT_CONN_STATUS_SUCCESS
    • 분리:MokoConstants.MQTT_CONN_STATUS_LOST

4、브로드 캐스트를 등록하여 서버에서 리턴 데이터를 수신하십시오.

방송 액션:MokoConstants.ACTION_MQTT_RECEIVE

데이터 반환:

    • 데이터 반환 주제:

MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC

    • 데이터 반환 메시지:

MokoConstants.EXTRA_MQTT_RECEIVE_MESSAGE

반환 데이터는 JSON 형식입니다,예 ::

{
“회사 이름” : “모코”,
“production_date” : “201801”,
“product_model” : “plug_one”,
“펌웨어 버전” : “000001”
“device_mac” : “11:22:33:44:55:66”
}

2.2.2 액션 모니터
MQTT 통신에는 네 가지 조치가 포함됩니다.. 각 동작을 실행하려면, Action 상태를 모니터링하도록 ActionListener를 설정해야합니다.:

공개 열거 형 액션 {
/**
* 연결 작업
**/
잇다,
/**
* 구독 조치
**/
구독,
/**
* 게시 작업
**/
게시,
/**
* 탈퇴 조치
**/
구독 취소
}

브로드 캐스트를 등록하여 작업 상태 확인:

1、잇다

방송 액션:MokoConstants.ACTION_MQTT_CONNECTION

연결에 실패:MokoConstants.MQTT_CONN_STATUS_FAILED
2、구독

방송 액션:MokoConstants.ACTION_MQTT_SUBSCRIBE

주제 구독:MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC
구독 상태:MokoConstants.EXTRA_MQTT_STATE

3、게시

방송 액션:MokoConstants.ACTION_MQTT_PUBLISH

게시 상태:MokoConstants.EXTRA_MQTT_STATE

4、구독 취소

방송 액션:MokoConstants.ACTION_MQTT_UNSUBSCRIBE

탈퇴 상태:MokoConstants.EXTRA_MQTT_STATE

2.2.3 주제 구독

MokoSupport.getInstance().구독하다(문자열 주제, int qos)

2.2.4 정보 게시

MokoSupport.getInstance().출판하다(문자열 주제, MqttMessage 메시지)

2.2.5 구독 취소 주제

MokoSupport.getInstance().탈퇴(문자열 주제)

2.2.6 MQTT가 연결되어 있는지 판별

MokoSupport.getInstance().연결되었습니다()

2.2.7 단절

MokoSupport.getInstance().disconnectMqtt()

3.SD 카드에 로그 저장
SDK는 SD 카드 기능에 저장된 로그를 통합, https라고합니다://github.com/elvishew/xLog

MokoSupport.getInstance의 초기화 메소드().초기화(getApplicationContext())

SD 카드에 저장된 폴더 이름과 파일 이름을 수정할 수 있습니다.

공개 클래스 LogModule {
개인 정적 최종 문자열 TAG = “mokoLife”;// 파일 이름
개인 정적 최종 문자열 LOG_FOLDER = “mokoLife”;// 폴더 이름

}

저장 전략: 오늘의 데이터와 전날의 데이터 만 저장 , 파일에 접미사가 붙습니다.

호출 방법:

LogModule.v(“로그 정보”);
LogModule.d(“로그 정보”);
LogModule.i(“로그 정보”);
LogModule.w(“로그 정보”);
LogModule.e(“로그 정보”);