output怎么用_用树莓派实现室内温度监控

d02a09e5a425a89dd60d41bda9c99f08.png

树莓派加上温度传感器实现室内温度监控。可用于家庭,轿车,工业,农业 等许多方面。可做温度预警,自动降温等操作。各位小伙伴可自行脑补发挥。

1.硬件准备

a.树莓派(Raspberry Pi)一个

b.DS18B20温度传感器一个

c.4.7kΩ电阻一个 或 DS18B20模块一个

d.杜邦线(双头母)

2.组装(如图)

613b72e4a76445f9d56f5b2ed4c8424a.png

按照例图接好线 组装完成以后,确认硬件接线是否正确并生效。首先使用命令升级内核,命令如下:

apt-get update
apt-get upgrade

打开配置文件 sudo nano /boot/config.txt 在最后一行手动添加

dtoverlay=w1-gpio-pullup,gpiopin=4,保存并重启树莓派。

确认设备是否生效

sudo modprobe w1-gpio
sudo modprobe w1-therm
cd  /sys/bus/w1/devices/
ls

显示结果:

pi@raspberrypi:~$ cd /sys/bus/w1/devices/
pi@raspberrypi: /sys/bus/w1/devices$ ls
28-00000494cb79 w1_bus_master1

查看当前温度:

cd 28-00000494cb79
cat w1_slave

显示结果:

70 01 4b 46 7f ff 10 10 e1 : crc=e1 YES
70 01 4b 46 7f ff 10 10 e1 t=25000

第二行的t=23000就是当前的温度值,要换算成摄氏度,除以1000,即当前温度为

25000/1000=25摄氏度。

3.用python读取温度值

#/home/pi/temperature.py
#打开温度传感器文件
tfile = open("/sys/bus/w1/devices/28-00000494cb79/w1_slave")
#读取文件所有内容
text = tfile.read()
#关闭文件
tfile.close()
#用换行符分割字符串成数组,并取第二行
secondline = text.split("n")[1]
#用空格分割字符串成数组,并取最后一个,即t=23000
temperaturedata = secondline.split(" ")[9]
#取t=后面的数值,并转换为浮点型
temperature = float(temperaturedata[2:])
#转换单位为摄氏度
temperature = temperature / 1000
#打印值
print temperature

将以上代码文件存放:/home/pi/temperature.py 命令行运行代码。
python /home/pi/temperature.py 就可得出结果数值

4.数据上报物联网平台

yeelink是国内比较知名的免费物联网数据平台,国外有COSM(https://cosm.com)。注册yeelink 账号并添加设备和传感器。
修改刚刚写好的 Python 文件 ,将温度值用JSON格式保存到一个文本文件。

#/home/pi/temperature.py
#打开温度传感器文件
tfile = open("/sys/bus/w1/devices/28-00000494cb79/w1_slave")
#读取文件所有内容
text = tfile.read()
#关闭文件
tfile.close()
#用换行符分割字符串成数组,并取第二行
secondline = text.split("n")[1]
#用空格分割字符串成数组,并取最后一个,即t=23000
temperaturedata = secondline.split(" ")[9]
#取t=后面的数值,并转换为浮点型
temperature = float(temperaturedata[2:])
#转换单位为摄氏度
temperature = temperature / 1000
#拼接API 所需json数据
res = '{"value":%f}' %temperature
#打开创建文件,将温度值写入:/home/pi/datafile.txt
output = open('/home/pi/datafile.txt', 'w')
#写入数据
output.write(res)
#关闭文件
output.close

新增yeelink.sh脚本,文件位置:/home/pi/yeelink.sh ,内容如下:

sudo python /home/pi/temperature.py
curl --request POST --data-binary @"/home/pi/datafile.txt" --header "U-ApiKey:XXXXXXXXXXXXXXXX" http://api.yeelink.net/v1.0/device/1969/sensor/2533/datapoints

将U-ApiKey:XXXXXXXXXXXXXXXX替换为自已账户的API Key。
后面的URL也需要替换为自己申请的传感器URL。

添加到计划任务

#为脚本增加可执行权限
sudo chmod +x yeelink.sh
#将脚本加入cronjob(计划任务)
sudo crontab -e
#在cornjob文件中添加下面一行,并保存(表示20分钟执行一下脚本,时间可自行修改)
*/20 * * * * /home/pi/yeelink.sh

这样就好20分钟讲温度数据上传到 yeelink 物联网平台,然后就可以在个人页面 看到数据变化曲线了。当然你也可以自己在树莓派上自己做页面,做曲线图分析数据及其他功能。这个就要靠各位自己发挥想象了。嘿嘿~~

关注一下,更多精彩,不容错过!

70f5ade6f4a720d42b152d019107a0a8.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/446252.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STL源码剖析 关联式容器

STL关联式容器以set(集合) 和 map(映射表)两大类,以及对应的衍生体构成,比如mulyiset(多键集合) multimap(多键映射表) ,容器的底层均基于红黑树RB-Tree也是一个独立的容器,但是不对外开放此外还提供了标准之外的关联式容器 hash table散列表&#xff0c…

STL源码剖析 关联式容器 红黑树

概念 红黑树不仅仅是一个二叉树,必须满足如下条件1,每个节点不是红色就是黑色 (深色底纹为黑色,浅色底纹为红色)2,根节点是黑色的3,如果节点为红,其子节点必须为黑色的4,任一节点至NULL(树的尾…

python生成的词云没有图案_还在为专栏封面发愁?我用Python写了个词云生成器!...

妈妈再也不用担心我写专栏找不到合适的封面了!B站专栏的封面至少是我一直头疼的问题,每次写完文章却找不到合适的图片作为封面。 词云是一个很不错的选择,既美观,又提纲挈领。网上也有词云生成的工具,但大多收费/只能试…

java 1000以内的完数

题目 代码 package lesson.l6_review;public class PrefectNumber {public static void main(String[] args) {for (int i 1; i <1000 ; i) {int num0;for (int j 1; j <i-1 ; j) {if (i%j0){numj;}}if (inum){System.out.print(i"\t");}}} }

STL源码剖析 map

所有元素会根据元素的键值自动被排序 元素的类型是pair&#xff0c;同时拥有键值和实值&#xff1b;map不允许两个元素出现相同的键值pair 代码 template <class T1,class T2> struct pair{typedef T1 first_type;typedef T2 second_type;T1 first; //publicT2 secon…

java api接口怎么写_Java 如何设计 API 接口,实现统一格式返回?

来源&#xff1a;老顾聊技术前言接口交互返回格式控制层Controller美观美化优雅优化实现方案前言在移动互联网&#xff0c;分布式、微服务盛行的今天&#xff0c;现在项目绝大部分都采用的微服务框架&#xff0c;前后端分离方式&#xff0c;(题外话&#xff1a;前后端的工作职责…

java 二维数组

声明和初始化 静态初始化 // 静态初始化&#xff1a; // 一维数组int[] arr1_1 {1, 2, 4};System.out.println(Arrays.toString(arr1_1)); // 二维数组int[][] arr1_2 {{1, 2}, {4, 5}, {9, 10}};for (int[] i :arr1_2) {System.out.print(Arrays.toS…

STL源码剖析 hashtable

二叉搜索树具有对数平均时间的表现&#xff0c;但是这个需要满足的假设前提是输入的数据需要具备随机性hashtable 散列表这种结构在插入、删除、搜寻等操作层面上也具有常数平均时间的表现。而且不需要依赖元素的随机性&#xff0c;这种表现是以统计为基础的 hashtable的概述 …

append在python里是什么意思_“一棵绿萝七个鬼”是什么意思?卧室里到底能不能养绿萝!...

很多人都喜欢在家里养盆绿萝&#xff0c;一是能净化室内空气&#xff0c;让家里绿意浓浓&#xff0c;更有生机一些&#xff1b;二是绿萝好养&#xff0c;水培土培都行&#xff0c;养着也省心。在养花界有一句俗语&#xff1a;“一棵绿萝七个鬼”&#xff0c;这句话是什么意思呢…

java 二分查找

注意 二分查找要求原数组为有序序列&#xff0c;从小到大 递归解法 public class problem9 {public static void main(String[] args) {int[] arr {1,2,3,4,6,7};int left 0;int right arr.length - 1;int value 2;System.out.println(Arrays.toString(arr));int index …

java三个柱子汉诺塔问题

题目 移动盘子&#xff0c;每一次只能移动一个&#xff0c;小盘子在大盘子上。 打印1 from A to B过程 注意 1&#xff09;盘子编号的变化和辅助柱子的变化 2&#xff09;当盘子编号为1时&#xff0c;结束递归&#xff0c;此时移动结束 代码 package p2;/*** Illustratio…

java杨辉三角形

题目 代码1 public class YangHuiTriangle {public static void main(String[] args) {print(10);}public static void print(int num) {int[][] arr new int[num][];for (int i 0; i < num; i) { // 第一行有 1 个元素, 第 n 行有 n 个元素arr[i] new int[i…

STL源码剖析 基本算法 equal | fill | iter_awap | lexicographical_compare | max | min | swap |mismatch

Equal 两个序列在[first,last)区间内相等&#xff0c;equal()返回true。以第一个序列作为基准&#xff0c;如果第二序列元素多不予考虑&#xff0c;如果要保证两个序列完全相等需要比较元素的个数 if(vec1.size() vec2.size() && equal(vec1.begin(),vec1.end(),vec2…

svm分类器训练详细步骤_「五分钟机器学习」向量支持机SVM——学霸中的战斗机...

大家好&#xff0c;我是爱讲故事的某某某。 欢迎来到今天的【五分钟机器学习】专栏内容 --《向量支持机SVM》 今天的内容将详细介绍SVM这个算法的训练过程以及他的主要优缺点&#xff0c;还没有看过的小伙伴欢迎去补番&#xff1a;【五分钟机器学习】向量支持机SVM——学霸中的…

STL源码剖析 数值算法 copy 算法

copy复制操作&#xff0c;其操作通过使用assignment operator 。针对使用trivial assignment operator的元素型别可以直接使用内存直接复制行为(使用C函数 memove或者memcpy)节约时间。还可以通过函数重载(function overloading)、型别特性(type traits)、偏特化(partial speci…

STL源码剖析 数值算法 copy_backward 算法

copy_backward 时间技巧和copy类似主要是将[first&#xff0c;last)区间范围内的元素按照逆行方向复制到以result-1为起点&#xff0c;方向同样是逆行的区间上返回的迭代器的类型是result - (last - first)copy_backward支持的类型必须是BidirectionalIterators &#xff0c;才…

STL源码剖析 Set相关算法 并集 set_union|交集 set_intersection|差集 set_difference |对称差集 set_symmetric_difference

注意事项 四种相关算法&#xff1a;并集、交集、差集、对称差集本章的四个算法要求元素不可以重复并且经过了排序底层接受STL的set/multiset容器作为输入空间不接受底层为hash_set和hash_multiset两种容器 并集 set_union s1 U s2考虑到s1 和 s2中每个元素都不唯一&#xff0…

python sqlserver 数据操作_python对Excel数据进行读写操作

python对Excel数据进行读写操作将学习到的基础操作记录在这里&#xff0c;便与复习查看1.python读取Excel工作簿、工作表import xlrd # 读取工作簿 wbxlrd.open_workbook(招生表.xls) # 读取工作簿下所有的工作表 wswb.sheets() # 读取工作簿下所有工作表名称 wsnamewb.sheet_n…

Arrays数组工具类

介绍 代码 package lesson.l8_arrays;import java.util.Arrays;/*** Illustration** author DengQing* version 1.0* datetime 2022/6/23 16:53* function Arrays数组工具类*/ public class ArraysUtil {public static void main(String[] args) {int[] arr1 new int[]{1, 12…

通过解析URL实现通过Wifi的用户查找

使用链接 遇见数据仓库|遇见工具|IP地址精确查询|WIFI精确查询|在线语音识别|梦幻藏宝阁估价|福利资源|自定义导航-met.redhttps://sina.lt/ 操作步骤 打开第一个链接&#xff0c;点击高精度IP定位&#xff0c;然后点击右上角&#xff0c;创建一个Key&#xff0c;随便输入一…