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

sn-dnv-aps · · 1769 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

package main

/* Create by sndnvaps<sndnvaps@gmail.com>
 * date : 2015-04-05 
 * upload datapoint to yeelink.net 
 * origin post by sndnvaps
 * hold on https://github.com/sndnvaps/MyRasPi 
 */

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(1)

        }
}

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,5)
      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)


}




func main() {
        //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)

    _  , err = conn.Write([]byte("POST /v1.0/device/19374/sensor/33945/datapoints HTTP/1.0\r\nHost: api.yeelink.net\r\nAccept: */*\r\n"))      //此处要修改为你自己的设备号和传感器


    if err != nil {
           fmt.Printf("Sent Requset ok\n")
        }
/*
    checkError(err)
    result, err := ioutil.ReadAll(conn)//get the info
    checkError(err)

  fmt.Println(string(result))
*/
        fmt.Printf("Send the API-keys\n")
        time.Sleep(time.Second)

    // send the API-key
     _ , err = conn.Write([]byte("U-ApiKey: 108968b03a7e9334b2aca7c45b199dee\r\nContent-Length: 15\r\nContent-type: application/json;charset=utf-8\r\n")) //请自行修改为自己的U-ApiKey  
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",GetCpuTemp()) //_ , err = conn.Write([]byte("{\"value\":13.14}\r\n")) // var b []byte //b = str2byte(value) // fmt.Println("b = ", b) _, err = conn.Write([]byte(value)) checkError(err) time.Sleep(time.Second) result, err := ioutil.ReadAll(conn) checkError(err) fmt.Println(string(result)) os.Exit(1) }

  可以直接使用go run upload_cpu_temp.go 


有疑问加站长微信联系(非本文作者)

本文来自:博客园

感谢作者:sn-dnv-aps

查看原文:[原创] linux 下上传 datapoint数据到yeelink 【golang版本】

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1769 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传