IoTスマートプラグソケットSDKソリューション

スマートパグMK102
スマートプラグMK112
スマートスイッチWS001-3
README.md--IOS

1. MKSDK For Deviceフォルダーの下には、スマートプラグを構成するためのSDKがあります。

1.1 If you want to configure the MQTT server information and the wifi information to connect to the smart plug, you need to make the smart plug into AP mode(MokoLifeのユーザーマニュアルを参照してください): plug the smart plug into a power socket, ボタンを押して 10 seconds till the smart plug indicator blink amber light which indicates the smart plug into AP mode(注意: APモードのタイムアウト期間は 3 分, 情報をスマートプラグに設定したら, APモードを終了します). Wlanページに入り、接続するスマートプラグホットスポットを選択します, when connecting successfully, connectDeviceWithHostを呼び出す:港
connectSucBlock:connectFailed
Blockmethods to connect the smart plug. Following is the complete configuration of the smart plug process:

ステップ1

[[MKSocketManager sharedInstance] connectDeviceWithHost:@”192.168.4.1″
港:8266
connectSucBlock:^(NSString * IP, NSIntegerポート) {
//接続成功
connectFailedBlock:^(NSError *エラー) {
//通信失敗
}];

ステップ2

[[MKSocketManager sharedInstance]readSmartPlugDevice
InformationWithSucBlock:^(id returnData) {
//デバイス情報の成功を読み取ります
} failedBlock:^(NSError *エラー) {
//デバイス情報の読み取りに失敗しました
}];

step3

[[MKSocketManager sharedInstance] configMQTTServerHost:@”your MQTT Server host”
港:港
connectMode:mqttServerConnectTCPMode
QoS:mqttQosLevelExactlyOnce
生き続ける:60
cleanSession:はい
クライアントID:@”your device mac address”
ユーザー名:@”your MQTT Server userName”
パスワード:@”your MQTT Server password”
sucBlock:^(id returnData) {
//設定成功
}
failedBlock:^(NSError *エラー) {
//設定に失敗しました
}];

step4

[[MKSocketManager sharedInstance] configWifiSSID:あなたのwifi ssid
パスワード:wifiパスワード
安心: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:生き続ける:掃除:
auth:ユーザー:パス:クライアントID:] MQTTサーバーに接続する.

2.3 トピックを購読

Please refer to the MQTT protocal document for the topic of the smart plug.Call – (ボイド)サブスクリプション:(NSArray *)topicList and – (ボイド)退会:(NSArray *)トピックを個別にサブスクライブおよびサブスクライブ解除するtopicList.

2.4 APPは指定されたトピックにデータを公開します

スマートプラグのトピックについては、MQTTプロトコルドキュメントを参照してください。. (ボイド)データを送る:(NSDictionary *)データトピック:(NSString *)トピックsucBlock:(ボイド (^)(ボイド))sucBlock failedBlock:(ボイド (^)(NSError *エラー))failedBlock

README.md-Android

1.SDKをインポートして使用する

1.1 インポートモジュールプロジェクトmokosupport

1.2 settings.gradleファイルを構成し、mokosupportプロジェクトを呼び出します:

を含む:アプリ」,’:mokosupport ’

1.3 メインプロジェクトのbuild.gradleファイルを編集します:

依存関係 {
実装ファイルツリー(あなたへ: 「libs」, 含む: [「* .jar」])
実施プロジェクト(道: ‘: mokosupport ’)
}

1.4 プロジェクトの初期化中にSDKをインポートする:

パブリッククラスBaseApplicationはApplicationを拡張します { @Override public void onCreate() { super.onCreate(); // initialization MokoSupport.getInstance().初期化(
getApplication Context()); } }

2.機能紹介

  • SDKで提供されるメソッドには、: WIFIデバイスとのソケット通信, MQTT接続サービス, 切断, サブスクリプショントピック, トピックの登録を解除, トピックを投稿, ログ記録, 等.
  • SocketServiceによってソケット通信が呼び出されます;
  • MQTT通信はMokoSupport.getInstanceで呼び出すことができます();

2.1 SocketService

ソケット接続を作成する前に, アプリがデバイスの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 Get a response
DeviceResponseレスポンス= (DeviceResponse) intent.getSerializableExtra(MokoConstants.
EXTRA_AP _SET_DATA_RESPONSE);

2.1.3 ソケット

データの送信はJSON形式の文字列のみを受け入れます
例えば:

1、デバイス情報を取得する:

{
“header” : 4001
}

応答:

{
“code” : 0,
“message” : “success”,
“result” : {
“header” : 4001,
“device_function” : “iot_plug”,
“device_name” : “plug_one”,
“device_specifications” : “us”,
“device_mac” : “11:22:33:44:55:66,
“device_type” : “1”
}
}

2、 MQTTサーバー情報を送信する

{
“header” : 4002,
“host” : “45.32.33.42”,
“port” : 1883,
“connect_mode” : 0,
“username” : “DVES_USER”,
“password” : “DVES_PASS”,
“keepalive” : 120,
“qos” : 2,
“clean_session” :1
}
応答:

{
“code” : 0,
“message” : “success”,
“result” : {
“header” : 4002
}
}

3、特定のSSIDでWIFIネットワークを送信する

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

応答:

{
“code” : 0,
“message” : “success”,
“result” : {
“header” : 4003
}
}

2.2 MokoSupport

2.2.1 MQTTサーバーに接続する

1、MqttAndroidClientを作成する

public void creatClient(文字列ホスト, 文字列ポート, 文字列clientId, ブールtlsConnection)

パブリックボイドconnectMqtt(MqttConnectOptionsオプション)
MqttCallbackHandlerに従って作成ステータスを取得し、サーバーから返されたデータを受信します

2、サーバーに接続する

@オーバーライド
public void connectComplete(ブール再接続, 文字列serverURI) {

}
@オーバーライド
public void connectionLost(スロー可能な原因) {

}
@オーバーライド
public void messageArrived(文字列トピック, 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形式です,例えば:

{
“company_name” : “moko”,
“production_date” : “201801”,
“product_model” : “plug_one”,
“firmware_version” : “000001”
“device_mac” : “11:22:33:44:55:66
}

2.2.2 アクションモニター

MQTT通信には4種類のアクションが含まれています. 各アクションを実行するには, アクションの状態を監視するために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()

5.ログをSDカードに保存

SDKはSDカード機能に保存されたログを統合します, httpsと呼ばれます://github.com/elvishew/xLoginitialization method in MokoSupport.getInstance().初期化(
getApplicationContext())SDカードに保存されたフォルダ名とファイル名は変更可能.

パブリッククラスLogModule {
private static final String TAG = “mokoLife”;// ファイル名
private static final String LOG_FOLDER = “mokoLife”;// フォルダ名

}

ストレージ戦略: 当日のデータと前日のデータのみを保存 , ファイルの拡張子は.bakです

メソッドを呼び出す:

LogModule.v(“log info”);
LogModule.d(“log info”);
LogModule.i(“log info”);
LogModule.w(“log info”);
LogModule.e(“log info”);

専門家に相談する