脚本打印树莓派时间-温度

一分钟打印一次时间-温度

方法1

Linux Shell 输出北京时间的写法 - 知乎

#!/bin/bash
while true
do
echo -n $(TZ=UTC-8 date +%Y-%m-%d" "%H:%M:%S)
read number < /sys/class/thermal/thermal_zone0/temp
echo "  Temp = $(expr $number  / 1000)"
sleep 60
done

echo -n表示打印不换行!

注意到 除法以后小数点没有了

修改   apt-get install bc

#!/bin/bash
while true
do
echo -n $(TZ=UTC-8 date +%Y-%m-%d" "%H:%M:%S)
read number < /sys/class/thermal/thermal_zone0/temp
echo -n " Temp: "
echo "scale=3; $number/1000" | bc
sleep 2
done

方法2go

package main

import (
	"log"
	"os/exec"
	"time"
)

func main() {

	for {
		cmd := exec.Command("cat", "/sys/class/thermal/thermal_zone0/temp")
		stdout, err := cmd.Output()
		if err != nil {
			log.Printf("Fail to cat %v\r\n", err)
		} else {
			a := string(stdout)
			a = a[:2] + "." + a[2:]
			log.Printf("temp %s \r\n", string(a))
		}

		time.Sleep(time.Minute)
	}
}

补充 已经有人写了温度-LED的

Golang与树莓派 - Go语言中文网 - Golang中文社区

package main

import (
        "fmt"
    "io/ioutil"
    "strconv"
    "time"
    "runtime"

        "github.com/stianeikeland/go-rpio"
    "github.com/shirou/gopsutil/load"
)

const (
    BLUE = 20
    ORANGE = 21
    CORE_TEMP_PATH = "/sys/class/thermal/thermal_zone0/temp"
)

func init(){
    runtime.GOMAXPROCS(1)
}

func main() {

    fmt.Printf("System initial...")
        if rpio.Open() == nil{
        fmt.Println("[OK]")
    } else {
        fmt.Println("[ERROR]")
    }
        defer rpio.Close()
        orange := rpio.Pin(ORANGE)
    blue    := rpio.Pin(BLUE) 
    orange.Output()
    blue.Output()
    orange.Low()
    blue.High()


    for {
        stat, err := load.Avg() 
        if err != nil {
            fmt.Println(err)
            break
        }
        interval := int(stat.Load1)
        if stat.Load1 < 1 {
            interval = 1    
        }
        fmt.Printf("Load1:%.2f Temp:%.2f'C", stat.Load1, loadTemp())
        time.Sleep(time.Millisecond * time.Duration(interval * 900))
        blue.Toggle()
        orange.Toggle()
        fmt.Printf("\r")
    }
}

func loadTemp() float64 {
    b, err := ioutil.ReadFile(CORE_TEMP_PATH)
    if err != nil {
        return -1000
    }
    raw, err := strconv.ParseFloat(string(b[:len(b)-2]), 64)
    if err != nil {
        fmt.Println(err)
        return -1001    
    }
    return raw/100
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值