ฉันเห็นโครงการจำนวนมากที่อ้างว่าควบคุมพินของ GPIO แต่ฉันต้องการบางสิ่งที่แตกต่างออกไปเล็กน้อยเพื่อให้สามารถกะพริบไฟ LED
มีระบบออกจากที่นั่นผ่านเว็บอินเตอร์เฟสฉันสามารถคลิกและรันสคริปต์ python เช่น "blink.py" บนราสเบอร์รี่ของฉัน
ฉันเห็นโครงการจำนวนมากที่อ้างว่าควบคุมพินของ GPIO แต่ฉันต้องการบางสิ่งที่แตกต่างออกไปเล็กน้อยเพื่อให้สามารถกะพริบไฟ LED
มีระบบออกจากที่นั่นผ่านเว็บอินเตอร์เฟสฉันสามารถคลิกและรันสคริปต์ python เช่น "blink.py" บนราสเบอร์รี่ของฉัน
คำตอบ:
คุณสามารถทำให้สิ่งนี้เกิดขึ้นได้หลายวิธีโดยใช้ CGI หรือสคริปต์ฝั่งเซิร์ฟเวอร์อื่น ๆ ปัญหาหนึ่งคือการอนุญาตให้เข้าถึงหมุด GPIO มีไม่ดูเหมือนจะเป็นทางออกที่สะอาด ในปัจจุบันอาจเป็นการง่ายที่สุดในการchown ไฟล์ gpioไปยังผู้ใช้ที่เรียกใช้เว็บเซิร์ฟเวอร์เรียกโปรแกรม (suid) ที่สามารถเข้าถึงหมุดหรือมี daemon แยกต่างหากพร้อมการเข้าถึงพินที่คุณสามารถส่งข้อความไปยัง (สัญญาณไปป์ / socket, ipc อื่น ๆ ... )
สำหรับ "สคริปต์หลามผ่านเว็บอินเตอร์เฟส" คุณอาจต้องการที่จะดูที่web.py มันเป็นโมดูลเล็ก ๆ ที่เรียบร้อยมากที่ให้คุณเขียน "บริการเว็บ" แบบสแตนด์อโลนไฟล์เดียวที่สามารถทำอะไรได้ มีประโยชน์มากสำหรับ IME ประเภทนี้ ต้องไม่มีการกำหนดค่าอย่างมีประสิทธิภาพหรือซอฟต์แวร์พิเศษ (นอกเหนือจากการติดตั้งหลามทั่วไปและ web.py ตัวเอง) เพียงแค่เขียนตัวจัดการสำหรับ url ใน python หรืออาจเลือกด้วยเทมเพลต html และเรียกใช้ ชี้ไคลเอ็นต์ (เบราว์เซอร์สคริปต์อื่น ๆ wget .. ) ที่พอร์ตที่ถูกต้องและใช้งานได้ :)
แก้ไข: โครงการใหม่พบserpintดูเหมือนว่าจะอนุญาตให้ gpio wiggling จากซ็อกเก็ตหรืออุปกรณ์อินเตอร์เฟซที่เป็นไปได้ปลอม
หากคุณเป็นเพียงการเริ่มต้นด้วย webdevelopment, มีลักษณะที่ขวด ขวดง่ายกว่าขวดในแง่ที่ว่ามันเป็นเว็บเฟรมเวิร์กที่สมบูรณ์ภายในไฟล์เดียว ในทางตรงกันข้าม 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)
ตอนนี้คุณควรจะสามารถเข้าถึงเว็บไซต์ของคุณผ่านที่อยู่ IP ของ Pi เช่นนี้: http://192.168.0.123:8080/hello/world
ดูเอกสารประกอบการใช้ขวดสำหรับรายละเอียดเพิ่มเติม
curl http://localhost:8080/hello/world
ฉันจะได้รับผลลัพธ์ที่คาดหวัง อย่างไรก็ตามฉันต้องการที่จะสามารถเข้าถึงสิ่งนี้บนคอมพิวเตอร์ปกติของฉันผ่านทาง LAN หลังจากที่ใช้ifconfig
สำหรับที่อยู่ IP ของฉัน URL http://192.168.1.102:8080/hello/matthew
ต่อไปนี้ในคอมพิวเตอร์ปกติของฉันไม่สามารถที่จะสร้างการเชื่อมต่อ: ฉันสามารถเข้าถึงหน้าเว็บอื่นที่ฉันทำที่ ` 192.168.1.102/home.php ' คุณมีความคิดเกี่ยวกับวิธีที่ฉันสามารถไปที่หน้าขวดของฉันได้อย่างไร
0.0.0.0
ขวดรับฟังที่อยู่ใด ๆรวมถึง Pi
rpi#> sudo apt-get install ipython-notebook ipython3-notebook
จากนั้นเรียกใช้:
rpi#> ipython notebook
หมายเหตุ: คุณสามารถเข้าถึงได้จากพีซี:
rpi #> โน้ตบุ๊ก ipython --ip = 10.0.0.7
# ที่นี่ 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/ โดยใช้ราสเบอร์รี่-Pi-GPIO โดยใช้หลาม /
Youtube: https://www.youtube.com/watch?v=cJuF4IDMuLY
เพลงกำลังทำงานบน RPi เป็นพื้นหลังในโปรแกรมหน้าจอ linux ผ่าน mps-youtube
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.
โชคดี!
นี่คือการสอนวิธีการทำให้สำเร็จ: https://roderickvella.wordpress.com/2017/01/04/control-a-separate-running-script-from-a-web-server-python-rpi/ https://roderickvella.wordpress.com/2017/01/04