繁体   English   中英

Raspberry Pi Sense帽子

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM