[原創] linux 下上傳 datapoint資料到yeelink 【golang版本】

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
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 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.