analgins Posted February 17, 2017 Report 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
daGrevis Posted February 17, 2017 Report Posted February 17, 2017 Nu, kā mēģināji izsaukt ar `exec`? Vai bija errori, vai bija kkāds output? Quote
analgins Posted February 17, 2017 Author Report Posted February 17, 2017 nē, nebija kekāda outputa, rekur rindiņa $output = exec('python.sh'); Quote
waplet Posted February 17, 2017 Report Posted February 17, 2017 https://devdocs.io/php/function.exec Quote
analgins Posted February 17, 2017 Author Report 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
jurchiks Posted February 17, 2017 Report Posted February 17, 2017 http://stackoverflow.com/a/19736494/540394 Quote
analgins Posted February 17, 2017 Author Report 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
nemakuphp Posted February 17, 2017 Report Posted February 17, 2017 Pamēģini "echo $out;" vietā, piemēram, "print_r($out);" Quote
ieleja Posted February 18, 2017 Report Posted February 18, 2017 foreach($out as $outputStr) echo $outputStr; Quote
analgins Posted February 18, 2017 Author Report 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
waplet Posted February 18, 2017 Report Posted February 18, 2017 Nē nav sarežģīta. Vai tev vispār PHP var izpildīt to kodu ar admin tiesībām? Quote
ieleja Posted February 18, 2017 Report 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
daGrevis Posted February 18, 2017 Report 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
ieleja Posted February 18, 2017 Report Posted February 18, 2017 Quote 126 - if command is found but cannot be invoked (e.g. is not executable) Quote
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.