【问题标题】:Sensors monitoring using Python on Rapsberry在 Raspberry 上使用 Python 进行传感器监控
【发布时间】:2018-12-15 01:07:30
【问题描述】:

我需要一些帮助来找到编写 Raspberry python 程序的最佳方法。

在这个程序中,我需要监控来自连接到树莓派的各种传感器的几个值,并通过 pyqt GUI 与这些值进行交互。 GUI 和传感器驱动程序必须完全分开。

为此,我正在考虑在 GUI 和传感器之间制作和使用“变量管理器”对象,作为“缓冲区”或类似的东西。通过使用线程和锁,传感器将不断更新变量管理器(在相应的驱动程序中使用 while 循环),而 GUI 将在我需要时查询某些值。

如果能够从 gui 向传感器发送一些命令也不错,但我不知道如何在此配置中执行此操作。

您认为这可以正常工作吗?还有其他更有效/更适合这样做的方法吗?

提前非常感谢您!

【问题讨论】:

    标签: python multithreading pyqt raspberry-pi iot


    【解决方案1】:

    我会这样做:

    [物理传感器] --> [Python 传感器监视器] --> [PubNub / 类似]

    # Not tested, probably not good
    from threading import Thread
    from pubnub import PubNub
    
    class SensorMonitor(threading.Thread):
      def __init__(self):
        self.pubnub = PubNub("demo", "demo")
        self.switch = True
    
      def _on_receive(self, sensor_data):
        # can also do async() with a callback - https://www.pubnub.com/docs/python/data-streams-publish-and-subscribe
        self.pubnub.publish().channel('raw_data').message(sensor_data).sync()
    
      @staticmethod
      def _poll_sensor(address):
        data = get_sensor_data(address)
        return data
    
      def run(self):
        while self.switch:
          _data = poll_sensor('my_address')
          self._on_receive(_data)
          time.sleep(1)
    
      def terminate(self):
        self.switch = False
    
    monitor = SensorMonitor()
    monitor.start()
    

    然后,您的 GUI 可以使用 PubNub 消费者在数据流式传输时获取数据并检查/执行操作。你可以在这里使用 JS 或 Python!

    【讨论】:

    • 至于传感器的命令 - 您可以从 GUI 将这些直接发送到 PubNub 系统,让 Python 读取它们并实时执行。您将在 __init__ 块中向您的新 sensor_config 频道添加订阅,并为如何处理配置消息添加回调。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 2013-07-15
    相关资源
    最近更新 更多