Я создаю приложение 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