这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 物联网技术 » 【炫Q香蕉派】CPU温度采集

共23条 1/3 1 2 3 跳转至

【炫Q香蕉派】CPU温度采集

专家
2016-02-15 16:19:51     打赏

照说前两天已经搞定SHT2x的温度采集,可以来做上传了,不过以前一直没搞定的CPU温度也希望再尝试一下

这个是小伙伴的帖子,不过一直没有sensons可以安装

http://forum.banana-pi.org.cn/thread-742-1-1.html



专家
2016-02-15 16:21:33     打赏
2楼

通过查询有一个lm-sensons可以安装,而且网上说是CPU的温度


apt-get install lm-sensons


终于可以安装了,不过./sensons并没得出cpu的温度,而是0.0



专家
2016-02-15 16:23:34     打赏
3楼

既然香蕉派号称兼容树莓派,那么就尝试树莓派的办法呢

http://blog.csdn.net/xukai871105/article/details/38349209

果然有所收获


专家
2016-02-15 16:26:29     打赏
4楼

在这里发现两个问题,1、香蕉派真凉快,2、不象树莓派一样要除1000,没有小数位

或许这也是不符合规范的地方,40/1000=0.0了


专家
2016-02-15 16:27:52     打赏
5楼

尝试用C操作

    #include <stdio.h>  
    #include <stdlib.h>   
      
    #include <sys/types.h>  
    #include <sys/stat.h>  
    #include <fcntl.h>  
      
    #define TEMP_PATH "/sys/class/thermal/thermal_zone0/temp"  
    #define MAX_SIZE 32  
    int main(void)   
    {  
        int fd;  
        double temp = 0;  
        char buf[MAX_SIZE];  
          
        // 打开/sys/class/thermal/thermal_zone0/temp  
        fd = open(TEMP_PATH, O_RDONLY);  
        if (fd < 0) {  
            fprintf(stderr, "failed to open thermal_zone0/temp\n");  
            return -1;  
        }  
          
        // 读取内容  
        if (read(fd, buf, MAX_SIZE) < 0) {  
            fprintf(stderr, "failed to read temp\n");  
            return -1;  
        }  
          
        // 转换为浮点数打印  
        temp = atoi(buf);  
        printf("temp: %.2f\n", temp);  
          
        // 关闭文件  
        close(fd);  
    }  

 

既然不能除1000了,所以要有一些小修改


专家
2016-02-15 16:29:05     打赏
6楼
gcc -o test cpu-temp.c
./test

 

可以顺利编译和运行

专家
2016-02-15 16:32:18     打赏
7楼

换python似乎更简单

# -*- coding: utf-8 -*-  
# 打开文件  
file = open("/sys/class/thermal/thermal_zone0/temp")  
# 读取结果,并转换为浮点数  
temp = float(file.read())  
# 关闭文件  
file.close()  
# 向控制台打印  
print "temp: %.2f" %temp  

 

也要记得不要再除1000


专家
2016-02-15 16:35:06     打赏
8楼
果然效果一样,不过cpu的温度已经47度了,也不算高吧,可以用纸扇扇,很有效一下子下降5度

专家
2016-02-15 16:36:06     打赏
9楼
同时测试了一下不删掉除1000,果然得到的结果是0.0度

专家
2016-02-15 16:42:26     打赏
10楼

提交到yeelink的代码

# -*- coding: utf-8 -*-   
import requests   
import json   
# 打开文件   
file = open("/sys/class/thermal/thermal_zone0/temp")   
# 读取结果,并转换为浮点数   
temp = float(file.read())  
# 关闭文件   
file.close()   
# 向控制台打印结果   
print "temp : %.1f" %temp   
      
# 设备URI   
apiurl = 'http://api.yeelink.net/v1.0/device/344832/sensor/383501/datapoints'   
# 用户密码, 指定上传编码为JSON格式   
apiheaders = {'U-ApiKey': 'a0ff0c16029821a7b8f7a75e', 'content-type': 'application/json'}   
# 字典类型数据,在post过程中被json.dumps转换为JSON格式字符串 {"value": 48.123}   
payload = {'value': temp}   
#发送请求   
r = requests.post(apiurl, headers=apiheaders, data=json.dumps(payload))   
 
# 打印返回码  
print "response status: %d" %r.status_code  

 


共23条 1/3 1 2 3 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]