pablocool Posted October 26, 2015 Share Posted October 26, 2015 Czesc Mam pytanie do osób które conieco pisaly w pythonie dla enigmy. Otóz mam prosty plugin wyswietlajacy komunikat. Plugin dziala i jest dostepny w menu pluginów. Chcialbym go cronem odpalac co jakis czas. Tu zaczynaja sie schody. Pierwsze pytanie brzmi. Jak uruchomic plugin dla enigmy napisany w pythonie z konsoli lub skryptu sh? Moje próby: root@vusolo2:/usr/lib/enigma2/python/Plugins/IhadTutorial/lesson_01# python plugin.py Traceback (most recent call last): File "plugin.py", line 6, in <module> from Screens.Screen import Screen ImportError: No module named Screens.Screen Kopiac conieco na stackoverflow znalazlem ze potrzebuje najpierw: export PYTHONPATH="/usr/lib/enigma2/python/:$PYTHONPATH" Niestety niewiele to pomoglo: root@vusolo2:/usr/lib/enigma2/python/Plugins/IhadTutorial/lesson_01# python plugin.py Traceback (most recent call last): File "plugin.py", line 6, in <module> from Screens.Screen import Screen File "/usr/lib/enigma2/python/Screens/Screen.py", line 1, in <module> File "/usr/lib/enigma2/python/Tools/Profile.py", line 3, in <module> File "/usr/lib/enigma2/python/Tools/Directories.py", line 6, in <module> File "/usr/lib/enigma2/python/enigma.py", line 30, in <module> File "/usr/lib/enigma2/python/enigma.py", line 22, in swig_import_helper ImportError: No module named _enigma Ja dlubie dalej. Tymczasem prosze Was o pomoc:) Quote Link to comment Share on other sites More sharing options...
Guest j00zek Posted October 26, 2015 Share Posted October 26, 2015 - Nie uruchomisz wtyczki enigmy z crona - komunikat wyświetlisz z konsoli poprzez interfejs openwebif - jeśli jednak chcesz coś więcej, to musisz napisać wtyczkę, która się periodycznie uruchamia i coś tam Ci robi. Quote Link to comment Share on other sites More sharing options...
pablocool Posted October 26, 2015 Author Share Posted October 26, 2015 Dzięki za odpowiedź. Zapewne oszczędziłeś mi wiele czasu. Nie potrzebuję wiele. Chcę wyświetlić komunikat. Może być taki jak wyświetla się przez openwebif za pomocą "Wyślij wiadomość". Tylko potrzebuję by komunikat wyświetlał się do momentu aż użytkownik nie wciśnie zatwierdzi OK. (Openwebif ma tylko opcję TAK/NIE). I chciałbym przechwytywać informację że naciśnięto przycisk. Nie wiem czy te wszystkie informację mogę złapać w skrypcie. Czy wiesz może jak wyświetlić komunikat przez openwebif i złapać akcję użytkownika? Quote Link to comment Share on other sites More sharing options...
Guest herpoi Posted October 26, 2015 Share Posted October 26, 2015 O tutaj masz odpowiedź: http://dream.reichholf.net/wiki/Enigma2:WebInterface#Message "Złapać" akcji z takiego komunikatu chyba się nie da. Napisz co i po co chciałbyś osiągnąć. EDIT: Jednak chyba się da :) http://dreambox/web/messageanswer?getanswer=now Quote Link to comment Share on other sites More sharing options...
pablocool Posted October 26, 2015 Author Share Posted October 26, 2015 DZięki za pomoc:) Oto co chcę: 1. Wyświetlać komunikat na ekranie. 2. Wykonywać skrypt periodycznie 3. Rozpoznawać akcję pilotem na komunikat. 4. Rozpoznawać tryb standby Punkty 1 i 4 osiągnę chyba tylko za pomocą pythona. Punkt 2 idealnie można osiągnąć cronem. Chciałem uniknąć pluginu pythonowego działającego w nieskończonej pętli. Quote Link to comment Share on other sites More sharing options...
Guest j00zek Posted October 26, 2015 Share Posted October 26, 2015 1i4 spokojnie zrealizujesz bashem przy wykorzystanmiu interfejsu openwebif. Polecam zaglębienie się w jego api. ;) Quote Link to comment Share on other sites More sharing options...
pablocool Posted October 26, 2015 Author Share Posted October 26, 2015 Przekonałeś mnie:) Dam znać o efektach! Quote Link to comment Share on other sites More sharing options...
pablocool Posted October 26, 2015 Author Share Posted October 26, 2015 Dziwne. Z przeglądarki komenda http://127.0.0.1/web/message?text=test&type=0 wchodzi i zatwierdzając YES lub NO na ekranie da się sprawdzić co zostało wprowadzone komendą http://127.0.0.1/web/messageanswer?getanswer=now Niestety nie mogę odtworzyć tego w terminalu. Testowane na vusolo2 i esi z takim samym rezultatem: root@vusolo2:/# wget -qO - http://127.0.0.1/web/message?text=test&type=0 root@vusolo2:/# <?xml version="1.0" encoding="UTF-8"?> <e2simplexmlresult> <e2state>False</e2state> <e2statetext>Brak wymaganego parametru 'type'</e2statetext> </e2simplexmlresult> [1]+ Done wget -qO - http://127.0.0.1/web/message?text=test root@vusolo2:/# telnet 10.1.1.15 Entering character mode Escape character is '^]'. esi88 login: root BusyBox v1.19.3 (2012-01-04 10:10:53 PST) built-in shell (ash) Enter 'help' for a list of built-in commands. esi88:~# wget -qO - http://127.0.0.1/web/message?text=test&type=0 esi88:~# <?xml version="1.0" encoding="UTF-8"?> <e2simplexmlresult> <e2state>False</e2state> <e2statetext>Missing mandatory parameter 'type'</e2statetext> </e2simplexmlresult> [1]+ Done wget -qO - http://127.0.0.1/web/message?text=test esi88:~# Nie wiem czy on w terminalu nie widzi ampersandu? Zobaczcie co jest po "[1]+ Done". Tak jakby obcinał komendę po 1 parametrze. Gdy zamienię parametry text i type miejscami to za każdym razem mówi że nie ma tego 2 parametru... EDIT: Już wiem co było. Trzeba uciec ampersand:) wget -qO - http://127.0.0.1/web/message?text=test\&type=0 Panowie chciałem podziękowac za pomoc. Openwebif był prawie wystarczający do napisania pluginu. Musiałem tylko poprawic MessageBox.py żeby domyślnie po braku reakcji użytkownika na wiadomośc nie była odpowiedź pozytywna oraz żeby wcisnięcie dowolnego przycisku nie zatrzymywało licznika timeoutu. JEdnak mam dziwny problem z cronem. Mam skrypt uruchamiany co minutę. Jego egzekucja może trwać kilka sekund lub kilkadziesiąt minut. Oczywiście zabezpieczyłem skrypt by nie wykonywał dalszej egzekucji jeśli wykryje w procesach poprzedni proces. Wszystko jest logowane do pliku loga. Gdy skrypt wykonuję ręcznie wszystko działa jak należy w pierwszej minucie widzę że 1 instancja się uruchomiła i wykonuje dalsze akcje w kolejnej minucie 1 instancja wykonuje akcje a 2 instancja po starcie wypisuje że inna działa więc kończy pracę - OK. Jednak gdy zaaplikuję skrypt do crona: */1 * * * * /cron.sh Jest dziwnie. Pierwsza instancja się uruchamia i pracuje przez załóżmy 30 minut. Co minutę powinna próbować uruchamiać się druga instancja i wypisywać komunikat że kończy pracę. Jednak robi to dopiero po dokładnie 10 minutach i wtedy już co minutę działa jak należy. Czy ktoś się orientuje skąd te rozbieżności? Log: Fri Oct 30 14:45:01 CET 2015-Start Fri Oct 30 14:46:03 CET 2015-Następne sprawdzenie za minutę Fri Oct 30 14:47:03 CET 2015-Następne sprawdzenie za minutę Fri Oct 30 14:48:04 CET 2015-Następne sprawdzenie za minutę Fri Oct 30 14:49:04 CET 2015-Następne sprawdzenie za minutę Fri Oct 30 14:50:04 CET 2015-Następne sprawdzenie za minutę Fri Oct 30 14:51:05 CET 2015-Następne sprawdzenie za minutę Fri Oct 30 14:52:05 CET 2015-Następne sprawdzenie za minutę Fri Oct 30 14:53:06 CET 2015-Następne sprawdzenie za minutę Fri Oct 30 14:54:06 CET 2015-Następne sprawdzenie za minutę Fri Oct 30 14:55:01 CET 2015-Proces uruchomiony, wychodzę Fri Oct 30 14:55:07 CET 2015-Następne sprawdzenie za minutę Fri Oct 30 14:56:01 CET 2015-Proces uruchomiony, wychodzę Fri Oct 30 14:56:07 CET 2015-Następne sprawdzenie za minutę Fri Oct 30 14:57:01 CET 2015-Proces uruchomiony, wychodzę Fri Oct 30 14:57:08 CET 2015-Następne sprawdzenie za minutę Fri Oct 30 14:58:01 CET 2015-Proces uruchomiony, wychodzę Fri Oct 30 14:58:08 CET 2015-Następne sprawdzenie za minutę Fri Oct 30 14:59:01 CET 2015-Proces uruchomiony, wychodzę Fri Oct 30 14:59:09 CET 2015-Następne sprawdzenie za minutę Fri Oct 30 15:00:01 CET 2015-Proces uruchomiony, wychodzę scalono Edytuj posty! 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.