पायथन स्क्रिप्ट के माध्यम से वेब इंटरफ़ेस निष्पादित करें


15

मैंने बहुत सी परियोजनाएं देखी हैं जो GPIO पिन को नियंत्रित करने का दावा करती हैं, लेकिन मैं कुछ अलग करना चाहता हूं, उदाहरण के लिए, एक एलईडी को पलक झपकाने में सक्षम होना।

क्या कोई ऐसा सिस्टम है, जहां वेब इंटरफ़ेस के माध्यम से, मैं एक अजगर स्क्रिप्ट पर क्लिक कर सकता हूं और क्रियान्वित कर सकता हूं, उदाहरण के लिए मेरे रास्पबेरी पर "ब्लिंकडोमो"।

जवाबों:


12

आप CGI या अन्य सर्वर साइड स्क्रिप्ट का उपयोग करके किसी भी संख्या में ऐसा कर सकते हैं। एक समस्या GPIO पिन तक पहुँचने की अनुमति होगी। वहाँ एक साफ समाधान नहीं लगता है । वर्तमान में वेब सर्वर चलाने वाले उपयोगकर्ता के लिए gpio फ़ाइलों को चेस करना सबसे आसान हो सकता है, एक (suid) प्रोग्राम को कॉल करें जो पिन तक पहुंच सकता है या पिनों तक पहुंच के साथ एक अलग डेमॉन है जिसे आप संदेश भेज सकते हैं (सिग्नल, पाइप) / सॉकेट, अन्य ipc ...)।

"एक वेब इंटरफेस के माध्यम से एक अजगर स्क्रिप्ट को निष्पादित करने के लिए", आप web.py को देखना चाहते हैं । यह बहुत साफ-सुथरा छोटा मॉड्यूल है जो आपको सिंगल फाइल स्टैंडअलोन "वेब सेवा" लिखने की सुविधा देता है जो कुछ भी कर सकता है। इस तरह की चीज़ के लिए बहुत आसान है IME। प्रभावी रूप से किसी भी कॉन्फ़िगरेशन या विशेष सॉफ़्टवेयर की आवश्यकता नहीं है (इसके अलावा सामान्य अजगर स्थापित करें और स्वयं web.py)। बस अजगर में यूआरएल के लिए हैंडलर लिखते हैं, वैकल्पिक रूप से html टेम्पलेट्स और रन के साथ। एक क्लाइंट (ब्राउज़र, अन्य स्क्रिप्ट, wget ..) को सही पोर्ट पर इंगित करें और यह बस काम करता है। :)

संपादित करें: एक नया प्रोजेक्ट देखा गया, सर्पिन सॉकेट या संभवतः नकली चार डिवाइस इंटरफ़ेस से जीपीओ को बंद करने की अनुमति देता है।


4
फ्लास्क web.py के समान लगता है। वहाँ Django भी है जो अधिक सुविधाओं के लिए लगता है - शायद इस परियोजना के लिए overkill।
फ़्रीपा

erm, GPIO पहुंच के लिए, केवल उपयोगकर्ता को gpio समूह में जोड़ें। या सर्वर को रूट के रूप में शुरू करें, जो ज्यादातर लोग वैसे भी पोर्ट 80 के लिए करते हैं। फ्लास्क उदाहरण स्क्रिप्ट बुला सकते हैं या टॉगल के बीच नींद जोड़ने के लिए समय का उपयोग कर सकते हैं। मुख्य विशेषता {{}} टेम्प्लेट्स में है जो मुझे संदेह है कि ओपी को ज़रूरत नहीं थी।
mckenzm

अद्यतन के लिए धन्यवाद। "Erm" के लिए, हालांकि, यह उत्तर 2012 से है जब GPIO केवल कुख्यात जड़ थे। मुझे लगता है कि अब एक gpio समूह है, जो शानदार प्रगति और हार्डवेयर तक पहुँचने का एक अधिक सही तरीका है।
XTL

2

यदि आप अभी वेबडेवलपमेंट के साथ शुरुआत कर रहे हैं, तो बोतल पर एक नज़र डालें । बोतल इस अर्थ में फ्लास्क से अधिक सरल है कि यह एक एकल फ़ाइल के भीतर एक पूर्ण वेब-फ्रेमवर्क है। इसके विपरीत, फ्लास्क का उद्देश्य विभिन्न पुस्तकालयों से ध्वनि कोड का पुन: उपयोग करना है और इसलिए यह अधिक ठोस हो सकता है, बल्कि अधिक जटिल भी हो सकता है।

यहाँ बोतल के साथ हैलो वर्ल्ड है:

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विधि में सेट करें । उपरोक्त हैलो वर्ल्ड की अंतिम पंक्ति को तब पढ़ना चाहिए:

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

अब आपको अपनी वेबसाइट को इस तरह से Pi के IP पते तक पहुंचाने में सक्षम होना चाहिए: http://192.168.0.123:8080/hello/world

देखें तैनाती पर बोतल प्रलेखन अधिक जानकारी के लिए।


मेरे रास्पबेरी पाई पर, यदि मैं निष्पादित करता curl http://localhost:8080/hello/worldहूं तो मुझे अपेक्षित परिणाम मिलते हैं। हालाँकि मैं अपने नियमित कंप्यूटर पर लैन पर इस तक पहुँचने में सक्षम होना चाहता हूँ। ifconfigमेरे आईपी पते का उपयोग करने के बाद , मेरे नियमित कंप्यूटर पर निम्न URL कनेक्शन स्थापित करने में असमर्थ है http://192.168.1.102:8080/hello/matthew:। मैं ` 192.168.1.102/home.php ' पर बने एक अन्य वेबपेज का उपयोग करने में सक्षम हूं । क्या आपको पता होगा कि मैं अपने बोतल पृष्ठ पर कैसे जा सकता हूं?
मैथ्यू Moisen

आपका home.php पोर्ट 80 के माध्यम से आसानी से एक्सेस किया जाता है (http) उस पोर्ट पर बोतल चलाने की कोशिश करें और यदि वह सक्सेस हो जाए, तो सुनिश्चित करें कि आपके डेस्कटॉप और पीआई ब्लॉकिंग पोर्ट 8080 के बीच कोई फायरवॉल न हो।
Bengt

यह पता चला है कि मुझे अपने आईपी को या तो लोकलहोस्ट या 0.0.0.0 में बदलने की जरूरत है
मैथ्यू मोइसन


1

IPython नोटबुक स्थापित करें।

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/ का उपयोग कर-रास्पबेरी पीआई-GPIO का उपयोग-अजगर /

Youtube: https://www.youtube.com/watch?v=cJuF4IDMuLY

बहोत महत्वपूर्ण:

संगीत आरपीआई पर पृष्ठभूमि में mux-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.

सौभाग्य!


आपके प्रश्न में सुधार किया जा सकता है ... पायथन नोटबुक क्यों स्थापित करें? यह वास्तव में क्या करता है? इसे संभावित सुरक्षा चिंताओं के बारे में निश्चित रूप से टिप्पणी करनी चाहिए (जैसे कि इसे इंटरनेट पर खुला छोड़ दें)।
Jacobm001

@ जैकबम001, आज नहीं, अभी नहीं। यदि आवश्यक हो, तो नीचे दिए गए ग्रंथ सूची का पालन करें।
विटाली घेलबर्ट

0

यहाँ एक ट्यूटोरियल है कि इसे कैसे प्राप्त किया जा सकता है: https://roderickvella.wordpress.com/2017/01/04/control-a-separate-running-script-from-a-web-server-python-rpi/


1
यदि किसी दिन लिंक गायब हो जाता है या फिर कन्टैंट बदल जाता है, तो कृपया अपने उत्तर में ट्यूटोरियल को संक्षेप में प्रस्तुत करें।
tlhIngan

हम यहां केवल सूचना-रहित लिंक के संबंध में एक नई नीति का प्रयास कर रहे हैं। यदि इस पोस्ट को ऐसी जानकारी शामिल करने के लिए संपादित नहीं किया गया है जो कि एक उत्तर के रूप में खड़ी हो सकती है, लेकिन न्यूनतम, 48 घंटों में समुदाय द्वारा इसे सही करने के लिए इसे सामुदायिक विकी में परिवर्तित किया जाएगा।
स्टीव रोबिलार्ड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.