/*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 修改版本的更多相关文章

  1. [原创] linux 下上传 datapoint数据到yeelink 【golang版本】同时上传2个数据点

    /* Create by sndnvaps<sndnvaps@gmail.com> * data: 2015-04-12* upload 2 datapoint to yeelink.ne ...

  2. [原创] linux 下上传 datapoint数据到yeelink 【golang版本】

    package main /* Create by sndnvaps<sndnvaps@gmail.com> * date : 2015-04-05 * upload datapoint ...

  3. Linux 下上传下载命令,SCP,SFTP,FTP

    scp 帮助命令: man scp scp功能: 下载远程文件或者目录到本地, 如果想上传或者想下载目录,最好的办法是采用tar压缩一下,是最明智的选择. 从远程主机 下载东西到 本地电脑 拷贝文件命 ...

  4. [转载]关于在Linux下上传代码至Github

    刚开始使用Github没多长时间,所以很多地方不太熟练,看到阿里云上有一篇文章写得不错,故转载过来. 转载自:https://www.aliyun.com/jiaocheng/122729.html ...

  5. Linux下不借助工具实现远程linux服务器上传下载文件

    # Linux下不借助工具实现远程linux服务器上传下载文件 ## 简介 - Linux下自带ssh工具,可以实现远程Linux服务器的功能- Linux下自带scp工具,可以实现文件传输功能 ## ...

  6. Linux下Rsync+sersync实现数据实时同步

    inotify 的同步备份机制有着缺点,于是看了sersync同步,弥补了rsync的缺点.以下转自:http://www.osyunwei.com/archives/7447.html 前言: 一. ...

  7. 上传RNA-seq数据到NCBI GEO数据库

    SRA - NCBI example - NCBI 要发文章了,审稿时编辑肯定会要求你上传NGS测序数据. 一般数据都是放在集群,不可能放在个人电脑上,因为有的数据大的吓人(几个T). 所以我们就建一 ...

  8. 向linux服务器上传下载文件方式收集

    向linux服务器上传下载文件方式收集 1. scp [优点]简单方便,安全可靠:支持限速参数[缺点]不支持排除目录[用法] scp就是secure copy,是用来进行远程文件拷贝的.数据传输使用 ...

  9. Linux下Rsync+Inotify-tools实现数据实时同步

    Linux下Rsync+Inotify-tools实现数据实时同步 注意:下面的三个案例都是rsync 每次都是全量的同步(这就坑爹了),而且 file列表是循环形式触发rsync ,等于有10个文件 ...

随机推荐

  1. 阿录帮帮忙—spring mvc 的hello world

    一:web.xml配置 <!-- Spring MVC配置 --> <servlet> <servlet-name>Spring MVC Dispatcher Se ...

  2. js编码、解码

    js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 1 ...

  3. Linux下Apache PHP Mysql默认安装路径

    Apache 假设採用RPM包安装.安装路径应在 /etc/httpd文件夹下 Apache配置文件: /etc/httpd/conf/httpd.conf Apache模块路径: /usr/sbin ...

  4. [Linux]Centos git报错fatal: HTTP request failed

    在使用git pull.git push.git clone会报类似例如以下的错误: error: The requested URL returned error: 401 Unauthorized ...

  5. WPF案例 (三) 模拟QQ“快速换装"界面

    原文:WPF案例 (三) 模拟QQ"快速换装"界面 这个小程序使用Wpf模拟QQ快速换装页面的动画特效,通过使用组合快捷键Ctrl+Left或Ctrl+Right,可实现Image ...

  6. 2-13. 平均两个有序序列(25)(ZJU_PAT 名单 | 排列 )

    主题链接:http://pat.zju.edu.cn/contests/ds/2-13 已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数.有序序列A0, A1-AN-1的中位 ...

  7. 【翻译】我钟爱的Visual Studio前端开发工具/扩展

    原文:[翻译]我钟爱的Visual Studio前端开发工具/扩展 怎么样让Visual Studio更好地编写HTML5, CSS3, JavaScript, jQuery,换句话说就是如何更好地做 ...

  8. JSP网站开发基础总结《九》(转)

    本篇属于附加篇,在之前的总结中给大家提到过一个关于登录状态验证的效果,当时是通过Session对象完成的,今天我查了一下,JSP为我们封装了一个用于过滤用的过滤器类Filter,通过它我们就可以非常轻 ...

  9. 读书笔记:《重来REWORK》

    读书笔记:<重来REWORK> <重来Rework--更为简单有效的商业思维>这本书是看了别人的书单而购买的,初 拿到这本书翻看时,感觉有两点与平常的书不同,一是每个小节非常短 ...

  10. jenkins 集成 redmine 账户验证的方案

    jenkins 集成 redmine 账户验证的方案 赖勇浩(http://laiyonghao.com) 动机 Jenkins 是最著名的持续集成工具,又因为它开源免费.插件众多,成为了许多团队做持 ...