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 comment Share on other sites More sharing options...
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 comment Share on other sites More sharing options...
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 comment Share on other sites More sharing options...
waplet Posted February 17, 2017 Report Share Posted February 17, 2017 https://devdocs.io/php/function.exec Quote Link to comment Share on other sites More sharing options...
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 comment Share on other sites More sharing options...
jurchiks Posted February 17, 2017 Report Share Posted February 17, 2017 http://stackoverflow.com/a/19736494/540394 Quote Link to comment Share on other sites More sharing options...
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 comment Share on other sites More sharing options...
nemakuphp Posted February 17, 2017 Report Share Posted February 17, 2017 Pamēģini "echo $out;" vietā, piemēram, "print_r($out);" Quote Link to comment Share on other sites More sharing options...
ieleja Posted February 18, 2017 Report Share Posted February 18, 2017 foreach($out as $outputStr) echo $outputStr; Quote Link to comment Share on other sites More sharing options...
jurchiks Posted February 18, 2017 Report Share Posted February 18, 2017 var_dump(), nevis echo. Quote Link to comment Share on other sites More sharing options...
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 comment Share on other sites More sharing options...
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 comment Share on other sites More sharing options...
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 comment Share on other sites More sharing options...
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 comment Share on other sites More sharing options...
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 comment Share on other sites More sharing options...
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.