Web arayüzü üzerinden Python Komut Dosyalarını Yürütme


15

GPIO pinlerini kontrol ettiğini iddia eden birçok proje gördüm, ancak örneğin bir LED'in yanıp sönmesini sağlamak için biraz farklı bir şey istiyorum.

Orada bir sistem var, ben bir web arayüzü aracılığıyla, bir python komut dosyası, örneğin benim ahududu "blink.py" çalıştırabilir ve yürütmek.

Yanıtlar:


12

Bunun CGI veya diğer sunucu tarafı komut dosyalarını kullanarak herhangi bir şekilde gerçekleştirebilirsiniz. Bir sorun GPIO pinlerine erişim izinleri olacaktır. Temiz bir çözüm yok gibi görünüyor . Şu anda web sunucusunu çalıştıran kullanıcıya gpio dosyalarını chown etmek, pinlere erişebilen bir (suid) programı çağırmak veya mesaj gönderebileceğiniz pinlere (sinyal, boru) erişimi olan ayrı bir arka plan programına sahip olmak en kolay yol olabilir. / socket, diğer ipc ...).

"Bir web arayüzü üzerinden bir python betiği yürütmek" için, web.py dosyasına bakmak isteyebilirsiniz . Her şeyi yapabilen tek bir dosya bağımsız "web hizmeti" yazmanızı sağlayan çok temiz küçük bir modül. IME bu tür şeyler için çok kullanışlı. Etkin bir yapılandırma veya özel yazılım gerektirmez (yaygın python kurulumu ve web.py'nin kendisi dışında). URL'ler için işleyicileri python'da, isteğe bağlı olarak html şablonlarıyla yazın ve çalıştırın. Doğru bağlantı noktasında bir istemciyi (tarayıcı, diğer komut dosyası, wget ..) işaretleyin ve çalışır. :)

Düzenleme: Benekli yeni bir proje, serpint bir soket veya muhtemelen sahte char cihaz arabiriminden kıpır kıpır gpio izin veriyor gibi görünüyor.


4
şişesi web.py'ye benziyor. Orada da Django muhtemelen overkill bu proje için - daha fazla özellik var gibi gözüküyor.
Frepa

erm, GPIO erişimi için kullanıcıyı gpio grubuna ekleyin. Ya da sunucuyu, çoğu insanın bağlantı noktası 80 için zaten yaptığı kök olarak başlatın. Flask örnekleri komut dosyaları çağırabilir veya geçişler arasında uyku eklemek için zaman kullanabilir. OP'nin ihtiyaç duymadığından şüphelendiğim şablonlarda ana özellik {{}}.
mckenzm

Güncelleme için teşekkürler. Yine de "erm" için bu cevap, 2012'de GPIO'ların sadece kötü şöhretli olduğu zamana aittir. Şimdi gpio grubu olduğunu görüyorum, bu harika bir ilerleme ve donanıma erişmenin daha doğru bir yolu.
XTL

2

Sadece Ağ Geliştirme ile başlıyorsanız, bir göz Şişe . Şişe, tek bir dosyada eksiksiz bir web çerçevesi olması açısından şişeden daha basittir. Buna karşılık, Flask ses kodlarını farklı kütüphanelerden yeniden kullanmayı amaçlamaktadır ve bu nedenle daha sağlam, ancak daha karmaşık olabilir.

İşte Şişeyle Merhaba Dünya:

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)

Şununla çalıştır:

python HelloBottle.py

Ve bir tarayıcıda açın: http://localhost:8080/hello/world


Belirlenen diğer bilgisayarlar adresinin web kullanılabilir hale getirmek için hostiçin 0.0.0.0de runyöntemle. Yukarıdaki Merhaba Dünya'nın son satırı şöyle olmalıdır:

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

Artık web sitenize Pi'nin IP adresi üzerinden şu şekilde erişebilmelisiniz: http://192.168.0.123:8080/hello/world

Daha fazla ayrıntı için şişenin yerleştirilmesine ilişkin dokümantasyona bakın.


Raspberry Pi'mde, çalıştırırsam curl http://localhost:8080/hello/worldbeklenen sonuçları alırım. Ancak, lan üzerinden normal bilgisayarımda bu erişmek istiyorum. Kullandıktan sonra ifconfigbenim bir IP adresi için, benim normal bilgisayarda aşağıdaki URL bağlantı kurmak yapamamaktadır: http://192.168.1.102:8080/hello/matthew. 192.168.1.102/home.php adresinde yaptığım başka bir web sayfasına erişebiliyorum . Şişe sayfama nasıl yapabileceğim hakkında bir fikriniz var mı?
Matthew Moisen

Home.php'nize, 80 (http) bağlantı noktası üzerinden sorunsuz bir şekilde erişilir ve bu bağlantı noktasında şişe çalıştırmayı deneyin ve başarılı olursa, masaüstünüzle pi arasında 8080 bloğu bağlantı noktası arasında Güvenlik Duvarı olmadığından emin olun.
Bengt

IP
adresimi


1

İPython Notebook'u yükleyin.

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

Sonra çalıştırın:

rpi#> ipython notebook

Not: Bir PC'den de erişebilirsiniz:
rpi #> ipython notebook --ip = 10.0.0.7
# burada 10.0.0.7 benim RPi IP'im.
# tarayıcıdaki başka bir bilgisayardan yazıyorum:
http://10.0.0.7:8888

resim açıklamasını buraya girin

Bunu göreceksiniz:

resim açıklamasını buraya girin

Ardından yeni bir not defteri oluşturun ve kodunuzu orada çalıştırın:

resim açıklamasını buraya girin

Yöntem testi:

resim açıklamasını buraya girin

Kaynakça:

http://ipython.org/
http://jupyter.org/
https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/
http://maxembedded.com/2014/07/ kullanarak-ahududu-pi-GPIO-python kullanırken /

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

Çok önemli:

Müzik mps-youtube üzerinden linux ekran programında arka planda RPi üzerinde çalışıyor.

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.

İyi şanslar!


Sorunuz geliştirilebilir ... Python notebook'u neden yükleyelim? Bu tam olarak ne yapıyor? Potansiyel güvenlik endişeleri hakkında kesinlikle yorum yapmalıdır (internete açık bırakmak gibi).
Jacobm001

@ Jacobm001, bugün değil, şimdi değil. Gerekirse, alttaki Kaynakça'yı takip edin.
Vitalie Ghelbert

0

1
Bağlantının bir gün kaybolması veya kontrent değişmesi durumunda lütfen cevabınızdaki öğreticiyi özetleyin.
tlhIngan

Burada yalnızca bilgi içermeyen bağlantı yanıtlarıyla ilgili yeni bir politika deniyoruz. Bu gönderi, yanıt olarak durabilecek ancak en az düzeyde bilgi içerecek şekilde düzenlenmezse, 48 saat içinde topluluk tarafından düzeltilmesini kolaylaştırmak için Topluluk Wiki'ye dönüştürülür.
Steve Robillard
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.