웹 인터페이스를 통해 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


설정 다른 컴퓨터에서 웹 사이트를 사용할 수 있도록하는 방법 host0.0.0.0run방법. 위의 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.