【问题标题】:How to run RPI.GPIO module in AWS Greengrass Core on a Raspberry PI 4如何在 Raspberry PI 4 上的 AWS Greengrass Core 中运行 RPI.GPIO 模块
【发布时间】:2021-09-16 09:25:29
【问题描述】:

寻求使用 RPi.GPIO 和 Raspberry Pi 4 的帮助。

我有一个简单的 Greengrass Lambda 函数,它试图使用 RPi.GPIO 模块从电阻式土壤湿度传感器收集数据。我的 Lambda 函数依赖于 RPi.GPIO 模块的 Python3.7 和 0.7.0 版本。我已使用简化的 Python 脚本验证了 GPIO 模块已安装并在 Greengrass 之外的设备上正常工作。

 import RPi.GPIO as GPIO
 import RPIO
 import time

 channel = 21
 GPIO.setmode(GPIO.BCM)
 GPIO.setup(channel, GPIO.IN)

 def callback(channel):
   if GPIO.input(channel):
     print("No water detected")
   else:
     print("Water detected")

 GPIO.add_event_detect(channel, GPIO.BOTH, bouncetime=300) 
 GPIO.add_event_callback(channel, callback)

 while True:
   time.sleep(1)

Greengrass Lambda 可以通过 IoT 组中定义的本地资源访问本地 /dev/gpiomem 文件系统。我使用的是经典版 (V1)。

但是,当我尝试部署 Lambda 函数时,我收到以下错误:

-lambda_runtime.py:382,由于异常无法初始化Lambda运行时:该模块只能在树莓派上运行!

我在我的 RPi 上安装了两个版本的 Python(2.7.16 和 3.7.3,Greengrass 运行时使用 3.7)并且已验证两者都具有 0.7.0 版本的 RPi.GPIO 模块。

我的 Lambda 函数显式导入模块

import logging
import platform
import sys
import RPi.GPIO as GPIO
import time

from threading import Timer
import greengrasssdk
   

有没有人遇到过这个问题,您会推荐什么解决方案?

【问题讨论】:

    标签: python raspberry-pi aws-iot aws-iot-greengrass


    【解决方案1】:

    我有同样的问题。问题是 greengrass 用户无权访问 gpio 引脚。

    只需将 ggc_user 添加到 gpio 组即可。您可以通过在 Raspberry Pi 上编辑 /etc/group 来做到这一点:

    gpio:x:997:pi,ggc_user
    

    【讨论】:

      【解决方案2】:

      在遇到完全相同的问题后我一直在测试

      我尝试的一件事是让 Lambda(容器)在 Lambda 配置中访问 SYS,此时我遇到了另一个与覆盖 fs 问题有关的不同错误。

      我发现我在 Greengrass 1.10.1(我运行的是 1.10.0)中遇到了覆盖 fs 问题的修复程序,因此我将 Greengrass(使用 OTA 更新作业)更新到 1.11.3,并在完成GG更新一切又开始工作了:-)

      它可能不需要 SYS 访问权限,因为我还没有把它改回来,看看是否只是需要 Greengrass 更新。

      已重新测试并确认它确实需要容器的 /sys 访问权限

      关于信息,在提出解决方案之前,我尝试了各种方法来执行通常的 apt-get 更新/升级并确保 RPi.GPIO 是最新的,但这些都没有任何区别。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-01-21
        • 2023-03-08
        • 1970-01-01
        • 2021-05-08
        • 2021-03-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多