[英]Raspberry Pi Sense Hat
尝试使用带有raspberry pi
的感应帽来监视房间中的温度并将数据流传输到plot.ly。 我一切都很好。 下一步是将Picamera
添加到项目中,以便当温度达到特定点时,相机将打开并每5分钟开始记录图片,同时仍将数据流传输到plot.ly。 我单独创建了这些脚本,然后将它们从bash脚本运行到后台,但是问题是数据变得“混乱”并给出了错误的温度。 我在看子进程,但是它停止了其中一个脚本的运行。 如何同时运行两者,并且彼此之间不会相互影响,所以我将实时传输数据,并且如果满足条件,照相机将为您拍照。
这是我的数据流代码:
##### Main Program #####
sense = SenseHat()
sense.clear()
####Graph####
stream_id = 'nync7etjej'
stream = dict(token=stream_id,maxpoints=60)
trace1 = go.Scatter(
x =[],
y=[],
mode='lines+markers',
stream=stream)
data= go.Data([trace1])
layout =go.Layout(title='Room Temperature')
fig = go.Figure(data=data,layout=layout)
py.plot(fig,filename="Server Room Temperature_01")
s = py.Stream(stream_id)
s.open()
time.sleep(5)
while True:
temp_h= sense.get_temperature()
temp_h=round(temp_h,1)
x=datetime.now()
y=temp_h
s.write(dict(x=x,y=y))
time.sleep(300)
s.close()
tls.embed('Streaming Temp','12')
Picamera脚本:
##### Main Program #####
sense = SenseHat()
sense.clear()
with picamera.PiCamera() as camera:
while True:
temp_h= sense.get_temperature()
temp_h=round(temp_h,1)
if temp_h >45.2:
camera.start_preview()
time.sleep(2)
for filename in camera.capture_continuous('/var/www/image/img{counter}.jpg'):
camera.stop_preview()
time.sleep(5)
我认为您要避免两个程序同时访问SenseHAT。 通过共享内存,信号量和事物,有许多复杂的方法可以做到这一点。
但是,一种非常简单的方法是保持温度监视脚本不变,但是在读取温度时,如果温度高于45.2,则创建一个名为“ / HOT”的空文件,如果温度低于该温度,则删除该文件。 “/热”。
然后,在摄像机脚本中,运行一个循环,检查文件“ / HOT”是否存在,并相应地启动/停止摄像机。
这样,只有一个进程将在读取SenseHAT。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.