2016年09月13日 机智云会议纪要，接入流程

getBoundDevices 用于设备信息列表获取

0/ 初始化 SDK  startWithAppID（初始化）-》registerNotifications（SDK通知）接受设变化
1/ 登陆 userLoginAnonymous
2/ 搜索WIFI getPhoneSSID
3/ 输入WIFI 密码 
4/ 通知路由器配网 setDeviceOnboarding -》getBoundDevices（获取列表）
5/ 订阅设备 setSubscribe -》
6/ 绑定设备（二维码的时候需要绑定，）
7/ 下发指令 write
8/ 通知 registerNotifications


我们的流程 目前是 初始化 SDK  startWithAppID（初始化）-》registerNotifications（SDK通知）接受设变化
1/ 登陆 userLoginAnonymous
2/ 搜索WIFI getPhoneSSID
3/ 输入WIFI 密码 
4/ 通知路由器配网 setDeviceOnboarding -》getBoundDevices（获取列表，只搜索我们的设备产品）
5/ 配置设备云端绑定 bindRemoteDevice -》 setSubscribe 设备设备（这里会出现2个设备一个是本地设备192.168.*.*，另一个是沙箱设备sitebox.**.com）
这里必须要在去再次触发setSubscribe 才可以监听到数据变化
6/ 监听设备数据变化 registerNotifications-》 数据变化
7/ 单独发送指令等write 

我们现在想解决的是几个问题
 1 APP异常退出以后下次打开 如果设备烤箱在工作，可以监听到设备信息
 2 设备绑定出现2台设备（沙箱，偶尔再次打开会出现设备未关注）
 3 隔一段时间打开会出现 设备isSubscribed = false
 4 解绑流程-》取消设备从云端解绑 unbindDevice -》getBoundDevices

解绑流程
1/ 取消订阅 setSubscribe
2/ 取消设备从云端解绑 unbindDevice -》getBoundDevices
3/ 获取缓存设备


获取获取设备反馈给APP的信息




//云菜谱结构数据


20字节,480不足补充640-480个0


云菜单数据下发：



步骤1参考模式 步骤1参数 上管温度 下管温度 时间2B  步骤2参考模式 步骤2参数 上管温度 下管温度 时间2B ...步骤10参考模式 步骤10参数 上管温度 下管温度 时间2B
    8           8          8        8       16         8                  

2016年09月15日   

 {
 	"Ref_Mode":"2", //'00000111' 8位 不足8位，前面补充0 = 7  参考菜单 0：上烤 1：下烤 2：上下烤 3：上下烤大温幅（上下烤Ⅱ） 4：上烤大温幅 (上烤Ⅱ） 5：酸奶
 	"KG_Light":"1", //炉灯开关
 	"KG_Fan":"0",//热风
 	"KG_Turn":"0", //旋转烧烤开关 0：关闭 1：打开
 	"KG_Top":"0",//上管开关
 	"KG_Bottom":"0",//下关开关
 	"Temp_Top":"180",//上管温度
 	"Temp_Bottom":"180",//上管温度
 	"WorkTime":"20",//工作时间
 }
  //二进制 高位补齐0 然后转十六进制(0x) 预热4个4F
  
  第一步: 0x02 0x10 0xDC 0xDC 0xFF 0xFF
  第二步: 0x02 0x10 0xDC 0xDC 0x00 0x14
  第三步: 0x02 0x10 0xC8 0xC8 0x00 0x0A
  
菜谱1：
第一步: 0x02 0x10 0xDC 0xDC 0xFF 0xFF

0x02 0x10 0xDC 0xDC 0XFFFF 0x02 0x10 0xDC 0xDC 0X0014 0x02 0x10 0xC8 0xC8 0X000A


2016年09月13日以下无效

 {
 	"Ref_Mode":"00000111", //'00000111' 8位 不足8位，前面补充0 = 7  参考菜单 0：上烤 1：下烤 2：上下烤 3：上下烤大温幅（上下烤Ⅱ） 4：上烤大温幅 (上烤Ⅱ） 5：酸奶
 	"KG_Light":"1", //炉灯开关
 	"KG_Fan":"1",//转叉
 	"KG_Turn":"0", //旋转烧烤开关 0：关闭 1：打开
 	"KG_Top":"1",//上管开关
 	"KG_Bottom":"0",//下关开关
 	"Temp_Top":"180",//上管温度
 	"WorkTime":"20",//工作时间
 }




新参考菜谱
           
参考模式 				位数 	值
00000111     		8      	7    07 
00011010     		8 	    11010  1A  参数组合（"KG_Light":"1","KG_Fan":"1","KG_Turn":"0","KG_Top":"1","KG_Bottom":"0")
10110100     		8      	180（上管温度）B4
10101010     		8      	170（下管温度）AA 
0000000000010100	16 		20 （预热时间，如果是预热16个111111111111111，不是的话 二进制补零到0）14


07 10001 DCDC A

 
启动
           
参考模式 				位数 	值
00000111     		8      	7    07 
00011010     		8 	    11010  1A 参数组合（"KG_Light":"1","KG_Fan":"1","KG_Turn":"0","KG_Top":"1","KG_Bottom":"0")
10110100     		8      	180（上管温度）B4
10101010     		8      	170（下管温度）AA 
0000000000010100	16 		20 （预热时间，如果是预热16个111111111111111，不是的话 二进制补零到0）14

十六进制 071AB4AA0014
二进制 
{
"data": {
	"KG_Cancel":"0",
	"WorkStatus":"0",
	"WorkMode":"0",
	"KG_Top":"0",
	"KG_Bottom":"0",
	"KG_Fan":"0",
	"KG_Light":"0",
	"Time_Top":0,
	"Time_Bottom":0,
	"WorkTime":30,
	"extSteps":"000001110001101010110100101010100000000000010100"}
}
//一步 共10个步骤 二进制
000001110001101010110100101010100000000000010100

参考模式：
0x00：上烤
0x01：下烤
0x02：上下烤
0x03：上下烤大温幅
0x04：上烤大温幅
0x05：酸奶
0x06：发酵
0x07：自定义


参数：BIT 7  6 5 4 3 2 1 0  
Bit4	0-照明关，1-照明开
Bit3	0-风机关，1-风机开
Bit2	0-转叉关，1-转叉开
Bit1	0-上发热管关，1-上发热管开
Bit0	0-下发热管关，1-下发热管开     

温度
0--250

时间：
0-1440（预热步骤时间下发FFFF） 



// var GizWifiBinary = api.require("gizWifiBinary");
// //数组编码字符串
// var src = [1, 2, 3, 4];
1 = 0x1
2 = 0x2
3 = 0x3
4 = 0x4
0x10x20x30x4 
// var src2 = "AQIDBA==";
// GizWifiBinary.encode({"binaryData": src}, function(ret, err) {
//     alert("编码：" + JSON.stringify(ret));
// });

// GizWifiBinary.decode({"binary": src2}, function(ret, err) {
//     alert("解码：" + JSON.stringify(ret));
// });



/*
 * @brief 这里会定义 APP 能够用到的错误码枚举定义
 */
typedef NS_ENUM(NSInteger, GizWifiErrorCode) {
    /*
     Client发出的请求执行成功
     */
    GIZ_SDK_SUCCESS = 0,
    
    /*
     body json invalid
     */
    GIZ_PUSHAPI_BODY_JSON_INVALID = 5001,
    /*
     Data Not Exist
     */
    GIZ_PUSHAPI_DATA_NOT_EXIST = 5300,
    /*
     No Client config
     */
    GIZ_PUSHAPI_NO_CLIENT_CONFIG = 5501,
    /*
     No Server Data
     */
    GIZ_PUSHAPI_NO_SERVER_DATA = 5502,
    /*
     Gizwits_appid Already Exist
     */
    GIZ_PUSHAPI_GIZWITS_APPID_EXIST = 5601,
    /*
     Param Error
     */
    GIZ_PUSHAPI_PARAM_ERROR = 5700,
    /*
     Auth_Key Invalid
     */
    GIZ_PUSHAPI_AUTH_KEY_INVALID = 5701,
    /*
     Appid or User-Token Error
     */
    GIZ_PUSHAPI_APPID_OR_TOKEN_ERROR = 5702,
    /*
     Type Param Error
     */
    GIZ_PUSHAPI_TYPE_PARAM_ERROR = 5703,
    /*
     Id Param Error
     */
    GIZ_PUSHAPI_ID_PARAM_ERROR = 5704,
    /*
     ApiKey or SecretKey Param Invalid
     */
    GIZ_PUSHAPI_APPKEY_SECRETKEY_INVALID = 5705,
    /*
     ChannelId Param Error
     */
    GIZ_PUSHAPI_CHANNELID_ERROR_INVALID = 5706,
    /*
     Push Error
     */
    GIZ_PUSHAPI_PUSH_ERROR = 5900,
    
    /*
     Client发给Daemon的json格式错误
     */
    GIZ_SDK_PARAM_FORM_INVALID = 8001,
    /*
     Client与Daemon之间如果没有通过握手认证，任何数据交互都无效
     */
    GIZ_SDK_CLIENT_NOT_AUTHEN = 8002,
    /*
     Client版本号无效
     */
    GIZ_SDK_CLIENT_VERSION_INVALID = 8003,
    /*
     udp端口绑定失败
     */
    GIZ_SDK_UDP_PORT_BIND_FAILED = 8004,
    /*
     Daemon系统错误
     */
    GIZ_SDK_DAEMON_EXCEPTION = 8005,
    /*
     Client发出的数据请求，Json格式正确，但参数无效；APP传入参数无效
     */
    GIZ_SDK_PARAM_INVALID = 8006,
    /*
     appid长度错误
     */
    GIZ_SDK_APPID_LENGTH_ERROR = 8007,
    /*
     日志路径无效
     */
    GIZ_SDK_LOG_PATH_INVALID = 8008,
    /*
     日志级别无效
     */
    GIZ_SDK_LOG_LEVEL_INVALID = 8009,
    
    /*
     设备配置信息发送失败
     */
    GIZ_SDK_DEVICE_CONFIG_SEND_FAILED = 8021,
    /*
     设备正在配置
     */
    GIZ_SDK_DEVICE_CONFIG_IS_RUNNING = 8022,
    /*
     设备配置超时
     */
    GIZ_SDK_DEVICE_CONFIG_TIMEOUT = 8023,
    /*
     设备did无效
     */
    GIZ_SDK_DEVICE_DID_INVALID = 8024,
    /*
     设备mac无效
     */
    GIZ_SDK_DEVICE_MAC_INVALID = 8025,
    /*
     子设备did无效
     */
    GIZ_SDK_SUBDEVICE_DID_INVALID = 8026,
    /*
     设备passcode无效
     */
    GIZ_SDK_DEVICE_PASSCODE_INVALID = 8027,
    /*
     不是中控设备
     */
    GIZ_SDK_DEVICE_NOT_CENTERCONTROL = 8028,
    /*
     设备未订阅
     */
    GIZ_SDK_DEVICE_NOT_SUBSCRIBED = 8029,
    /*
     设备未响应
     */
    GIZ_SDK_DEVICE_NO_RESPONSE = 8030,
    /*
     设备未就绪
     */
    GIZ_SDK_DEVICE_NOT_READY = 8031,
    /*
     设备未绑定
     */
    GIZ_SDK_DEVICE_NOT_BINDED = 8032,
    /*
     设备控制指令中包含无效指令
     */
    GIZ_SDK_DEVICE_CONTROL_WITH_INVALID_COMMAND = 8033,
    /*
     设备控制指令执行失败
     */
    GIZ_SDK_DEVICE_CONTROL_FAILED = 8034,
    /*
     设备状态查询失败
     */
    GIZ_SDK_DEVICE_GET_STATUS_FAILED = 8035,
    /*
     设备控制指令参数类型错误
     */
    GIZ_SDK_DEVICE_CONTROL_VALUE_TYPE_ERROR = 8036,
    /*
     设备控制指令参数值不在有效范围内
     */
    GIZ_SDK_DEVICE_CONTROL_VALUE_OUT_OF_RANGE = 8037,
    /*
     设备控制指令中包含不可写指令
     */
    GIZ_SDK_DEVICE_CONTROL_NOT_WRITABLE_COMMAND = 8038,
    /*
     设备绑定失败
     */
    GIZ_SDK_BIND_DEVICE_FAILED = 8039,
    /*
     设备解绑失败
     */
    GIZ_SDK_UNBIND_DEVICE_FAILED = 8040,
    
    /*
     域名解析失败
     */
    GIZ_SDK_DNS_FAILED = 8041,
    /*
     m2m连接成功
     */
    GIZ_SDK_M2M_CONNECTION_SUCCESS = 8042,
    /*
     socket设置非阻塞失败
     */
    GIZ_SDK_SET_SOCKET_NON_BLOCK_FAILED = 8043,
    /*
     连接超时
     */
    GIZ_SDK_CONNECTION_TIMEOUT = 8044,
    /*
     连接被拒绝
     */
    GIZ_SDK_CONNECTION_REFUSED = 8045,
    /*
     连接错误
     */
    GIZ_SDK_CONNECTION_ERROR = 8046,
    /*
     连接被关闭
     */
    GIZ_SDK_CONNECTION_CLOSED = 8047,
    /*
     ssl握手失败
     */
    GIZ_SDK_SSL_HANDSHAKE_FAILED = 8048,
    /*
     设备登录验证失败
     */
    GIZ_SDK_DEVICE_LOGIN_VERIFY_FAILED = 8049,
    /*
     当前外网不可达
     */
    GIZ_SDK_INTERNET_NOT_REACHABLE = 8050,
    
    /*
     http应答格式错误
     */
    GIZ_SDK_HTTP_ANSWER_FORMAT_ERROR = 8096,
    /*
     http应答参数错误
     */
    GIZ_SDK_HTTP_ANSWER_PARAM_ERROR = 8097,
    /*
     http服务无响应
     */
    GIZ_SDK_HTTP_SERVER_NO_ANSWER = 8098,
    /*
     http请求失败
     */
    GIZ_SDK_HTTP_REQUEST_FAILED = 8099,
    
    /*
     其他错误
     */
    GIZ_SDK_OTHERWISE = 8100,
    /*
     Daemon内存分配失败
     */
    GIZ_SDK_MEMORY_MALLOC_FAILED = 8101,
    /*
     Daemon内部线程创建失败
     */
    GIZ_SDK_THREAD_CREATE_FAILED = 8102,
    
    /*
     用户ID无效
     */
    GIZ_SDK_USER_ID_INVALID = 8150,
    /*
     用户token无效
     */
    GIZ_SDK_TOKEN_INVALID = 8151,
    /*
     组ID无效
     */
    GIZ_SDK_GROUP_ID_INVALID = 8152,
    /*
     组名称无效
     */
    GIZ_SDK_GROUPNAME_INVALID = 8153,
    /*
     组类型无效
     */
    GIZ_SDK_GROUP_PRODUCTKEY_INVALID = 8154,
    /*
     组设备删除失败
     */
    GIZ_SDK_GROUP_FAILED_DELETE_DEVICE = 8155,
    /*
     组设备添加失败
     */
    GIZ_SDK_GROUP_FAILED_ADD_DEVICE = 8156,
    /*
     组设备获取失败
     */
    GIZ_SDK_GROUP_GET_DEVICE_FAILED = 8157,
    
    /*
     配置文件还未下载
     */
    GIZ_SDK_DATAPOINT_NOT_DOWNLOAD = 8201,
    /*
     配置文件服务不可用
     */
    GIZ_SDK_DATAPOINT_SERVICE_UNAVAILABLE = 8202,
    /*
     配置文件解析失败
     */
    GIZ_SDK_DATAPOINT_PARSE_FAILED = 8203,
    
    /*
     SDK 未初始化
     */
    GIZ_SDK_NOT_INITIALIZED = 8300,
    /*
     daemon程序执行失败
     */
    GIZ_SDK_EXEC_DAEMON_FAILED = 8304,
    /*
     尝试运行daemon时发生异常
     */
    GIZ_SDK_EXEC_CATCH_EXCEPTION = 8305,
    /*
     APPID为空
     */
    GIZ_SDK_APPID_IS_EMPTY = 8306,
    /*
     不支持的API
     */
    GIZ_SDK_UNSUPPORTED_API = 8307,
    /*
     Client如果等不到Daemon的回复，就向APP返回操作超时
     */
    GIZ_SDK_REQUEST_TIMEOUT = 8308,
    /*
     Daemon版本号无效
     */
    GIZ_SDK_DAEMON_VERSION_INVALID = 8309,
    /*
     手机没有连接软AP热点
     */
    GIZ_SDK_PHONE_NOT_CONNECT_TO_SOFTAP_SSID = 8310,
    /*
     手机热点和要配置的路由ssid不匹配
     */
    GIZ_SDK_DEVICE_CONFIG_SSID_NOT_MATCHED = 8311,
    /*
     设备不在softap模式
     */
    GIZ_SDK_NOT_IN_SOFTAPMODE = 8312,
    /*
     设备配置时无可用wifi
     */
    GIZ_SDK_PHONE_WIFI_IS_UNAVAILABLE = 8313,
    /*
     设备上报透传数据的标识
     */
    GIZ_SDK_RAW_DATA_TRANSMIT = 8314,
    /*
     正在下载设备的产品定义
     */
    GIZ_SDK_PRODUCT_IS_DOWNLOADING = 8315,
    /*
     SDK启动成功
     */
    GIZ_SDK_START_SUCCESS = 8316,
    
    /*
     mac already registered!
     */
    GIZ_OPENAPI_MAC_ALREADY_REGISTERED = 9001,
    /*
     product_key invalid
     */
    GIZ_OPENAPI_PRODUCT_KEY_INVALID = 9002,
    /*
     appid invalid
     */
    GIZ_OPENAPI_APPID_INVALID = 9003,
    /*
     token invalid
     */
    GIZ_OPENAPI_TOKEN_INVALID = 9004,
    /*
     user not exist
     */
    GIZ_OPENAPI_USER_NOT_EXIST = 9005,
    /*
     token expired
     */
    GIZ_OPENAPI_TOKEN_EXPIRED = 9006,
    /*
     m2m_id invalid
     */
    GIZ_OPENAPI_M2M_ID_INVALID = 9007,
    /*
     server error
     */
    GIZ_OPENAPI_SERVER_ERROR = 9008,
    /*
     code expired
     */
    GIZ_OPENAPI_CODE_EXPIRED = 9009,
    /*
     code invalid
     */
    GIZ_OPENAPI_CODE_INVALID = 9010,
    /*
     sandbox scale quota exhausted!
     */
    GIZ_OPENAPI_SANDBOX_SCALE_QUOTA_EXHAUSTED = 9011,
    /*
     production scale quota exhausted!
     */
    GIZ_OPENAPI_PRODUCTION_SCALE_QUOTA_EXHAUSTED = 9012,
    /*
     product has no request scale!
     */
    GIZ_OPENAPI_PRODUCT_HAS_NO_REQUEST_SCALE = 9013,
    /*
     device not found!
     */
    GIZ_OPENAPI_DEVICE_NOT_FOUND = 9014,
    /*
     form invalid!
     */
    GIZ_OPENAPI_FORM_INVALID = 9015,
    /*
     did or passcode invalid!
     */
    GIZ_OPENAPI_DID_PASSCODE_INVALID = 9016,
    /*
     device not bound!
     */
    GIZ_OPENAPI_DEVICE_NOT_BOUND = 9017,
    /*
     phone unavailable!
     */
    GIZ_OPENAPI_PHONE_UNAVALIABLE = 9018,
    /*
     username unavailable!
     */
    GIZ_OPENAPI_USERNAME_UNAVALIABLE = 9019,
    /*
     username or password error!
     */
    GIZ_OPENAPI_USERNAME_PASSWORD_ERROR = 9020,
    /*
     send command failed!
     */
    GIZ_OPENAPI_SEND_COMMAND_FAILED = 9021,
    /*
     email unavailable!
     */
    GIZ_OPENAPI_EMAIL_UNAVALIABLE = 9022,
    /*
     device is disabled!
     */
    GIZ_OPENAPI_DEVICE_DISABLED = 9023,
    /*
     fail to notify m2m!
     */
    GIZ_OPENAPI_FAILED_NOTIFY_M2M = 9024,
    /*
     attr invalid!
     */
    GIZ_OPENAPI_ATTR_INVALID = 9025,
    /*
     user invalid!
     */
    GIZ_OPENAPI_USER_INVALID = 9026,
    /*
     firmware not found!
     */
    GIZ_OPENAPI_FIRMWARE_NOT_FOUND = 9027,
    /*
     JD product info not found!
     */
    GIZ_OPENAPI_JD_PRODUCT_NOT_FOUND = 9028,
    /*
     datapoint data not found!
     */
    GIZ_OPENAPI_DATAPOINT_DATA_NOT_FOUND = 9029,
    /*
     scheduler not found!
     */
    GIZ_OPENAPI_SCHEDULER_NOT_FOUND = 9030,
    /*
     qq oauth key invalid!
     */
    GIZ_OPENAPI_QQ_OAUTH_KEY_INVALID = 9031,
    /*
     ota upgrade service OK, but in idle or disable!
     */
    GIZ_OPENAPI_OTA_SERVICE_OK_BUT_IN_IDLE = 9032,
    /*
     bt firmware unverified, except verify device!
     */
    GIZ_OPENAPI_BT_FIRMWARE_UNVERIFIED = 9033,
    /*
     bt firmware is OK, but nothing to upgrade!
     */
    GIZ_OPENAPI_BT_FIRMWARE_NOTHING_TO_UPGRADE = 9034,
    /*
     Save kairosdb error!
     */
    GIZ_OPENAPI_SAVE_KAIROSDB_ERROR = 9035,
    /*
     event not defined!
     */
    GIZ_OPENAPI_EVENT_NOT_DEFINED = 9036,
    /*
     send sms failed!
     */
    GIZ_OPENAPI_SEND_SMS_FAILED = 9037,
    /*
     signature invalid!
     */
    GIZ_OPENAPI_APPLICATION_AUTH_INVALID = 9038,
    /*
     Not allowed to call deprecated API!
     */
    GIZ_OPENAPI_NOT_ALLOWED_CALL_API = 9039,
    /*
     bad qrcode content!
     */
    GIZ_OPENAPI_BAD_QRCODE_CONTENT = 9040,
    /*
     request was throttled
     */
    GIZ_OPENAPI_REQUEST_THROTTLED = 9041,
    /*
     device offline!
     */
    GIZ_OPENAPI_DEVICE_OFFLINE = 9042,
    /*
     X-Gizwits-Timestamp invalid!
     */
    GIZ_OPENAPI_TIMESTAMP_INVALID = 9043,
    /*
     X-Gizwits-Signature invalid!
     */
    GIZ_OPENAPI_SIGNATURE_INVALID = 9044,
    /*
     API deprecated!
     */
    GIZ_OPENAPI_DEPRECATED_API = 9045,
    /*
     reserved
     */
    GIZ_OPENAPI_RESERVED = 9999,
    
    /*
     产品标识码无效
     */
    GIZ_SITE_PRODUCTKEY_INVALID = 10003,
    /*
     数据点未定义
     */
    GIZ_SITE_DATAPOINTS_NOT_DEFINED = 10010,
    /*
     数据点异常
     */
    GIZ_SITE_DATAPOINTS_NOT_MALFORME = 10011
};










