[原创] linux 下上传 datapoint数据到yeelink 【golang版本】同时上传2个数据点
/* 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个数据点的更多相关文章
- linux 下上传 datapoint数据到yeelink 修改版本
/*client.c*/ #include <stdio.h> #include <stdlib.h> #include <string.h> #include ...
- [原创] linux 下上传 datapoint数据到yeelink 【golang版本】
package main /* Create by sndnvaps<sndnvaps@gmail.com> * date : 2015-04-05 * upload datapoint ...
- Linux下Rsync+sersync实现数据实时同步
inotify 的同步备份机制有着缺点,于是看了sersync同步,弥补了rsync的缺点.以下转自:http://www.osyunwei.com/archives/7447.html 前言: 一. ...
- Linux下Rsync+Inotify-tools实现数据实时同步
Linux下Rsync+Inotify-tools实现数据实时同步 注意:下面的三个案例都是rsync 每次都是全量的同步(这就坑爹了),而且 file列表是循环形式触发rsync ,等于有10个文件 ...
- [原创]Linux下网络性能测试Netperf工具介绍及安装
[原创]Linux下网络性能测试Netperf工具介绍及安装 1 官方网站 http://www.netperf.org/netperf/ 2 Netperf介绍 Netperf是一种网络性能的测试工 ...
- Linux下mongodb安装及数据导入导出教程
Linux下mongodb安装及数据导入导出教程 #查看linux发行版本 cat /etc/issue #查看linux内核版本号 uname -r 一.Linux下mongodb安装的一般步骤 1 ...
- [原创] Linux下几种文件传输命令 sz rz sftp scp介绍
Linux下几种文件传输命令 sz rz sftp scp介绍 1.sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具.由于它是基于SSH的,会在传输过程中对用户的密码.数据等 ...
- (原创)linux下Microsoft/cpprestsdk支持https(server)
原创,转载请标明源地址 之前看网上一堆的资料说Microsoft/cpprestsdk不支持https或者说只支持window下的https,差点就被误导了,没办法,只好自己去翻了下源代码 先说明下l ...
- linux下将不同线程绑定到不同core和cpu上——pthread_setaffinity_np
=============================================================== linux下的单进程多线程的程序,要实现每个线程平均分配到多核cpu,主 ...
随机推荐
- java学习笔记04--数组
java学习笔记04--数组 数组复制的方法是使用System类提供的arraycopy()方法,其语法如下: System.arraycopy(Object src, int srcPos, Obj ...
- 调用ShellExecute需要头文件
调用ShellExecute需要头文件 #include "windows.h " #include "shellapi.h "
- UDP 通信
import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public ...
- MySQL聚合函数、控制流程函数(含navicat软件的介绍)
MySQL聚合函数.控制流程函数(含navicat软件的介绍) 一.navicat的引入:(第三方可视化的客户端,方便MySQL数据库的管理和维护) NavicatTM是一套快速.可靠并价格相宜的数据 ...
- 20.23. xmlrpclib — XML-RPC client access — Python v2.7.5 documentation
20.23. xmlrpclib — XML-RPC client access — Python v2.7.5 documentation 20.23. xmlrpclib — XML-RPC cl ...
- ZOJ 3635 Cinema in Akiba(线段树)
Cinema in Akiba (CIA) is a small but very popular cinema in Akihabara. Every night the cinema is ful ...
- 点滴的积累---J2SE学习小结
点滴的积累---J2SE学习小结 什么是J2SE J2SE就是Java2的标准版,主要用于桌面应用软件的编程:包括那些构成Java语言核心的类.比方:数据库连接.接口定义.输入/输出.网络编程. 学习 ...
- 浅谈Storm流式处理框架(转)
Hadoop的高吞吐,海量数据处理的能力使得人们可以方便地处理海量数据.但是,Hadoop的缺点也和它的优点同样鲜明——延迟大,响应缓慢,运维复杂. 有需求也就有创造,在Hadoop基本奠定了大数据霸 ...
- hdu4586(概率、期望)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4586 题意:有一个色子,n面,每面有个分值a[i],其中有m面比较特殊,当该面出现时,可以再投一次.求 ...
- POJ 1018 【枚举+剪枝】.cpp
题意: 给出n个工厂的产品参数带宽b和价格p,在这n个工厂里分别选1件产品共n件,使B/P最小,其中B表示n件产品中最小的b值,P表示n件产品p值的和. 输入 iCase n 表示iCase个样例n个 ...