开发文档_机智云Kaiyun 开云

 公司动态     |      2023-09-26 18:06:16    |      小编

  12.验证固件时,推送完成以后,有时候会显示“设备固件推送升级失败,你可以返回重新尝试”,但是实际上已经有设备推送成功了。为什么提示会这样?

  13.为什么验证固件的界面会等待很久?如果验证固件的弹出界面长时间没有反应,该如何处理?

  16.为什么在设备运行状态里能看到某个设备在线, 但是在固件升级里添加规则的时候却没找到这个在线版本OTA时,为什么添加了很多固件,但添加规则时检测不到旧固件信息?

  19.为什么V4版本升级的时候需要创建两个固件,但V41版本只需要创建一个固件?

  23.批量推送所有设备,如果有一部分设备不在线,下面的设备全部是否即包含了在线设备,也包含了离线设备?离线设备什么时候才能升级?

  4. scancode_waitmsg:扫码推事件且弹出“消息接收中”提示框

  一、在- (BOOL)application: didFinishLaunchingWithOptions:方法中调用initWithAppKey方法来初始化GizAnalytics:

  三、在搜索到设备的类,将连接设备相应的EAAccessory,ProtocolString传入到负责蓝牙处理类.m文件自定义的初始化方法中:(初始化方法仅供参考,可视项目实际情况而定)

  打开包装后,你可以看到一个黄色纸皮盒包裹着一个透明亚克力盒。里面的板子就是GoKit2代。

  GoKit 2代,我们把应用板与主控板分离,使用了Arduino标准接口,你现在可以有两个选择,使用标准的STM32主控板或者兼容Arduino的Atmel主控板。如下图:

  应用板依然板载了正反转可调速电机马达、温湿度传感器、红外感应器、RGB全彩LED灯,另外增加了OLED扩展接口,你可以为GoKit配上一块显示屏。

  WiFi模块方面,目前已经有二十几家国内厂商为机智云做了兼容。而且,现在所有开发者都可以拿到开发库自行开发适配。

  IoE Demo是机智云推出的智能硬件调试工具,通过IoE Demo App可以对GoKit进行绑定与远程控制等操作,也可以作为其他基于机智云开发的智能硬件项目的调试工具。

  你可以通过扫描说明书上的黄色二维码下载并安装IoE Demo,也可以进入机智云开发者中心进行下载,前往下载

  为了让开发者更好的掌握客户端开发的技巧,我们提供了IoE Demo的开源版本,前往下载

  GoKit通过WiFi通信模块以无线的方式连接路由器并接入互联网,这里我们需要做的就是把可用WiFi的路由器SSID和密码告诉GoKit(就像你新买的手机需要输入家里的WiFi密码一样),但GoKit没有键盘和屏幕,如何做到呢?GoKit提供三种配置方式:AirLink 、WebConfig、 SoftAP。下面我们分别学习三种不同的配置方式,大家人选一种即可。

  AirLink配置就是说明书上介绍的方法,实现过程就是:通过按键触发开启设备“AirLink”模式,开启后设备会不断接收特定编码的WiFi广播包,手机连接可用的WiFi网络后,通过指定的App(如IoE Demo)发送编码后的WiFi网络的SSID和密码广播,设备接收到之后自动尝试连接此WiFi网络,连接成功即配置完成。下面一步步完成GoKit通过AirLink接入路由器连接网络吧。(注意:AirLink配置不支持5G的WiFi网络,请使用传统2.4G WiFi信号)

  2.打开下载好的“IoE Demo” App,点击主屏幕右上角“菜单栏”中的“添加新设备”。如下图

  3.使用USB线为GoKit供电,开机后长按[KEY2]直到[RGB LED]亮绿灯(Arduino版本GoKit短按[KEY2]),表示设备AirLink模式已经开启。如下图

  4.IoE Demo APP上输入已连接WiFi的密码,点击配置按钮,等待30秒到一分钟,APP提示配置成功。在此期间,您可以看到GoKit的绿灯熄灭,WiFi模组两个指示灯瞬间熄灭,直到指示灯开始交叉闪烁,这表示GoKit已经连上路由器,配置完成。

  由于AirLink配置方式有一定的技术限制,GoKit支持另一种配置方式——SoftAP,实现过程就是将GoKit上的WiFi模组切换到AP模式,手机直接与GoKit连接,并将可用的WiFi网络SSID和密码发送给GoKit,GoKit接收到配置信息后自动尝试连接路由器。具体步骤如下:

  1.GoKit正常供电情况下,长按[KEY1]直到[RGB LED]亮红灯(Arduino底板[RGB LED]蓝色闪一下),表示GoKit已经初始化。而GoKit在初始状态下将自动进入“SoftAP”模式。

  2.手机进入“系统设置”中的“WiFi设置”,找到“XPG-GAgent-XXXX”(XXXX是你的GoKit MAC地址后4位)并连接此WiFi网络,如需密码请输入:123456789 。

  3.打开“IoE Demo” App,此时App会自动进入SoftAP配置模式,选择或手动输入你附近的可用WiFi网络SSIS及密码,点击“确定”。

  4.等待30秒到一分钟,当GoKit上WiFi模组的指示灯交叉闪烁时,表示配置完成。

  Web Config是SoftAP配置模式的一种升级,解决了智能硬件配置上网对独立专用App的依赖问题。实现原理与SoftAP类似,但直接使用手机自带的浏览器即可配置。具体步骤如下:

  1.GoKit正常供电情况下,长按[KEY1]直到[RGB LED]亮红灯(Arduino底板[RGB LED]蓝色闪一下),表示GoKit已经初始化,而GoKit在初始状态下将自动进入“SoftAP”模式。

  2.手机进入“系统设置”中的“WiFi设置”,找到“XPG-GAgent-XXXX”(XXXX是你的GoKit MAC地址后4位)并连接此WiFi网络,如需密码请输入:123456789 。

  3.打开手机浏览器,并在地址栏输入“10.10.100.254”即可访问GoKit配置页面,根据提示输入可用WiFi网络SSID及密码,点击配置。

  4.等待30秒到一分钟,当GoKit上WiFi模组的指示灯交叉闪烁时,表示配置完成。

  完成GoKit的网络配置后,GoKit已经通过路由器连接互联网,开云体育 kaiyun.com 官网入口你可以使用“IoE Demo”对GoKit进行状态的查询以及控制(包括局域网和远程)。

  确保手机与GoKit连接同一个WiFi网络,打开IoE Demo,刷新设备列表你将可以发现一台未绑定的新设备“微信宠物屋”,如图

  点击设备将自动进行绑定,如果你从未注册、登录IoE Demo,GoKit将绑定当前手机,在不更换手机的情况下,你可以对设备进行所有的状态查询与远程控制等功能,更换手机后需要重新在局域网下进行绑定。如果你希望在不同的手机下对GoKit进行控制,可以先注册账号并登录后进行绑定操作,绑定完成后只需使用账号登录,在不同手机都可以对GoKit进行远程控制。

  绑定完成后,设备显示“局域网在线”,点击进入设备界面,即可查看GoKit最新状态以及进行控制操作。

  保持GoKit连接,手机关闭WiFi或切换到其他WiFi网络,此时”IoE Demo” App将自动识别网络环境并切换到远程连接模式。

  微信从5.x版本开始,支持服务号设备功能。通过微信扫描设备二维码关注设备公众号后即可以实现对设备的控制。机智云作为微信设备号首批技术合作伙伴,在GoKit上也加入微信控制的功能,而GoKit也是目前世界上唯一一款开通了服务好设备功能的智能硬件开发板。使用微信控制GoKit具体步骤如下:

  1.打开GoKit附带的说明书,找到一张白色二维码(此二维码每台设备唯一,请注意保管)。如图:

  3.点击“窝窝”,公众号将返回你绑定的设备列表。点击进入设备主界面,如图

  4.在此界面上你可以看到宠物屋(GoKit)当前的状态,并可以通过点击“送风”或“抽湿”对GoKit上的电机进行控制。

  到这里,你已经基本上体验了一款基于GoKit开发的智能硬件原型“微信宠物屋”。这仅仅是机智云团队基于GoKit开发的一款Demo产品,而GoKit本身就是一块功能强大的智能硬件开发板,你可以完全根据自己的想法,利用GoKit做出更好玩的产品,这就是你智能硬件创业的第一步。

  “智能宠物屋”MCU源码 for GoKit(1代、2代STM、2代Arduino)

  文章标题:《基于Wi-Fi的物联网硬件微信接入指南》 文档更新:2015-02-08 文档下载:下载

开发文档_机智云Kaiyun 开云(图1)

  设备接入机智云后,机智云提供了与此设备相关的一系列接口,通过接口的授权调用实现设备的远程监控与控制。(如图②部分)

  首先,开发者可以为设备设计个性化的HTML页面,HTML页面运行在厂商服务器上,用户点击微信公众号上的菜单后个性化的HTML页面经过微信服务器显示到用户界面。(如图③④部分)

  其次,通过厂商服务器调用机智云提供的设备接口,可以实现设备本身业务逻辑的算法。例如,一个智能灯泡接入机智云之后,机智云提供了这个灯泡开启/关闭的接口,而开发者可以通过厂商云根据每一个用户习惯定义灯泡开启/关闭的条件以实现灯泡线 微信服务器

  微信服务器主要为设备与厂商服务器之间的通信提供了一系列的接口,主要包括微信用户账号与设备的绑定/解绑定、接受/发送设备消息等,具体接口及使用方法可查看微信官方文档:

  微信客户端提供了最终与用户交互的操作界面,开发者可通过服务器的配置自定义微信服务号的菜单以及显示个性化的HTML页面。

  微信公众测试号与正式的微信服务好有相同的接口与权限,但账号有效期只有1年,用户列表上限为100个,并且无法自定义账号名称。可作为开发阶段的调试工具使用,

开发文档_机智云Kaiyun 开云(图2)

  申请时需提供以下资料以及文件: 企业营业执照、运营授权书(需盖公章)、运营负责人手持身份证照片

  申请所需时间: 服务号注册到审核通过一般10个工作日以内,服务号认证一般15个工作日以内。

  开通服务号后,可在以公众平台管理界面添加新的功能插件。找到设备功能插件,选择申请或开启。如图:

开发文档_机智云Kaiyun 开云(图3)

  登录微信公众平台官网后,在公众平台后台管理页面 - 开发者中心页,点击“修改配置”按钮,填写服务器地址(URL)、Token和EncodingAESKey,其中URL是开发者用来接收微信消息和事件的接口URL。Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。 同时,开发者可选择消息加解密方式:明文模式、兼容模式和安全模式。模式的选择与服务器配置在提交后都会立即生效,请开发者谨慎填写及选择。加解密方式的默认状态为明文模式,选择兼容模式和安全模式需要提前配置好相关加解密代码,详情请参考消息体签名及加解密部分的文档。

开发文档_机智云Kaiyun 开云(图4)

  开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带四个参数:

  微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。

  开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。 加密/校验流程如下:

  公众号调用各接口时,一般会获得正确的结果,具体结果可见对应接口的说明。返回错误时,可根据返回码来查询错误原因。

  用户向公众号发送消息时,公众号方收到的消息发送者是一个OpenID,是使用用户微信号加密后的结果,每个用户对每个公众号有一个唯一的OpenID。

  此外,由于开发者经常有需在多个平台(移动应用、网站、公众帐号)之间共通用户帐号,开云体育 kaiyun.com 官网入口统一帐号体系的需求,微信开放平台(提供了UnionID机制。开发者可通过OpenID来获取用户基本信息,而如果开发者拥有多个应用(移动应用、网站应用和公众帐号,公众帐号只有在被绑定到微信开放平台帐号下后,才会获取UnionID),可通过获取用户基本信息中的UnionID来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的UnionID是唯一的。换句话说,同一用户,对同一个微信开放平台帐号下的不同应用,UnionID是相同的。详情请在微信开放平台的资源中心-移动应用开发-微信登录-授权关系接口调用指引-获取用户个人信息(UnionID机制)中查看。

  微信公众平台开发者文档中,涉及到了基础接口、接受消息接口、发送消息接口、用户管理接口等,开发者可根据自身的业务逻辑需要调用相应的接口进行开发; 以获取公众号用户列表为例,简单描述使用微信公众平台接口与服务器通信的过程;

  access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。 公众平台的API调用所需的access_token的使用及生成方式说明:

  2、目前access_token的有效期通过返回的expire_in来传达,目前是7200秒之内的值。中控服务器需要根据这个有效时间提前去刷新新access_token。在刷新过程中,中控服务器对外输出的依然是老access_token,此时公众平台后台会保证在刷新短时间内,新老access_token都可用,这保证了第三方业务的平滑过渡;

  3、access_token的有效时间可能会在未来有调整,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新access_token的接口,这样便于业务服务器在API调用获知access_token已超时的情况下,可以触发access_token的刷新流程。

  公众号可以使用AppID和AppSecret调用本接口来获取access_token。AppID和AppSecret可在微信公众平台官网-开发者中心页中获得(需要已经成为开发者,且帐号没有异常状态)。注意调用所有微信接口时均需使用https协议。 接口调用请求说明http请求方式: GET

  5.4.2 第二步:根据获取到的AccessToken请求用户列表

  公众号可通过本接口来获取帐号的关注者列表,关注者列表由一串OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的)组成。一次拉取调用最多拉取10000个关注者的OpenID,可以通过多次拉取的方式来满足需求。

  {errcode:40013,errmsg:invalid appid}

  附:关注者数量超过10000时 当公众号关注者数量超过10000时,可通过填写next_openid的值,从而多次拉取列表的方式来满足需求。 具体而言,就是在调用接口时,将上一次调用得到的返回中的next_openid值,作为下一次调用中的next_openid值。 示例如下: 公众账号A拥有23000个关注的人,想通过拉取关注接口获取所有关注的人,那么分别请求url如下:

  微信公众平台界面开发属于前端页面开发范畴,开发者可根据需求自由定制,此处仅描述如何从微信公众号进入所需要展示的界面; 第一步:获取AccessToken并生成公众帐号自定义菜单 获取AccessToken步骤已在5.4 章节描述,此处不再赘述; 自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。开启自定义菜单后,公众号界面如图所示:

  目前自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。请注意,创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。建议测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。 自定义菜单接口可实现多种类型按钮,如下:

开发文档_机智云Kaiyun 开云(图5)

  用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event 的结构给开发者(参考消息接口指南),并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互;

  用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的网页URL,可与网页授权获取用户基本信息接口结合,获得用户基本信息。

  用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后显示扫描结果(如果是URL,将进入URL),且会将扫码的结果传给开发者,开发者可以下发消息。

  用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后,将扫码的结果传给开发者,同时收起扫一扫工具,然后弹出“消息接收中”提示框,随后可能会收到开发者下发的消息。

  用户点击按钮后,微信客户端将调起系统相机,完成拍照操作后,会将拍摄的相片发送给开发者,并推送事件给开发者,同时收起系统相机,随后可能会收到开发者下发的消息。

  用户点击按钮后,微信客户端将弹出选择器供用户选择“拍照”或者“从手机相册选择”。用户选择后即走其他两种流程。

  用户点击按钮后,微信客户端将调起微信相册,完成选择操作后,将选择的相片发送给开发者的服务器,并推送事件给开发者,同时收起相册,随后可能会收到开发者下发的消息。

  用户点击按钮后,微信客户端将调起地理位置选择工具,完成选择操作后,将选择的地理位置发送给开发者的服务器,同时收起位置选择工具,随后可能会收到开发者下发的消息。

  建议deviceid为英文字母、下划线、数字三类字符的串或者组合,不带其他标点符号,以免json串解析失败

  二维码的生成有可能失败,因此请求的devcie num和响应的devcie num不一定相等;如果不相等,第三方需要核对下请求中哪些device id没有生成成功

  响应中的ticket为二维码的生成串,第三方需要用这些串来生成二维码(点阵图),为了提高二维码的扫码成功率,我们建议第三方:使用qrencode库,QR码版本5,纠错等级为Q级,容错率不低于20%

  返回的ticket字符串,会带有json的敏感字符,因此,公众平台对于敏感字符做了转义(如:/字符会被转义成\/),第三方需要将这些敏感字符转义回来

  设备二维码ticket生成需要耗费系统资源,因此,建议公众号开发者一次操作不超过5个

  【第三方厂商在二维码中追加自定数据】 公众平台返回的二维码生成串形式如:

  第三方可以自行选择是否在公众平台返回的二维码的基础之上追加自定义的数据,是否追加自定义数据是可选的,由第三方自行决定。 追加自定义数据的方法:在公众平台的二维码后追加#3RD_DEFINE_DATA(其中,#作为分隔符,3RD_DEFINE_DATA是第三方自定义数据),追加后的二维码形式如:

  设备基本信息(包括device typ和device id,目前device type为用户的原始id)

  建议id字段为英文字母、下划线、数字三类字符的串或者组合,不带其他标点符号,以免json串解析失败

  connec_protocol为设备连接的协议类型,目前有四种连接方式(见字段说明),可以支持四种连接方式的任意组合,并且可以设置客户端优先选择的连接方式,客户端会优先选择该连接方式进行连接,若制定的优先协议无法连接成功,客户端回尝试指定的其他协议方式连接;其他类型可以后续再添加,请第三方同学确保值有效

  conn_strategy连接策略,按位进行定义取值(第2bit不能置位;所有bit均不置位也不支持,即取值为 0),譬如手环类产品,可能需要及时同步数据,可以填5,表示在公众号对话页面,不停的尝试连接设备(取值1),并且处于非公众号页面时,微信有机会去连接设备,保证数据能及时同步(取值4)

  crypt_method目前支持取值为0和1,对于计算能力弱的设备可以设置为0(不进行加密处理,此时auth_ver也需要为0),目前的加密方法只支持AES

  auth_ver目前只支持取值为0或1,不同的取值会影响“设备---微信---后台”的auth过程的数据包的格式,具体的取值请参看“客户端蓝牙外设协议”,并且,如果不需要加密,则crypt_method和auth_ver都需要为0,

  对于ios蓝牙2.0和4.0设备,微信客户端做了连接建立的弹框优化操作:对于ios蓝牙4.0协议,广播包必须带上mac地址,即:manu_mac_pos必须设置(且为-1,非ios蓝牙4.0设备才可以设置为-2);对于ios蓝牙2.0协议,iap的accessory Info的serial number可以不带mac地址,ser_mac_pos设置为-2,也可以在尾部带上mac地址,设置有效(-1),对于除以上两种协议以外的其他协议,该两个值的设置均无效,可以设置为0

  op_type为请求操作类型,字段缺省值为0,即:设备授权,字段取值为1,则将请求中的设备属性更新已有的设备属性(若设备不存在,则更新失败)

  授权接口的处理逻辑比较复杂,因此,约束公众号分开发者:一次批量授权的device id不能超过5个

  ©2011-2023; Gizwits IoT Technology Co., Ltd.开云APP 开云官网入口开云APP 开云官网入口