/*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. RegisterHotKey注册热键,然后响应WM_HOTKEY消息

    MSDN中的一个示例代码,步骤就是RegisterHotKey注册热键,然后响应WM_HOTKEY消息 @1:这个是系统热键 #include "stdafx.h" int _cd ...

  2. [C++]指针浅析

    Date: 2014-1-4 summary: 指针的简单理解,概念性的东西会比较多(100个人有100种理解,此处只代表我个人看法) Contents: 1.什么是指针 c++ primer plu ...

  3. Ajenti 1.0 发布,服务器管理系统 - 开源中国社区

    Ajenti 1.0 发布,服务器管理系统 - 开源中国社区 Ajenti 1.0 发布,服务器管理系统

  4. 【MongoDB】The description of index(一)

    From this blog, we start to talk about the index in mongo Database, which is similar to the traditio ...

  5. Fast portable non-blocking network programming with Libevent

    Fast portable non-blocking network programming with Libevent Fast portable non-blocking network prog ...

  6. broadcom6838开发环境实现函数栈追踪

    在嵌入式设备开发中.内核为内核模块的函数栈追踪已经提供了非常好的支持,但用户层的函数栈追踪确没有非常好的提供支持. 在网上收集学习函数栈跟踪大部分都是描写叙述INTER体系架构支持栈帧的实现机制.或者 ...

  7. ZOJ 1610 间隔染色段树

    要长8000仪表板.间染色的范围,问:最后,能看到的颜色,而且颜色一共有段出现 覆盖段 数据对比水   水可太暴力 段树: #include "stdio.h" #include ...

  8. Centos 5.5 更新网卡驱动 bnx2 version: 2.0.2

    操作系统:CentOS release 5.5 (Final) 故障现象:网卡无故自动down掉,使用service  network restart 重启后没多久又会自动down , 连接数大概在2 ...

  9. 通过Camera进行拍照

    Android通过Camera来控制拍照,使用Camera比较简单,按步骤进行即可: 下面用一个示例来演示: Activity: package com.home.activity; import j ...

  10. android动画-动画分类及代码演示样例

    原来一直对动画一知半解,仅仅知道依照网上的方法会用即可了,可是自己写起来感觉确实有点费劲,今天最终研究了代码实现,一下子感觉清晰多了.先把总结例如以下,代码中有具体的凝视. 动画分类 1.Peoper ...