analgins Posted February 17, 2017 Report Share Posted February 17, 2017 (edited) Sveiki! Man ir sekojoša problēma, neprotu atgūt datus ko atgriež python kods no konsoles. Situācijas apraksts: Raspberry PI ir pievienoti seši mitruma / temperatūras sensori un vēlos dzīvos datus atēlot admina panelī, lai nebūtu jāčeko tabulas kuras tiek atgriestas no RRD kā png faili. Lai nolasītu sensorus no konsoles jāizmanto adafruit komanda - sudo python Adafruit_DHT.py <sensora tips> <pins> tas viss forši strādā un konsolē atgriež šādu tekstu - Temp=19.7* Humidity=35.5% Viss ko es vēlos, lai šādu pašu tekstu man izmet php lapā, mocos ar shell_exec un exec, neatgriež neko līdzīgu tam ko no konsoles uztaisīju pat shell skriptu kurā ir python komanda uz failu - tas pats, 0 rezultāta, konsolē palaižot šo shell skriptu viss notiek.. Principā man trūkst variantu kā to korektāk izdarīt.. Saprotams ka katram sensoram taisit savu shell skritpu kuru izsaukt no php ir nekorekti, perfekti būtu to python komandrindu izpildīt no paša php un turpat ar echo parādīt šo vērtību.. Cerams esmu izteicies pietiekami skaidri un saprotami.. Ja kādam ir kas iesakāms tad lūdzu, principā der arī super nedroši varianti jo raspberrijs pēcāk dzīvos autonomi bez interneta.. Edited February 17, 2017 by analgins Quote Link to post Share on other sites
daGrevis Posted February 17, 2017 Report Share Posted February 17, 2017 Nu, kā mēģināji izsaukt ar `exec`? Vai bija errori, vai bija kkāds output? Quote Link to post Share on other sites
analgins Posted February 17, 2017 Author Report Share Posted February 17, 2017 nē, nebija kekāda outputa, rekur rindiņa $output = exec('python.sh'); Quote Link to post Share on other sites
waplet Posted February 17, 2017 Report Share Posted February 17, 2017 https://devdocs.io/php/function.exec Quote Link to post Share on other sites
analgins Posted February 17, 2017 Author Report Share Posted February 17, 2017 (edited) Es neesmu spēcīgs iekš php, dokumentāciju lasīju, to uzgāju vienā no googles rezultātiem, bet man nelīp kopā tas kods, nesaprotu kur ir problēma. Patreiz iekš php faila ir sekojošais <?php $out = array(); echo exec('python.sh',$out); echo $out; ?> iekš python.sh ir sekojošais sudo python /home/pi/Adafruit_Python_DHT/examples/AdafruitDHT.py 2302 12 tas protams atgriež tukšu lapu ar tekstu Array python.sh skriptam chmods ir 755 un normālā situācijā, izpildot to no konsoles tas atgrieztu augstāk minēto rindiņu. Edited February 17, 2017 by analgins Quote Link to post Share on other sites
jurchiks Posted February 17, 2017 Report Share Posted February 17, 2017 http://stackoverflow.com/a/19736494/540394 Quote Link to post Share on other sites
analgins Posted February 17, 2017 Author Report Share Posted February 17, 2017 šo linku arī pa dienu biju izlasījis, vienīgais kas no tā mainījās, ir ka parādījās kaut kāds skaitlis kas neko neizsaka.. $command = '/home/pi/Adafruit_Python_DHT/examples/AdafruitDHT.py 2302 12'; exec($command, $out, $status); echo $out; echo $status; $out atgriež Array $statuss atgriež skaitli 126 Quote Link to post Share on other sites
nemakuphp Posted February 17, 2017 Report Share Posted February 17, 2017 Pamēģini "echo $out;" vietā, piemēram, "print_r($out);" Quote Link to post Share on other sites
ieleja Posted February 18, 2017 Report Share Posted February 18, 2017 foreach($out as $outputStr) echo $outputStr; Quote Link to post Share on other sites
jurchiks Posted February 18, 2017 Report Share Posted February 18, 2017 var_dump(), nevis echo. Quote Link to post Share on other sites
analgins Posted February 18, 2017 Author Report Share Posted February 18, 2017 foreach($out as $outputStr) echo $outputStr; foreach un print_r atgriež neko.. ar var_dump atgriež šo - string(0) "" Vai šī nav gadījumā sarežģīta lieta, kurai es pieeju no nepareizās puses ? Quote Link to post Share on other sites
waplet Posted February 18, 2017 Report Share Posted February 18, 2017 Nē nav sarežģīta. Vai tev vispār PHP var izpildīt to kodu ar admin tiesībām? Quote Link to post Share on other sites
ieleja Posted February 18, 2017 Report Share Posted February 18, 2017 grūti tā attālināti off-line iejusties, bet mēģināju uz ieslēgtā Raspberry, kur gan nav pieslēgti nekādi devēji, tāpēc AdafruitDHT.py skripts 5x nodrukā "Hello, World!": #!/usr/bin/env python3 print('Hello, world 1!\n') print('Hello, world 2!\n') print('Hello, world 3!\n') print('Hello, world 4!\n') print('Hello, world 5!\n') attiecīgi: <?php $out = array(); echo exec('./AdafruitDHT.py',$out); foreach($out as $outputStr) echo $outputStr . "\n"; ?> gan lokāli izsaucot ar: php af.php gan http://192.168.0.8/af.php izsniedz: Hello, world 1! Hello, world 2! Hello, world 3! Hello, world 4! Hello, world 5! Quote Link to post Share on other sites
daGrevis Posted February 18, 2017 Report Share Posted February 18, 2017 Tas skaitlis ir exit status tavai komandai. http://tldp.org/LDP/abs/html/exit-status.html 0 nozīmētu ka viss ir okay. 126 ir kkāds errors. Man tas sudo calls liekas aizdomīgs, pamēģini bez. Tavam skriptam obligāti vajag root tiesības? Quote Link to post Share on other sites
ieleja Posted February 18, 2017 Report Share Posted February 18, 2017 Quote 126 - if command is found but cannot be invoked (e.g. is not executable) Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.