/* 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. mysql 高可用方案MHA介绍

    概述 MHA是一位日本MySQL大牛用Perl写的一套MySQL故障切换方案,来保证数据库系统的高可用.在宕机的时间内(通常10—30秒内),完成故障切换,部署MHA,可避免主从一致性问题,节约购买新 ...

  2. 解决Qt程序在Linux下无法输入中文的办法

    解决Qt程序在Linux下无法输入中文的办法 一位网友问我怎样在Linux的Qt的应用程序中输入中文,我一開始认为不是什么问题,可是后面自己尝试了一下还真不行.不仅是Qt制作的应用程序,就连Qt Cr ...

  3. Android相关

    wifi密码:因为我们安卓系统的手机无线账号数据是储存在一个文件里的,那就是 /data/misc/wifi/wpa_supplicant.conf ,这个是系统文件,权限不够高是无法访问的,而这个文 ...

  4. leetcode第一刷_Unique Paths

    从左上到右下,仅仅能向右或向下,问一共同拥有多少种走法. 这个问题当然能够用递归和dp来做,递归的问题是非常可能会超时,dp的问题是须要额外空间. 事实上没有其它限制条件的话,这个问题有个非常easy ...

  5. Android.mk编译.apk .so .jar .a第三方.apk .so .jar .a的方法

    一.编译一个简单的APK LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) # Build all java files in the java s ...

  6. poj1860(spfa判正环)

    题目连接:http://poj.org/problem?id=1860 题意:有多种从a到b的汇率,在你汇钱的过程中还需要支付手续费,那么你所得的钱是 money=(nowmoney-手续费)*rat ...

  7. 京东商城招聘自动调价系统架构师 T4级别

    岗位级别:T4 岗位职责: 1.负责自动调价系统的架构设计 2.负责自动调价的预测.相关性算法设计 3.核心代码编写,代码review 任职要求: 1.熟悉数据挖掘.机器学习理论和算法 2.熟悉海量数 ...

  8. Jetty:开发指导Handlers

    Rewrite Handler RewriteHandler匹配一个基于该请求的规则集合,然后根据匹配规则的变更请求. 最常见的要求是改写URI.但不限于:规则可以被配置为重定向响应.设置cookie ...

  9. pygame系列_游戏窗口显示策略

    在这篇blog中,我将给出一个demo演示: 当我们按下键盘的‘f’键的时候,演示的窗口会切换到全屏显示和默认显示两种显示模式 并且在后台我们可以看到相关的信息输出: 上面给出了一个简单的例子,当然在 ...

  10. Java EE (10) - 资源服务器的整合

    加密(Encryption)和数字签名(Digital Signature)通常被用于保护通讯--加密用来防止数据传输过程中的窃听--数字签名用来防止数据传输过程中的篡改 JDBC: 整合关系型数据库 ...