linux 下上传 datapoint数据到yeelink 修改版本
/*client.c*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/socket.h>
#define PORT 80
#define REMOTE_IP "42.96.164.52" //api.yeelink.net = 42.96.164.52 //#define PORT 4321
//#define REMOTE_IP "192.168.1.104" // int GetCpuTemp() {
//char *GetCpuTemp() {
float GetCpuTemp() { int fd, size;
int temp = ;
char buffer[] = { };
fd = open("/sys/class/thermal/thermal_zone0/temp", O_RDONLY);
size = read(fd,buffer, sizeof(buffer));
close(fd);
int tmp;
// strcpy(tmp,buffer); temp = atoi(buffer);
float tf = atof(buffer);
printf("float temp = %2.2f\n", tf/); // printf("temp = %d\n",temp / 1000); // sprintf(tmp,"%d",temp / 1000);
// printf(" temp1 =%s\n",tmp);
// printf(" temp2 = %s\n",buffer); // return (temp/1000) ;
return (tf/);
} int main(int argc,char *argv[])
{
int s ;
struct sockaddr_in addr ;
char mybuffer[];
char *str1="POST /v1.0/device/19374/sensor/33945/datapoints HTTP/1.0\r\nHost: api.yeelink.net\r\nAccept: */*\r\n";
char *str2="U-ApiKey: 108968b03a7e9334b2aca7c45b199dee\r\nContent-Length: 15\r\nContent-type: application/json;charset=utf-8\r\n"; //
// 此处的Content-Length: 15是决定改善的数据的长度 = strlen("values":33.35) = 15
char *str3="\r\n";
char *str10;
printf("GetCpuTemp() = %2.2f\n",GetCpuTemp()); sprintf(str10,"{\"value\":%2.2f}\r\n",GetCpuTemp());
// str10 = "{\"value\":33.0}\r\n";
printf("str10 = %s\n", str10);
// char *str10="{\"value\":14}\r\n";
// printf("str10 = %s\n",str10); if( (s=socket(AF_INET,SOCK_STREAM,))< ) //IPV4 TCP
{
perror("socket");
exit();
}
else
{
printf("socket created .\n");
printf("socked id: %d \n",s);
} bzero(&addr,sizeof(addr));
addr.sin_family =AF_INET; //IPV4
addr.sin_port=htons(PORT); //SERVER PORT
addr.sin_addr.s_addr=inet_addr(REMOTE_IP); //SERVER IP if(connect(s,(struct sockaddr *)&addr,sizeof(addr))<)
{
perror("connect");
exit();
}
else
{
printf("connected ok!\n");
printf("remote ip:%s\n",REMOTE_IP);
printf("remote port:%d\n",PORT);
} bzero(mybuffer,sizeof(mybuffer)); //send http request
printf("tcp send start!--");
if(send(s,str1,strlen(str1),)<)
{
perror("send");
exit();
}
if(send(s,str2,strlen(str2),)<)
{
perror("send");
exit();
}
if(send(s,str3,strlen(str3),)<)
{
perror("send");
exit();
}
//body
if(send(s,str10,strlen(str10),)<)
{
perror("send");
exit();
} printf("tcp send ok!--"); recv(s ,mybuffer,sizeof(mybuffer),);
printf("%s\n",mybuffer);
printf("enter os"); while( )
{
bzero(mybuffer,sizeof(mybuffer));
recv(s ,mybuffer,sizeof(mybuffer),);
// printf("received:%s\n",mybuffer);
if (strlen(mybuffer) == ){ // if strlen(mybuffer) == 0, exit the loop
return ;
}
}
return ;
}
修改传递数据的数值参考自:http://home.eeworld.com.cn/my/space-uid-487728-blogid-236541.html
编译方法
gcc -o upload_cpu_temp client.c
./upload_cpu_temp
运行效果如下图:

上传float数值到yeelink

yeelink 上的展示数据如下图:

linux 下上传 datapoint数据到yeelink 修改版本的更多相关文章
- [原创] linux 下上传 datapoint数据到yeelink 【golang版本】同时上传2个数据点
/* Create by sndnvaps<sndnvaps@gmail.com> * data: 2015-04-12* upload 2 datapoint to yeelink.ne ...
- [原创] linux 下上传 datapoint数据到yeelink 【golang版本】
package main /* Create by sndnvaps<sndnvaps@gmail.com> * date : 2015-04-05 * upload datapoint ...
- Linux 下上传下载命令,SCP,SFTP,FTP
scp 帮助命令: man scp scp功能: 下载远程文件或者目录到本地, 如果想上传或者想下载目录,最好的办法是采用tar压缩一下,是最明智的选择. 从远程主机 下载东西到 本地电脑 拷贝文件命 ...
- [转载]关于在Linux下上传代码至Github
刚开始使用Github没多长时间,所以很多地方不太熟练,看到阿里云上有一篇文章写得不错,故转载过来. 转载自:https://www.aliyun.com/jiaocheng/122729.html ...
- Linux下不借助工具实现远程linux服务器上传下载文件
# Linux下不借助工具实现远程linux服务器上传下载文件 ## 简介 - Linux下自带ssh工具,可以实现远程Linux服务器的功能- Linux下自带scp工具,可以实现文件传输功能 ## ...
- Linux下Rsync+sersync实现数据实时同步
inotify 的同步备份机制有着缺点,于是看了sersync同步,弥补了rsync的缺点.以下转自:http://www.osyunwei.com/archives/7447.html 前言: 一. ...
- 上传RNA-seq数据到NCBI GEO数据库
SRA - NCBI example - NCBI 要发文章了,审稿时编辑肯定会要求你上传NGS测序数据. 一般数据都是放在集群,不可能放在个人电脑上,因为有的数据大的吓人(几个T). 所以我们就建一 ...
- 向linux服务器上传下载文件方式收集
向linux服务器上传下载文件方式收集 1. scp [优点]简单方便,安全可靠:支持限速参数[缺点]不支持排除目录[用法] scp就是secure copy,是用来进行远程文件拷贝的.数据传输使用 ...
- Linux下Rsync+Inotify-tools实现数据实时同步
Linux下Rsync+Inotify-tools实现数据实时同步 注意:下面的三个案例都是rsync 每次都是全量的同步(这就坑爹了),而且 file列表是循环形式触发rsync ,等于有10个文件 ...
随机推荐
- RegisterHotKey注册热键,然后响应WM_HOTKEY消息
MSDN中的一个示例代码,步骤就是RegisterHotKey注册热键,然后响应WM_HOTKEY消息 @1:这个是系统热键 #include "stdafx.h" int _cd ...
- [C++]指针浅析
Date: 2014-1-4 summary: 指针的简单理解,概念性的东西会比较多(100个人有100种理解,此处只代表我个人看法) Contents: 1.什么是指针 c++ primer plu ...
- Ajenti 1.0 发布,服务器管理系统 - 开源中国社区
Ajenti 1.0 发布,服务器管理系统 - 开源中国社区 Ajenti 1.0 发布,服务器管理系统
- 【MongoDB】The description of index(一)
From this blog, we start to talk about the index in mongo Database, which is similar to the traditio ...
- Fast portable non-blocking network programming with Libevent
Fast portable non-blocking network programming with Libevent Fast portable non-blocking network prog ...
- broadcom6838开发环境实现函数栈追踪
在嵌入式设备开发中.内核为内核模块的函数栈追踪已经提供了非常好的支持,但用户层的函数栈追踪确没有非常好的提供支持. 在网上收集学习函数栈跟踪大部分都是描写叙述INTER体系架构支持栈帧的实现机制.或者 ...
- ZOJ 1610 间隔染色段树
要长8000仪表板.间染色的范围,问:最后,能看到的颜色,而且颜色一共有段出现 覆盖段 数据对比水 水可太暴力 段树: #include "stdio.h" #include ...
- Centos 5.5 更新网卡驱动 bnx2 version: 2.0.2
操作系统:CentOS release 5.5 (Final) 故障现象:网卡无故自动down掉,使用service network restart 重启后没多久又会自动down , 连接数大概在2 ...
- 通过Camera进行拍照
Android通过Camera来控制拍照,使用Camera比较简单,按步骤进行即可: 下面用一个示例来演示: Activity: package com.home.activity; import j ...
- android动画-动画分类及代码演示样例
原来一直对动画一知半解,仅仅知道依照网上的方法会用即可了,可是自己写起来感觉确实有点费劲,今天最终研究了代码实现,一下子感觉清晰多了.先把总结例如以下,代码中有具体的凝视. 动画分类 1.Peoper ...