Yeelink平台使用——远程控制 RT Thread + LwIP+ STM32
1.前言
2.有用的资料
【1.1】请务必修改Http请求内容——见tcpclient_yeelink.c,包括设备编号,传感器编号和用户API
【3】请先查看目标板IP地址,建议使用putty。待目标板启动之后按下tab键,可查看目标板支持的指令。之后输入list_ip()——查看目标板IP地址相关信息,等同于windows中的ipconfig和linux中的ifconfig。
3.参考代码
#include <rtthread.h>
#include <lwip/netdb.h>
#include <lwip/sockets.h>
#include <led.h>
// Http请求内容
static const char send_data[] =
"GET /v1.0/device/1949/sensor/2511/datapoints HTTP/1.1\r\n"
"U-ApiKey:[your apikey]\r\n"
"Host: api.yeelink.net\r\n\r\n";
void tcpclient(const char* host_name, int port)
{(void)port;char *recv_data;int sock, bytes_received;struct hostent *yeelink_host;struct in_addr yeelink_ipaddr;struct sockaddr_in yeelink_sockaddr;recv_data = rt_malloc(1024);if (recv_data == RT_NULL){rt_kprintf("No memory\r\n");return;}// 第一步 DNS地址解析rt_kprintf("calling gethostbyname with: %s\r\n", host_name);yeelink_host = gethostbyname(host_name);yeelink_ipaddr.s_addr = *(unsigned long *) yeelink_host->h_addr_list[0];rt_kprintf("Yeelink IP Address:%s\r\n" , inet_ntoa(yeelink_ipaddr));yeelink_sockaddr.sin_family = AF_INET;yeelink_sockaddr.sin_port = htons(80);yeelink_sockaddr.sin_addr = yeelink_ipaddr;rt_memset(&(yeelink_sockaddr.sin_zero), 0, sizeof(yeelink_sockaddr.sin_zero));while(1){// 第二步 创建套接字if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1){rt_kprintf("Socket error\n");rt_free(recv_data);return;}// 第三步 连接yeelinkif (connect(sock, (struct sockaddr *)&yeelink_sockaddr, sizeof(struct sockaddr)) == -1){rt_kprintf("Connect fail!\n");lwip_close(sock);rt_free(recv_data);return;}// 第4步 发送Http请求send(sock,send_data,strlen(send_data), 0);// 第5步 获得Http响应bytes_received = recv(sock, recv_data, 1024 - 1, 0);recv_data[bytes_received] = '\0';// 响应内容为 {"timestamp":"2013-11-19T08:50:11","value":1}// 截取“value”之后的内容char* actuator_info = rt_strstr( recv_data , "\"value\"");int offset = rt_strlen("\"value\":");actuator_status = *(actuator_info + offset);rt_kprintf("actuator status :%c\r\n",actuator_status);// 获得开关状态,并设置LED指示灯char actuator_status;(actuator_status == '1')?rt_hw_led_on(0):rt_hw_led_off(0);rt_memset(recv_data , 0 , sizeof(recv_data));// 关闭套接字closesocket(sock);// 延时5S之后重新连接rt_thread_delay( RT_TICK_PER_SECOND * 5 );}
}
4.总结
Yeelink平台使用——远程控制 RT Thread + LwIP+ STM32相关推荐
- Yeelink平台查询开关量——套接字编程 Windows平台
1.前言 [2014年4月重写该博文] 曾想使用STM32+LwIP实现一个yeelink应用,但是基础知识不够所以只能耐心学习.提到LwIP自然想到socket套接字,为了降低学习难 ...
- Yeelink平台推送传感器结果——套接字编程 Windows平台
1.前言 本文使用windows平台的socket套接字实现向yeelink平台推送传感器结果. [相关博文] [ MinGW安装和使用总结 ] [Yeelink Ht ...
- 构建一个轻量级的嵌入式虚拟平台,开发工程用板stm32 picoc解释器,大量自定义函数,sarm拓展,lwip移植,nes模拟器移植,系统优化,等等技术的融合
让嵌入式想java一样一处编写到处运行 第一次写博客,其实接触嵌入式已经快两年了,从开始学51单片机的时候,怀着满腔的热情.写出了点亮第一个流水灯代码的时候那个无比的激动,到后面自己做许多有趣的东西( ...
- 关于RT thread系统节拍时钟的配置
关于RT thread系统节拍时钟的配置 -----本文基于rt-thread-3.1.3版本编写 首先,使用RTthread OS时,要配置(或者明白)它的系统节拍 ...
- ESP8266接入Yeelink平台
很早就了解了物联网云平台Yeelink,一直没有实践一把.最近有个项目用到了安信可科技的ESP8266模组,强大的ESP8266片上搭载ESP32,内置TCP/IP协议.不仅可以实现局域网内数据的无线 ...
- 基于rt thread smart构建EtherCAT主站
我把源码开源到到了gitee,https://gitee.com/rathon/rt-thread-smart-soem 有兴趣的去可以下载下来跑一下 软件工程推荐用vscode 打开.rt thre ...
- stm32f407单片机rt thread 片外spi flash OTA升级配置示例
参考地址https://www.rt-thread.org/document/site/application-note/system/rtboot/an0028-rtboot/ 第一步,生成Boot ...
- xpt 2046的触摸屏 rt thread设备驱动框架
1 基于rtt 开发触摸屏驱动 准备使用rtt 框架 , 驱动xpt 2046的触摸屏, 翻阅大量资料发现, 大部分文章强调的是时序图, 而且很多代码要么直接操作寄存器, 要么是io 口模拟, 只能用 ...
- 使用RT Thread设备框架封装一个I2C设备——DS3231
使用RT Thread设备框架封装一个I2C设备--DS3231 前言 ENV配置 I2C测试 将ds3231封装成一个字符设备 结语 前言 学习rt thread的I2C的时候,恰巧手上的板子留了d ...
最新文章
- 关于 0xCCCCCCCC
- MySQL—03—MySQL的查询
- 数值数据表示的三要素
- 下列选项中 采用边界值平滑_使用Illustrator中的混合工具创建很有个性的蛋宝宝...
- java intbyreference_java并发包(1)-AtomicReference和AtomicStampedReference
- 基础野:细说原码、反码和补码
- Spring Boot –如何跳过缓存thyemeleaf模板,js,css等以每次绕过重启服务器
- 算法章节 递归、排序、⼆分查找
- VS2008下直接安装使用Boost库1 46 1版本
- MySql 一条普通的查询语句 你知道需要执行几次树的搜索操作以及会扫描多少行吗??? MySql 索引覆盖
- CSS——FC(BFC/IFC/FFC/GFC)超详细版+原理案例分析
- Excel 使用技巧之 -- 统计、过滤与引用数据
- 【数据结构】分治代码模板
- DL加速器与GPU的不同,一个用于推理,一个用于训练。
- .atitit.web 推送实现解决方案集合(3)----dwr3 Reverse Ajax
- 项目管理系统与项目管理信息系统与配置管理系统与变更控制系统的区别
- 利用edge模拟ie8浏览器环境
- 方波峰峰值和有效值_峰峰值,峰值,平均值,有效值的关系
- RK3399外设驱动之RTC驱动(一)
- oblog商业版本4.6注射漏洞,直接拿管理员
热门文章
- 计算机未响应硬盘,我的电脑是固态硬盘加机械硬盘的混合硬盘,运行win8.1的时候经常遇到卡死,未响应的情况。...
- 办公室常用赞美英语经典句子
- 技多不压身,史上最全IT学习视频高清全集
- 基于MATLAB的动态前景目标特征提取与运动跟踪
- 两个辅助变量挖字符串
- linux下代理上网设置
- 轻松管理多个织梦网站 织梦CMS多后台快捷登陆软件
- 随机森林python_实战:用Python实现随机森林
- 企业oa设计java_基于jsp的企业OA系统-JavaEE实现企业OA系统 - java项目源码
- 世界顶级五大女程序媛,不仅技术强还都是美女