![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 516 Pomógł: 63 Dołączył: 27.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
witam
Nigdy takiego czegoś nie robiłem a teraz musze ; ) Proszę osoby znające się w temacie o pomoc merytoryczną. Przedstawie problem bardzo ogólnie bo nie chce zaliczyć jakiejś wtopy w pojęciach. Mam kilka urzadzeń pomiarowych. Rejestrują one między innymi temperature oraz posiadają możliwosc ustawień kilku parametrów. Urządzenia te nie wspołpracują z sobą i mogą być używane gdziekolwiek. Moim zadaniem jest napisanie strony internetowaj, na która po zalogowniu na swoje konto mogę odczytywac parametry z takiego urządzenia oraz dokonywać wybrancyh zmian w jego ustawieniach. PHP i cała ta otoczka tworzenia srron i aplikacji internetowych nie jest mi obca i nie tutaj jest problem. Zastanawiam się bardziej jak uzyskać połaczenie pomiędzy urządzniem a serwerem ? Narazie jestem na etapie planowania. Urządzenia pomiarowe już mam i działają. Ich modyfikacja zajmuje się oddzielny programista. Ja narazie chce poznać sam zamysł jak to ma wszystko działać i dlatego też chciałbym was sie poradzić. Obecnie dostałem wytyczne, że klient który kupi takie urządzenie pomiarowe moze wejsc sobie na strone internetową i zarejestrowac swoje urządzenie. Kluczowym elementem rejestracji będzie kod urządzenia, który będzie grał role identyfikacji urzadzenia. Po poprawnym zarejestrowaniu klient może na tej stronie podglądać pomiary temperatur oraz dokonywac zmian wybranych ustawień, i tutaj zaczyna się dla mnie bajka. Jak stworzyć połączenie pomiedzy urządzeniem a serwerem tak aby serwer mógł odbierac asynchronicznie aktualne dane pomiarowe z urzadzenia oraz również potrafił wysłać odpowiedź w postaci zmiany ustawień urządzenia - jęsli np klient wybierzez na stronie jakąś opcje do zmiany ? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 467 Pomógł: 77 Dołączył: 6.09.2008 Skąd: Miechów / Kraków Ostrzeżenie: (0%) ![]() ![]() |
Owszem php obsługuje połączenia protokołem TCP/IP, ale tutaj to urządzenie będzie nawiązywać połączenie, a tworzenie aplikacji w php do nasłuchiwania raczej nie wypali. Konieczne jest napisanie małego programu (np. w C++), który działał by jako demon (czyli proces działający w tle systemu operacyjnego, w windowsie nazywa się to usługami) i nasłuchiwał na jakimś porcie.
To w jaki sposób wyślesz dane zależy już od Ciebie (lub programistów urządzeń), ale na pewno nie zrobisz tego przy pomocy http i metody GET. 30 - 60 linijek tekstu za dużo nie mówi, ponieważ jedna linijka może mieć 10 znaków, a może mieć i 10000 więc w żądaniu GET może się nie zmieścić. Można pokusić się o wysłanie tego metodą POST, ale i ona ma swoje ograniczenia długości. Wszystko sprowadza się do tego ile będzie znaków (nie linijek (IMG:style_emoticons/default/wink.gif) ). W zasadzie można zrobić całość komunikacji na zasadzie strony internetowej. Urządzenie wysyłało by dane przy pomocy powiedzmy metody POST, Ty je obsługujesz przy pomocy php i wysyłasz (wyświetlasz) informacje dla urządzenia w postaci json-a, xml-a lub jak sobie tam ustalicie z programistami. Według mnie powinno to wyglądać tak: 1. Urządzenie pakuje dane do postaci ustalonej struktury np. tablicy lub mapy (mapa jest odpowiednikiem tablicy asocjacyjnej). 2. Komunikuje się przy pomocy protokołu TCP/IP z serwerem i wysyła daną strukturę. 3. Demon na serwerze odbiera dane i zapisuje je, powiedzmy do bazy danych. 4. Następnie sprawdza, czy są jakieś ustawienia dla tego urządzenia jeśli tak pakuje je także w ustaloną strukturę i odsyła. Jeśli nie ma, kończy połączenie. Nie ma potrzeby wysyłania potwierdzenia otrzymania danych, ponieważ protokół TCP/IP posiada tego typu mechanizm. Poza tym za najpóźniej minute i tak przyjdą kolejne dane (IMG:style_emoticons/default/smile.gif) 5. Jeśli zostały wysłane ustawienia urządzenie odbiera je i modyfikuje, po czym wysyła potwierdzenie, że się powiodło lub że pojawiły się jakieś błędy (wszystko jest możliwe). 6. Demon po otrzymaniu potwierdzenia o zmienionych ustawieniach usuwa informację o konieczności ich zmiany. Dlaczego akurat tak? Bo będzie szybciej. C++ jest o niebo szybszy od php i zapewne okaże się to dużą zaletą przy dużej ilości urządzeń. Oczywiście dochodzi jeszcze kwestia sprawdzania, czy urządzenie o takim numerze seryjnym jest zarejestrowane itp. ale to już są szczegóły techniczne. Co do strony w php zaś to całość sprowadzała by się do tego, że wyniki były by wczytywane z bazy danych, natomiast zmiana ustawień była by do niej zapisywana. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.10.2025 - 13:50 |