কীভাবে আরপিআই.জিপিআইও লাইটটিপিডি সহ অজগর সিজিআই স্ক্রিপ্টে অন্তর্ভুক্ত করবেন?


13

আমি সম্প্রতি সিজিআই হয়ে লাইটটিপিডি দিয়ে কাজ করার জন্য পাইথন সেটআপ করেছি (দেখুন এখানে )। তবে আমি যে মুহুর্তে আরপিআই.জিপিআইও অন্তর্ভুক্ত করব , স্ক্রিপ্টটি কার্যকর করা বন্ধ করে দেয় (আমি ধরে নিচ্ছি যে কোনও এইচটিএমএল আউটপুট পায় না), তবে ত্রুটি লগটিতে কোনও ত্রুটি আউটপুট নেই /var/log/lighttpd/error.log

gpio.py

import RPi.GPIO as GPIO

print "<html>"
print "\t<head>"
print "\t\t<title>GPIO</title>"
print "\t</head>"
print "\t<body>"
print "\t\t<p>"
print "\t\t\tGPIO #17 status: "
print "\t\t</p>"
print "\t</body>"
print "</html>"

স্ক্রিপ্টটি কার্যকর হচ্ছে না কেন? এটা কি অনুমতিের কারণে? অবশ্যই, গ্রন্থাগার সহ কোনও বিশেষ অনুমতির দরকার নেই? স্ক্রিপ্টে বা ত্রুটি লগটিতে কেন কোনও ত্রুটি আউটপুট নেই?


এটি অন্তর্ভুক্ত ফাইলের বা ফাইলগুলির অবস্থানের নীচের অনুমতি / মালিকানার এক বা উভয়ই হতে পারে। সমস্যাটি সংশোধন করার জন্য আপনি যে ফাইলটি চালনার চেষ্টা করছেন সেভাবে অন্তর্ভুক্ত ফাইলটিকে একই ডিরেক্টরিতে স্থানান্তরিত করার চেষ্টা করুন এবং নিশ্চিত করুন যে এটি যে স্ক্রিপ্টটি আপনি চালাচ্ছেন তার একই ব্যবহারকারীর মালিকানা রয়েছে। যদি এটি সমস্যার সমাধান করে তবে আমাদের জানান এবং আমরা আপনাকে অনুমতি / মালিকানা সেট করতে এবং অন্তর্ভুক্ত অনুসন্ধানের পথটি নির্ধারণ করতে আরও এগিয়ে যেতে পারি।
স্টিভ রবিলার্ড

আমি পাইথনের একজন নবাগত, RPi.GPIO একটি আসল ফাইল (এটি কোথায়)? \ সিজি-বিন \ জিপিও.পি পি-পি-র মালিকানাধীন এবং www ডিরেক্টরি-র জন্য অনুমতিগুলি হ'ল www-ডেটা: www-ডেটা।
মার্ক ইঙ্গ্রাম

ঠিক আছে, জিপিআইও পিনগুলি নিয়ন্ত্রণ করার জন্য যে কোনও ফাইলের প্রয়োজন কয়েকটি ফাইল রুট হিসাবে চালানো দরকার, (যা ওয়েবের মাধ্যমে সম্পন্ন করার পরে একটি সুরক্ষা গর্ত খুলবে)। লাইটটিপিডি এবং সিজিআইকে রুট হিসাবে চালানোর চেষ্টা করার আগে কমান্ড লাইন থেকে স্ক্রিপ্টটি কাজ করার জন্য যদি আপনার কোনও সমস্যার ডিবাগ করা সহজ হয় তবে এই বলেছিলেন Having ইনস্টল করার জন্য RPi.GPIO মডিউল এই নির্দেশাবলী অনুসরণ learn.adafruit.com/... । আপনার কি কোনও ইলেক্ট্রনিক্স অভিজ্ঞতা আছে? আপনি জিপিআইও পিনগুলির সাথে কী করতে যাচ্ছিলেন
স্টিভ রবিলার্ড

1
আহা, আমি এটি এখনই পরীক্ষা করেছি এবং এর একটি সাধারণ স্ক্রিপ্টের জন্য import RPi.GPIO as GPIOমূলের মূল সুবিধার দরকার নেই! এখন আমি অনুমান করি যে মূল হিসাবে চালানোর জন্য আমার লাইটটিপিডি হওয়া দরকার (এটি কেবল একটি হোম প্রকল্প)।
মার্ক ইনগ্রাম

উত্তর:


6

'RPI.GPIO আমদানি করার' আগে আপনি যুক্ত করার চেষ্টা করতে পারেন:

import sys 
sys.stderr = sys.stdout
try:
    import RPi.GPIO as GPIO
except Exception as e:
    print e

এটি একটি ত্রুটি নির্ণয় করতে সহায়তা করতে পারে।

এবং এইচটিএমএল আউটপুট দেওয়ার আগে এই লাইনগুলি যুক্ত করুন:

print "Content-Type: text/html"     # HTML is following
print                               # blank line, end of headers

Http://docs.python.org/library/cgi.html দেখুন


6

ওকার্তানভের পরামর্শ অনুসরণ করার পরে, আমি আবিষ্কার করেছি যে আপনি আসলে RPi.GPIOপাইথন সিজিআই স্ক্রিপ্টে ব্যবহার করতে পারবেন না কারণ এর রুট অ্যাক্সেস প্রয়োজন। আমি ওয়্যারিংপিরgpio অংশ হিসাবে অন্তর্ভুক্ত কমান্ড লাইন অ্যাপ্লিকেশনটিতে কল করে সমস্যার সমাধান করেছি , এটি একটি অ-রুট অ্যাকাউন্ট থেকে কল করা যেতে পারে।

# Read the GPIO pin using the gpio application

import subprocess as s

def ReadGpio(pin) :
    process = s.Popen(["/usr/local/bin/gpio", "-g", "read", pin], stdout = s.PIPE)
    data, _ = process.communicate()

    data = str.replace(data, \r”, “”)
    data = str.replace(data, \n”, “”)

    return data

0

# অর্থ পাইথনে একটি মন্তব্য

শুধু ব্যবহার

import RPi.GPIO as GPIO

এখন আপনাকে অনুমতিগুলির সমস্যাটি সমাধান করতে হবে


দুঃখিত যে এটি আমার ভুল ছিল, আমি আমার কোডটি অনুলিপি করেছিলাম যা সেই লাইনে মন্তব্য করেছিল। আমি এটিকে মূল প্রশ্ন থেকে সরিয়েছি।
মার্ক ইনগ্রাম

0

এই টিউটোরিয়ালটি পাইথনের একটি বিশেষ অনুলিপি তৈরি করার এবং এটির মতো রুট ব্যবহারকারীর সুবিধাদি দেওয়ার পরামর্শ দেয়:

//check current version
pi@raspberrypi /var/www $ ls -l /usr/bin/python
lrwxrwxrwx 1 root root 9 Jun  6  2012 /usr/bin/python -> python2.7

//copy and chmod
pi@raspberrypi /var/www $ sudo cp /usr/bin/python2.7 /usr/bin/pythonRoot
pi@raspberrypi /var/www $ sudo chmod u+s /usr/bin/pythonRoot

//check that new version has more priveledges
pi@raspberrypi /var/www $ ls -l /usr/bin/pythonRoot
-rwsr-xr-x 1 root root 2674528 Mar 17 18:16 /usr/bin/pythonRoot

এবং তারপরে, আপনার সিজিআই তৈরি করতে যান sudo nano /etc/lighttpd/lighttpd.confএবং যেখানেই থাকুন সেখানে সন্ধান করুন আপনি .pyযেখান থেকে ফাইল পরিচালনা /usr/bin/python/করছেন এবং নতুন /usr/bin/pythonRoot/

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.