/* Create by sndnvaps<sndnvaps@gmail.com>
* data: 2015-04-12
* upload 2 datapoint to yeelink.net at the same time
* post by sndnvaps
* hold on https://github.com/sndnvaps/MyRasPi
*/
//upload_client.go import (
"fmt"
"io/ioutil"
"net"
"time"
"os"
"strconv"
) func checkError(err error) {
if err != nil {
fmt.Fprintf(os.Stderr, "Fatal error: %s\n",err.Error())
os.Exit() }
} func GetCpuTemp() (t float32) {
tf ,err := os.Open("/sys/class/thermal/thermal_zone0/temp")
if err != nil {
fmt.Printf("Read Cpu file error = %s\n",err.Error())
}
defer tf.Close()
data := make([]byte,)
tf.Read(data)
data_temp := string(data)
temp, _ := strconv.Atoi(data_temp)
var tt float32
tt = float32(temp)
fmt.Printf("Cpu temp = %2.2f\n", tt/1000.00) return (tt/1000.00) } var c chan int func yeelink_upload(device_id, sensor_id string, val float32) {
//Connet the api.yeelink.net
//REMOTE_IP 42.96.164.52
//PORT 80 conn, err := net.Dial("tcp","42.96.164.52:80")
defer conn.Close()
checkError(err)
fmt.Printf("Post Request \n")
// fmt.Printf("Cpu temp = %2.2f\n", GetCpuTemp()) time.Sleep(time.Second) post := fmt.Sprintf("POST /v1.0/device/%s/sensor/%s/datapoints HTTP/1.0\r\nHost: api.yeelink.net\r\nAccept: */*\r\n",device_id,sensor_id);
_ , err = conn.Write([]byte(post)); if err != nil {
fmt.Printf("Sent Requset ok\n")
} fmt.Printf("Send the API-keys\n")
time.Sleep(time.Second) // send the API-key
_ , err = conn.Write([]byte("U-ApiKey: 108968b03a7e9334b2aca7c45bXXXXXX\r\nContent-Length: 15\r\nContent-type: application/json;charset=utf-8\r\n"))
//此处填写你自己的API-key
checkError(err)
time.Sleep(time.Second)
//send the '\r\n'
_ , err = conn.Write([]byte("\r\n"))
checkError(err) //send the value
time.Sleep(time.Second)
var value string value = fmt.Sprintf("{\"value\":%2.2f}\n\n",val) //数据为 xx.xx //_ , err = conn.Write([]byte("{\"value\":13.14}\r\n"))
_, err = conn.Write([]byte(value)) checkError(err)
time.Sleep(time.Second)
result, err := ioutil.ReadAll(conn)
checkError(err)
fmt.Println(string(result))
c <-
// os.Exit(1)
} func main() {
device_id := "XXXXX" //设备id
sensor_id := "XXXXX" //传感器id
sensor_id_2 := "XXXXX" //传感器id_2
val := GetCpuTemp() //此处的val只用于测试, 如果你有其它的参数,可以自行修改, val 类型为 float32, 长度需要5位,即xx.xx, 33.33 ,带2位小数
c = make(chan int) go yeelink_upload(device_id,sensor_id,val) //
// time.Sleep(time.Second * 15)
go yeelink_upload(device_id,sensor_id_2, val)
//return
<- c
<- c
}

实现同时上传二个Datapoint数据到yeelink.net

原理是使用golang chanel

运行效果如下图:

[原创] linux 下上传 datapoint数据到yeelink 【golang版本】同时上传2个数据点的更多相关文章

  1. linux 下上传 datapoint数据到yeelink 修改版本

      /*client.c*/ #include <stdio.h> #include <stdlib.h> #include <string.h> #include ...

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

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

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

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

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

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

  5. [原创]Linux下网络性能测试Netperf工具介绍及安装

    [原创]Linux下网络性能测试Netperf工具介绍及安装 1 官方网站 http://www.netperf.org/netperf/ 2 Netperf介绍 Netperf是一种网络性能的测试工 ...

  6. Linux下mongodb安装及数据导入导出教程

    Linux下mongodb安装及数据导入导出教程 #查看linux发行版本 cat /etc/issue #查看linux内核版本号 uname -r 一.Linux下mongodb安装的一般步骤 1 ...

  7. [原创] Linux下几种文件传输命令 sz rz sftp scp介绍

    Linux下几种文件传输命令 sz rz sftp scp介绍 1.sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具.由于它是基于SSH的,会在传输过程中对用户的密码.数据等 ...

  8. (原创)linux下Microsoft/cpprestsdk支持https(server)

    原创,转载请标明源地址 之前看网上一堆的资料说Microsoft/cpprestsdk不支持https或者说只支持window下的https,差点就被误导了,没办法,只好自己去翻了下源代码 先说明下l ...

  9. linux下将不同线程绑定到不同core和cpu上——pthread_setaffinity_np

    =============================================================== linux下的单进程多线程的程序,要实现每个线程平均分配到多核cpu,主 ...

随机推荐

  1. WPF 设置WebBrowser控件不弹脚本错误提示框

    using System.Reflection; using System.Windows; using System.Windows.Controls; using System.Windows.N ...

  2. ACM起步要点总结(转哈工大)

    首先,我想说的就是,我是一个很普通的ACMer,高中没有参加过任何计算机和数学竞赛的经历,也没有ben那样过人的天资,努力至今也未能取得什么成绩,我之所以写下这篇文章,只是希望给刚进大学或者刚进ACM ...

  3. 嗨翻C语言

    <嗨翻C语言> 基本信息 作者: (美)David Griffiths    Dawn Griffiths    译者: 程亦超 出版社:人民邮电出版社 ISBN:978711531884 ...

  4. 实现TextView 文字排版,分散两端对齐

    參考:http://www.cnblogs.com/lcyty/p/3265335.html 方法一:使用HTML TextView textview=(TextView)findViewbyId(R ...

  5. Android SDK r23

    SDK Tools Only Platform Package Size MD5 Checksum Windows 32 & 64-bit android-sdk_r23-windows.zi ...

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

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

  7. JAVA逆向&反混淆-追查Burpsuite的破解原理(转)

    0x00 摘要: 本系列文章通过对BurpLoader的几个版本的逆向分析,分析Burpsuite的破解原理,分析Burpsuite认证体系存在的安全漏洞. 0x01 JD-GUI的用途与缺陷: JD ...

  8. 重写equals()与hashCode()方法

    出自:http://blog.csdn.net/renfufei/article/details/16339351 Java语言是完全面向对象的,在java中,所有的对象都是继承于Object类.Oj ...

  9. POJ 2942 Knights of the Round Table - from lanshui_Yang

    Description Being a knight is a very attractive career: searching for the Holy Grail, saving damsels ...

  10. SDL2源码分析8:视频显示总结

    ===================================================== SDL源码分析系列文章列表: SDL2源码分析1:初始化(SDL_Init()) SDL2源 ...