웹 인터페이스를 통해 Python 스크립트 실행


15

GPIO 핀을 제어한다고 주장하는 많은 프로젝트를 보았지만 예를 들어 LED를 깜박일 수있는 것과 같은 약간 다른 것을 원합니다.

웹 인터페이스를 통해 라즈베리에서 "blink.py"와 같은 파이썬 스크립트를 클릭하여 실행할 수있는 시스템이 있습니까?

답변:


12

CGI 또는 다른 서버 측 스크립트를 사용하여 여러 가지 방법으로이를 수행 할 수 있습니다. 한 가지 문제는 GPIO 핀에 대한 액세스 권한입니다. 깨끗한 해결책이없는 것 같습니다 . 현재 웹 서버를 실행하는 사용자에게 gpio 파일 을 숨기 거나 , 핀에 액세스 할 수있는 (suid) 프로그램을 호출 하거나, 메시지를 보낼 수있는 핀에 액세스 할 수있는 별도의 데몬 (신호, 파이프 )을 사용하는 것이 가장 쉽습니다. / socket, 기타 ipc ...).

"웹 인터페이스를 통해 파이썬 스크립트 실행"에 대해서는 web.py를 참조하십시오 . 아무 것도 할 수없는 단일 파일 독립형 "웹 서비스"를 작성할 수있는 매우 깔끔한 작은 모듈입니다. 이런 종류의 IME에 매우 편리합니다. 구성 또는 특수 소프트웨어가 필요하지 않습니다 (일반적인 python 설치 및 web.py 자체 제외). 파이썬에서 URL에 대한 핸들러를 작성하고 선택적으로 html 템플릿을 사용하여 실행하십시오. 올바른 포트에서 클라이언트 (브라우저, 다른 스크립트, wget ..)를 가리키면 작동합니다. :)

편집 : 새로운 프로젝트 발견, serpint 는 소켓 또는 가짜 문자 장치 인터페이스에서 gpio 를 흔들 수있는 것으로 보입니다.


4
플라스크 는 web.py와 유사합니다. 또한이 장고 아마 과잉이 프로젝트 - 더 많은 기능을 갖고있는 것 같아요.
— Frepa

erm, GPIO 액세스의 경우 사용자를 gpio 그룹에 추가하십시오. 또는 대부분의 사람들이 포트 80에 대해 루트로 서버를 시작하십시오. 플라스크 예제는 스크립트를 호출하거나 시간을 사용하여 전환 사이에 절전 모드를 추가 할 수 있습니다. 기본 기능은 OP에서 필요하지 않은 템플릿의 {{}}입니다.
— mckenzm 2016 년

업데이트 해 주셔서 감사합니다. 그러나 "erm"의 경우이 답변은 GPIO가 악명 높은 루트 인 2012 년의 답변입니다. 나는 지금 gpio 그룹이 있다는 것을 알았습니다. 환상적인 진보와 하드웨어에 대한 올바른 액세스 방법입니다.
— XTL

2

웹 개발로 시작하는 경우 Bottle을 살펴보십시오 . 병은 단일 파일 내에서 완전한 웹 프레임 워크라는 점에서 플라스크보다 간단합니다. 반면, Flask는 다른 라이브러리의 사운드 코드를 재사용하는 것을 목표로하므로보다 견고하지만 복잡 할 수 있습니다.

병이있는 Hello World는 다음과 같습니다.

from bottle import route, run, template

@route('/hello/:name')
def index(name='World'):
    return template('<b>Hello {{name}}</b>!', name=name)

run(host='localhost', port=8080)

다음과 같이 실행하십시오.

python HelloBottle.py

그리고 브라우저에서 엽니 다 : http://localhost:8080/hello/world


설정 다른 컴퓨터에서 웹 사이트를 사용할 수 있도록하는 방법 host에 0.0.0.0에 run방법. 위의 Hello World의 마지막 줄은 다음과 같아야합니다.

run(host='0.0.0.0', port=8080)

이제 다음과 같이 Pi의 IP 주소를 통해 웹 사이트에 액세스 할 수 있습니다. http://192.168.0.123:8080/hello/world

자세한 내용 은 배포 관련 병 설명서를 참조 하십시오.


Raspberry Pi에서 실행 curl http://localhost:8080/hello/world하면 예상 결과가 나타납니다. 그러나 LAN을 통해 일반 컴퓨터에서 액세스 할 수 있기를 원합니다. ifconfig내 IP 주소로 사용한 후 일반 컴퓨터의 다음 URL에서 연결을 설정할 수 없습니다 http://192.168.1.102:8080/hello/matthew. ` 192.168.1.102/home.php ' 에서 만든 다른 웹 페이지에 액세스 할 수 있습니다 . 내 병 페이지에 어떻게 할 수 있는지 알고 싶습니까?
— Matthew Moisen

home.php는 포트 80 (http)을 통해 암시 적으로 액세스됩니다. 포트에서 병을 실행 해보십시오. 포트가 성공하면 데스크탑과 파이 블로킹 포트 8080 사이에 방화벽이 없는지 확인하십시오.
— Bengt

내가 중 로컬 호스트 또는 0.0.0.0에 내 IP를 변경할 필요가 있다고 밝혀
— 마태 복음 Moisen


1

iPython Notebook을 설치하십시오.

rpi#> sudo apt-get install ipython-notebook ipython3-notebook

그런 다음 실행하십시오.

rpi#> ipython notebook

참고 : PC에서도 액세스 할 수 있습니다.
rpi #> ipython notebook --ip = 10.0.0.7
# here 10.0.0.7 은 내 RPi IP입니다.
# 브라우저의 다른 컴퓨터에서 다음을 입력합니다 :
http://10.0.0.7:8888

여기에 이미지 설명을 입력하십시오

당신은 이것을 볼 것입니다 :

여기에 이미지 설명을 입력하십시오

그런 다음 새 노트북을 만들고 거기에서 코드를 실행하십시오.

여기에 이미지 설명을 입력하십시오

방법 시험 :

여기에 이미지 설명을 입력하십시오

서지:

http://ipython.org/
http://jupyter.org/
https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/
http://maxembedded.com/2014/07/ 라즈베리 파이 -gpio- 파이썬 사용하기 /

유튜브 : https://www.youtube.com/watch?v=cJuF4IDMuLY

매우 중요:

음악은 mps-youtube를 통해 Linux 화면 프로그램의 백그라운드에서 RPi에서 실행됩니다.

rpi#> sudo apt-get install python3-pip
rpi#> sudo pip3 install --upgrade mps-youtube  
rpi#> sudo pip3 install --upgrade https://github.com/mps-youtube/pafy/archive/develop.zip
rpi#> mpsyt # to start it
    # configure mpsyt to show video, player.
    mpsyt#> set show_video True
    mpsyt#> set player omxplayer
    mpsyt#> set search_music False
    mpsyt#> . lindsey stirling
    mpsyt#> 2 # to play song from a list.

행운을 빕니다!


귀하의 질문을 개선 할 수 있습니다 ... 왜 파이썬 노트북을 설치합니까? 정확히 무엇을합니까? 잠재적 인 보안 문제 (예 : 인터넷에 공개 된 상태)에 대해 반드시 언급해야합니다.
— Jacobm001

오늘이 아니라 @ Jacobm001. 필요한 경우 하단의 참고 문헌을 따르십시오.
— Vitalie Ghelbert

0

1
언젠가 링크가 사라지거나 내용이 변경 될 경우를 대비하여 답변에 튜토리얼을 요약하십시오.
— tlhIngan

정보가없는 링크 전용 답변과 관련하여 새로운 정책을 시도하고 있습니다. 이 게시물이 최소한의 답변으로 볼 수있는 정보를 포함하도록 편집되지 않은 경우 48 시간 내에 커뮤니티 위키로 변환되어 커뮤니티에서 수정하는 것을 단순화합니다.
— Steve Robillard
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.