Как запустить Neopixel без разрешений sudo для использования в приложении alexa - PullRequest
0 голосов
/ 08 января 2020

Я создаю приложение Alexa, которое позволит пользователю включать набор светодиодов NeoPixels (WS2812) с помощью простой голосовой команды. Приложение размещено на Raspberry Pi 4 и в настоящее время работает для включения выводов GPIO. Проблема, с которой я сталкиваюсь, заключается в том, что для включения NeoPixels требуется разрешение sudo, поэтому при использовании приложения alexa происходит просто ошибка, а не свет.

из-за того, что sudo необходим единственный способ запустить скрипт - это

sudo python3 LEDTest2.py

, который прекрасно работает

вот реализация для приложения alexa, включающая вывод GPIO и вызывающая python программа

@ask.intent('GpioIntent', mapping = {'status':'status'})
def Gpio_Intent(status,room):
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BCM)    
    GPIO.setup(17,GPIO.OUT)
    if status in STATUSON:
        GPIO.output(17,GPIO.HIGH)
        LEDTest2.func() ###Problem Point###
        return statement('turning {} lights'.format(status))

Это прекрасно работает для включения вывода GPIO

Вот LEDTest2.fun c ()


import board
import neopixel
import time
pixels = neopixel.NeoPixel(board.D18,60)

def func():
    print("func() in LEDtest2.py")
    pixels.fill((255, 197, 143))
    time.sleep(5)
    pixels.fill((0,0,0))

if __name__ == "__main__": #same as file one
    print("LEDtest2.py is being run directly")
    for x in range(2): 
        pixels.fill((0, 255, 0))
        time.sleep(.1)
        pixels.fill((0, 0, 0))
        time.sleep(.1)


else:
    print("LEDtest2.py is being imported into another module")

как я могу запустить это код без необходимости разрешения sudo? Есть ли альтернативный способ управления светодиодами WS2812 с использованием python?

Редактировать: просто чтобы уточнить, у меня нет проблем с выводами GPIO, это библиотека NeoPixel, которую нельзя использовать без разрешений sudo

...