Python wsgi脚本中的树莓皮-AdaFruit DHT(非根)

Python wsgi脚本中的树莓皮-AdaFruit DHT(非根),python,raspberry-pi,wsgi,Python,Raspberry Pi,Wsgi,使用来自的ADAFRUIT_DHT python库和DHT22温度/湿度传感器(),我能够轻松读取温度和湿度值 问题是,我需要以root身份运行脚本,以便与GPIO引脚交互。当通过wsgi在网站上运行我的脚本时,这是不可能的,因为apache不允许我(出于充分的理由)将WSGIDaemonProcess的用户设置为root 我已经运行了pigpiod,它允许我作为非root用户通过它与GPIO交互,但是ADAFRUIT_DHT不通过守护进程,而是直接与GPIO交互。我不能100%确定pigpio

使用来自的ADAFRUIT_DHT python库和DHT22温度/湿度传感器(),我能够轻松读取温度和湿度值

问题是,我需要以root身份运行脚本,以便与GPIO引脚交互。当通过wsgi在网站上运行我的脚本时,这是不可能的,因为apache不允许我(出于充分的理由)将WSGIDaemonProcess的用户设置为root

我已经运行了pigpiod,它允许我作为非root用户通过它与GPIO交互,但是ADAFRUIT_DHT不通过守护进程,而是直接与GPIO交互。我不能100%确定pigpio守护进程是否足够快,以进行位碰撞,这是解码来自DHT22单元的响应所必需的,但是,也许


那么,有没有一种方法可以强制ADAFRUIT_DHT库不需要以root身份运行,或者,有没有替代该库的方法可以实现我所寻找的功能?

创建一个以root身份运行并在本地Unix或TCP套接字上侦听的小型服务器。当另一个进程连接时,服务器从传感器读取数据并返回

现在,您的WSGI进程只需要连接到侦听套接字的权限,可以通过Unix套接字上的权限轻松管理侦听套接字,也可以简单地将访问控制抛到风中并打开绑定到本地主机地址的TCP套接字(这样,只有本地机上的进程才能连接)

这样做有几个优点…例如,您现在可以让多个程序同时使用温度数据,而不必担心设备争用(因为只有温度服务器实际读取数据)。您甚至可以实现短期缓存以提供更快的响应


另外,请注意还有一个。

pigpio当然可以读取DHT11/22等传感器

有两个使用守护进程的示例(这意味着不需要root权限)

用C语言编写,自动检测模型

用Python编写,只处理DHT22(github有一个DHT11示例)


这两个例子都可能给出可靠的结果(读取错误率优于1/10,而不是差于1/10)。

回答得很好,谢谢。就短期而言,我刚刚设置了一个脚本,在root的crontab中运行,该脚本将温度数据写入数据库,我已经决定只读取数据库中的最新数据以显示在网页上,以及一些显示最近一段时间趋势的方便图表。@johnny5我真的没有其他选择,你有什么建议?太好了,这些看起来很有前途@johnny5是不是只是我没有在raspberry pi stackexchange中发布您有异议的内容?