查看MJYUN User Guide的源代码
←
MJYUN User Guide
跳转到:
导航
,
搜索
因为以下原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
= 摩羯云智能硬件编程指南 = <source lang=bash> Author: Huang Rui <vowstar@gmail.com> Version: 1.0 Date: 2016-01-14 </source> <br> === 开始入门 === ==== 1. 获取Noduino开发环境 ==== 安装Git版本控制系统,并获取 https://github.com/icamgo/noduino-sdk[Noduino SDK]. $ git clone --recursive git://github.com/icamgo/noduino-sdk.git <br><br> ==== 2. 初始化Noduino开发环境 ==== 进入./noduino-sdk/toolchain目录,运行gen.py初始化Noduino开发环境。 $ python gen.py 该过程可能需要网络连接,请耐心等待。 <br><br> ==== 3. 编写代码 ==== 进入 ./noduino-sdk/sketch/mjyun,打开user_main.c $ vim user_main.c 编辑mjyun_conf,填入你在云端后台管理系统设定的微信原始ID与产品编码(产品子ID)。 <source lang=c> /* 插座 - Plug */ const mjyun_config_t mjyun_conf = { { "gh_51111441aa63", /* 产品id [必填]*/ "3707", /*产品子id(一般用于微信设备) [选填]*/ "Hi, I'm coming!!!", /*设备上线时,给app发送online消息中的附加数据,[选填]*/ "I will come back!!!" /*设备掉线时,给app发送offline消中的附加数据,[选填]*/ }; /* 灯 - Bulb */ const mjyun_config_t mjyun_conf = { { "gh_51111441aa63", /* 产品id [必填]*/ "3708", /*产品子id(一般用于微信设备) [选填]*/ "Hi, I'm coming!!!", /*设备上线时,给app发送online消息中的附加数据,[选填]*/ "I will come back!!!" /*设备掉线时,给app发送offline消中的附加数据,[选填]*/ }; </source> 微信中的产品编码等价于摩羯云管理系统中的产品子ID.微信原始ID与摩羯云后台中的产品ID设置需要一致,且代码中必须正确配置。 <br><br> ==== 4. 将硬件通过USB线缆连接至计算机 ==== 将摩羯云开发板(Noduino XXX 或 Nemu XXX)通过USB接口连接至计算机。连接硬件之前,请先下载并安装驱动程序。 ;;请确认您的计算机安装了FT232/FTX232驱动或者CP2102/CP2104驱动程序。**必须使用高质量的USB线材(最好带屏蔽磁环),否则有可能产生通信错误。** * FT232驱动下载: ** http://www.ftdichip.com/Drivers/VCP.htm * CP2102驱动下载: ** http://www.silabs.com/Support%20Documents/Software/CP210x_Linux.bin ** http://www.silabs.com/Support%20Documents/Software/CP210x_Mac.zip ** http://www.silabs.com/Support%20Documents/Software/CP210x_Windows.exe <br><br> ==== 5. 检查您的计算机上是否出现新的串口设备。 ==== * Linux 检查 <source lang=bash> $ ls /dev/ttyUSB* </source> * MAC OS 检查 <source lang=bash> #ft232x ls /dev/cu.usbserial-* #cp210x ls /dev/cu.SLAB_USBtoUART ls /dev/tty.SLAB_USBtoUART ls /dev/cu* ls /dev/tty* </source> * Windows 检查 ** 查看设备管理器 ** 在PowerShell中执行以下命令 <source lang=cpp> [System.IO.Ports.SerialPort]::getportnames() </source> <br><br> ==== 6. 编译并烧写。 ==== <source lang=bash> $ make clean && make flash </source> ;;如果反复烧写失败,请**按住Flash按键不放,并尝试按一下RESET按键**。 ;;烧写过程会缩短Flash的寿命,并破坏Flash上的数据,请先备份Flash上的资料。 <br><br> ==== 7. 使用微信扫描二维码 ==== 使用微信扫描二维码后,进入绑定设备与配置Wi-Fi网络的流程。目前提供插座与球泡灯的二维码。 [[文件:Mjyun-plug.jpg]] [[文件:Mjyun-light.jpg]] [IMPORTANT] 请确认您在程序中设置了正确的微信原始ID产品编码,否则无法正确发现设备。 根据微信提示,配置和绑定设备。此时会出现摩羯云公众号,选择关注。 ;;如果您已经关注了摩羯云公众号,则会跳过关注页面。 <br><br> ==== 8. 开始调试设备 ==== 进入摩羯云公众号,点击菜单 -> 探索->设备调试。此时您就可以通过微信与设备之间进行通讯了! <br> === 入门例程 === <source lang=c> #define main user_init void mjyun_receive(const char *event_name, const char *event_data) { os_printf("RECEIVED: key:value [%s]:[%s]", event_name, event_data); } /* * 3707 --> 摩羯插座 * 3708 --> 摩羯灯 */ const mjyun_config_t mjyun_conf = { "gh_51111441aa63", /* 产品id [必填] */ "3707", /* 产品子id (一般用于微信设备) [选填]*/ "Hi, I'm coming!!!", /* 设备上线时,给app发送 online 消息中的附加数据,[选填] */ "I will come back!!!" /* 设备掉线时,给app发送 offline 消息中的附加数据,[选填] */ }; void init_yun() { mjyun_ondata(mjyun_receive); mjyun_run(&mjyun_conf); } void main(int argc, char * argv[]) { system_init_done_cb(init_yun); } </source> [TIP] 更多例程参见:./noduino-sdk/examples <br><br> === 接口概述 === ==== 1. 数据类型 ==== ===== mjyun_config_t ===== 该数据结构用于配置智能硬件连接摩羯云需要的必要参数。 <source lang=c> typedef struct { const char* product_id; // <1> const char* sub_pid; // <2> const char* online_words; // <3> const char* offline_words; // <4> } mjyun_config_t; </source> * 产品id, 可从摩羯云官网后台管理系统获得 [必填] * 产品子id(一般用于微信设备) [选填] * 设置摩羯云服务器发送给app的设备上线(online)的附加数据 [该数据缺省为设备id] [选填] * 设置摩羯云服务器发送给app的设备离线消息(offline)的附加数据 [该数据缺省为设备id] [选填] <br><br> ===== mjyun_ota_config_t ===== 该数据结构是ESP8266平台进行OTA所需要的必要参数。 ;;如果需要使用OTA功能,则使用mjyun_ota_config配置,否则忽略.OTA功能可能是平台相关的,不同硬件上该接口的实现可能不一致。 <source lang=c> typedef struct { const char* hardware_version; // <1> const char* firmware_version; // <2> const char* firmware_id_1; // <3> const char* firmware_id_2; // <4> } mjyun_ota_config_t; </source> * 设置硬件的当前版本,需要在云端新建硬件,然后获得该版本号 [选填] * 设置固件的当前版本,需要在云端新建固件,然后获得该版本号 [选填] * 设置运行在保护分区1的固件ID,该ID需要从云端后台获得。这两个ID对应的固件版本相同。 [选填] * 设置运行在保护分区2的固件ID,该ID需要从云端后台获得。这两个ID对应的固件版本相同。 [选填] <br><br> ===== mjyun_state_t ===== 该枚举类型包含了智能硬件的若干种常用状态。 <source lang=c> typedef enum { WIFI_IDLE, /*Wi-Fi空闲,常出现在设备刚刚启动且没有连接过任何SSID时*/ WIFI_SMARTLINK_START, /*设备进入智能连接状态*/ WIFI_SMARTLINK_LINKING, /*设备正在进行智能连接*/ WIFI_SMARTLINK_FINDING, /*设备正在进行智能连接,正在查找手机所在的信道与发出的特征包*/ WIFI_SMARTLINK_TIMEOUT, /*设备智能连接超时*/ WIFI_SMARTLINK_GETTING, /*设备正在进行智能连接,已经锁定手机信道,正在解码数据包*/ WIFI_SMARTLINK_OK, /*设备智能连接成功*/ WIFI_AP_OK, /*设备在AP模式*/ WIFI_AP_ERROR, /*设备在AP模式并发生了某些错误*/ WIFI_AP_STATION_OK, /*设备在AP-STATION混合模式*/ WIFI_AP_STATION_ERROR, /*设备在AP-STATION混合模式并发生了某些错误*/ WIFI_STATION_OK, /*设备在STATION模式*/ WIFI_STATION_ERROR, /*设备在STATION模式并发生了某些错误*/ MJYUN_CONNECTING, /*正在连接摩羯云*/ MJYUN_CONNECTING_ERROR, /*连接摩羯云失败*/ MJYUN_CONNECTED, /*已连接摩羯云*/ MJYUN_DISCONNECTED, /*与摩羯云的连接断开*/ } mjyun_state_t; </source> <br><br> ==== 2. 回调类型 ==== ===== mjyun_callback ===== 硬件与摩羯云发生连接,断开,发布后调用此类型的回调函数。 <source lang=c> typedef void (*mjyun_callback)(); </source> <br><br> ===== mjyun_data_callback ===== 硬件收到来自摩羯云或者APP的数据后,调用此类型的回调函数。 <source lang=c> typedef void (*mjyun_data_callback)(const char *event_name, const char *event_data); </source> [TIP] event_name和event_data可以看作是** (key,value) **.他们有可能是字符串化的JSON对象。 <br><br> ===== mjyun_state_callback ===== 硬件的状态发生改变后,调用此类型的回调函数。 <source lang=c> typedef void (*mjyun_state_callback)(mjyun_state_t state); </source> <br><br> ==== 3. 接口函数 ==== ===== mjyun_run ===== 启动摩羯云智能硬件服务 <source lang=c> int mjyun_run(const mjyun_config_t* conf); </source> <br><br> ===== mjyun_ota_config ===== 配置摩羯云OTA升级功能 <source lang=c> int mjyun_ota_config(const mjyun_ota_config_t* conf); </source> <br><br> ===== mjyun_onconnected ===== 注册摩羯云连接成功回调函数 <source lang=c> void mjyun_onconnected(mjyun_callback connectedCb); </source> <br><br> ===== mjyun_ondisconnected ===== 注册摩羯云断开回调函数 <source lang=c> void mjyun_ondisconnected(mjyun_callback disconnectedCb); </source> <br><br> ===== mjyun_ondata ===== 注册摩羯云收到数据回调函数 <source lang=c> void mjyun_ondata(mjyun_data_callback dataCb); </source> <br><br> ===== mjyun_onpublished ===== 注册向摩羯云发布消息结束时触发的回调函数 <source lang=c> void mjyun_onpublished(mjyun_callback sendCb); </source> <br><br> ===== mjyun_publish ===== 向摩羯云(APP或微信页面)发布消息 ;;该消息不会一直保持在服务器上,如果主题(Topic)没有APP订阅,该消息会被丢弃。 <source lang=c> BOOL mjyun_publish(const char* event_name, const char* event_data); </source> <br><br> ===== mjyun_publishstatus ===== 向摩羯云(APP或微信页面)发布设备状态消息 ;;该状态消息会一直保持在服务器上,即使主题没有被任何APP订阅。一旦APP连接到服务器并订阅该主题,将会收到最新的状态消息。 <source lang=c> BOOL mjyun_publishstatus(const char* status_data); </source> <br><br> ===== mjyun_statechanged ===== 注册摩羯云智能硬件状态发生改变的回调函数 <source lang=c> void mjyun_statechanged(mjyun_state_callback stateChangedCb); </source> <br><br> ===== mjyun_state ===== 立即获得摩羯云当前的状态 <source lang=c> mjyun_state_t mjyun_state(); </source> <br><br> ===== mjyun_getdevicepasswd ===== 获得设备密码 ;;该API不常用。 <source lang=c> uint8_t* mjyun_getdevicepasswd(); </source> <br><br> ===== mjyun_getdeviceid ===== 获得设备ID <source lang=c> uint8_t* mjyun_getdeviceid(); </source> <br><br> ===== mjyun_systemrecovery ===== 系统恢复,抹掉所有摩羯云相关数据 该API一般对应物理按键。 ;;慎用该API,您有可能永久丢失设备ID和密码。 <source lang=c> void mjyun_systemrecovery(); </source> <br><br> ===== mjyun_forceentersmartlinkmode ===== 强制进入配网模式 ;;该API一般对应物理按键。 <source lang=c> void mjyun_forceentersmartlinkmode(); </source> <br><br> ===== mjyun_setssidprefix ===== 设置物理硬件作为AP时的SSID前缀 <source lang=c> void mjyun_setssidprefix(const char* sPrefix); </source> <br><br> ===== mjyun_check_update ===== 检查固件更新 ;;仅检查更新,不会强制更新固件。是否更新固件由摩羯云进行决策。 <source lang=c> void mjyun_check_update(); </source> <br><br>
返回到
MJYUN User Guide
。
个人工具
登录
名字空间
页面
讨论
变换
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
社区专页
新闻动态
最近更改
随机页面
帮助
工具箱
链入页面
相关更改
特殊页面